Nabend.
Ich habe eine kleine Frage:
Ist das richtig:
enum IRGENDWAS
{
KA[32],
Float:KA2,
KA3;
}
oder
enum IRGENDWAS
{
KA[32],
Float:KA2,
KA3;
};
?
Ich meine jetzt den Strickpunkt am Schluss. Kann ich den weglassen oder ist er notwendig?
Denn bis heute hab ich ihn immer weggelassen ohne Error beim compilen.
Hat das irgendwelche Folgen?
Thema: enum
- Double-O-Seven
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
enum IRGENDWAS
{
KA[32],
Float:KA2,
KA3
};
Nach dem letzten kannst du Komma machen oder nicht, aber nach } muss ein Strichpunkt sein. -
Und wieso wird beim compilen kein Error angezeigt, wenn ich es nicht mache?
Kann es sein, dass Server manchmal abkackt, weil ich es nicht mache? -
Gute Frage.Beides ist wohl möglich.
enum e_Vehicle_Info {
bool:bLockCar,
LockCount,
bool:bDestroy
}
new VehicleInfo[MAX_VEHICLES][e_Vehicle_Info];
Funktioniert bei mir ohne Probleme. -
Das Problem ist, dass der Server manchmal zufällig crasht und ich finde einfach keine Bugs. Ich logge viel in der Serverlog und ich werde einfach nicht schlau. Nie ist bei einem Crash die selbe Situation. Eine Ausnahme: Bei einem Derby ist Server immer abgestürzt. Wieso?
Wegen einer Variable mit einem enum. Ich habe vergessen, diese Variable (eine Integer) zu setzen, z.B. =5 oder =1. Diese Variable war dann für eine Multiplikation notwendig. Und was geschah? Server crasht jedes mal, wenn diese Variable multipliziert werden sollte.
Weiter kommt allerdings hat alles, was vor dem Crash zuletzt geschah, etwas mit irgendwelche enums zu tun.
Letztens ist der Server mitten in diesem Command gecrasht: PASTEBIN
Woher weiss ich, dass er mitten in diesem Command gecrasht ist?
Wegen den Crashs habe ich folgendes angewendet:
public OnPlayerCommandText(playerid,cmdtext[]){if(OnPlayerCommandTextEx(playerid,cmdtext))printf("Erfolgreich!");return 1;}
Alle Commands sind in OnPlayerCommandTextEx(...) und das return IMMER mit 0, wenn es keine Bugs gibt.
Der Spieler benutzt "/erlaubnis hunter". Der Command war NICHT erfolgreich, Server crashte. Aus welchen Gründen auch immer.
Nun würde mich interessieren: Was ist da der Bug?! Ich kein beim besten Willen keinen finden
Weiter: Führt der Server verschiedene Sachen im Script gleichzeitig aus? Denn dann würde das für mich heissen, dass der Bug auch woanders sein kann.
Wenn nicht, dann ist da irgendwo ein Bug, oder jemand hat den Server gecrasht.
Weiter ist seltsam, dass der Server nur Abends crasht.
Zusammenfassung: Kann es sein, dass ein enum den Server crasht oder dass jemand meinen Server crasht? -
Zitat
Eine Ausnahme: Bei einem Derby ist Server immer abgestürzt. Wieso?
Ohne Source ist sowas immer schwer zu sagen.Kann viele Möglichkeiten haben.Meistens
kommt es vor das in Datein geschrieben wird die nicht existieren oder wenn man über ein Array hinnaus schreibt.
( new Test[MAX_PLAYERS]; new var=2423; Test[var]=-1; )
Das einzige was wirklich hilft ist den Server mit noch mehr Debug Nachrichten vollzupappen oder
gleich ganze Teile zu entfernen damit man den Bereich wo der Fehler sein könnte von vorne rein
eingeschränkt ist.Früher oder später findest du den Fehler / die Fehler dann sicherlich.Crasht der Server denn immer bei "/erlaubnis hunter" oder tat er das nur einmal?
ZitatFührt der Server verschiedene Sachen im Script gleichzeitig aus? Denn dann würde das für mich heissen, dass der Bug auch woanders sein kann.
Nein,tut er nicht.Pawn arbeitet alles einzelnt nacheinander ab.ZitatZusammenfassung: Kann es sein, dass ein enum den Server crasht oder dass jemand meinen Server crasht?
Ein Enum kann den Server nicht crashen,es ist eigentlich nichts Anderes als ein Array,Arrays crashen
ja auch nicht.Vorrausgesetzt
man benutzt sie richtig und nicht wie oben falsch. -
Das mit dem Derby ist etwas, was ich eben lösen konnte (das wieso war irgendwie rhetorisch :X). Ich benutzte diese Variable: GivePlayerMoneyWithText(winner,MinigameInfo[DERBY][STARTED_PLAYER_COUNT]*3500);
Ich hatte da vergessen für MinigameInfo[DERBY][STARTED_PLAYER_COUNT] eine Zahl zu setzen. Da crashte der Server. Als ich dann MinigameInfo[DERBY][STARTED_PLAYER_COUNT]++; gemacht habe, was notwendig war, crashte es nicht mehr.
Seltsam ist, dass der Server (Linux) crashte, weil ich es nicht gesetzt hatte. Eigentlich sollte das doch einfach ==0 gewesen sein. Naja, es ist behoben.
Wenn der Server nun alles einzeln,nacheinander ausführt, und im Command kein Bug ist, crasht dann einer also den Server?
//Edit:ZitatCrasht der Server denn immer bei "/erlaubnis hunter" oder tat er das nur einmal?
Ja. Nur das eine Mal. Ich habe einmal ein FS gemacht, das bei jedem Callback ein printf macht, um zu schauen, was Server crasht. Keine Regelmässigkeiten. Ausser das mit dem Derby, was offensichtlich war, da es immer dort crashte.
Ich glaube, jemand crasht den Server -.- -
Zu dem Semicolon ';'.
Es ist ein Trennzeichen.
Es kann am ende des Argumentes/Befehles stehen.
PAWNO nutzt den zwangs Parameter.
Im orginal PAWN wäre dies hier kein Problem:
new x = 5 // Zu beachten das = kann auch in manchen Fällen entfernt werden!
while x > 0 {
--x
}
Ab Version 3.x muss bei der While die Argumentenklammer stehen.Folglich geht auch das bei PAWN(O):
new x = 5; while(x > 0) {
--x;
}
Das ; trennt also Befehle in mehreren Zeilen. -
ROOOOOOOOOOOOOOOOOOOOOOOOOOOFL!
Der Bug beim Derby mit "ungesetzter" Variable die da =0 sein sollte: Es lag nicht daran!
Ich bin durch Zufall auf etwas gestossen, was Server crashte: Beim Derby und auch gerade eben beim abliefern eines Fahrzeuges:
stock GivePlayerMoneyWithText(playerid,amount)
{
new money=GivePlayerMoneyEx(playerid,amount);
new string[32];
if(money>0)
format(string,sizeof(string),"~g~+$%d",money);
else if(money<0)
format(string,sizeof(string),"~r~-$%d",money*-1);
GameTextForPlayer(playerid,string,0,1);
return amount;
} Ein Gametext mit leerem String!
In der Funktion wird String nicht formatiert, wenn Betrag ==0, z.B. beim Derby. Beim /erlaubnis hunter genau das selbe. Ein Bug, den ich schon vor dem Post gefixt hatte, spuckte ebenfalls ein leeres String aus beim Gametext => CRASH!
Ich habs! Ich hab die Lösung gefunden! SCHEISSE.
=> Leerer Gametext crasht Server! -
Auch ein leerer SendClientMessage crasht
-
Nicht umbedingt crasht etwas leeres:
SendClientMessage(playerid, 4278190250, '\0');
Crasht z.B. bei mir nicht.
('\0' kann auch eos in manchen PAWN Versionen heißen. Es ist das Ende von einem String. Es wird normaler Weise nie mitgeschrieben. ;x)
Ich sollte vllt mal eine genaue Syntax von PAWN demnächst posten. -
new string[128]; SendClientMessage(playerid,0xFFAAFFFF,string); crasht.
Der GivePlayerMoney-Bug ist noch nicht ganz behoben, Server ist nochmals gecrasht. Und ich finde jetzt wirklich nichts-.-
public GivePlayerMoneyEx(playerid,amount)
{
new money;
if(GetPlayerMoneyEx(playerid)+amount>MAX_POCKET_MONEY)
money=MAX_POCKET_MONEY-GetPlayerMoneyEx(playerid);
else
money=amount;
PlayerInfo[PLAYER_MONEY][playerid]+=money;
GivePlayerMoney(playerid,money);
return money;
}stock GivePlayerMoneyWithText(playerid,amount)
{
if(amount==0)
return 0;new money=GivePlayerMoneyEx(playerid,amount);
new string[32];
if(money>0)
format(string,sizeof(string),"~g~+$%d",money);
else if(money<0)
format(string,sizeof(string),"~r~-$%d",money*-1);
GameTextForPlayer(playerid,string,0,1);
return amount;
}
Wo kann es noch Probleme geben? Leer ist der String ja nicht mehr. -
breadfish.de
Hat das Thema geschlossen.