Jump to content

Akan

Membru
  • Posts

    75
  • Joined

  • Days Won

    6

Everything posted by Akan

  1. Acolada care inchide primul if trebuie pusa la sfarsit, adica dupa toate cele 3 conditii cu IsPlayerInRangeOfPoint. Cam asa: if (strcmp("/startmission", cmdtext, true, 10) == 0) { if(IsPlayerInRangeOfPoint(playerid, 2.0, 2333.1101,-1072.5065,1049.0234)) { SetPlayerCheckpoint(playerid, -2091.9893,-2463.1599,30.6250, 3.0); } else if(IsPlayerInRangeOfPoint(playerid, 2.0, 2333.2542,-1066.1041,1049.0234)) { SetPlayerCheckpoint(playerid, -2176.0645,-2364.3694,30.6250, 3.0); } else if(IsPlayerInRangeOfPoint(playerid, 2.0, 2331.9038,-1061.8888,1049.0234)) { SetPlayerCheckpoint(playerid, -1226.2114,55.9318,14.1322, 3.0); } return true; } Si ai grija sa nu stergi nici acel return 1 si acolada inchisa de la sfarsitul codului pe care l-ai pus tu aici, ca din cate vad alea par sa fie de la sfarsitul OnPlayerCommandText, nu de la sfarsitul comenzii.
  2. Ai pus la PlayerToPoint, la SetPlayerCheckpoint si la SetPlayerPosEx coordonatele cu tot cu Rotatie, trebuie puse doar primele 3 coordonate, x, y si z. Adica asa ar trebui sa arate: YCMD:fish(playerid, params[], help) { if(PlayerInfo[playerid][pJob] != 7) return SCM(playerid, COLOR_GREY, "Nu esti pescar!"); if(!PlayerToPoint(40, playerid, 2118.5134, -93.6177, 2.0291)) { if(targetfind[playerid] != -1) return ShowPlayerDialogEx(playerid, DIALOG_CHECKPOINT, DIALOG_STYLE_MSGBOX, "Checkpoint", "Ai deja un checkpoint activ.\nDoresti sa-l anulezi? Daca da, apasa pe 'Ok'.", "Ok", "Exit"); CP[playerid] = 53; SCM(playerid, COLOR_GREY, "Nu esti in zona in care poti pescui."); return SetPlayerCheckpoint(playerid, 2118.5134, -93.6177, 2.0291, 3); } YCMD:gotofish(playerid, params[], help) { if(PlayerInfo[playerid][pAdmin] < 1) return SCM(playerid, COLOR_WHITE, AdminOnly); else SetPlayerPosEx(false, playerid, 2118.5134, -93.6177, 2.0291); SetPlayerInterior(playerid,0); SetPlayerVirtualWorld(playerid,0); return true; } Am lasat acel "false" la SetPlayerPosEx deoarece presupun ca asa ai tu facuta acea functie customizata.
  3. Nu trebuie sa dai destroy la id-ul obiectului in sine, ci la id-ul lui de pe server, adica al catelea a fost creat pe server (ca la vehicule). Ai putea sa faci ceva de genul (dar asta va functiona pentru un singur spike per player): new Spike[MAX_PLAYERS]; if (strcmp("/pdspikes", cmdtext, true, 10) == 0) { if(Spike[playerid] > 0) return SendClientMessage(playerid, -1, "Ai creat deja un Spike!"); new Float:Pos[4]; GetPlayerPos(playerid, Pos[0],Pos[1],Pos[2]); GetPlayerFacingAngle(playerid, Pos[3]); SendClientMessage(playerid, 0xF31C2B, "*Succesfully Placed Spike*"); GameTextForPlayer(playerid,"~r~Police Spike ~n~~b~Spike Deployed!",3000,4); Spike[playerid] = CreateDynamicObject(2899, Pos[0],Pos[1],Pos[2]-0.9, 00.00, 00.00, Pos[3]+90); return 1; } if (strcmp("/removepdspikes", cmdtext, true, 10) == 0) { if(Spike[playerid] == 0) return SendClientMessage(playerid, -1, "Nu ai creat nici un Spike!"); SendClientMessage(playerid, 0xF31C2B, "*Succesfully Removed Spike*"); GameTextForPlayer(playerid,"~r~Police Spike ~n~~b~Spike Removed!",3000,4); DestroyDynamicObject(Spike[playerid]), Spike[playerid] = 0; return 1; }
  4. Trebuie sa gasesti in cod obiectul respectiv pe care jucatorii se teleporteaza/spawneaza. Daca nu stii care este, poti baga harta in Map Editor si te duci la coordonatele unde se teleporteaza/spawneaza jucatorul si vei gasi obiectul, apoi cauti in cod obiectul respectiv si din CreateDynamicObject il modifici in CreateObject (si va trebui sa modifici la parametri putin, dar e usor). Daca nu te descurci da-mi add pe discord: ! Akan !#5555
  5. Pune link de la gamemode-ul pe care il folosesti si ma uit eu in el si iti spun unde sunt.
  6. De obicei, jucatorii cu lag cad prin obiectele DINAMICE. Incearca sa faci obiectul pe care se spawneaza/teleporteaza jucatorul cu CreateObject (adica sa nu fie cu CreateDynamicObject), dar DOAR obiectul pe care se spawneaza/teleporteaza, nu tot mapping-ul ca dupa o sa ajungi sa depasesti limita de obiecte.
  7. function IsABike(vehicleid) { switch(GetVehicleModel(vehicleid)) { case 481, 509, 510: return 1; } return 0; } function IsAMotorcycle(vehicleid) { switch(GetVehicleModel(vehicleid)) { case 448, 461, 462, 463, 468, 471, 521, 522, 523, 571, 581, 586: return 1; } return 0; } function IsABoat(vehicleid) { switch(GetVehicleModel(vehicleid)) { case 430, 446, 452, 453, 454, 472, 473, 484, 493, 595: return 1; } return 0; } function IsAPlane(vehicleid) { switch(GetVehicleModel(vehicleid)) { case 417, 425, 447, 460, 464, 465, 469, 476, 487, 488, 497, 501, 511, 512, 513, 519, 520, 548, 553, 563, 577, 592, 594: return 1; } return 0; } Ai uitat acoladele la primul switch. Si ai uitat niste virgule in case-uri...
  8. Akan

    eroare

    Sintaxa corecta este: foreach(new i : Player)
  9. Akan

    eroare

    Inlocuieste cache_get_field_name_int Cu cache_get_value_name_int
  10. Ai inclus un procesor de comenzi? De exemplu ZCMD: #include <zcmd>
  11. M-am uitat acum mai atent si am observat ca functia returneaza 0 daca nu gaseste un jucator cu acel nume, iar aceasta trebuie de fapt sa returneze INVALID_PLAYER_ID; Asa trebuie sa fie functia: stock GetPlayerID(playername[]) { foreach(Player, i) if(!strcmp(playername, ReturnPlayerName(i), false, 30)) return i; return INVALID_PLAYER_ID; }
  12. Akan

    ajutor eroare

    Da-mi discord-ul tau ca imi e mai usor sa te ajut asa decat sa las 100 de reply-uri aici.
  13. Dar nu asa ti-am spus sa faci. Uite asa ti-am spus: stock GetPlayerID(playername[]){ new x; foreach(Player, i) if(!strcmp(playername, ReturnPlayerName(i), false, 30)) x = i; return x; }
  14. Akan

    ajutor eroare

    E acelasi lucru daca pui cu 1 rand distanta sau fara. Deci ambele sunt bune. Sau poti pune direct new MySQL:SQL, Iterator:playerLogged<MAX_PLAYERS>, gQuery[1024];
  15. Akan

    ajutor eroare

    Da, verifica daca merge.
  16. Akan

    ajutor eroare

    Pai ti-am spus deja mai sus ce sa adaugi.
  17. Akan

    ajutor eroare

    Nu ai variabila globala "gQuery" definita. Adauga pe la inceputul gamemode-ului: new gQuery[1024]; Am pus orientativ 1024, poti pune tu cat consideri ca e nevoie pentru string-urile care folosesc gQuery.
  18. Akan

    ajutor eroare

    Linia respectiva trebuie sa arate in felul urmator: if(mysql_errno(SQL) != 0) print("[MySQL]: Baza de date nu s-a putut conecta cu succes."); Si inlocuiesti tu SQL cu numele variabilei tale pentru baza de date.
  19. Modifica in functia "GetPlayerID" linia if(strcmp(playername, ReturnPlayerName(i), false, 30)) x = i; in if(!strcmp(playername, ReturnPlayerName(i), false, 30)) x = i; Trebuie sa faci asta deoarece functia "strcmp" returneaza 0 daca cele 2 string-uri sunt la fel. Si returneaza 1 sau -1 daca nu sunt la fel. Deci, cum ai tu acum in cod, iti apeleaza "x = i" pentru fiecare jucator care NU are acelasi nume cu cel pe care l-ai scris in comanda.
  20. Limbajul se numeste "pawn". "Pawno" este editorul. (Nu am scris ca sa te injosesc, ci doar ca sa te ajut, scuza-ma)
  21. In primul rand ai o paranteza inchisa in plus dupa PlayerInfo[playerid][pMember] != 12 In al doilea rand nu are ce sa caute punct si virgula la sfarsitul unui if Deci ar trebui sa arate asa linia: if(PlayerInfo[playerid][pMember] != 15 && PlayerInfo[playerid][pMember] != 12 && PlayerInfo[playerid][pMember] != 20)
  22. Problema este in 'task SetPlayerUnjail[ 1000 ]( ) {' Acolo trebuie inlocuit script-ul acesta: if( GetPlayerCameraMode ( x ) == 53 ) { new Float: cam_pos ; GetPlayerCameraPos ( x, cam_pos, cam_pos, cam_pos ) ; if ( floatabs ( cam_pos ) > 50000 ) return va_SendClientMessageToAll(COLOR_LIGHTRED, "AdmBot: %s has been kicked by AdmBot, reason: Weapon Crasher #2.", GetName(x)); Kick(x); return 0; } cu acesta: if( GetPlayerCameraMode ( x ) == 53 ) { new Float: cam_pos ; GetPlayerCameraPos ( x, cam_pos, cam_pos, cam_pos ) ; if ( floatabs ( cam_pos ) > 50000 ) { va_SendClientMessageToAll(COLOR_LIGHTRED, "AdmBot: %s has been kicked by AdmBot, reason: Weapon Crasher #2.", GetName(x)); Kick(x); return 0; } } Return-ul este pus gresit doar pe trimiterea mesajului. Adica daca ai hack, trimite acel mesaj dar nu iei kick. Iar daca nu ai hack, nu trimite mesajul dar iei kick.
  23. Problema este in 'task SetPlayerUnjail[ 1000 ]( ) {' Acolo trebuie inlocuit script-ul acesta: if( GetPlayerCameraMode ( x ) == 53 ) { new Float: cam_pos ; GetPlayerCameraPos ( x, cam_pos, cam_pos, cam_pos ) ; if ( floatabs ( cam_pos ) > 50000 ) return va_SendClientMessageToAll(COLOR_LIGHTRED, "AdmBot: %s has been kicked by AdmBot, reason: Weapon Crasher #2.", GetName(x)); Kick(x); return 0; } cu acesta: if( GetPlayerCameraMode ( x ) == 53 ) { new Float: cam_pos ; GetPlayerCameraPos ( x, cam_pos, cam_pos, cam_pos ) ; if ( floatabs ( cam_pos ) > 50000 ) { va_SendClientMessageToAll(COLOR_LIGHTRED, "AdmBot: %s has been kicked by AdmBot, reason: Weapon Crasher #2.", GetName(x)); Kick(x); return 0; } } Return-ul este pus gresit doar pe trimiterea mesajului.Adica daca ai hack, trimite acel mesaj dar nu iei kick.Iar daca nu ai hack, nu trimite mesajul dar iei kick.
  24. Verifica callback-ul "OnPlayerWeaponShot", acolo trebuie sa fie ceva gresit.
  25. Sunt prea multe caractere in string, depinde si de ce nume are jucatorul si cat castiga, uneori trece de limita de 144 de caractere si de aceea uneori nu se vede. Mai scoate din culori.
×
×
  • 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.