Jump to content

Banditul

Moderator
  • Posts

    1,134
  • Joined

  • Last visited

  • Days Won

    96

Everything posted by Banditul

  1. Nicaieri, daca citeai in pagina de github acela este documentatia pluginului (ce face cum se instaleaza etc dar e in rusa)
  2. https://github.com/CyberMor/sampvoice Aici regasesti ce ai nevoie + instructiuni
  3. https://github.com/pBlueG/SA-MP-MySQL/releases/tag/R39-6 Varianta de win32 daca esti pe windows, si copiezi ce e in arhiva in folderul principal unde ai samp-server.exe
  4. Ce informații mai exact nu ti se salveaza? Eventual verifica mysql log si vezi daca sunt erori
  5. Asta pentru ca dupa linia cu addlogchat(mch, playerid); Ai return 0; care iti opreste executia acolo si tot ce ai dupa acel return nu mai este executat. Sterge acel return 0
  6. Well, loguri. Daca nu ai erori in serverlog ai verificat mysqlog? Poate e ceva gresit care nu are legatura cu datele de conectare ci cu totul altceva
  7. Edit: Si ce a spus SebyP e o posibila cauza Mesajul erori este destul descriptiv si iti spune ce trebuie sa faci, din pacate locatia erori nu este. Recomandarea mea este verifici atat gm tqu cat si fisierele pe care le incluzi cu #include si sa verifici daca y_hooks este trecut cum trebuie. De asemenea daca folosesti o versiunea mai veche de ysi posibil sa fie vorba si de eventuala eroare in ysi si sa fie nevoie sa actualizezi.
  8. Da. A fost introdus doar in4.20 deci daca folosesti 4.19 nu vei mai avea acele mesaje
  9. Ok....In scurta descriere de la crashdetect daca pui acea setare in server.cfg ar trebui sa dezactiveze aceste verificari si trimiterea mesajelor in log. In orice caz iti spune ca functia CloseCells are probleme de performanta https://github.com/Zeex/samp-plugin-crashdetect#configuration
  10. Doar daca eventual il compilezi tu pe sistem centos7 (poate e nevoie si de ceva modificari nu stiu). Altfel o versiunea mai veche 2.9.4 2.9.3 care iti functioneaza
  11. Poti pune long_call_time 0 in server.cfg ca sa dezactivezi aia. Nu prea ai ce optimiza la YSI doar eventual sa folosesti ultima versiune si poate sa nu folosesti debug mode cand rulezi scriptul pe host(adica sa nu compilezi cu -d3)
  12. Ori folosesti o versiunea mai veche a pluginului ori ii rogi pe cei de la host sa instaleze/actualizeze acea librarie (daca hostul tau foloseste centos 7 din pacate o versiunea mai veche e recomandarea mea pe baza unei discuti cu cineva care se afla in aceasi situatie cu streamer 2.9.5 si cei de la support i-au spus ca au deja ultima versiune disponibila a librariei)
  13. Doar o idee nu spun ca asta e problema dar daca ai masinile cu CreateVehicle unul dintre parametri este respawn_delay CreateVehicle(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay, addsiren=0) Atat timp cat nu este -1 masinile tale for fi respawnate automat in functie de acel delay (secunde) daca nu sunt folosite
  14. Ai nevoie de sa-mp server 0.3.7 cel putin ca sa poti rula acel script https://www.sa-mp.ro/downloads/ Aici gasesti 0.3.7 R2
  15. As putea traduce codul pe care il ai in ceva asemanator cu enum pData { // date aici STREAMER_TAG_AREA: MusicZone[3], // alte date aici eventual } new Player[MAX_PLAYERS][pData]; if (strcmp("/enablemusic", cmdtext, true) == 0) { Player[playerid][MusicZone][0] = CreateDynamicCircle(-2130.5364,-2061.0081,63.3233, 30.0, playerid: playerid); Player[playerid][MusicZone][1] = CreateDynamicCircle(-2218.7273,-2154.1978,43.6795, 20.0, playerid: playerid); Player[playerid][MusicZone][2] = CreateDynamicCircle(-2197.3599,-2254.3499,30.8057, 20.0, playerid: playerid); return 1; } if (strcmp("/disablemusic", cmdtext, true) == 0) { DestroyDynamicArea(Player[playerid][MusicZone][0]); DestroyDynamicArea(Player[playerid][MusicZone][1]); DestroyDynamicArea(Player[playerid][MusicZone][2]); Player[playerid][MusicZone][0] = 0; Player[playerid][MusicZone][1] = 0; Player[playerid][MusicZone][2] = 0; return 1; } public OnPlayerEnterDynamicArea(playerid, areaid) { if (areaid == Player[playerid][MusicZone][0]) { PlayAudioStreamForPlayer(playerid, "https://uploadir.com/u/0ggegbx6"); } else if (areaid == Player[playerid][MusicZone][1]) { PlayAudioStreamForPlayer(playerid, "https://uploadir.com/u/57dvvuy7"); } else if (areaid == Player[playerid][MusicZone][2]) { PlayAudioStreamForPlayer(playerid, "https://uploadir.com/u/qvov4zt0"); } } public OnPlayerLeaveDynamicArea(playerid, areaid) { StopAudioStreamForPlayer(playerid); } Stiu ti-am complicat logica si codul dar cel putin asa as vizualiza ce incerci sa faci si anume sa creezi 3 zone pentru player in care sa asculte muzica in momentul in care activeaza acest lucru. Acum, poate un cerc nu este potrivit pentru acea zona poate ai nevoie de un dreptunghi sau altceva pentru asta. In cazul in care doresti ca acest lucru sa fie mai general si daca consideri ca acele poziti cu muzica sunt pentru toate lumea si nu vor diferi poti folosi codul de mai jos. Desigur poate fi facut mai usor de organizat in cazul in care ai mai multe zone cu muzica dar e ceva de baza, sper ca se intelege. enum pData { // date aici HasMusicEnabled, // alte date aici eventual } new Player[MAX_PLAYERS][pData]; if (strcmp("/enablemusic", cmdtext, true) == 0) { if (Player[playerid][HasMusicEnabled] == false) // Desigur acel Player[][] este cea ce foloseti tu pentru a stoca informatii despre player { Player[playerid][HasMusicEnabled] = true; } else { Player[playerid][HasMusicEnabled] = false; } return 1; } new MusicAreas[3]; public OnGameModeInit() { MusicAreas[0] = CreateDynamicCircle(-2130.5364,-2061.0081,63.3233, 30.0); MusicAreas[1] = CreateDynamicCircle(-2218.7273,-2154.1978,43.6795, 20.0); MusicAreas[2] = CreateDynamicCircle(-2197.3599,-2254.3499,30.8057, 20.0); } public OnPlayerEnterDynamicArea(playerid, areaid) { if (Player[playerid][HasMusicEnabled] == true) { if (areaid == MusicAreas[0]) { PlayAudioStreamForPlayer(playerid, "https://uploadir.com/u/0ggegbx6"); } else if (areaid == MusicAreas[1]) { PlayAudioStreamForPlayer(playerid, "https://uploadir.com/u/57dvvuy7"); } else if (areaid == MusicAreas[2]) { PlayAudioStreamForPlayer(playerid, "https://uploadir.com/u/qvov4zt0"); } } } public OnPlayerLeaveDynamicArea(playerid, areaid) { StopAudioStreamForPlayer(playerid); } Daca ai intrebari ma poti intreba oricand. Ti-as sugera citesti eventual linkul pe care ti l-am oferit despre cum cum functioneaza streamer si poate ca tema sa citesti despre arrays ( nu neaparat in limbajul pawn )
  16. Din pacate poti avea doar un sigur stream care sa functioenze per player la un moment. Daca pornesti mai multe in acelasi timp doar ultimul va functiona Ti-as recomanda eventual sa folosesti streamer mai exact https://github.com/samp-incognito/samp-streamer-plugin/wiki/Natives-(Areas) Te poti folosi de areas de la streamer pentru a crea anumite zone pe serverul tau si in momentul in care playerul intra/iese din acea forma pe care o creezi sa pornesti/opresti muzica si desigur bazat eventual pe o variabila gen Player[playerid][HasPlayerMusicEnabled] astfel poti avea muzica in acele zone
  17. Daca ai descarcat si folosesti YSI 5+ acel format de include este invalid. Va trebuie sa faci #include <YSI_Storage\y_ini> Daca ai ysi 4 tot este relativ incorect cu noile versiuni de ysi 4, #include <YSI\y_ini> . Vezi \ in loc de / Cat despre eroarea cu sscanf va fi nevoie sa creezi un fisier pawn.cfg (neaparat sa fie asa, poti da save as din notepad) in care sa notezi (daca nu ma insel) -Z+
  18. In loc de -1 la ShowPlayerDialog pune eventual 0 sau un id de dialog nefolosit. Poate trebuia sa testez inainte de a oferi solutia
  19. Poti folosi functionalitatea de search pe care platforma forumului o detine
  20. Nu stiu daca mai functioneaza sau functiona dar poti incerca sa banezi ip playerului si sa il debanezi (aici ma refer la comanda de rcon) new string[50], playerIp[17]; GetPlayerIp(playerid, playerIp); format(string, sizeof(string), "banip %s", playerIp); SendRconCommand(string); format(string, sizeof(string), "unbanip %s", playerIp); SendRconCommand(string); SendRconCommand("reloadbans"); // eventual pentru siguranta ca fim siguri ca nu mai este banat Stiu ca asta genera un timeout si ii dadea kick dupa care il reconecta. Dar nu pot garanta 100%
  21. Te-as ruga daca e posibil sa folosesti ultima versiune de crashdetect in cazul in care nu folosesti si sa compilezi gm cu argumentul -d3 ( mai specific sa ai un fisier pawn.cfg in folderul pawno cu -d3 scris in fisier sau daca folosesti alt editor decat pawno sa ai -d3 in acel script de build care foloseste pawncc ) si sa recompilezi scriptul. In momentul de fata nu par sa fie prea multe informati de debug ( ma refer mai exact la linia sau locatia mai exacta unde se intampla problema si facand asta poate aflam mai multe Dupa mesajul erori pot doar presupune faptul ca in acele timere incerci sa accesezi o functie/variabila/referinta care nu (mai) exista in memorie
  22. Presupun ca este vorba despre verificarea daca jucatorul foloseste o masina de taxi. Ambele variante sunt corecte si ar trebui sa functioneze. Intrebarea este, cTaxi[0] cTaxi[1] cTaxi[2] contin masina de taxi? Aici ma refer la cTaxi[0] = CreateVehicle(...)/AddStaticVehicle(...); Pentru ca daca nu ai asa ceva in codul tau nu o sa functioneze. Bonus: Trebuie pus dupa sscanf, pentru ca daca il ai inainte de sscanf variabila id este 0 si nu contine inca id playerului dorit.
  23. In primul rand acele array cu MAX_PLAYERS sunt inutile deoarece toate acele variabile pe care le creezi sunt sterse din memorie in momentul in care comanda atinge ultima acolada. In al doilea rand, functia GetPlayerHealth nu returneaza o valoare ci o paseaza prin referinta ceea ce inseamna ca hp tau corect se afla in variabilele: viata viata2 (udne era necesar doar o singura variabila) Voiam sa iti repar comanda da codul ala e atat de greu de citit si inteles. CMD:heal(playerid, params[]) { if(fMedic[playerid] == 0) return SendClientMessage(playerid, 0xff0000FF, "Nu faci parte din factiunea 'Medic' !"); new id, hp; if(sscanf(params, "ud", id, hp)) return SendClientMessage(playerid, 0x00aeffFF, "/healp <playerid/name> <amount>"); if(!IsPlayerConnected(id) || id == INVALID_PLAYER_ID) return SCM(playerid, 0xff0000FF, "Acel jucator nu este conectat!"); new Float:x, Float:y, Float:z; GetPlayerPos(id, x, y, z); if(!IsPlayerInRangeOfPoint(playerid, 2.0, x, y, z)) return SendClientMessage(playerid, 0xff0000FF, "Nu esti langa acel player!"); if(GetPlayerMoney(id) < hp*2) return SendClientMessage(playerid, 0xff0000FF, "Acel jucator nu are suficienti lei, pentru acel hp!"); new viata; GetPlayerHealth(id, viata); if(viata >= 100) return SendClientMessage(playerid, 0xff0000FF, "Acel jucator are deja viata maxima!"); new name[MAX_PLAYER_NAME], name1[MAX_PLAYER_NAME]; GetPlayerName(playerid, name, sizeof(name)); GetPlayerName(id, name1, sizeof(name1)); format(string, sizeof(string), "Iai oferit lui %s %d heal!", name1, hp); SendClientMessage(playerid, 0x00aeffFF, string); format(string2, sizeof(string2), "Medicul %s ti-a oferit %d heal, iar tu l-ai platit!", name, hp); SendClientMessage(id, 0x00aeffFF, string2); new pay; pay = hp*2; GivePlayerMoney(id, -pay); GivePlayerMoney(playerid, hp * 2); SetPlayerHealth(id, viata+hp); return 1; } Poate asa iti este mai usor sa urmaresti logica comenzi. Am incercat sa separ comanda in pasi mai logici.
  24. enum { DIALOG_NULL, DIALOG_LOGIN } CMD:updates(playerid, params[]) { new string[144]; format(string, sizeof string, "Adaugat comanda /updates\nAdaugat x\nAdaugat y\nRezolvat z"); ShowPlayerDialog(playerid, DIALOG_NULL, DIALOG_STYLE_MSGBOX, "Updates", string, "Close"); return 1; } Cel mai de baza exemplu pe care ti-l pot oferi. Si o poti modifica cum doresti. Edit: Aparent id -1 pentru dialog face cu totul altceva. Nu am testat
  25. In cazul conditiei tale daca amenda este 2000$ si playerul detine 2001$ sau 1999$ rezultatul va fi pozitiv si anume acel mesaj fi afisat. Doar in cazul amenda si bani jucatorului sunt 2000$ exact atunci rezultatul e negativ si comanda continua. Poate ai prefera sa ai if(GetPlayerMoney(id) < amenda) return SendClientMessage(playerid, 0xff0000FF, "Acel jucator nu are suficienti lei pentru a platii amenda!"); Caz in care daca jucatorul are mai putini bani decat amenda va afisa mesajul
×
×
  • 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.