Das Skript / Script, lagt unnormal, sprich wenn ich ( /makeadmin o.Ä ) eingebe lagt der Server für paar Minuten / Sekunden ( 10 ~ 60 Sek. )
Woran liegt das?
Im Server.cfg bereits geschrieben:
ackslimit 5000
Das Skript / Script, lagt unnormal, sprich wenn ich ( /makeadmin o.Ä ) eingebe lagt der Server für paar Minuten / Sekunden ( 10 ~ 60 Sek. )
Woran liegt das?
Im Server.cfg bereits geschrieben:
ackslimit 5000
Schau mal hier rein: http://forum.sa-mp.com/showthread.php?t=271129
Damit kannst du exakt feststellen, was deine Laggs verursacht
Schau mal hier rein: http://forum.sa-mp.com/showthread.php?t=271129
Damit kannst du exakt feststellen, was deine Laggs verursacht
Poste mal deinen makeleader Befehl.
Anscheinend hast du da einen Fehler drinnen und er versucht auf einen ungültigen Index in einem Array zuzugreifen
Poste mal deinen makeleader Befehl.
Anscheinend hast du da einen Fehler drinnen und er versucht auf einen ungültigen Index in einem Array zuzugreifen
ocmd:makeadmin(playerid, params[])
{
new alevel,pid;
if(!IsPlayerAdmin(playerid) && !IsAdmin(playerid,4))return noaccess
if(sscanf(params,"ui",pid,alevel))return SendClientMessage(playerid,ROT,"Verwendung: /makeadmin (Spieler/ID) (Adminlevel)");
if(alevel>4 || alevel<0)return SendClientMessage(playerid,GRAU,"Das Adminlevel darf nicht größer als 4 und kleiner als 0 sein!");
if(pInfo[playerid][adminlevel]<alevel && !IsPlayerAdmin(playerid))return SendClientMessage(playerid,GRAU,"Du kannst dieses Adminlevel noch nicht setzen.");
if(!PlayerOnline(pid))return SendClientMessage(playerid,GRAU,"Dieser Spieler ist nicht erreichbar.");
/*for(new i=0; i<53; i++)
{
if(alevel!=4 && !IsAntiCheatEnabledForPlayer(pid,i))
{
EnableAntiCheatForPlayer(pid,i, true);
}
else if(alevel==4 && IsAntiCheatEnabledForPlayer(pid,i))
{
EnableAntiCheatForPlayer(pid,i, false);
}
}*/
pInfo[pid][adminlevel]=alevel;
new str1[120];
format(str1,sizeof(str1),"* %s hat dein Admin Rang auf %s gesetzt.",PlayerName(playerid),RangName(pid));
SendClientMessage(pid,GELB,str1);
format(str1,sizeof(str1),"* Du hast %s sein Admin Rang auf %s gesetzt.",PlayerName(pid),RangName(pid));
SendClientMessage(playerid,HBLAU,str1);
return 1;
}
Das sieht echt interessant aus
Kannst du mal zeigen, wie folgendes aussieht:
Das sieht echt interessant aus
Wieso?
enum ep
{
adminlevel,
job,
perso,
fraktion,
partner[MAX_PLAYER_NAME],
skin,
warns,
payday,
paydaytime,
spielstunden,
bank,
alter,
geburtsdatum[20],
hausidowner,
hausidmieter,
bizowner,
tankeowner,
autoschein,
flugschein,
bootsschein,
waffenschein,
tot,
totsek,
muted,
mutetime,
supbanned,
suptime,
bool:loggedin,
hathelm,
hatangel,
zollpass,
busrespekt,
hatkanister,
handynummer,
handykarte,
prison,
prisontime,
angelskill,
angelschein,
drugs,
pfandtype1,
pfandtype2,
tode,
morde,
verbrechen,
premium,
premiumdauer,
respekt,
level,
leader,
frang,
ziviskin,
inknast,
infbiknast,
knasttime,
fahrsperre,
fahrsperretime,
punkte,
firstaid,
spawnchange,
HatContract,
ContractMoney,
HatLotto
}
new pInfo[MAX_PLAYERS][ep];
stock RangName(playerid)
{
new rname[20];
switch(pInfo[playerid][adminlevel])
{
case 0:rname = ("Spieler");
case 1:rname = ("Supporter");
case 2:rname = ("Administrator");
case 3:rname = ("Head-Administrator");
case 4:rname = ("Projektleiter");
}
return rname;
}
#define noaccess SendClientMessage(playerid,GRAU,"Du darfst diesen Befehl nicht nutzen.");
Wieso?
Weil laut der Fehlermeldung du irgendwie sowas machst:
new test[12]; //Hast ein Array mit 12 Elementen
new alevel = 89; //Das ist der index auf den du zugreifen willst
test[alevel] = 5; //Das geht natürlich nicht, da du nur 12 (0-11) indizes hast, aber auf den 89 zugreifen willst.
In deinem Code allerdings...sehe ich weder ein Array mit 12 Elementen, noch dass du irgendwo alevel als index benutzt
Hast du mal dein Skript neu compilt und den Server neu gestartet?
Weil laut der Fehlermeldung du irgendwie sowas machst:
Cnew test[12]; //Hast ein Array mit 12 Elementen new alevel = 89; //Das ist der index auf den du zugreifen willst test[alevel] = 5; //Das geht natürlich nicht, da du nur 12 (0-11) indizes hast, aber auf den 89 zugreifen willst.
In deinem Code allerdings...sehe ich weder ein Array mit 12 Elementen, noch dass du irgendwo alevel als index benutzt
Hast du mal dein Skript neu compilt und den Server neu gestartet?
Ja , tut mir leid ich meinte /makeleader keine Ahnung warum es in der Server.exe makeadmin stand...
ocmd:makeleader(playerid,params[])
{
new pid,pidname[MAX_PLAYER_NAME],msg1[444],msg2[444],setfrakid;
if(!IsAdmin(playerid,3))return noaccess
if(sscanf(params,"ui",pid,setfrakid))return SendClientMessage(playerid,GRAU,"Verwendung: /makeleader (Spieler/ID) (FraktionsID)");
if(!PlayerOnline(pid))
{
if(sscanf(params,"si",pidname,setfrakid))return SendClientMessage(playerid,GRAU,"Der Spieler ist offline, daher: /makeleader (SpielerNAME) (FraktionsID)");
if(mysql_CheckAccountNAME(pidname)==0)return SendClientMessage(playerid,GRAU,"Dieser Spieler wurde in der Datenbank nicht gefunden.");
if(setfrakid!=0)return SendClientMessage(playerid,GRAU,"Der Spieler kann Offline nur auf FRAKTIONSID:0 gesetzt werden.");
format(msg1,sizeof(msg1),"Du hast %s (Offline) zum Leader der Fraktion %s gemacht.",pidname,setfrakid);
if(setfrakid==0)format(msg1,sizeof(msg1),"Du hast %s (Offline) zum Leader der Fraktion Zivilisten gemacht.",pidname);
SendClientMessage(playerid,GRUEN,msg1);
mysql_SetInt("spieler", "leader", 0, "name",pidname);
mysql_SetInt("spieler", "fraktion", 0, "name",pidname);
return 1;
}
pInfo[pid][fraktion]=setfrakid;
pInfo[pid][leader]=setfrakid;
pInfo[pid][frang]=FrakInfo[setfrakid][maxrangs];
format(msg1,sizeof(msg1),"Du hast %s zum Leader der Fraktion %s gemacht.",PlayerName(pid),FrakInfo[setfrakid][frakname]);
if(setfrakid==0)format(msg1,sizeof(msg1),"Du hast %s zum Leader der Fraktion Zivilisten gemacht.",PlayerName(pid));
format(msg2,sizeof(msg2),"%s %s hat dich zum Leader der Fraktion/Gang %s gemacht.",RangName(playerid),PlayerName(playerid),FrakInfo[setfrakid][frakname]);
if(setfrakid==0)format(msg2,sizeof(msg2),"%s hat dich als Leader entlassen!",PlayerName(playerid));
SendClientMessage(playerid,HBLAU,msg1);
SendClientMessage(pid,HBLAU,msg2);
pInfo[pid][ziviskin]=pInfo[pid][skin];
switch(setfrakid)
{
case 0:
{
SetPlayerColor(pid, COLOR_PLAYER_SPIELER);
/*
pInfo[pid][skin]=pInfo[pid][ziviskin];
*/
pInfo[playerid][ziviskin]=217;
SetPlayerSkin(pid,217);
SendClientMessage(pid, HBLAU, "Du bist nun Zivilist.");
/*
SetSpawnInfo(pid, 0, pInfo[playerid][ziviskin], 0.0, 0.0, 0.0, 0.0, 0,0,0,0,0,0);
*/
}
case 1:
{
pInfo[pid][skin]=187;
SetPlayerSkin(pid,187);
SetPlayerColor(playerid, COLOR_PLAYER_SPIELER);
}
case 2:
{
pInfo[pid][skin]=283;
SetPlayerSkin(pid,283);
SetPlayerColor(playerid, COLOR_PLAYER_SPIELER);
}
case 3:
{
pInfo[pid][skin]=294;
SetPlayerSkin(pid,294);
SetPlayerColor(playerid, COLOR_PLAYER_SPIELER);
}
case 4:
{
pInfo[pid][skin]=71;
SetPlayerSkin(pid,71);
SetPlayerColor(pid, 0x00FFFFFF);
}
case 5:
{
pInfo[pid][skin]=227;
SetPlayerSkin(pid,227);
SetPlayerColor(pid, 0xFF5A00FF);
}
case 6:
{
pInfo[pid][skin]=275;
SetPlayerSkin(pid,275);
SetPlayerColor(pid, 0xE00000FF);
}
case 7:
{
pInfo[pid][skin]=107;
SetPlayerSkin(pid,107);
SetPlayerColor(playerid, COLOR_PLAYER_SPIELER);
}
case 8:
{
pInfo[pid][skin]=293;
SetPlayerSkin(pid,293);
SetPlayerColor(playerid, COLOR_PLAYER_SPIELER);
}
case 9:
{
pInfo[pid][skin]=108;
SetPlayerSkin(pid,108);
SetPlayerColor(playerid, COLOR_PLAYER_SPIELER);
}
case 10:
{
pInfo[pid][skin]=230;
SetPlayerSkin(pid,230);
SetPlayerColor(playerid, COLOR_PLAYER_SPIELER);
}
}
return 1;
}
Und bei /aduty lagt es ebenso aber es steht nichts in der Server.exe über aduty o.Ä
ocmd:aduty(playerid,params[])
{
new str[128],str2[128];
if(!IsAdmin(playerid,1))return noaccess
if(AdminDuty[playerid]==0)
{
format(str,sizeof(str),"* %s %s meldet sich zum Support an.",RangName(playerid),PlayerName(playerid));
SetPlayerHealth(playerid, 9999);
SendClientMessageToAll(0xE10000FF,str);
SetPlayerColor(playerid, 0xFF0000FF);
AdminDuty[playerid]=1;
format(str2,sizeof(str2),"%s im Dienst",RangName(playerid));
adutylabel[playerid]=Create3DTextLabel(str2,ROT,0.0,0.0,0.0,35.2,GetPlayerVirtualWorld(playerid),0);
Attach3DTextLabelToPlayer(adutylabel[playerid],playerid,0.0, 0.0, 0.7);
for(new i=0; i<sizeof(ReportTd); i++)
{
TextDrawShowForPlayer(playerid,ReportTd[i]);
}
}
else
{
format(str,sizeof(str),"* %s %s hat sich vom Support abgemeldet.",RangName(playerid),PlayerName(playerid));
SendClientMessageToAll(0xE10000FF,str);
if(pInfo[playerid][fraktion]!=4 && pInfo[playerid][fraktion]!=5 && pInfo[playerid][fraktion]!=6)
{
SetPlayerColor(playerid, COLOR_PLAYER_SPIELER);
}
if(pInfo[playerid][fraktion]==4)
{
SetPlayerColor(playerid, 0x00FFFFFF);
}
if(pInfo[playerid][fraktion]==5)
{
SetPlayerColor(playerid, 0xFF5A00FF);
}
if(pInfo[playerid][fraktion]==6)
{
SetPlayerColor(playerid, 0xE00000FF);
}
SetPlayerHealth(playerid, 100);
AdminDuty[playerid]=0;
Delete3DTextLabel(adutylabel[playerid]);
for(new i=0; i<sizeof(ReportTd); i++)
{
TextDrawHideForPlayer(playerid,ReportTd[i]);
}
}
return 1;
}
Okay
FrakInfo[setfrakid][maxrangs];
Hier ist der Fehler.
Also FrakInfo ist auf 12 deklariert. Du willst aber jemanden in Frak 89 setzen...diese Frak existiert natürlich nicht und dementsprechend failt das.
Du musst eine Abfrage einbauen, ob der Wert von setfrakid auch 0-11 ist
Okay
Hier ist der Fehler.
Also FrakInfo ist auf 12 deklariert. Du willst aber jemanden in Frak 89 setzen...diese Frak existiert natürlich nicht und dementsprechend failt das.
Du musst eine Abfrage einbauen, ob der Wert von setfrakid auch 0-11 ist
C:\Users\xxx\Desktop\Test\gamemodes\aw1337.pwn(7468) : warning 213: tag mismatch
C:\Users\xxx\Desktop\Test\gamemodes\aw1337.pwn(7468) : warning 206: redundant test: constant expression is non-zero
if(leader>11)return SendClientMessage(playerid,GRAU,"Bitte gültigen Fraktions-ID eingeben!");
So?
Nein...so:
if(setfrakid < 0 || setfrakid > 11) return SendClientMessage(playerid,GRAU,"Bitte gültigen Fraktions-ID eingeben!");
Nein...so:
if(setfrakid < 0 || setfrakid > 11) return SendClientMessage(playerid,GRAU,"Bitte gültigen Fraktions-ID eingeben!");
Danke jedoch lagt das Skript immer noch weiter, auch wenn ich nur ganz normal schreibe...
Du hast ja auch noch nicht das getan...was ich am Anfangs post geschrieben hatte
Du hast ja auch noch nicht das getan...was ich am Anfangs post geschrieben hatte
Klar habe mir profiler geholt aber wo stehen jetzt die Errors?
/e
hier ein Video dazu:
Ich bezweifle das es am Script liegt, denn ich hatte die Probleme nie bei meinem Script das einfach irgendwelche Lags auftauchen.
Versuch es mal mit einem anderem Server.
Ich bezweifle das es am Script liegt, denn ich hatte die Probleme nie bei meinem Script das einfach irgendwelche Lags auftauchen.
Versuch es mal mit einem anderem Server.
Hmmmm,
hat jemand noch Ahnung warum das Skript lagt?
Ich leider nicht habe aber das selbe Problem
Ich leider nicht habe aber das selbe Problem
Liegt am Script - an keinen Server.
Irgendetwas wurde schlecht geschrieben.
Glaube auch das irgendwas schlecht geschrieben wurde.
Ich habe es so wie du auch local getestet und da laggt es nach einer Zeit wie bei dir