Guten Abend,
ich nutze das Plugin crashdetect.so, diese meldete heute einige Fehler in den Logs.
Ich wollte mal nachfragen, was diese Fehler bedeuten könnten und in welchen Fällen dies meist auftritt etc.
[19:17:54] [debug] AMX backtrace:
[19:17:54] [debug] #0 000d2e30 in public OnPlayerStateChange () from neu.amx
[19:17:55] [debug] Run time error 4: "Array index out of bounds"
[19:17:55] [debug] Accessing element at index 555 past array upper bound 4
[19:17:55] [debug] AMX backtrace:
[19:17:55] [debug] #0 000d2e30 in pu
Das ist die "OnPlayerStateChange" Funktion:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_ONFOOT)
{
for(new i=0;i<GetMaxPlayers();i++)
{
if(IsPlayerConnected(i) && gPlayerLogged[i] && IsPlayerSpectating[i] && SpectatedPlayer[i] == playerid)
{
PlayerSpectatePlayer(i, SpectatedPlayer[i]);
}
}
}
if(newstate == PLAYER_STATE_PASSENGER)
{
if(!(GetPlayerWeapon(playerid) == 29 || GetPlayerWeapon(playerid) == 30 || GetPlayerWeapon(playerid) == 31))
{
SetPlayerArmedWeapon(playerid, 0);
}
}
if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
{
StopAudioStreamForPlayer(playerid);
}
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
for(new i=0;i<GetMaxPlayers();i++)
{
if(IsPlayerConnected(i) && gPlayerLogged[i] && IsPlayerSpectating[i] && SpectatedPlayer[i] == playerid)
{
PlayerSpectateVehicle(i, GetPlayerVehicleID(SpectatedPlayer[i]));
}
}
new vID = GetPlayerVehicleID(playerid);
if(RadioSender[vID] > 0)
{
if(RadioSender[vID] == 1)
{
PlayAudioStreamForPlayer(playerid, "http://www.wdr.de/wdrlive/media/einslive.m3u");
}
else if(RadioSender[vID] == 2)
{
PlayAudioStreamForPlayer(playerid, "http://ni39999_2.fastdownload.nitrado.net/TechnoBase.pls");
}
else if(RadioSender[vID] == 3)
{
PlayAudioStreamForPlayer(playerid, "http://ni39999_2.fastdownload.nitrado.net/HardBase.pls");
}
else if(RadioSender[vID] == 4)
{
PlayAudioStreamForPlayer(playerid, "http://ni39999_2.fastdownload.nitrado.net/iloveradio.m3u");
}
else if(RadioSender[vID] == 5)
{
PlayAudioStreamForPlayer(playerid, "http://breakz.us/radio/listen.m3u");
}
else if(RadioSender[vID] == 6)
{
PlayAudioStreamForPlayer(playerid, "http://metafiles.gl-systemhaus.de/hr/youfm_2.m3u");
}
}
}
if(newstate == PLAYER_STATE_DRIVER)
{
SetPlayerArmedWeapon(playerid, 0);
new mod = GetVehicleModel(GetPlayerVehicleID(playerid));
if(IsAFahrrad(mod))
{
new engine, light, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, light, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_ON, light, alarm, doors, bonnet, boot, objective);
}
if(Spieler[playerid][pLevel] <= 10)//von lv. 1 - 10 anzeigen^^
{
if(!IsAFahrrad(mod))
{
SendClientMessage(playerid, COLOR_WHITE, COLOR_HEX_WHITE"* Halte "COLOR_HEX_BLUE"Leertaste "COLOR_HEX_WHITE"gedrückt und drücke "COLOR_HEX_BLUE"Numpad-4 "COLOR_HEX_WHITE"um den Motor zu starten.");
SendClientMessage(playerid, COLOR_WHITE, COLOR_HEX_WHITE"* Halte "COLOR_HEX_BLUE"Leertaste "COLOR_HEX_WHITE"gedrückt und drücke "COLOR_HEX_BLUE"Numpad-6 "COLOR_HEX_WHITE"um das Licht zu aktivieren.");
SendClientMessage(playerid, COLOR_WHITE, COLOR_HEX_WHITE"* Mit dem Befehl /Radio schaltest du dein Auto-Radio an!");
}
}
if(mod == 560)
{
if(Spieler[playerid][pFraktion] == 1 || Spieler[playerid][pFraktion] == 2)
{
SendClientMessage(playerid, COLOR_WHITE, COLOR_HEX_WHITE"* Halte "COLOR_HEX_BLUE"Leertaste "COLOR_HEX_WHITE"gedrückt und drücke "COLOR_HEX_BLUE"Numpad-2 "COLOR_HEX_WHITE"um die Sirene zu aktivieren.");
}
}
if(mod == 525)
{
if(Spieler[playerid][pFraktion] == 5)
{
SendClientMessage(playerid, COLOR_WHITE, COLOR_HEX_WHITE"* Halte "COLOR_HEX_BLUE"Leertaste "COLOR_HEX_WHITE"gedrückt und drücke "COLOR_HEX_BLUE"Numpad-2 "COLOR_HEX_WHITE"um die Sirene zu aktivieren.");
}
}
if(IsACar(mod))
{
if(Spieler[playerid][pCarLic] == 0 && pFahrStunde[playerid] == 0)
{
FreezePlayer(playerid);
RemovePlayerFromVehicle(playerid);
UnfreezePlayer(playerid);
SendClientMessage(playerid, COLOR_RED, "Du hast noch keinen Führerschein!");
return 1;
}
}
if(IsABoat(mod))
{
if(Spieler[playerid][pBoatLic] == 0 && pFahrStunde[playerid] == 0)
{
FreezePlayer(playerid);
RemovePlayerFromVehicle(playerid);
UnfreezePlayer(playerid);
SendClientMessage(playerid, COLOR_RED, "Du hast noch keinen Bootsschein!");
return 1;
}
}
if(IsAPlane(mod))
{
if(Spieler[playerid][pFlyLic] == 0 && pFahrStunde[playerid] == 0)
{
FreezePlayer(playerid);
RemovePlayerFromVehicle(playerid);
UnfreezePlayer(playerid);
SendClientMessage(playerid, COLOR_RED, "Du hast noch keinen Flugschein!");
return 1;
}
}
if(IsATruck(mod))
{
if(Spieler[playerid][pLKWLic] == 0 && pFahrStunde[playerid] == 0)
{
FreezePlayer(playerid);
RemovePlayerFromVehicle(playerid);
UnfreezePlayer(playerid);
SendClientMessage(playerid, COLOR_RED, "Du hast noch keinen LKW-Schein!");
return 1;
}
}
if(IsABike(mod))
{
if(Spieler[playerid][pMotoLic] == 0 && pFahrStunde[playerid] == 0)
{
FreezePlayer(playerid);
RemovePlayerFromVehicle(playerid);
UnfreezePlayer(playerid);
SendClientMessage(playerid, COLOR_RED, "Du hast noch keinen Motorradschein!");
return 1;
}
}
new vehicleid = GetPlayerVehicleID(playerid);
new typ, string[256];
typ=IsAutohausCar(vehicleid);
if(!(typ==-1))
{
FreezePlayer(playerid);
Spectating[playerid][0]=typ;
new str[512];
format(str, sizeof(str), "{FFFFFF}Willkommen im Autohaus.\n{3F62DA}Informationen:\n{3F62DA}Name:{FFFFFF}\t%s\n{3F62DA}Preis:{FFFFFF}\t %d$\n{3F62DA}Tank:{FFFFFF}\t %d\n\nWenn du dieses Fahrzeug wirklich kaufen möchtest,\ndann drücke auf \"{3F62DA}Kaufen{FFFFFF}\".\nWenn nicht drücke auf \"{3F62DA}Abbrechen{FFFFFF}\".", Kaufliste[typ][Name], Kaufliste[typ][aPreis], Kaufliste[typ][Tank]);
ShowPlayerDialog(playerid, DIALOG_SELLCAR, DIALOG_STYLE_MSGBOX, "{3F62DA}Autohaus", str, "Kaufen", "Abbrechen");
}
for(new i=0;i<sizeof(combines);i++)
{
new vID = GetPlayerVehicleID(playerid);
if(vID == combines[i])
{
for(new pID=0;pID<GetMaxPlayers();pID++)
{
if(JobVehicle[pID] == vID && JobVehicle[playerid] != vID)
{
SendClientMessage(playerid, COLOR_GREY, "Das Fahrzeug wird derzeit noch benutzt!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
if(Spieler[playerid][pJob] == 1)
{
JobVehicle[playerid] = vID;
SendClientMessage(playerid, COLOR_GREEN, "* Farmer Information *");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /startharvest zum starten.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /stopharvest zum stoppen.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /joblock zum abschließen des Fahrzeugs.");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Du bist kein Farmer.");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}
for(new i=0;i<sizeof(drogen);i++)
{
new vID = GetPlayerVehicleID(playerid);
if(vID == drogen[i])
{
for(new pID=0;pID<GetMaxPlayers();pID++)
{
if(JobVehicle[pID] == vID && JobVehicle[playerid] != vID)
{
SendClientMessage(playerid, COLOR_GREY, "Das Fahrzeug wird derzeit noch benutzt!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
if(Spieler[playerid][pJob] == 7)
{
JobVehicle[playerid] = vID;
new str[128];
format(str, sizeof(str), "** Drogenbestand des Fahrzeugs: %d/5 **", bestand[vID]);
SendClientMessage(playerid, COLOR_GREEN, str);
SendClientMessage(playerid, COLOR_WHITE, "Tippe /loadpakete zum aufladen der Pakete.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /unloadpakete zum entladen der Pakete.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /joblock zum abschließen des Fahrzeugs.");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Du bist kein Drogendealer.");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}
for(new i=0;i<sizeof(wdealer);i++)
{
new vID = GetPlayerVehicleID(playerid);
if(vID == wdealer[i])
{
for(new pID=0;pID<GetMaxPlayers();pID++)
{
if(JobVehicle[pID] == vID && JobVehicle[playerid] != vID)
{
SendClientMessage(playerid, COLOR_GREY, "Das Fahrzeug wird derzeit noch benutzt!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
if(Spieler[playerid][pJob] == 8)
{
JobVehicle[playerid] = vID;
new str[128];
format(str, sizeof(str), "** Waffenbestand des Fahrzeugs: %d/5 **", bestand[vID]);
SendClientMessage(playerid, COLOR_GREEN, str);
SendClientMessage(playerid, COLOR_WHITE, "Tippe /loadpakete zum aufladen der Pakete.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /unloadpakete zum entladen der Pakete.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /joblock zum abschließen des Fahrzeugs.");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Du bist kein Drogendealer.");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}
for(new i=0;i<sizeof(bus);i++)
{
new vID = GetPlayerVehicleID(playerid);
if(vID == bus[i])
{
for(new pID=0;pID<GetMaxPlayers();pID++)
{
if(JobVehicle[pID] == vID && JobVehicle[playerid] != vID)
{
SendClientMessage(playerid, COLOR_GREY, "Das Fahrzeug wird derzeit noch benutzt!");
return 1;
}
}
if(Spieler[playerid][pJob] == 2)
{
JobVehicle[playerid] = vID;
SendClientMessage(playerid, COLOR_GREEN, "* Busfahrer Information *");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /startlinie zum starten.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /stoplinie zum stoppen.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /joblock zum abschließen des Fahrzeugs.");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Du bist kein Busfahrer.");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}
for(new i=0;i<sizeof(flug);i++)
{
new vID = GetPlayerVehicleID(playerid);
if(vID == flug[i])
{
for(new pID=0;pID<GetMaxPlayers();pID++)
{
if(JobVehicle[pID] == vID && JobVehicle[playerid] != vID)
{
SendClientMessage(playerid, COLOR_GREY, "Das Fahrzeug wird derzeit noch benutzt!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
if(Spieler[playerid][pJob] == 4)
{
JobVehicle[playerid] = vID;
SendClientMessage(playerid, COLOR_GREEN, "* Pilot Information *");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /startflug zum starten.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /stopflug zum stoppen.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /joblock zum abschließen des Fahrzeugs.");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Du bist kein Pilot.");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}
for(new i=0;i<sizeof(truck);i++)
{
new vID = GetPlayerVehicleID(playerid);
if(vID == truck[i])
{
for(new pID=0;pID<GetMaxPlayers();pID++)
{
if(JobVehicle[pID] == vID && JobVehicle[playerid] != vID)
{
SendClientMessage(playerid, COLOR_GREY, "Das Fahrzeug wird derzeit noch benutzt!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
if(Spieler[playerid][pJob] == 3)
{
JobVehicle[playerid] = vID;
SendClientMessage(playerid, COLOR_GREEN, "* Trucker Information *");
if(GetVehicleModel(vID) == 514)
{
SendClientMessage(playerid, COLOR_WHITE, "Beliefere nun die Tankstellen mit Benzin!");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /loadbenzin um den Tanker mit Benzin zu beladen.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /sellbenzin um Benzin an Tankstellen zu verkaufen.");
SendClientMessage(playerid, COLOR_WHITE, "Unter /navi -> Weitere Orte findest du die Öl-Raffinerie.");
return 1;
}
else if(GetVehicleModel(vID) == 499)
{
SendClientMessage(playerid, COLOR_WHITE, "Beliefere nun die Geschäfte mit Waren!");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /loadwaren um den Transporter mit Waren zu beladen.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /sellwaren um Waren an Geschäfte zu verkaufen.");
SendClientMessage(playerid, COLOR_WHITE, "Unter /navi -> Weitere Orte findest du die Waren-Vergabe.");
return 1;
}
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Du bist kein Trucker.");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}
for(new i=0;i<sizeof(kfz);i++)
{
new vID = GetPlayerVehicleID(playerid);
if(vID == kfz[i])
{
for(new pID=0;pID<GetMaxPlayers();pID++)
{
if(JobVehicle[pID] == vID && JobVehicle[playerid] != vID)
{
SendClientMessage(playerid, COLOR_GREY, "Das Fahrzeug wird derzeit noch benutzt!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
if(Spieler[playerid][pJob] == 5)
{
JobVehicle[playerid] = vID;
SendClientMessage(playerid, COLOR_GREEN, "* KFZ-Mechatroniker Information *");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /repaircar [SpielerID/Name] [Preis] zum reparieren.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /refillcar [SpielerID/Name] [Preis] zum auftanken.");
SendClientMessage(playerid, COLOR_WHITE, "Tippe /joblock zum abschließen des Fahrzeugs.");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Du bist kein KFZ-Mechatroniker.");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}
new vehicle = GetPlayerVehicleID(playerid);
new besitzer = GetCarOwner(vehicle);
new Slot = GetCarOwnerSlot(besitzer, vehicle);
if(vehicle == PlayerCar[besitzer][Slot][CarId])
{
if(PlayerCar[besitzer][Slot][CarState] == 1)
{
FreezePlayer(playerid);
format(string, sizeof(string), COLOR_HEX_BLUE"Dieses Fahrzeug wurde aufgrund einer Ordnungswidrigkeit abgeschleppt!\n"COLOR_HEX_WHITE"Um das Fahrzeug freizukaufen, benötigst du "COLOR_HEX_ORANGE"$35000"COLOR_HEX_WHITE"!\nKlicke nun auf \"Freikaufen\" um dein Fahrzeug zurück zu bekommen.");
ShowPlayerDialog(playerid, DIALOG_CAROAMT, DIALOG_STYLE_MSGBOX, COLOR_HEX_BLUE"Ordnungsamt", string, "Freikaufen", "Abbrechen");
}
}
}
return 1;
}
Lg.