Jump to content

Banditul

Moderator
  • Posts

    1,134
  • Joined

  • Last visited

  • Days Won

    96

Everything posted by Banditul

  1. Considerand ca te folosesti de functia MySQL_PQueryInline presupun ca folosesti si YSI 5+ care include aceasta functie https://github.com/pawn-lang/YSI-Includes/blob/5.x/YSI_Extra/y_inline_mysql.inc#L102 Daca citesti parametri pe care ii accepta, nu vad unde anume cere un string gol dupa query, practic in momentul de fata fucntiile tale inline nu asteapta parametri dar tu le trimiti un string gol pe care nu il asteapta/accepta MySQL_PQueryInline(SQL, banofflinePlayer, gQuery); MySQL_PQueryInline(SQL, using inline altinline, gQuery); Ar fi variantele corecte si posibilul motiv pentru care iti da "unknown command" De asemenea un mic tip: Foloseste '%e' in loc de '%s' pentru orice e introdus de cineva pentru in momentul de fata se poate face sql injection, mai exact aici mysql_format(SQL, gQuery, 256, "SELECT * FROM `users` WHERE `Name` = '%s' LIMIT 1", name);
  2. E posibil sa nu se incarce, iti mesajul ca plugin s-a icnarcat corect? De asemenea "crashdetect <found>" foarte probabil sa nu functioneze din cauza crashdetect
  3. Stiu ca asta se intampla in momentul in care serverul este 'blocat' (processaza altceva) si nu poate procesa si OnPlayerConnect in acelasi timp care e foarte probabil cand serverul porneste ai e nevoie sa xonfigureze lucruri. O posibila rezolvare, care face codul sa ruleze mai efficient, este sa nu compilezi gm cu -d3 (debug mode) astfel incat sa fie generat cod mai eficient, si inlocuiesti crashdetect cu JIT (care optimizeaza codul in timpul rulari). Considerand faptul ca ai inceput sa folosesti YSI codul care este rulat la pornire e posibil sa ruleze ceva mai incet pentru ca configureaza multe lucruri si nu prea are importanta pentru ca este procesat o singura data. Eventual poti incerca open.mp care ruleaza mult mai eficient si mult mai bine si care are multe buguri rezolvate.
  4. public e_COMMAND_ERRORS:OnPlayerCommandReceived(playerid, cmdtext[], e_COMMAND_ERRORS:success) { if(success == COMMAND_UNDEFINED) { SCMM(playerid, COLOR_GREY, "Error: Unknown command!"); return COMMAND_OK; } return COMMAND_OK; } Incearca asa
  5. https://github.com/pawn-lang/YSI-Includes/issues/5#issuecomment-96043340 Aparent pentru verificarea aia ai nevoie de OnPlayerCommandReceived nu de OnPlayerCommandPerformed pentru ca daca comanda e invalida e imposibil sa fie executata
  6. ## `error 017: undefined symbol "_is_now_DYNAMIC_MEMORY_"` This will occur on: #pragma dynamic 65536 The error tries to explain the problem. y_malloc can allocate memory from the heap or from global memory. If you are not using `YSI_NO_HEAP_MALLOC` it will use the heap (obviously), aka. dynamic memory. Because of this, it needs to control how much dynamic memory there is. Thus, instead of using `#pragma dynamic`, use `DYNAMIC_MEMORY`: #define DYNAMIC_MEMORY (65536) // Inainte de orice include public e_COMMAND_ERRORS:OnPlayerCommandReceived(playerid, cmdtext[], e_COMMAND_ERRORS:success) public e_COMMAND_ERRORS:OnPlayerCommandPerformed(playerid, cmdtext[], e_COMMAND_ERRORS:success) Si aici gasesti ce valori sa verifici pentru if (success == ) https://github.com/Misiur/YSI-Includes/blob/e9cf7a1e4154517f2b06cbd36efd0742c2cc3408/YSI_Visual/y_commands/impl.inc#L108-L120 Cat despre acel timer nu sunt 100% sigur pentru ca e prima data folosit in felul asta https://github.com/pawn-lang/YSI-Includes/blob/5.x/YSI_Coding/y_timers/features.md Presupun ca poti pune Timer:timer Pacanele[]()
  7. Aparent exista o functie in YSI numita Range stock Range(const arr[], num = sizeof (arr)) Va trebui sa iti modifici numele parametului , poate in loc de Range sa fie range Edit: Eroarea de la linia 278 e probabil "Dont use SCM" care inseamna ca va trebui sa scrii SendClientMessage
  8. Esti sigur ca ai pus folderele/fisierele de la YSI in folderul pawno > include ? Cele din arhiva asta
  9. Nu folosi #include <foreach> foloseste #include <YSI_Data\y_iterate>
  10. https://github.com/pawn-lang/YSI-Includes
  11. Nu e nici o diferenta. Dar daca folosesti prima sintaxa si nu primesti warning legat de faptul ca sintaxa e veche atunci inseamna ca folosesti o versiune foarte antica de YSI sau folosesti acel foreach standalone care e la fel de antic si care recomandat nu ar trebui folosite. Noile versiuni de YSI au destul de multe imbunatatiri atat de performanta cat si noi functionalitati.
  12. Cel mai probabil iti spune ca folosesti acel #include <foreach> care nu e necesar daca folosesti #include <YSI_Data\y_iterate>
  13. Tot ce e acolo si il pui in folderul pawno > includes
  14. Da in acest caz iti sugerez https://github.com/pawn-lang/YSI-Includes/releases/download/v5.06.1932/YSI-Includes.zip Pentru ca cel mai probabil nu ai YSI in folderul tau de includes
  15. Cele declarate cu #include in scriptul tau pentru a vedea ordinea. Dar daca eventual folosesti acest progress2 atunci cel mai probabil nu ai YSI_Data/y_y_iterate
  16. Poti arata atunci ordinea pe care o ai includes? Si esti sigur ca ai y_iterate.inc in folderul pawno > includes > YSI_Data?
  17. Va trebui sa incluzi progress2 dupa acel 'folder' care deja include y_iterate sau sa incluzi y_iterate inainte de a include progress2
  18. Asta poate insemna 2 lucruri: Conexiunea serverului tau cu baza de date a esuat de la inceput sau eventual baza de date nu e functionala in momentul de fata(putin probabil)
  19. Va trebui sa vezi daca iti apar erori in mysql log sau server log si incepi de acolo
  20. Poti incepe prin a nu instala modpaackuri si sa incerci cu gta curat. Pentru ca acele moduri probabil ti-au corupt jocul in vreun fel si din cauza asta nu iti functioneaza.
  21. Versiunea linux de server https://www.virustotal.com/gui/file/59db9845b0c28688ff4da35970b36da12d962021ffb372e14ee3559d59ce3ece Versiunea windows de server https://www.virustotal.com/gui/file/40686ab80e74155b8ed9a51e59edc0c812eba8436047ac5a467268f34a78fd03 Acum e foarte probabil sa fie si fals pozitiv pentru ca nici un antivirus nu e perfect sau poate sa fie adevarat. De asemenea in acel link exista si un fisier ...meta.xml conform caruia archive.org au facut o verificare malware dar nu exista un rezultat. Din pacate ce pot zice este ca ramane la decizia ta daca doresti sa il descarci sau nu. Din cate stiu in momentul in care forumul sa-mp.com a fost inchis, acele fisiere au fost salvate de catre comunitate prin intermediul archive.org si daca nu ma insel acele fisisre sunt exact fisierele care se regaseau pe sa-mp.com (din pacate nu mai stiu exact adresa in care puteau fi vizualizate toate fisisrele pe care Kalcor le incarcase) Edit: Daca accesezi profilul https://archive.org/details/@sa-mp_archive regasesti chiar si 0.3.7 si clientul de 0.3.7-DL . Si la un moment dat pe archive.org se regasea si forumul de la sa-mp.com dar presupun ca a fost sters
  22. Nu neaparat dar cum a mentionat si Woops in topicul pe care l-am mentionat, tine de optimizarea memoriei pe care variablele o folosesc s.a.md.. Ce face acel #pragma dynamic e iti mareste memoria alocata pentru scriptul tau astfel incat sa poate functiona (care uneori e posibil sa fie necesar si nu este neparat un lucru rau) dar intr-un fel iti ascunzi codul neoptimizat
  23. Solutia rapida si urata e #pragma dynamic , cazul in care ai deja atunci mareste valoarea daca nu eventual poti incepe cu #pragma dynamic 10000 si maresti daca e nevoie Solutia poate mai buna
  24. Greseala mea recunosc, greseala de a include lucruri irelevante la intrebare topicului. O sa imi revizuiesc raspunsul sa fie cat mai corect pentru intrebare, multumesc. Edit: Revizuit raspunsul oferit
  25. O revizitare a raspunsului oferit mai devreme care din pacate si din greseala mea a omis o multime de informatii. Promit sa corectez in aceasta revizie. https://pastebin.com/4vLDGKWm Rezultat Un if: 0 ms 1 milion if: 16 ms 1 mesaj formatat si trimis: 0 ms 1 milion mesaje formatate si trimise: 164 ms Un if cu mesaj formatat&trimis: 0 ms 1 milion if/else cu mesaje formatate&trimise: 173 ms Testat pe un Intel i5-4460 3.4GHz destul de mult sub procesoarele care se regasesc pe servere la momentul actual. Dupa cum se vede chiar daca faci 1 milion de verificari una dupa alta viteaza procesari este neglijabila dar doar daca valoarea corespunde cu primele cazuri, in momentul in care adaugam mai multe cazuri sa fie verificate si valoarea variabilei este mai 'mare' cu cat devine mai lent caz in care folosirea un switch este benefica. 1 milion if, test = 1: 19 ms 1 milion if, test = 2: 24 ms ...... 1 milion if, test = 11: 82 ms tickCount = tickcount(); for (new i = 0; i < 1000000; i++) { if (test == 1) {} else if (test == 2) {} else if (test == 3) {} else if (test == 4) {} else if (test == 5) {} else if (test == 6) {} else if (test == 7) {} else if (test == 8) {} else if (test == 9) {} else if (test == 10) {} else if (test == 11) {} else {} } printf("1 milion if, test = 11: %i ms", tickcount() - tickCount); Cat despre switch 1 milion switch, test = 1: 0 ms 1 milion switch, test = 2: 0 ms ......... 1 milion switch, test = 11: 0 ms tickCount = tickcount(); for (new i = 0; i < 1000000; i++) { switch (test) { case 1: break; case 2: break; case 3: break; case 4: break; case 5: break; case 6: break; case 7: break; case 8: break; case 9: break; case 10: break; case 11: break; } } printf("1 milion switch, test = 11: %i ms", tickcount() - tickCount); Concluzie pentru sectiunea asta: Cazul in care planuiesti sa adaugi poate mai mult de 10-20 limbi cel mai bine are fi sa folosesti swtich pentru a face verificarea limbi. Pentru cazul acetui de avea 2 e irelevant ce folosesti. Facand concluzia de mai devreme am rescris testele cu switch Un switch/2 cases cu mesaj formatat&trimis: 0 ms 1 milion switch/2 cases cu mesaje formatate&trimise: 172 ms 1 milion switch/10 cases/test = 11 cu mesaje formatate&trimise: 175 ms Si cele 3 teste https://pastebin.com/A7bYN7h9 (devenea prea mare raspunsul) Revenind totusi la intrebare. Este atat de neglijabila diferenta de performanta incat nu merita sa iti bati capul, as zice ca diferenta e cat se poate de a fi aproape inexistenta. Sper ca am raspuns de data aceasta cu mult mai bune informatii.
×
×
  • 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.