Servus,
bei mir ist grad folgendes, für mich sehr dubioses Problem aufgetreten.
Im folgendes Codeschnippsel sollte in Zeile 327 ein String mithilfe von sscanf2 (Plugin Version) eingelesen werden.
ocmd:createvehicle(playerid, params[])
{
if(!GetAdminLevel(playerid, 4)) return SendClientMessage(playerid, COLOR_CHAT_ERROR, "Du bist kein Admin");
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_CHAT_ERROR, "Du musst in einem Fahrzeug sitzen");
new id, pref[3];
if(sscanf(params, "ds[2]", id, pref)) return SendClientMessage(playerid, COLOR_CHAT_ERROR, "Benutzung: /createvehicle [JobID] [Kennzeichen Prefix]");
new Float:posx, Float:posy, Float:posz, Float:rot, color1, color2;
Wenn ich den Code so kompilere, bekomme ich hier keine Errors oder Warnings.
Wenn ich den Befehl Ingame ausführe, z.B. /createvehicle 0 SA, stürzt der Server ab.
Crashdetect sagt folgendes:
[21:48:45] [debug] Server crashed while executing script.amx
[21:48:45] [debug] AMX backtrace:
[21:48:45] [debug] #0 0001c630 in public ocmd_createvehicle (playerid=0, params[]=@0008c4a0 "0 FC") at F:\Projekte\SAMP\pawno\include\feuer.inc:293
[21:48:45] [debug] #1 native CallLocalFunction () from samp03svr
[21:48:45] [debug] #2 00006344 in public OnPlayerCommandText (playerid=0, cmdtext[]=@0008c450 "/createvehicle 0 FC") at F:\Projekte\SAMP\pawno\include\ocmd.inc:77
Nun zum für mich verwirrenden Punkt:
Crashdetect sagt ansonsten relativ genau was den Server grad "abgeschaltet" hat. Oben sagt er mir nur, dass der Fehler in einer anderen Include ist (feuer.inc), und zwar im Befehl ocmd_createvehicle in Zeile 293.
}
public DestroyFire(id)
{
DestroyObject(Flame[id][Flame_id]);
Flame[id][Flame_Exists] = 0;
Flame[id][Flame_pos][0] = 0.0;
Flame[id][Flame_pos][1] = 0.0;
Flame[id][Flame_pos][2] = 0.0;
RemoveSmokeFromFire(id);
}
//# A suggestion from a user of this script. Very simple functions to add and remove smoke without flames.
//# Think about a way to kill the smoke and use it, if you wish.
//# Maybe you could link smoke on a house with variables to a flame inside a house so if the flame gets extinguished the smoke disappears.
Alles anzeigen
Wie zu sehen ist, hat die angebliche Fehlerzeile nichts mit dem Befehl oder sonst einer benötigten Funktion zu tun.
Ich habe bereits versucht, bei der sscanf Abfrage mit größeren Arrays (new pref[64]) zu arbeiten, aber das Problem hat sich dadurch nicht beheben lassen.
Vielleicht sieht einer von euch den Fehler oder hat nen Tipp, ich bin mit meinem Latein am Ende.
Mit freundlichem Gruß
Wepper
//Edit 09.08.2016
Fehler behoben.
Fehler lag nicht, wie angenommen, bei sscanf, sondern an einer fehlerhaften Funktion, welche nicht in der Include, sondern nur im Gamemode funktioniert.