Jump to content

Gireada

V.I.P
  • Posts

    2,688
  • Joined

  • Last visited

  • Days Won

    25

Everything posted by Gireada

  1. Normal ca a rezolvat, a scris mai jos.
  2. Ai gresit sectiunea. Alea sunt textdraw-uri http://wiki.sa-mp.com/wiki/TextDrawSetPreviewModel
  3. Dane comanda, nu stiu ce e cu tine, dar acolo scrie clar Liniile de cod
  4. Uitate in logul mysql sa vezi daca nu-ti da vreo eroare.
  5. Cu storage-ul, este simplu creezi o variabila new Storage[MAX_VEHICLES]; si cu o functie verifici in spatele carei masini este si pui Storage[idvehicul] += 10; // + 10 kg
  6. Punel tot intr-un pastebin.
  7. Tie iti da warning la linia 539 respectiv 544 din includerul impl.inc. Cauta includerul si vezi ca variabila time mai este definita odata. Eu as zice ca nu umblii pe acolo mai ales ca e un warning. Nu o sa te deranjeze la in timpul jocului.
  8. Cu ajutorul functie https://wiki.sa-mp.com/wiki/GetPlayerIp faci un for la OnPlayerConnect si verifici daca jucatorul care s-a conectat are ip-ul identic cu vreun jucator de pe server. Daca da, ii dai kick/bank.
  9. Arata-ne si nou ceva, asa noi nu putem ghici. OnPlayerKeyStateChange sau OnPlayerStateChange.
  10. Astea te vor ajuta cu tastele https://wiki.sa-mp.com/wiki/Keys http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange, asta te va ajuta cu random-ul http://wiki.sa-mp.com/wiki/Random sau functia stock randomEx(minnum = cellmin, maxnum = cellmax) return random(maxnum - minnum + 1) + minnum; In rest e vorba de variabilele pe care le ai tu.
  11. Daca ne uitam la if(sscanf(params, "fffii", x,y,z,interior,vw)) Vedem fffii care ar veni asa Float, Float, Float, int, int (x,y,z,interior,vw) Deci comanda noastra va arata asa /gotoxyz 0.000 0.000 0.000 0 0 - ne va duce la pozitia 0.00, 0.000, 0.000, si vom avea interiorul 0 si virtualul 0.
  12. CMD:gotoxyz(playerid, params[]) { if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first."); if(PlayerInfo[playerid][pAdmin] >= 5) { new string[128],interior,vw; new Float:x, Float:y, Float:z; if(sscanf(params, "fffii", x,y,z,interior,vw)) return SCM(playerid,COLOR_WHITE,"{FF9900}Scrie: {33CCFF}/gotoxyz <x> <y> <z> <interior> <virtual world>"); { SetPlayerPos(playerid, x, y, z); format(string,sizeof(string),"You've teleported to x = %f, y = %f, z = %f, interior %d.",x,y,z,interior); SendClientMessage(playerid,COLOR_WHITE, string); SetPlayerVirtualWorld(playerid, vw); SetPlayerInterior(playerid,interior); InHQ[playerid] = -1; InHouse[playerid] = -1; InBussines[playerid] = -1; StopAudioStreamForPlayer(playerid); } } else return SendClientMessage(playerid, COLOR_ERROR, AdminOnly); return 1; }
  13. Functia de a gasi coordonata spatelui a vehiculului este: GetXYBehindVehicle(vehicleid, &Float:q, &Float:w, Float:distance) { new Float:a; GetVehiclePos(vehicleid, q, w, a); GetVehicleZAngle(vehicleid, a); q += (distance * -floatsin(-a, degrees)); w += (distance * -floatcos(-a, degrees)); } iar http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange Te va ajuta cu tasta.
  14. Gireada

    Pawn.CMD

    Va prezint cel mai rapid procesor de comenzi. Acesta nu este creeat de mine, l-am gasit pe .com (toate creditele ii revin lui YourShadow) si ma gandeam sa le prezint si scripterilor care nu viziteaza acel forum. Mai jos gasiti un grafic, unde arata vitezele dintre procesoarele de comenzi. El are urmatoarele functii: native PC_RegAlias(const cmd[], const alias[], ...); native PC_SetFlags(const cmd[], flags); native PC_GetFlags(const cmd[]); native PC_EmulateCommand(playerid, const cmdtext[]); native PC_RenameCommand(const cmd[], const newname[]); native PC_CommandExists(const cmd[]); native PC_DeleteCommand(const cmd[]); native CmdArray:PC_GetCommandArray(); native CmdArray:PC_GetAliasArray(const cmd[]); native PC_GetArraySize(CmdArray:arr); native PC_FreeArray(&CmdArray:arr); native PC_GetCommandName(CmdArray:arr, index, dest[], size = sizeof dest); si urmatoarele callback-uri: forward PC_OnInit(); // calls after Pawn.CMD initialization forward OnPlayerCommandReceived(playerid, cmd[], params[], flags); // calls before a command forward OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags); // calls after a command Va voi arata un exemplu de comanda. cmd:help(playerid, params[]) // also possible to use CMD and COMMAND { // code here return 1; } Deci trecerea de la ZCDM la Pawn.CMD este foarte usoara, creearea comenzilor fiind identica. Singura diferata cand vorbim de comenzi este un alias. Deci daca in ZCMD aveam: CMD:salut(playerid, params[]) { SendClientMessage(playerid, -1, "Salutare"); return 1; } CMD:salut2(playerid, params[]) { return cmd_salut(playerid, params); } CMD:salut3(playerid, params[]) { return cmd_salut(playerid, params); } Adica comanzile /salut2 /salut3, vor face exact acelasi lucru ca si comanda /salut. In Pawn.CMD, treaba devenind mai simpla: CMD:salut(playerid, params[]) { SendClientMessage(playerid, -1, "Salutare"); return 1; } alias:salut("salut2", "salut3"); Deci sintaxa este astfe: alias:comanda("prescurtare"); Putem pune, cate prescurtari vrem noi fara a mai folosi CMD de zeceori sau de cate ori vrem sa scurtat o comanda. alias:comanda("prescurtare1", "prescurtare2","prescurtare3","prescurtare4"); Pentru mai multe detalii accesati link-ul asta. Download: Github
  15. hOpa # Hcs a cerut un tutorial cum sa pui interdictie la comanda ban, daca ea este folosita de prea multe ori. Pai vom avea nevoie de un contor, care sa contorizeze de cate ori este folosita comanda, de un timer care sa scada acel contor dupa un anumit timp si o variabila unde vom stoca id-ul timer-ului. Vom defini: #define MAX_ACCES 3 // poate folosi de 3 ori maxim comanda #define TIME_CONTOR 60000 // dupa 1 minut sa-i scada contorul new contorCMD[MAX_PLAYERS]; //contorul nostru new timerCMD[MAX_PLAYERS]; //timpul pe care il are jucatorul de cand a folosit comanda new timer[MAX_PLAYERS]; //unde vom stoca id-ul timer-ului forward TimeCMD(playerid); //definit functia, unde-i va scadea contorul La comanda noastra adaugam: if(timerCMD[playerid] == 0) // daca nu a facut exces sau a stat ceva timp timer[playerid] = SetTimerEx("TimeCMD", 1000, 1, "i", playerid); // va porni timer-ul cand va accesa comanda contorCMD[playerid]++; // contorul va creste pentru ca a folosit comanda if(contorCMD[playerid] >= 3) { BanEx(playerid, "Exces de ban"; return 1;} //iar daca a folosit comanda de 3 ori ii va da Ban si-i va afisa mesajul "Exces de ban" Iar acum la final vom creea timer-ul(functia) public TimeCMD(playerid) // numele functie, pe care l-am definit la inceput de tutorial { timerCMD[playerid]++; // variabila unde va creste timpul secunda dupa secunda if(timerCMD[playerid] >= TIME_CONTOR) // daca valoarea variabilei a depasit timpul definit { contorCMD[playerid]--; // contorul va scade timerCMD[playerid] = 0; // timpul va fi din nou 0 if(contorCMD[playerid] == 0)// iar daca contorul va ajunge la 0 se va opri timer-ul KillTimer(timer[playerid]); // cu functia KillTimer } } Sper ca ti-a fost de folos hOpa # Hcs, si celorlalti.
  16. Totodata, dupa ce l-ai trecut pe linux vei trebui sa pui pluginurile pe linux si inca un fisier pentru mysql. M-ai invata scripting si apoi fa-ti server.
  17. A postat linia si i-am rezolvat problema.
  18. Comanda este CMD:accept si daca dai mai jos vei gasi ceva de genul "vehicle" da-ne ce este acolo.
  19. Iti dau niste sfaturi. Daca esti nou, nu te baga la deschis server din prima. Daca esti nou, invata macar baza in limbajul pawn. Ca sa urci gamemode-ul intr-un host trebuie primadata sa treci serverul pe linux, iar apoi sa-l urci pe host cu ajutorul unui program ftp cum ar fi filezila. Dupa ce l-ai urcat editezi server.cfg si ii pui numele gamemode-ului la gamemode si numele filescript-urilor la filescript si sa nu uiti de pluginuri, cele mai importante. Baza de date daca e prea mare, acceseaza baza pe care o ai si impartea in doua/trei/patru, in cate parti ai nevoie. Sper ca am spus ce ai nevoie. Bafta.
  20. La inceputul gamemode-ului pui new ZburatorCP[MAX_PLAYERS]; iar la final pui public IsAZburator(carid) { if(carid = zbur[1] || carid == zbur[2] || carid == zbur[3] || carid == zbur[4] || carid == zbur[5]) { return 1; } return 0; }
  21. cauta o chestie PosX, si vezi ca trebuie sa pui Float: sa iasa asa Float:PosX. La fel faci si cu celelalte valori PosY, PosZ si Angle
  22. Gireada

    Ajutor GM

    Deci, presupun ca motivul principal dupa ce m-am uitat la functie ar fi un la if un []
  23. Ai gresit categoria colegu. Cauta mai pe la sfarsit.
×
×
  • 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.