Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: TokicMajstor poslato Mart 02, 2019, 21:15:23 POSLE PODNE

Naslov: Cesto pada skripta
Poruka od: TokicMajstor poslato Mart 02, 2019, 21:15:23 POSLE PODNE
Problem(error/warning): Od nedavno na serveru svim igracima jako cesto pada skripta, najcesce kad se /goto do nekog i kad se portujes gde ima vise objekata i kad se tek spawnujes pa odma kucas komande tada 100% ces morati relog. Zna li neko zbog cega bi moglo biti
Dio skripte: ne znam sta bih postavio ako treba onplayerspawn ali ne desava se samo tada cesto kad se gotas do nekoga i portujes bilo kud
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): //
Slika/video ingame problema(obavezno ako je ingame problem): Jednostavno padne skripta (kako se to kaze na engleskom?) znaci niko te ne vidi npr. portujes se do lika i on tebe ne vidi i npr. kucas /stats nista se ne prikaze.

Naslov: Odg: Cesto pada skripta
Poruka od: imnaithan poslato Mart 02, 2019, 21:56:23 POSLE PODNE
Mod ?
Naslov: Odg: Cesto pada skripta
Poruka od: TokicMajstor poslato Mart 02, 2019, 23:01:11 POSLE PODNE
Luda Kuca, nije s neta, tj. ja sam skripter  i original mod.
Naslov: Odg: Cesto pada skripta
Poruka od: dazer poslato Mart 02, 2019, 23:16:55 POSLE PODNE
Optimizacija
Naslov: Odg: Cesto pada skripta
Poruka od: TokicMajstor poslato Mart 02, 2019, 23:17:42 POSLE PODNE
Citat: Miki11 poslato Mart 02, 2019, 23:16:55 POSLE PODNE
Optimizacija

Ali sta da optimizujem i pojasni ako mozes
Naslov: Odg: Cesto pada skripta
Poruka od: Balsa. poslato Mart 02, 2019, 23:35:10 POSLE PODNE
Probaj sve, od stringova  pa do uklanjanja nebitnih mapa, uklanjanja nepotrebnih stvari, i mozes i poslat mozda tu komandu /goto da vidimo kako izgleda i te komande nakon kojih se desava to
Naslov: Odg: Cesto pada skripta
Poruka od: [][] Foxy 2k19 [][] poslato Mart 03, 2019, 17:34:34 POSLE PODNE
Optimizuj skriptu, smanji stringove itd, imas tutorijale kao ovaj (Xunder) --> http://balkan-samp.com/forum/index.php?topic=104732.0  :D
Naslov: Odg: Cesto pada skripta
Poruka od: --Lood-- poslato Mart 04, 2019, 09:30:40 PRE PODNE
daj mi kada uradis compile
Tj je l ti izbaci samo jednu
liniju ili
izbaci 5/6
Takodje daj mi samo jednu komandu /goto da vidim na kome si princpiru radio provjere i ostalo,
Preporuka
npr OnPlayerDialog
I sada nemoj u svaki dialog praviti new string[128], pomnozi to sa brojem diajloga i vidices da ce to biti neki broj oko 5000, a zamisli da to smanjis na 128, tako sto samo stavis ispod OnDialogresponse ili kako  se vec zove ta procedura, samo new string [128];
Ukratko to je i optimizacija koda
Naslov: Odg: Cesto pada skripta
Poruka od: anderson87 poslato Mart 04, 2019, 11:22:46 PRE PODNE
Ja msm da preko crashreporta mozess utvrdit gdje ti pada skripta koje komande i ostala sranja ako ti nesto ne vaalja u kodu
Naslov: Odg: Cesto pada skripta
Poruka od: Vasic poslato Mart 04, 2019, 14:11:24 POSLE PODNE
Ovako, prvi od problema moze biti da nisi stavio freeze na teleport, npr ovako: Dodjem ja i ulazim tipa u banku, udje mi u banku onako odma i nista ne cekam | tu stavi freeze npr na 3sec. Onda od drugog problema moze biti preveliki stringovi, npr: pravis neku komandu lupam /ban i kada banuje igraca logicno je da formatiras poruku koju ce igrac dobiti (jer ide i razlog i ime admina) e pa kad stavljas da ti posalje poruku SendClientMessage( playerid, -1, tajstring); 'tajstring' moze i da bude problem. Pogledaj koliki si broj definisao, npr definises new tajstring[1024]; a u recenici ima slova max. 128. E Pa taj string smanjis na 128. I Tako sve komande, pronalazis i optimizujes mod. Isto tako treci problem moze biti do Streamera, preporucujem ti da skines najnoviju verziju. Mora raditi neki od nacina. Ali naravno ako ne bude radilo, skines crashdetect plugin i ubacis ga. On ce ti automatski skenirati gde ti je pala skripta i izbacice ti u server.log-u.
Naslov: Odg: Cesto pada skripta
Poruka od: imnaithan poslato Mart 04, 2019, 16:44:18 POSLE PODNE
https://github.com/Zeex/samp-plugin-crashdetect/releases
Naslov: Odg: Cesto pada skripta
Poruka od: [][] Foxy 2k19 [][] poslato Mart 04, 2019, 17:16:43 POSLE PODNE
Optimizacija skripte , smanji stringove i t d imas na balkan samp optimizacija memorije Xunder je sve objasnio ...  :D
Naslov: Odg: Cesto pada skripta
Poruka od: bunta poslato Mart 05, 2019, 11:00:22 PRE PODNE
https://forum.sa-mp.com/showthread.php?t=643553
procitaj ovo
Naslov: Odg: Cesto pada skripta
Poruka od: TokicMajstor poslato Mart 05, 2019, 12:07:40 POSLE PODNE
Citat: --Lood-- poslato Mart 04, 2019, 09:30:40 PRE PODNE
daj mi kada uradis compile
Tj je l ti izbaci samo jednu
liniju ili
izbaci 5/6
Takodje daj mi samo jednu komandu /goto da vidim na kome si princpiru radio provjere i ostalo,
Preporuka
npr OnPlayerDialog
I sada nemoj u svaki dialog praviti new string[128], pomnozi to sa brojem diajloga i vidices da ce to biti neki broj oko 5000, a zamisli da to smanjis na 128, tako sto samo stavis ispod OnDialogresponse ili kako  se vec zove ta procedura, samo new string [128];
Ukratko to je i optimizacija koda


