Chiar daca ai avea un gamemode optimizat, oricum ar putea avea o portiune de cod ce face ca serverul sa pice. Instaleaza plugin-ul crashdetect, poate reusesti sa gasesti cauza.
Ontopic:
nu crea string-uri mari, doar 128 de caractere pot fi afisate pe 1 rand din chat;
for(new x; x < MAX_PLAYERS; i++) - acest loop va face 1000 de iteratii, chiar daca pe server sunt doar 5 jucatori, foloseste foreach-ul in acest caz;
incearca sa inlocuiesti array-urile cu variabile normale, ex: new Float:pPos[3] il poti inlocui cu new Float:pPos1, Float:pPos2, Float:pPos3, nu mereu un cod scris mai usor/rapid e mai eficient decat unul scris mai "greu";
opreste loop-urile la momentul potrivit, iti voi da un exemplu din gamemode-ul meu:
Dupa cate vezi, odata ce jucatorul a intrat intr-un HQ, loop-ul a fost oprit, de ce? Pentru ca daca jucatorul va fi la intrarea/iesirea HQ-ului factiunii cu ID-ul 1 insa am in total 20 de factiuni, s-ar mai face inca 19 iteratii aiurea.
in loc de mysql_query foloseste mysql_tquery deoarece, daca ai trimite un query catre DB folosind prima varianta serverul va trebui sa astepte pana cand s-ar executa si ar intoarce datele 'culese' in timp ce a doua varianta s-ar executa si ar trimite datele inapoi fara ca serverul sa fie afectat in vreon fel.
cand vrei sa selectezi doar 1 camp dintr-un tabel ce are 60 de campuri, pai selecteaza-l doar pe acela, exemplu:
Incorect:
Corect:
Asta ar fi doar un exemplu legat de query-uri, incearca sa inveti singur mai multe despre structura unui query, pana la urma SQL e si el un limbaj aparte si necista invatat.
foloseste switch-ul in loc de if cand ai mai multe iteme de verificat, un exemplu ar fi sa-l folosesti la OnPlayerDialogResponse, nu are rost sa-l folosesti doar pentru 1-2 conditii.
Acestea au fost doar cateva exemple, insa au un rol important. Sunt sigur ca daca vei mai cauta, o sa gasesti.