Guten Abend,
ich habe das Problem, dass ich einen Runtime Error bekomme, sodern ein Fahrzeug in der Garage steht.
command(garage, playerid, params[])
{
new Float:x, Float:y, Float:z, string[128], mainstring[2000];
GetPlayerPos(playerid, x, y, z);
for(new i=0;i<MAX_HAUS;i++){
if(HausInfo[i][h_erstellt] == 1){
if(IsPlayerInRangeOfPoint(playerid, 5.0, HausInfo[i][g_x], HausInfo[i][g_y], HausInfo[i][g_z])){
for(new ii=0;ii<3;ii++){
if(Spieler[playerid][pHaus][ii] == i){
//SetPVarInt(playerid, "Haussss", i);
//printf("Haussss = %d", GetPVarInt(playerid, "Haussss"));
if(IsPlayerInAnyVehicle(playerid)){
//ShowPlayerDialog(playerid, DIALOG_GARAGE, DIALOG_STYLE_LIST, "Test", "Fahrzeug reinstellen","Weiter","Abbruch");
if(HausInfo[i][g_slot][0] == 0 && HausInfo[i][g_fahrzeug][0] == -1){
HausInfo[i][g_slot][0] = 1;
HausInfo[i][g_fahrzeug][0] = GetVehicleModel(GetPlayerVehicleID(playerid));
DestroyVehicle(GetPlayerVehicleID(playerid));
return 1;
}
else if(HausInfo[i][g_slot][1] == 0 && HausInfo[i][g_fahrzeug][1] == -1){
HausInfo[i][g_slot][1] = 1;
HausInfo[i][g_fahrzeug][1] = GetVehicleModel(GetPlayerVehicleID(playerid));
DestroyVehicle(GetPlayerVehicleID(playerid));
return 1;
}
else if(HausInfo[i][g_slot][2] == 0 && HausInfo[i][g_fahrzeug][2] == -1){
HausInfo[i][g_slot][2] = 1;
HausInfo[i][g_fahrzeug][2] = GetVehicleModel(GetPlayerVehicleID(playerid));
DestroyVehicle(GetPlayerVehicleID(playerid));
return 1;
}
}
else{
for(new g=0;g<3;g++){
if(HausInfo[i][g_slot][g] == 0 && HausInfo[i][g_fahrzeug][g] == -1){
format(string, sizeof(string), "Frei\n");
strcat(mainstring, string);
}
else if(HausInfo[i][g_slot][g] != 0 && HausInfo[i][g_fahrzeug][g] != -1){
format(string, sizeof(string), "%d - %s\n", HausInfo[i][g_fahrzeug][g], VehicleNames[GetVehicleModel(HausInfo[i][g_fahrzeug][g]) - 400]);
strcat(mainstring, string);
}
}
}
}
}
}
}
}
ShowPlayerDialog(playerid, DIALOG_GARAGE_RAUS, DIALOG_STYLE_LIST, "Test", mainstring, "Rausholen", "Abbruch");
return 1;
}
forward LoadHouseSystem();
public LoadHouseSystem()
{
new rows, fields, HouseText[250], content[120];
cache_get_data(rows, fields);
if(rows)
{
for(AktuelleHaus = 0; AktuelleHaus < rows; AktuelleHaus++)
{
HausInfo[AktuelleHaus][h_erstellt] = 1;
HausInfo[AktuelleHaus][h_owned] = cache_get_field_content_int(AktuelleHaus,"h_owned");
cache_get_field_content(AktuelleHaus,"h_besitzer", content);
format(HausInfo[AktuelleHaus][h_besitzer], 128, "%s", content);
HausInfo[AktuelleHaus][h_preis] = cache_get_field_content_int(AktuelleHaus,"h_preis");
HausInfo[AktuelleHaus][h_x] = cache_get_field_content_float(AktuelleHaus,"h_x");
HausInfo[AktuelleHaus][h_y] = cache_get_field_content_float(AktuelleHaus,"h_y");
HausInfo[AktuelleHaus][h_z] = cache_get_field_content_float(AktuelleHaus,"h_z");
HausInfo[AktuelleHaus][hk_x] = cache_get_field_content_float(AktuelleHaus,"hk_x");
HausInfo[AktuelleHaus][hk_y] = cache_get_field_content_float(AktuelleHaus,"hk_y");
HausInfo[AktuelleHaus][hk_z] = cache_get_field_content_float(AktuelleHaus,"hk_z");
HausInfo[AktuelleHaus][hr_x] = cache_get_field_content_float(AktuelleHaus,"hr_x");
HausInfo[AktuelleHaus][hr_y] = cache_get_field_content_float(AktuelleHaus,"hr_y");
HausInfo[AktuelleHaus][hr_z] = cache_get_field_content_float(AktuelleHaus,"hr_z");
HausInfo[AktuelleHaus][h_garage] = cache_get_field_content_int(AktuelleHaus,"h_garage");
HausInfo[AktuelleHaus][g_x] = cache_get_field_content_float(AktuelleHaus,"g_x");
HausInfo[AktuelleHaus][g_y] = cache_get_field_content_float(AktuelleHaus,"g_y");
HausInfo[AktuelleHaus][g_z] = cache_get_field_content_float(AktuelleHaus,"g_z");
HausInfo[AktuelleHaus][i_x] = cache_get_field_content_float(AktuelleHaus,"i_x");
HausInfo[AktuelleHaus][i_y] = cache_get_field_content_float(AktuelleHaus,"i_y");
HausInfo[AktuelleHaus][i_z] = cache_get_field_content_float(AktuelleHaus,"i_z");
HausInfo[AktuelleHaus][h_locked] = cache_get_field_content_int(AktuelleHaus,"h_locked");
HausInfo[AktuelleHaus][i_int] = cache_get_field_content_int(AktuelleHaus,"i_int");
HausInfo[AktuelleHaus][i_vw] = cache_get_field_content_int(AktuelleHaus,"i_vw");
if(HausInfo[AktuelleHaus][h_garage] == 1){
HausInfo[AktuelleHaus][g_pickup] = CreateDynamicPickup(1239, 1, HausInfo[AktuelleHaus][g_x], HausInfo[AktuelleHaus][g_y], HausInfo[AktuelleHaus][g_z]);
}
if(HausInfo[AktuelleHaus][h_owned] == 0){
format(HouseText, sizeof(HouseText), "{FFFFFF} Diese Immobilie steht zum Verkauf.\nKosten: %d Euro\nZum Interagieren nutze\ndas Verkaufsschild", HausInfo[AktuelleHaus][h_preis]);
HausInfo[AktuelleHaus][h_text] = Create3DTextLabel(HouseText, COLOR_WHITE, HausInfo[AktuelleHaus][h_x], HausInfo[AktuelleHaus][h_y], HausInfo[AktuelleHaus][h_z], 10, 0);
HausInfo[AktuelleHaus][h_obj] = CreateObject(19470, HausInfo[AktuelleHaus][hk_x], HausInfo[AktuelleHaus][hk_y], HausInfo[AktuelleHaus][hk_z], HausInfo[AktuelleHaus][hr_x], HausInfo[AktuelleHaus][hr_y], HausInfo[AktuelleHaus][hr_z]);
}
else if(HausInfo[AktuelleHaus][h_owned] == 1){
format(HouseText,sizeof(HouseText),"{FFFFFF} Diese Immobilie steht nicht zum Verkauf.", HausInfo[AktuelleHaus][h_besitzer], AktuelleHaus);
HausInfo[AktuelleHaus][h_text] = Create3DTextLabel(HouseText, COLOR_WHITE, HausInfo[AktuelleHaus][h_x], HausInfo[AktuelleHaus][h_y], HausInfo[AktuelleHaus][h_z], 10, 0);
}
}
}
printf("[HAUSSYSTEM]: Es wurden %d Häuser geladen.", rows);
return 1;
}
Fehler:
Aktuell wird leider auch nichts mehr geladen, also nichts mehr angezeigt im Spiel.
Der Fehler bei /garage wenn ein Fahrzeug drin ist:
[debug] Run time error 4: "Array index out of bounds"
[debug] Accessing element at negative index -400
[debug] AMX backtrace:
[debug] #0 0002ad60 in public cmd_garage (0, 13685620) from selfmade.amx
[debug] #1 native CallLocalFunction () from samp-server.exe
[debug] #2 00000720 in public OnPlayerCommandText (0, 13685588) from selfmade.amx