Jump to content

shane

Membru
  • Posts

    124
  • Joined

  • Last visited

  • Days Won

    19

Everything posted by shane

  1. Salut @R4zvyy, Nu stiu cum functioneaza acest 'Reborn'. Am auzit ceva de resetat levelul, rp-urile si nu mai stiu ce. Mai jos o sa-ti explic cum ai putea realiza asta. Iti voi explica cum ar trebui sa vina in '/shop', ca am vazut mentionat mai sus. In comanda '/shop' vei adauga o noua optiune, 'Reborn', care ar trebui sa vina ceva de genul. Nu are rost sa-ti mai explic cum faci asta, comanda poate sa difere de ce iti explic eu, pur si simplu cauti comanda 'shop' in gamemode, te uiti pe acolo si adaugi o optiune noua, dupa cum sunt adaugate celelalte. Dupa care vei merge la dialogul de confirmare al comenzii /shop (In cele mai mari cazuri, dialogul e 'DIALOG_SHOP'), si vei adauga variabilele pe care vrei sa le resetezi. Exemplu: case nr_urmatorul_case: { playerData[playerid][pLevel] = playerData[playerid][pRespect] = playerData[playerid][pMoney] = 0; //etc, ce vrei tu sa mai resetezi. //aici dam un bonus de 100 pp-uri, am vazut ca ai scris pe undeva mai sus, daca vrei sa mai dai ceva, adaugi tu cum doresti playerData[playerid][pPremiumPoints] += 100; new _Query[80]; //dupa care, va trebui sa actualizezi noile date in baza de date mysql_format(SQL, _Query, sizeof _Query, "UPDATE `users` SET `Level`=0, `Respect`=0, `Money`=0, `PremiumPoints`=%d WHERE `ID`=%d;", playerData[playerid][pPremiumPoints], playerData[playerid][pSQL]); mysql_tquery(SQL, _Query, "", ""); SendClientMessage(playerid, -1, "Contul tau a primit 'Reborn'. Ti-a fost resetat levelul, punctele de respect si banii."); SendClientMessage(playerid, -1, "Drept bonus pentru aceasta actiune, ai primit: 100 de puncte premium."); //etc, alte actiuni care vrei sa se intample } Variabilele si modul in care ai tu creata comanda /shop poate sa difere. Eu ti-am dat un exemplu, nu e nimic complicat, e treaba de cateva minute. Ce iti ramane tie de facut e sa asezi codul in script asa cum vrei si sa iti pui variabilele, eu ti-am dat ideea. Bafta, mentionez ca doar am auzit de acest sistem de Reborn.
  2. @R4zvyy Schimba linia 35 cu asta: hook OnPlayerConnect(playerid) return RemoveBuildingForPlayer(playerid, 1226, 1808.1250, -1859.5391, 16.3516, 0.25); //stalp spawn
  3. @R4zvyy Poftim, https://pastebin.com/3Pe1KE1E
  4. @R4zvyy Pune pe pastebin.com tot codul din include si da-mi link aici.
  5. Salut @GamerulFOX, Linia 99: Adauga inca un simbol din asta " & ", ai nevie de cate 2. (Rezultat: if(vehicleid == TaxiCars[0] && vehicleid == TaxiCars[1] && vehicleid == TaxiCars[2]) ) Linia 114: Lafel, adauga cate un " & " in plus, si cate un " = " in plus, ai exemplul de mai sus.
  6. @R4zvyy Primul warning (linia 1): Schimba din "public load_Maps()", in "function load_Maps()", sau adauga "forward load_Maps();" inainte de "public load_Maps()". Eroarea de la linia 3: Probabil ai lasat faza cu RemoveBuilding in functia respectiva. Ca sa intelegi mai bine, tu nu folosesti functia load_Maps() pe un jucator. Sterge toate randurile care contin cuvantul "playerid" si eroarea o sa dispara. Insa, cum ti-am spus si mai sus, daca randurile sunt de genul "RemoveBuildingForPlayer(playerid, etc etc..);", atunci, aduni toate randurile la un loc si le pui la OnPlayerConnect, in gamemode. Mai clar de atat nu stiu cum sa-ti explic. Eroarea de la linia 2164: Adauga in include-ul tau, sus de tot (prima linie), "#tryinclude <YSI_Coding\y_hooks>"
  7. Salut @R4zvyy, Pentru a folosi mappingul din include, fa urmatoarele: Schimba numele din LoadMaps in altceva (ex: load_Maps) Daca folosesti y_hooks, poti foarte simplu, sa le introduci pe server apeland OnGameModeInit folosind y_hooks (ex: hook OnGameModeInit() return load_Maps();), direct in include-ul tau. Daca nu, va trebui sa adaugi o linie noua in gamemode, la publicul OnGameModeInit, adica sa apelezi noua ta functie, care sa introduca mappingul. (Ex: inainte de return 1;, in OnGameModeInit, adaugi load_Maps();) Sterge linia RemoveBuildingForPlayer si muta-l la OnPlayerConnect. Functia ta ar trebui sa arate asa: public load_Maps() { CreateObject(etc..); CreateObject(etc..); return true; } //cu y_hooks, direct in include-ul tau hook OnGameModeInit() return load_Maps(); //fara y_hooks, adaugi direct in OnGameModeInit, din gamemodeul tau (.pwn) public OnGameModeInit() { //restul de cod pe care l ai.. //dupa care.. load_Maps(); return true; } Dupa cum vezi, a disparut si acel " ; " pe care il ai tu la "public LoadMaps(); {" Conform erorilor tale, LoadMaps exista deja intr-un include sau in gamemode-ul tau, deci de asta este necesar ca numele noii tale functii sa fie schimbat. Cat despre eroarea de la linia 27, rezolvarea va veni odata cu modificarile pe care le vei face, dupa exemplul pe care ti l-am oferit. Mai clar de atat nu iti pot explica. Multa bafta!
  8. Salut @UbiquiTouS., Problema provine de la linia respectiva, deoarece ai adaugat " ; " la sfarsitul verificarii, fara nici o explicatie in plus. O verificare arata in felul urmator: if(variabila != 12 && variabila != 15 && variabila != 20) return SendClientMessage(playerid, -1, "You are not in Taxi/Uber/etc."); // ==> LINIA TA, CU PROBLEMA: if(variabila != 12 && variabila != 15 && variabila != 20); <== (;) // ==> SAU POATE ARATA ASA LA TINE if(variabila != 12 && variabila != 15 && variabila != 20); return SendClientMessage(playerid, -1, "ceva"); //fapt pentru care va trebui sa elimini acel ; din prima linie, care iti indica problema Mai mult de atat nu-ti pot explica in momentu asta, ca nu ma pot gandi la o explicatie mai simpla. Practic, dupa verificarea ta, trebuie sa se intample ceva, ori returnezi un mesaj, ori altceva. Iar ca un mic sfat, fara nici o legatura la problema, dar care o sa te ajute in simplitate, e sa creezi o functie care sa detecteze daca e in factiunile respective sau nu, care poate arata ceva de genul: isInTransportFaction(playerid) return PlayerInfo[playerid][pMember] != 12 && PlayerInfo[playerid][pMember] != 15 && PlayerInfo[playerid][pMember] != 20 ? false : true; //==> IAR VERIFICAREA SE FACE IN FELUL URMATOR if(!isInTransportFaction(playerid)) return SendClientMessage(playerid, -1, "You are not in Taxi/Uber/Etc."); Practic, mai scapi de niste linii de cod, iar cand adaugi o factiune noua, adaugi direct in functia isInTransportFaction noua factiune.
  9. Salut @AnDrEyUpS , In primul rand, nu ar trebui sa setezi variabila StartQuest[playerid] pe 1 (true), inaintea celorlalte verificari. Practic, tu daca nu ai inceput questul si ai dat /startquest, dar nu esti in locatia potrivita (cum ai tu verificarea acolo), variabila StartQuest o sa fie setata pe 1, iar apoi o sa-ti returneze mesajul cum ca nu esti in locatia potrivita. Si probabil de aici si pleaca problema ta. Deci, muti variabila StartQuest[playerid] inainte de "return 1;", in asa fel incat sa fie setata doar in cazul in care nu intampini vr-o problema (adica sa nu ai licenta de condus, sau sa nu fii in locatia potrivita), cum ai tu facute verificarile. La asta ma refer prin problema. Cam asa ar trebui sa arate comanda, ca sa-ti faci o idee despre ce am zis: CMD:startquest(playerid, params[]) { if(StartQuest[playerid]) return SCM(playerid, COLOR_SPECIALMISSION, "Special Quest: Text."); //StartQuest[playerid] = 1; ==> ASTA STERS if(!IsPlayerInRangeOfPoint(playerid, 3.5, 1123.0138, -1127.3977, 23.8047)) return SCM(playerid, COLOR_INFO, "Eroare: Nu esti la locatia potrivita."); if(pInfo[playerid][pCarLic] > 1) return SCM(playerid, COLOR_INFO, "Eroare: Nu ai licenta de condus!"); SetPlayerRaceCheckpoint(playerid, 0, 2091.1172 ,-1278.4653, 26.1797, 2091.1172, -1278.4653, 26.1797, 3.5), CP[playerid] = 348; SCM(playerid, COLOR_SPECIALMISSION, "Special Quest: Text."); StartQuest[playerid] = 1; // ==> ASTA ADAUGAT return 1; }
  10. Salut @Aesma, Asta s-ar putea sa te ajute.
  11. ~ V0.02 (20 Sept) ~ Am adaugat cateva detectari noi pentru urmatoarele tipuri de cheat: Rapid-Fire, Health-Hack, Money-Hack Pentru detectarile de la health si money puteti folosi functiile de la sa-mp (SetPlayerHealth si GivePlayerMoney), chiar daca majoritatea s-au obisnuit cu GivePlayerCash sau SetPlayerHealthEx. Se aplica ce am scris in primul post (primul reply), va trebui sa mai modificati cate ceva. De asemenea, mai astept si sfaturi in privinta lui, optimizari, propuneri, corectari si asa mai departe, iar cu timpul poate o sa-l fac sa poata fi folosit si fara YSI, doar ca asa mi-a venit mie mai usor. Download: https://bit.ly/3lEzLiE VirusTotal: https://bit.ly/3Ay7qRm
  12. SA-MP Anticheat Include 'Anticheatu' actioneaza impotriva urmatoarelor tipuri de cheaturi: Troll-Hack, Fly-Hack, Speed-Hack, Teleport-Hack, Jetpack, Fake-Kill, Invisible-Hack A fost conceput acum aproape 2 ani, dar a ramas lafel de eficient si in ziua de azi. Pentru a putea fi folosit, gamemode-ul vostru necesita libraria YSI, acesta foloseste y_hooks si y_timers. E simplu de implementat, doar introduceti fisieru in folderul in care va sunt situate include-urile (pawn/include de obicei), adaugati in functia 'SetPlayerPosEx', urmatoarea linie "serverTeleported(playerid);", si includeti fisierul in gamemode prin linia "#include <locatia_voastra/anticheat_EX>" Desigur, s-ar putea sa fie anumite diferente care sa impiedice integrarea in gamemode, asta in cazuri rare.. depinde de voi sa il folositi. Va trebui sa faceti o verificare, in cazul in care jucatorul e admin, sa nu primeasca kick. Nu am adaugat, pentru ca depinde de la gamemode, la gamemode. Aceasta verificare se adauga in functiile 'OnCheatDetect' si 'OnWarningExecute'. E chestie la care aveti nevoie de cunostinte basic.. Posibil sa mai adaug cate o verificare, sa il mai modific, cand am dispozitia si timpul necesar. Download: https://bit.ly/3jG8X0q VirusTotal: https://bit.ly/3jEUm5q
  13. Salut @ZeNY, Eroarea poate fi din urmatoarea cauza: Ori nu ai randurile respective in tabelul din care incerci sa extragi datele, ori nu ai nici un rand in tabel, cu indexul "0", din care tu incerci sa extragi datele respective. Exemplu: ID Name Level 0 shane 10 ID "0" nu exista in tabelul 'players', din care vreau sa extrag datele. Mai poti verifica si daca ai adaugat tot ce trebuie cand ai facut acest update al versiunii mysql sau poti incerca o alta versiunea R39 (-3, -4, -5, -6 de preferat) De asemenea, o posibila problema ar fi diferenta dintre functia respectiva in versiunea mai veche si cea noua.
  14. Salut @seek nephrite, Ce iti mai recomand eu, pe langa ce a spus Banditu, elimina variabilele curente de la pin si fa verificarea in felul urmator: Daca jucatorul are in baza de date valoarea din coloana 'Pin', mai mare de 0 (Ex: 1234 pinul meu), sa ii il detecteze ca si cum ar avea un pin pe cont setat. Nu are rost sa creezi atatea variabile. Exemplu din care ai putea intelege mai clar la ce ma refer: //o variabila noua playerVariables[playerid][pPin] //o functie noua havePlayerPin(playerid) return playerVariables[playerid][pPin] > 0 ? true : false; //Asta se traduce in felu urmator: Daca jucatorul are pPin mai mare de 0 (ex: 1234), atunci se va returna ca are pin pe cont (true), iar daca nu, se va returna ca nu are pin (false) //o simpla verificarea in momentul in care se logheaza pe cont if(havePlayerPin(playerid)) showPinDialog(playerid); //salvarea pinului in baza playerVariables[playerid][pPin] = pinul intrudus; etc.. In alta ordine de idei, Daca vrei sa ramai la ideea ta, unul din motivele pentru care nu iti afiseaza dialogul de pin la logare, in cazul in care il ai setat pe cont, e faptul ca nu incarci valoarea din baza de date pentru variabila care detecteaza ca ai un pin setat pe cont. Practic, variabila ta e 0, ceea ce inseamna ca nu ai un pin pe cont.
  15. Salut @Matei02Mihai, Daca te referi la animatia din GTA San Andreas, cauta 'UsePlayerPedAnims();', si sterge linia respectiva din gamemode. Daca vrei animatia ca pe toate serverele, atunci, adaugi 'UsePlayerPedAnims();' la OnGameModeInit.
  16. Salut @VAurel, Tu ai creat variabila vText, care sa corespunda unui vehicul anume (exemplu: vText[vehicleid]). In liniile in care iti afiseaza erorile, nu ai trecut id-ul vehiculului pentru care ai creat acel obiect (vText), pe care vrei sa l atasezi. Corect ar fi in felul urmator: AttachDynamicObjectToVehicle(vText[vehicleid], vehicleid, 0.0, -0.5, 0.55, 0.0, 0.0, 0.0); // 1601 Daca nu ai inteles, verifica pe rand ce am adaugat eu in plus mai sus, cu o linie din codul tau, de unde porneste eroarea. Ti-am explicat cat mai simplu zic eu. Bafta.
  17. Salut @Powed, Mai jos de linia 28216 ai omis sa adaugi " , " intre variabilele type, value si level.
  18. Salut @FloriNNN, Asta s-ar putea sa te ajute: Instaleaza versiunile atat pentru x64 cat si pentru x86 (Versiunea ARM64 nu ar trebui sa aiba importanta) Apropo, crashdetect trebuie pus inainte de sscanf (adica primul in lista), am impresia ca iti spune cand pornesti serverul de treaba asta. Mai poti incerca sa muti linia plugins imediat dupa linia gamemode0, nu am incercat niciodata, e doar o sugestie, desi nu prea cred ca are vr-o legatura ordinea lor.
  19. Salut @marianpro2020, Iti pot oferi doua posibile rezolvari pentru problema ta, insa, sa-ti explic ce semnifica acel "url". O sa-ti explic "ca la prosti" (fara nici o legatura, nu te cunosc), link-ul respectiv trebuie sa se termine cu .mp3 (ex: sa-mp.ro/melodie.mp3 sau domeniu.ro/melodie.mp3). Deci, ca sa folosesti o melodie de pe youtube, tu trebuie sa convertesti melodia respectiva in format .mp3 si sa folosesti linkul respectiv sau poti folosi o resursa cum ar fi aceasta (click pe "aceasta") ori poti converti melodia pe site-ul acesta (click pe "acesta"). Multa bafta!
  20. Salut @Andrei[H], O alta posibila problema pe care o poti avea e ca firma de la care ai cumparat webhost-ul sa nu accepta conexiuni externe cu alte baze de date decat cele gazduite de catre ei. Poti deschide un ticket la firma de host sa le explici problema si sa astepti un raspuns din partea lor. Fie te pot ajuta, fie nu. Eu am patit asta odata pe xservers.ro (nu e reclama). (Asta in cazul in care te-ai asigurat bine ca nu ai introdus datele gresit).
  21. Salut @r0hanescu, Problema e ca tu nu ai setat o valoare pentru variabila "cash", deci aceasta este default, adică 0. Exemplu: new cash = 50000; // valoarea e acum 50000 P_Data[playerid][pCash] += cash; aici adaugi 50000 la suma curenta. Sau poti trece direct 50.000 în pCash fara sa mai creezi variabila respectiva. Ex: P_Data[playerid][pCash] += 50000; Iar ca niste sfaturi, la salvarile de genul in baza, foloseste mysql_tquery in loc decat mysql_query. (Diferența e "t" inaintea lui query. Pentru detalii cauta pe forum sau pe internet informatii despre mysql). El se salvează, dar e mai ok in varianta mea. Iar ca un alt sfat, ai grija cum concepi sistemul, sa nu detectezi niciodata suma de bani a unui jucător prin intermediul "GetPlayerMoney", pentru ca poți oricand sa-ti faci de cap la hacku si sa dispui de bani infiniti. Uite un exemplu cum sa-l concepi: stock GivePlayerCash( playerid, cash ) { new Query[ 100 ]; P_Data[ playerid ][ pCash ] += cash; mysql_format( handle, Query, sizeof Query, "UPDATE `conturi` SET `Cash`='%d' WHERE `Nume`='%s';", P_Data[ playerid ][ pCash ], GetName( playerid ) ); mysql_tquery( handle, Query, "", "" ); return true; } stock GetPlayerCash( playerid ) return P_Data[ playerid ][ pCash ]; [...] prin exemplu de mai sus, tot ce trebuie sa mai faci e un timer in care sa fie resetata suma de bani din HUD, adica aia din GTA, cu suma de bani pe care o are jucatorul. Ca sa te pun sa mai "faci" si tu ceva, ca practic ti-am oferit pe tava, te las pe tine sa cauti metoda prin care poti face acel timer. Iar ca sa te ajut putin si aici, eu cunosc doar 2 metode, metoda generala a samp-ului, "SetTimer" / "SetTimerEx" sau folosirea unui include din libraria YSI, "y_timers", pe care o si recomand (a 2-a metoda). Daca cauti "YSI by Y_Less" pe google, e primul rezultat. Multa bafta.
  22. Salut @Xtrem_Maddox, Parerea mea sincera, fara nici un subiect referitor la problema ta, deoarece "m-am" jucat doar cateva ore cu versiunea DL si nu pot sa-ti ofer un raspuns la problema, insa.. mie personal mi-ar placea un meniu nou pentru selectarea "gangului" din care vrei sa faci parte. Te poti folosi si de texturi custom din cate stiu, cu care ai putea realiza ceva si mai misto. Ma rog, asta daca folosesti versiunea DL si nu te referi la altceva. Si din cate stiu, atunci cand adaugi modele noi pe DL, trebuie sa le pui un id specific, care porneste de la un numar anume special adaugat pentru aceasta versiune. Adica daca tu ai inlocuit skinul 270 cu altul, posibil ca asta sa fie problema. Multa bafta.
  23. Foarte simplu, precum ti-a explicat si Allexseiggen mai sus. Exemplu: cmd:finish( playerid, params[] ) { if( !startedMission[ playerid ] ) return SendClientMessage( playerid, -1, "Nu esti intr-o cursa." ); //dupa care, daca jucatorul este in cursa, ii resetam variabila startedMission[ playerid ] = 0; // si restul de cod pe care il ai tu return true; }
  24. Salut @AnDrEyUpS, De ce nu creezi o variabila noua prin care sa verifici daca jucatorul a inceput misiunea? Exemplu: new startedMission[ MAX_PLAYERS ]; //variabila creata cmd:startmission( playerid, params[] ) { if( startedMission[ playerid ] ) return SendClientMessage( playerid, -1, "Deja esti intr-o misiune." ); startedMission[ playerid ] = 1; //setata pe 1 (adica a inceput misiunea) SendClientMessage( playerid, -1, "Ai inceput o noua misiune." ); //restul de cod pe care il ai return true; } Iar cand termini misiunea, resetezi verificarea prin urmatoarea linie "startedMission[ playerid ] = 0;".
  25. Ori nu ai schimbat locatia pentru compilare (in /pawno/compiler), ori ai alte probleme la PC.
×
×
  • 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.