Jump to content

Banditul

Moderator
  • Posts

    1,134
  • Joined

  • Last visited

  • Days Won

    96

Posts posted by Banditul

  1. Exact. Asta e problema. Ca nu ai setat o valoare pentru GameModeText iar daca nu seezi o valoarea pentru iti va aparea unknown la Mode chiar daca nu ai erori. Pentru ca unknown e valoarea defaupt/implicita

  2. PS: Doar ce am recitit topicul si te intrebi cum ai putea adauga un astfel de sistem.

    Daca te referi la acest tutorial

    Din pacate in topic nu specifica nimic despre bani/level care din codul prezent in topic nu ar avea cum sa fie salvate mai ales ca nici schema bazei de date nu contine aceste date.

    Desigur totusi ne poti arata ce ai incercat sa faci si ce erori primesti ca sa iti putem indica problemele si ce poti repara dar iti ofer un mic cod eventual care sper ca te poate ajuta. Va fi nevoie sa adaugi tu in baza date cum ti-a fost explicat si in tutorial coloana pentru bani si level

    enum pInfo
    {
        pParola, 
        pID, 
    
        Money, // Adaugi acestea la pInfo
        Level // Evident le redenumesti cum doresti
    };
    new P_Data[MAX_PLAYERS][pInfo];
    
    GiveMoneyToPlayer(playerid, money)
    {   
        P_Data[playerid][Money] += money;
        mysql_format(handle, query, sizeof(query), "UPDATE conturi SET `Money` = %i WHERE ID = %i", P_Data[playerid][Money], P_Data[playerid][pID]);
        mysql_tquery(handle, query);
    
        ResetPlayerMoney(playerid);
        GivePlayerMoney(playerid, P_Data[playerid][Money]);
    }
    
    GivePlayerLevel(playerid, level)
    {
        P_Data[playerid][Level] += level;
        mysql_format(handle, query, sizeof(query), "UPDATE conturi SET `Level` = %i WHERE ID = %i", P_Data[playerid][Level], P_Data[playerid][pID]);
        mysql_tquery(handle, query);
    
        SetPlayerScore(playerid, P_Data[playerid][Level]) // Presupun ca level se reflecta in tabelul de score
    }
    
    forward OnLogin(playerid);
    public OnLogin(playerid)
    {
        new rows, fields,temporar[200];
        cache_get_data(rows, fields);
        if(rows)
        {
            cache_get_field_content(0, "Parola",temporar), format(P_Data[playerid][pParola], 25, temporar);
            P_Data[playerid][pID] = cache_get_field_content_int(0, "ID");
            P_Data[playerid][Money] = cache_get_field_content_int(0, "Money");
            ResetPlayerMoney(playerid);
            GivePlayerMoney(playerid, P_Data[playerid][Money]); 
            // Ii resetam bani si ii oferim ce ar in baza de date astfel incat bani pe care ii vede in joc sa fie aceiasi
    
            P_Data[playerid][Level] = cache_get_field_content_int(0, "Level");
            SetPlayerScore(playerid, P_Data[playerid][Level])
    
            SpawnPlayer(playerid);
        }
        else
        {
            ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Te rog sa iti introduci parola corecta, pentru a te loga pe server.", "Logare", "Exit");// ii va da dialogul cu mesajul specific.
        }
        return 1;
    }

    Poti folosi aceste 2 functii pe care ti le-am dat pentru a oferi jucatorului bani/level acolo unde ai nevoie. Astfel incat sa nu fi nevoit sa tot copiezi acelasi cod peste tot, doar chemi functia.

  3. Acum 10 minute, IosifR a spus:

    Eu nu l am instalat si mere 

    Pentru ca daca ai windows 10 si mai ales daca instalezi si alte programe precum visual studio sau orice program sau joc care iti instaleaza aceste runtime nu trebuie sa le instalezi tu, le instaleaza programul sau chiar si steam am observat ca instaleaza daca iti lipseste pentru a rula un joc

  4. Cateva observatii, poate intelegi ce e gresit.

    1. Ai definit id dar nu ii aloci nici o valoare nicaieri desi incerci sa verifici daca acel id (care e 0) e logat pe server, daca are telefon etc

    2. Ai acel foreach, presupun pentru a cauta nr introdus, problema e ca nu te folosesti de foreach deloc in schimb folosesti acelasi id care are valoarea 0

    Dar presupun ca nu o sa gasesti o solutie asa ca poti da copy-paste de aici unde ti-am pus comanda reparata  si presupun functionala https://pastebin.com/gTJ2fMnu

    • Upvote 1
  5. Cea mai usoara metoda sa modifici MAX_PLAYERS in numarul tau de sloturi pe care il ai pe host pentru cel mai probabil ai multe array care depind de constanta asta. Imediat dupa a_samp poti pune

    #undef MAX_PLAYERS 

    #define MAX_PLAYERS nr_sloturi

    Alta varianta care e strans legata de cea de sus, sa reduci marimea array-urilor la exact cat ai nevoie asta include si string (care e tot array)

  6. Presupunand faptul ca eroarea de fapt este la linia cu OtherTimer() si acel return true solutie e

    function Timers() 
    {
        new i, anim, Float: animpos[3];
        if (PlayerInfo[i][pAdmin] < 1 && ac_flyhack == 1) 
        {
                anim = GetPlayerAnimationIndex(i), GetPlayerVelocity(i, animpos[0], animpos[1], animpos[2]);            
                if(animpos[0] <= -0.800000 || animpos[1] <= -0.800000 || animpos[2] <= -0.800000 && anim == 1008) 
                {
                    SendAdmins(COLOR_RED2, "AdmWarning: %s (%d) este suspectat de Fly-Hack.", 1, GetName(i), i);
                    new surfx = GetPlayerSurfingVehicleID(i);
                    if(surfx == INVALID_VEHICLE_ID && !IsABike2(gLastCar[i])) {                    
                    CheatWarnings[i] += 2;
                    defer KickEx(i);
                }
            }
        }
        OtherTimer();
        return true;                   
    }   

    Ti-as sugera sa folosesti acoladele in stilul pus de mine, e mult mai usor sa urmaresti unde se termina de fapt functia. In cazul tau instructiunile tale de OtherTimer si return true nu apartiunea nici unei functii sau bloc de cod

  7. Acum 2 ore, CritteR a spus:

    Gamemode-uri de SAMP pe github...this is the best timeline.

    Chiar as vrea sa vad GM-ul BizZone, sau ce mai e popular acum, plin de fork-uri si pull request-uri cu un singur commit, si ala la culori :D

    Sincer, as prefera sa vad lumea folosind github pentru scripturi asa stii exact ce descarci si mai ales multe persoane posteaza un gm dupa cateva zile ii fac "update" si posteaza din nou "v2" samd cand pe github poti face un simplu commit cu modificarea si sa vezi si ce exact s-a modificat.

    Dar na, e placut sa visezi uneori.

  8. https://www.if-koubou.com/articles/how-to/what-is-github-and-what-is-it-used-for.html

    https://code4.scout.ro/despre-git-si-github/

    Si un video: Tutorial (nu te speria ca foloseste consola, exista si aplicatie grafica care te ajuta sa eviti comenzile in consola, dar trebuie sa intelegi ce fac)

    Cateva topicuri legate de github. In mare, github este o platforma pe care iti poti salva proiectele(nu neaparat cod) atat in mod privat cat si public(open-source). Se foloseste de git pentru a versiona proiectul (practic fiecare commit (modificare pe care o transmiti ca si finalizata) e salvata si poti reveni oricand la ea sau poti vedea exact ce modificari ai facut in acel commit). Folosesc github zilnic pot sa zic ca e ceva fara de care nu imi pot face proiectele (vreau sa imi salvez proiectul in cloud dar in acelasi vreau sa fiu capabil sa vad fiecare modificare pe care am facut-o etc si de asemenea vreau sa arat unui potential angajator proiectul mai usor)

    Cat despre sampctl nu am avut ocazia de il folosi prea mult din pacate trecand pe C# full time. Ce pot sa iti spun despre el este ca un "manager" de aplicatii poti sa zici, il atasezi proiectului tau, ii zici ce pluginuri/includeuri foloseste scriptul tau si el iti cauta si instaleaza automat, de asemenea poate fi configurat sa iti dea si compile la script si eventual sa iti si ruleze serverul dupa(pentru a testa). Din ce vad pe pagina de github a sampctl e explicat cum se foloseste, instaleaza si cred ca am vazut si un mic tutorial.

    Din pacate, ambele aplicatii cel mai usor le intelegi folosindu-le si testand fiecare lucru la ele sa vezi cu ochii tai ce se intampla, nu ai ce sa strici sau ceva. Si mie mi-a luat ceva sa inteleg branch la github pana cand am facut un repository doar ca sa ma joc cu functionalitatea pentru cac din ce gaseam ca si tutorial nu ma ajuta.

    • Like 3
  9. Da aparent include presupun ca a fost putin facut pe fuga as zice. Din ce observ iti da eroarea ca e deja definit deoarece in loc sa fie facut hook la functie astfel incat sa fie atat apelata in script cat si in include a definit direct functia OnPlayerKeyStateChange

    Eventual ca si solutie poti folosi y_hooks in include respectiv si sa le modifici din public OnPlayerKeyStateChange in hook OnPlayerKeyStateChange

    Aici un topic despre y_hooks (presupun ca in topic foloseste sintaxa noua de la ysi 5)
     https://www.burgershot.gg/showthread.php?tid=625

    • Like 1
  10. Avand personal un ssd pe care am instalat windows si aplicatii esentiale pot sa spun ca merita total. Lucrand cu un hdd pentru 4 ani se simte diferenta desi nu am avut aceste probleme descrise, era incet da dar nu chiar asa.

    Eventual sugerez si o scanare de virusi sau chiar sa monitorizezi din Task Manager toate procesele si sa vezi daca unul din ele iti consuma toate resursele

  11. Daca coceai putin mai mult ideea ajungeai unde trebuie

    Citat

    if (PlayerInfo[oherPlayerId][pAdmin] >= 5) return SendClientMessage(playerid, COLOR_ADMCOMMANDS, "Nu poti folosi aceasta comanda pe un admin nivel 5+.")

     

  12. Acum 1 oră, zNx[] a spus:

    O singura intrebare, te poti hotara daca txd e global sau particular?

    Ca si sfat in alegerea intre TextDraw: si PlayerTextDraw: este destul de simplu. Daca informatia pe care doresti sa o afisezi playerului prin textdraw este o informatie specifica doar lui (ex: speed-o-meter, obiectiv personal, progres pentru x, suma lui de bani etc) atunci recomandat este PlayerTextDraw:, daca informatia afisata este una generala (ex: ceas/data, nume server, x playeri inregistrati etc) care nu tine neparat de x player atunci recomandat este TextDraw:.

    Pentru ca , ca si exemplu, din 10 playeri doar 2 se afla in masina si pot vedea speed-o-meter nu ar avea sens sa fie afisat pentru toti mai ales ca cei 2 playeri pot calatori cu viteze diferite iar informatiile lor vor fi diferite si un textdraw paarticular are mai mult sens. De asemenea, nu ar avea sens sa creezi ceas/data pentru fiecare player in parte cand se conecteaza sa afiseze exact aceiasi informatie tuturor cand poti crea un singur textdraw pe care il afisezi la toti

    • Like 1
  13. Citat

     Loading plugin: mysql.dll
      Failed.

    Cel mai probabil ai nevoie de plugin mysql, care din intamplare nu ti se incarca. Apropo, ti-as recomanda sa nu pui .dll la plugins pe windows.

    Motvele pentru ca nu ti se incarca pot fi multiple, inclusiv eventual lipsa unui Visual C++ Redistributable instalat pe pc tau

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.