Ovako compile:

Pawn compiler 3.10.4 Copyright (c) 1997-2006, ITB CompuPhase

Header size:          60000 bytes
Code size:          9041392 bytes
Data size:         38360608 bytes
Stack/heap size:      80000 bytes; estimated max. usage=8614 cells (34456 bytes)
Total requirements:47542000 bytes


A evo /goto:

YCMD:goto(playerid, params[],help)
{
        if(UlogovanProvera[playerid] == 0) return Error(playerid, "Morate biti ulogovani, kako bi koristili komande!");
if(PlayerInfo[playerid][pRadi] == 1) return SCM(playerid,-1,"LudaKuca | "CRVENA"Radis posao ne mozes da koristis ovu komandu!");
new string[100], giveplayerid, giveplayer[MAX_PLAYER_NAME];
new Float:plx,Float:ply,Float:plz;
        if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pGM] >= 1 || PlayerInfo[playerid][pPromoter] >= 1 || PlayerInfo[playerid][pYouTuber] >= 1 || PlayerInfo[playerid][pImunitet] >= 1 || PlayerInfo[playerid][pVip] >= 5)
{
if( !sscanf(params, "u", giveplayerid ) )
               {
        if( giveplayerid == INVALID_PLAYER_ID ) return SCM(playerid, -1,""CRVENA"Igrac nije povezan!");
                        if( PlayerInfo[playerid][pAdmin] < PlayerInfo[giveplayerid][pAdmin]) return SCM(playerid,-1,"LudaKuca| "SPLAVA"Ne mozete se portati do igraca koji je jaci od vas!");
if( PlayerInfo[playerid][pTrazeniLevel] >= 1) return SCM(playerid,-1,"LudaKuca | "SPLAVA"Ne mozete se portati do igraca jer imate trazeni level!");
if(NaPubgEventu[playerid] == 1) return SCM(playerid,-1,""CRVENA"Ne mozes koristiti '/goto' na pubgu si, da izadjes koristi /napustipubg!");
if( PlayerInfo[giveplayerid][pTrazeniLevel] >= 1) return SCM(playerid,-1,"LudaKuca | "SPLAVA"Ne mozete se portati do igraca koji ima trazeni level!");
if( PlayerInfo[playerid][pZatvor] != 0) return SCM(playerid,-1,"LudaKuca | "SPLAVA"Ne mozete se portati do igraca jer ste zatvoreni!");
                        if( PlayerInfo[giveplayerid][pZatvor] != 0) return SCM(playerid,-1,"LudaKuca | "SPLAVA"Ne mozete se portati do igraca jer je zatvoren!");
if( PlayerInfo[playerid][pWar] >= 1) return SCM(playerid,-1,"LudaKuca | "SPLAVA"Ne mozete se portati do igraca jer ste u waru!");
if( PlayerInfo[giveplayerid][pWar] >= 1) return SCM(playerid,-1,"LudaKuca | "SPLAVA"Ne mozete se portati do igraca jer je u waru!");
if(PlayerInfo[playerid][pUEventu] > -1) return SCM(playerid,-1,"(( LudaKuca )) | "CRVENA"Ne mozes koristiti ovu komandu u eventu, /napustievent da izadjes !");
if(giveplayerid == playerid) return SCM(playerid, -1, "Ne mozes se portati do samog sebe!");
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerPos(giveplayerid, plx, ply, plz);
if (GetPlayerState(playerid) == 2)
{
new tmpcar = GetPlayerVehicleID(playerid);
SetVehiclePos(tmpcar, plx, ply+4, plz);
}
else
{
SetPlayerPos(playerid,plx,ply+2, plz);
}
SetPlayerInterior(playerid, GetPlayerInterior(giveplayerid));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(giveplayerid));
format(string, sizeof(string),""PLAVA".:: "BELA"LudaKuca "PLAVA"::.  "BELA"Teleportovao si se do igraca %s.",GetName(giveplayerid));
SCM(playerid, -1, string);
new arank[35];
if(PlayerInfo[playerid][pAdmin] == 1) { arank = "Admin Level 1"; }
else if(PlayerInfo[playerid][pAdmin] == 2) { arank = "Admin Level 2"; }
else if(PlayerInfo[playerid][pAdmin] == 3) { arank = "Admin Level 3"; }
else if(PlayerInfo[playerid][pAdmin] == 4) { arank = "Admin Level 4"; }
else if(PlayerInfo[playerid][pAdmin] == 5) { arank = "Admin Level 5 (Head-Admin)"; }
else if(PlayerInfo[playerid][pAdmin] == 6) { arank = "Admin Level 6 (Direktor)"; }
else if(PlayerInfo[playerid][pGM] == 1) { arank = "GameMaster Level 1"; }
else if(PlayerInfo[playerid][pGM] == 2) { arank = "GameMaster Level 2"; }
else if(PlayerInfo[playerid][pGM] == 3) { arank = "GameMaster Level 3"; }
else if(PlayerInfo[playerid][pPromoter] == 1) { arank = "Promoter"; }
else if(PlayerInfo[playerid][pVip] == 1) { arank = "Vip Level 1"; }
else if(PlayerInfo[playerid][pVip] == 2) { arank = "Vip Level 2"; }
else if(PlayerInfo[playerid][pVip] == 3) { arank = "Vip Level 3"; }
else if(PlayerInfo[playerid][pVip] == 4) { arank = "Vip Level 4"; }
else if(PlayerInfo[playerid][pVip] == 5) { arank = "Premium"; }
format(string, sizeof(string),""PLAVA".:: "BELA"LudaKuca "PLAVA"::.  "BELA"%s %s se teleportovao do tebe.",arank, GetName(playerid));
SCM(giveplayerid, -1, string);
}
else SCM(playerid, -1,""CRVENA"LudaKuca Pomoc | "BELA"/goto [ID/Nick]");
}
else SCM(playerid, -1,""PLAVA".:: "BELA"LudaKuca "PLAVA"::.  "BELA"Samo Admini & GM !");
return 1;
}