Jump to content

Mister

Moderator
  • Posts

    1,884
  • Joined

  • Last visited

  • Days Won

    113

Posts posted by Mister

  1. Versiunea de mysql pe care o folosesti are mai multe fisiere .so, static sau simplu, incearca sa modifici in server cfg cu numele lor si dai un restart. din mysql.so in mysql_static.so sau daca mai este si alta varianta acolo si vezi care din ele merg.

     

  2. Salutare,

    Eroare primita spune ca nu se gaseste variabila respectiva declarata in gamemode, ori ai luat codul de undeva cu tot ca variabila aceea ori este scrisa gresit (o litera mare ceva gresit i inloc de L 🤷‍♂️)

    Daca vrei sa testezi codul in continuare, comenteaza linia cu  //   inainte, asta nu inseamna ca mai departe nu vei primi alte erori.

    if(InExamen[playerid] == 1) FailExamen(playerid);
  3. Salutare,

    Intrebara mea este, jucatorilor de pe telefon nu li se incarca deloc mappingul sau doar cand sunt teleportati cad prin ea si apoi se incarca?

    Eu stiu ca atunci cand s a lansat versiunea de mp pentru telefon orice obiect creat prin dinamicobject sau createobject jucatorii de pe telefoane nu il vedeau

  4. On 7/30/2022 at 12:18 AM, Shad0wdpbgd said:

    nu este nici o eroare, si eu am crezut ca e o eroare la inceput dar nu e 

    Sa inteleg ca astea nu sunt erori?

    [20:48:10] [debug] Long callback execution detected (hang or performance issue)
    [20:48:10] [debug] AMX backtrace:
    [20:48:10] [debug] #0 00063114 in public L_AFKDETECT () in Wing.amx

    Pe langa celelalte de mai sus, dupa pluginuri si inainte sa se incarce

    Verifica functia asta L_AFKDETECT, nu pare sa fie un timer pentru ca este apelata la intervale neregulate.

    Si ma voi repeta dar cum nu aveai ''erori'' in serverlog poti sa mai verifici odata daca ai si #include crashdetect-ul? in gamemode trebuie sa fie primul plugin dupa a_samp logic, inainte de streamer si orice alt include, ar fi trebuit in eroarea citata de mine sa fie si linia cu problema, dar e posibil sa ma depaseasca unpic pentru ca e 0.3dl si am mai putin experienta pe el.

  5. Salutare,

    Daca nu ai eroare in serverlog inseamna ca nu ai pluginul crashdetect. Baga in gamemode cu include crashdetect si la linia plugins din server cfg, compileaza, incearca comanda iar si revino cu eroarea din serverlog. Eventual si o poza din joc daca tot nu primesti nimic in serverlog.

  6. Salutare,

    Incearca sa folosesti functia https://open.mp/docs/scripting/callbacks/OnPlayerWeaponShot
    folosesti un if pentru hittype == BULLET_HIT_TYPE_VEHICLE
    apoi adaugi acel for pentru toti jucatorii, verifici in acel for daca jucatorul se afla in vehiculul lovit, GetPlayerVehicleID i == hitid
    si trimiti mesajul catre jucatorul i ca jucatorul playerid i a lovit masina

    Daca am scris gresit incearca si tu sa faci de la tine, eu ti am dat rapid un pseudocod din capul meu gandit rapid nu mura in gura, succes!

  7. Salutare,

    Cred ca pentru ceva mai simplu poti folosi ca exemplu urmatorul cod

    FunctieNouaSetPlayerPos(playerid, Float:x,Float:y,Float:z)
    { 
    	PlayerPosX [playerid]=x,
    	PlayerPosY[playerid]=y,
    	PlayerPosZ[playerid]=z;
        return SetPlayerPos(playerid, x,y,z);
    }
    #undef SetPlayerPos 
    #define SetPlayerPos FunctieNouaSetPlayerPos

    Daca adaugi codul la inceputul gamemodeului, sau cel putin deasupra tuturor functiilor de SetPlayerPos prezente in gamemode, atunci ar trebui ca la fiecare teleport al playerului prin functie nativa SetPlayerPos, cele 3 variabile sa fie setate conform coordonatelor, mai departe faci ce vrei pentru alte functii.

    • Upvote 1
  8. Salutare,

    La OnPlayerEnterCheckpoint, la fiecare DmvStage pe langa functia SetPlayerCheckpoint ai de asemenea functia DisablePlayerCheckpoint

    Quote

    if(dini_Int(file, "DmvStage") == 1){
            SetPlayerCheckpoint(playerid, 1311.3917,-1840.5356,12.9904, 10);
            DisablePlayerCheckpoint(playerid);
            dini_IntSet(file, "DmvStage", 2);
            
        }

        if(dini_Int(file, "DmvStage") == 2){
            SetPlayerCheckpoint(playerid, 1326.6887,-1734.6566,12.9904, 10);
            DisablePlayerCheckpoint(playerid);
            dini_IntSet(file, "DmvStage", 3);
           
        }

    Poti incerca sa schimbi codul in ceva de genul pentru toate DmvStage-urile 

    if(dini_Int(file, "DmvStage") == 1){
            SetPlayerCheckpoint(playerid, 1311.3917,-1840.5356,12.9904, 10);    
            dini_IntSet(file, "DmvStage", 2);
            
        }
    
       else if(dini_Int(file, "DmvStage") == 2){
            SetPlayerCheckpoint(playerid, 1326.6887,-1734.6566,12.9904, 10);
            dini_IntSet(file, "DmvStage", 3);
           
        }

    Incearca sa le separi prin else if si sa stergi DisablePlayerCheckpoint, la ultimul Stage la 16 este ok sa fie DisablePlayerCheckpoint

  9. Salut,

    la instructiunea mysql ai o variabila comentata care este corespondenta pentru variabila Security

    /*, MD5_Hash(DEFAULT_PASSWORD)*/

    Din ce se vede ai o parola predefinita, ai doua variante ori elimini comentariul si vei pune parola default ori elimini de tot variabila

      format(gQuery, sizeof(gQuery), "UPDATE users SET `Admin`='%d', `Security`='%s', `HelpedPlayers`='0' WHERE `ID`='%d'", PlayerInfo[id][pAdmin], MD5_Hash(DEFAULT_PASSWORD), PlayerInfo[id][pSQLID]);

    sau

      format(gQuery, sizeof(gQuery), "UPDATE users SET `Admin`='%d', `Security`=' ', `HelpedPlayers`='0' WHERE `ID`='%d'", PlayerInfo[id][pAdmin]/*, MD5_Hash(DEFAULT_PASSWORD)*/, PlayerInfo[id][pSQLID]);

     

  10. Salutare, 

    Ar trebui sa ai o functie in gamemode de genul ProxDetector(Float: Raza, playerid, culoare, culoare... )

    Daca nu, poti folosi un simplu for sau foreach daca ai.

    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    foreach(Player,i)// for(new i=0; i< MAX_PLAYERS; i++)
    {
    	if(IsPlayerInRangeOfPoint(i,100, X,Y,Z))
    		SendClientMessage(i,-1,"Mesaj");
    
    }

     

  11. Incearca sa pui la onplayerentervehicle urmatorul cod
     

    
    new carid = FindSpawnID(vehicleid);
    if(CarInfo[carid][Userid] == PlayerInfo[playerid][pSQLID])
    {
       new objective;
       GetVehicleParamsEx(vehicleid,objective,objective,objective,objective,objective,objective,objective);
       SetVehicleParamsForPlayer(vehicleid,objective,0);
    }

     

  12. Salutare, 

    Ai nevoie de o variabila de genul, plasata pe la inceputul gamemodeului

    new CooldownCollect[MAX_PLAYERS];

    Apoi la inceputul comenzii tale inaitne de new castig, o sa adaugi un if

    if(CooldownCollect[playerid] > 0) return SendClientMessage(playerid,-1,"Ai luat deja cadoul");

    Iar la finalul comenzii tale inainte de return true; o sa setezi aceasta variabila in 120 sau cate secunde vrei sa astepte pana o poate folosi iar

    CooldownCollect[playerid] = 120;

    Mai ai nevoie de un timer de o secunda sau minute depinde cat de exact si cat de mult vrei dureze, unde o sa adaugi decrementarea variabilei intr un for sau foreach al jucatorilor 

    if(CooldownCollect[i]> 0) CooldownCollect[i] --;

    Dar totul va fi local fara baza de date si nu va ramane salvat, daca vrei sa ramana salvat va trebuie sa creezi in baza de date variabila iar apoi sa faci incarcarea si salvarea acesteia ceea ce este unpic mai complicat.

  13. Salutare, 

    Incearca sa modifici functia ca in exemplul de mai jos

    function CountWallSpray(id) 
    {
        new count = 0;
        foreach(Player, i) 
        if(StartedSprayOn[i] == id) count++;    
        return count;
    }

    iar la verificare din comanda

       //else if(CountWallSpray(h) == 1)

    inloc de == 1 modifica in > 1

     

    In functia ta doar verificai daca cineva foloseste comanda, iar rezultatul era pozitiv pentru ca tu foloseai comanda, mai poti modifica functia ta adaugand un parametru de id si apoi sa il excluzi in for astfel verifici daca mai este cineva in comanda de spray inafara de tine.

    Si poti face in felul urmator

    if(CountWallSpray(h,playerid) == 1)

    Iar la functie modifici in felul urmator

    function CountWallSpray(id,playerid) {
        foreach(Player, i) {
            if(StartedSprayOn[i] == id && id != playerid) return true;
        }
        return false;
    }

     

  14. Salutare,

    Verifica daca functia Update(playerid,pDarkPointsx);  este corect scrisa ca in baza de date.

    Ultima varianta ar fi daca la logare alaturi de celelalte variabile din baza de date ai adaugat si pDarkPoints.

    De exemplu ar putea fi numita functia WhenPlayerLogin unde se incarca toate variabilele din baza de date.

    Eventual pune aici liniile de cod, unde se face incarcarea si salvarea a ce am zis eu mai sus sa vedem daca ai o greseala de sintaxa sau ceva de genul.

×
×
  • 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.