Hallo Community,
wie schreibe ich mein Script am besten Ressourcendsparend?
Ich habe zurzeit viele laggs immwieder...
LG
Hallo Community,
wie schreibe ich mein Script am besten Ressourcendsparend?
Ich habe zurzeit viele laggs immwieder...
LG
Gibts extra ein Tutorial dafür: [ SCRIPTING ] Code Optimierung
Also wäre es so perfekt ?:
new Paintball[MAX_PLAYERS],
Paintballstart = 0,
Meistekills = 0,
HatKills[MAX_PLAYERS],
Paintballpreis = 0,
Paintballkannstarten = 0,
gewinnername = 999,
jackgeld = 0,
Hatnummer[MAX_PLAYERS],
Kannlottokaufen,
bool:GibtGas[MAX_PLAYERS],
durchsuchen[MAX_PLAYERS][9],
hatpark[MAX_PLAYERS],
Kannrobbe[MAX_PLAYERS],
machtschein[MAX_PLAYERS],
IstBiz[MAX_PLAYERS],
Kannmitnehmen[MAX_PLAYERS],
Hatmull[MAX_PLAYERS],
BekommtGeld[MAX_PLAYERS];
reinfahrentrucker[MAX_PLAYERS],
mProdukt[MAX_PLAYERS],
Kartons[MAX_PLAYERS];
Truckfahren[MAX_PLAYERS],
Anfangsmission[MAX_PLAYERS],
pickuphotdog,
pickuphotdog2,
pickuphotdog3,
pickuphotdog4,
Kannblitzt[MAX_PLAYERS],
HitSound[MAX_PLAYERS],
Storycar[MAX_VEHICLES],
Sotoryman[MAX_PLAYERS],
checkgastimer,
Clearaxd[MAX_PLAYERS],
PlayerStoned[MAX_PLAYERS],
Auftragspieler[MAX_PLAYERS],
auftragfrei[MAX_PLAYERS],
Swatakti = 0,
hurending[MAX_PLAYERS],
Geldverdienst[MAX_VEHICLES],
gPlayerUsingLoopingAnim[MAX_PLAYERS],
Fahrpreis[MAX_VEHICLES],
Taxidienst[MAX_PLAYERS],
Fahrzeugstatus[MAX_VEHICLES],
vehicleidvonplayer[MAX_PLAYERS],
Mundtape[MAX_PLAYERS],
Augenbinde[MAX_PLAYERS],
Holzfahrzeug[MAX_PLAYERS],
Holzfahrzeug2[MAX_PLAYERS],
Float:Baumxdx2[MAX_PLAYERS],
Float:Baumxdy2[MAX_PLAYERS],
Float:Baumxdz2[MAX_PLAYERS],
Float:Baumxdx[MAX_PLAYERS],
Float:Baumxdy[MAX_PLAYERS],
Float:Baumxdz[MAX_PLAYERS],
reinfahrenvomholz[MAX_PLAYERS],
reinfahrenvomholz2[MAX_PLAYERS],
Bohrer,
Kannaufnehmenxd[MAX_PLAYERS],
Geldsack1,
Geldsack2,
Geldsack3,
Geldsack4,
Bankrobabladenxd[MAX_PLAYERS],
porten[MAX_PLAYERS],
MakesBankrob[MAX_PLAYERS],
HatGeldsack[MAX_PLAYERS];
Perfekt nicht, nein.
Du kannst nicht die Variablen nur zusammen fassen und denken das es besser ist, es liegt an deinem Code. Schau dir das Tutorial an, da wird einiges erklärt.
Aber wenn ich es so brauche brauche ich ja ewig das alles umzuschreiben oder nicht?
und ein perfekter befehl sollte dann so aussehen?
dcmd_ban(playerid,params[])
{
new pID;
new Grund[128];
new aname[MAX_PLAYER_NAME];
if(sscanf(params,"us",pID,Grund)) return SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /ban [playerid][Grund]");
if(!SInfo[playerid][pAdmin] >= 2) return SendClientMessage(playerid,COLOR_WHITE,"Du bist kein Admin!");
new string[128];
SendClientMessage(playerid,COLOR_RED,"Du hast den Spieler gebannt!");
GetPlayerName(pID, aname, sizeof(aname));
GetPlayerName(playerid, pname, sizeof(pname));
format(string,sizeof(string),"[JunkBuster] Admin %s hat Spieler %s gebannt! Grund: %s",pname,aname,Grund);
SendClientMessageToAll(COLOR_RED,string);
SInfo[pID][pBan] = 1;
Kick(pID);
return 1;
}
ZitatAber wenn ich es so brauche brauche ich ja ewig das alles umzuschreiben oder nicht?
Einige Zeit wird es bestimmt in Anspruch nehmen :>
Deshalb vorher bzw beim Scripten schonend schreiben.
Wegen dem Befehl, ist der so oke?
Womit du am schnellsten dein skript optimierst ist wenn du MAX_PLAYERS deiner Slotanzahl anpasst
#undef MAX_PLAYERS
#define MAX_PLAYERS Wert
da wofür 500 Tellen benutzen bei einem array oder alle 500 Spieler durchgehen wenn diese niemals connecten/ auf den Server können wenn der Server 50 Slots hat.
Was auch viel Memory spart ist die verwendung von Bit-Arrays
am besten schaust du dir mal das an
Und wie schreibe ich am besten die ganzen befehle?
Du kannst ocmd oder dcmd verwenden, sind aber nur ms unterschied.
dcmd_aufbohren(playerid,params[])
{
#pragma unused params
if(IsPlayerInRangeOfPoint(playerid, 20.0,146.0983,174.1579,484.5328))
{
if(BankrobZeit == 0)
{
if(SInfo[playerid][pBohrer] == 1)
{
BankrobZeit = 1;
SInfo[playerid][pBohrer] = 0;
SendClientMessage(playerid, COLOR_WHITE, "Der {D70000}Bohrer {F0F0F0}braucht ca. {D70000}3 Minuten {F0F0F0}bis das Schloss {D70000}geknackt {F0F0F0}ist!");
Bohrer = CreateObject(2985, 145.91389, 174.09129, 483.23419, 0.00000, 0.00000, 90.00000);
HatGeldsack[playerid] = 0;
SetTimer("BohrTimer",1000*60,0);
SetTimer("Komplettesende",1000*120*15,0);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsACop(i))
{
SendClientMessage(i,COLOR_RED,"HQ: Achtung: Der Banktresor wird aufgebohrt!!");
SendClientMessage(i,COLOR_RED,"HQ: Verbrechen: Aufbrechen vom Tresor/Bankrob, Gesuchter: Nicht bekannt!");
SendClientMessage(i,COLOR_RED,"HQ: Alle Einsatzkräfte zur Bank!");
}
}
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du musst dir zuerst einen Bohrer am Schwarzmarkt kaufen!");
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Bankrobs sind nur alle 120 Minuten möglich!");
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Du bist nicht in der Nähe der Bank!");
}
return 1;
}
Ja wäre dieses beispiel nun falsch oder richtig? Ich mein vom aufbau her... ich kann nur dcmd
Du kannst ocmd oder dcmd verwenden, sind aber nur ms unterschied.
Zwischen ocmd und dcmd ist schon mehr als nur ein paar sekunden unterschied.
Die agieren komplett unterschiedlich.
Insgesammt ist aber beides Schrott
Und wie schreibe ich am besten die ganzen befehle?
Du benutzt zum ersten ein vernünftigen Commandprozessor , wenn du konstante werte weißt solltest du diese auch benutzen und was den CPU schohnt ist wenn du
direkt beim verbinden den namen ausließt da du bestimmt den Namen in deinem Enum als string enthalten hast.
Commandprozessoren: pcmd, zcmd, ycmd oder die CMDProzessor-Plugins.
das mein ich jetzt nicht! Meine Frage ist doch bloß wie ich diesen blöden befehl am besten aufbauze... ich bleibe bei dcmd
Meine Frage ist doch bloß wie ich diesen blöden befehl am besten aufbauze
Das ist Coding Stil abhängig.
Da kann dir keiner helfen
Was kann man noch machen außer zcmd oder diese viriabeln zu ändern? Dieschleifen habe ich bereits alle geändert
unnötige Schleifen und timer vermeiden. Anstatt Timer hilft oft gettime().
Was kann man noch machen außer zcmd
Benutzte am besten DC_CMD, es ist das schnellste mir bekannte CMD Plugin.
Tests:
//e: Falls jemand ein schnelleres kennt, kann er es ja posten, würde es dann nämlich auch benutzen.
OnPlayerUpdate komplett ignorieren Inhalt in einen Timer verlagern
Alles anzeigenWomit du am schnellsten dein skript optimierst ist wenn du MAX_PLAYERS deiner Slotanzahl anpasst
#undef MAX_PLAYERS
#define MAX_PLAYERS Wert
da wofür 500 Tellen benutzen bei einem array oder alle 500 Spieler durchgehen wenn diese niemals connecten/ auf den Server können wenn der Server 50 Slots hat.
Was auch viel Memory spart ist die verwendung von Bit-Arrays
am besten schaust du dir mal das an
Naja, ne..
Dafür kann man auch GetMaxPlayers benutzen