Ja klappt ja auch alles wollte nur wissen warum man die 0 nicht nehmen konnte Sonst alles okay
Danke für die hilfe wie immer :p
Beiträge von JOK3R
-
-
case DIALOG_GARAGE:
{
if(response)
{
switch(listitem)
{
case 0:
{
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_RED, "* Error: Du bist in keinem Fahrzeug!");
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid, COLOR_RED, "* Error: Du bist nicht der Fahrer des Fahrzeuges!");
if(HouseInfo[HouseID][gVehiclesInside] >= HouseInfo[HouseID][gMaxVehicles])
{
SendClientMessage(playerid, COLOR_RED, "* Error: Deine Garage ist voll!");
}
else
{
new slot = GetVehicleSlot(playerid, GetPlayerVehicleID(playerid));
printf("Vehicle Slot %d Stored", slot);
format(string, sizeof(string), "Fahrzeug mit Slot %d wurde eingeparkt", slot);
SendClientMessage(playerid, COLOR_SAMP2, string);
GetVehiclePos(PrivatVehInfo[playerid][slot][vehVehicleID], PrivatVehInfo[playerid][slot][vehPosX], PrivatVehInfo[playerid][slot][vehPosY], PrivatVehInfo[playerid][slot][vehPosZ]);
GetVehicleZAngle(PrivatVehInfo[playerid][slot][vehVehicleID], PrivatVehInfo[playerid][slot][vehPosR]);
DestroyVehicle(PrivatVehInfo[playerid][slot][vehVehicleID]);
HouseInfo[HouseID][gVehiclesInside] ++;
PrivatVehInfo[playerid][slot][vehGarageStored] = 1;
mysql_format(handle, query, sizeof(query), "UPDATE `privatcardata` SET VehPosX = '%f', VehPosY = '%f', VehPosZ = '%f', VehPosR = '%f', GarageStored = '%i' WHERE Owner = '%s' AND Slot = '%d'", PrivatVehInfo[playerid][slot][vehPosX], PrivatVehInfo[playerid][slot][vehPosY], PrivatVehInfo[playerid][slot][vehPosZ], PrivatVehInfo[playerid][slot][vehPosR], PrivatVehInfo[playerid][slot][vehGarageStored], pInfo[playerid][pName], slot);
printf("[MySQL] %s", query);
mysql_pquery(handle, query);
SendClientMessage(playerid, COLOR_YELLOW, "* Garage: Fahrzeug wurde eingeparkt!");
UpdateHouses(HouseID);
SaveHouses(HouseID);
}
return 1;
}
case 1:
{
for(new slot = 0; slot < MAX_PRIVATCARS; slot ++)
{
if(PrivatVehInfo[playerid][slot][vehGarageStored] == 1)
{
format(string, sizeof(string), "{D6543D}%i\t{FFFFFF}%s\n", slot, VehicleNames[PrivatVehInfo[playerid][slot][vehModelID] - 400]);
strcat(string1, string, sizeof(string1));
format(string, sizeof(string), "#\tFahrzeuge\n%s", string1);
}
}
if(!strlen(string)) ShowPlayerDialog(playerid, DIALOG_GARAGE3, DIALOG_STYLE_MSGBOX, "{D6543D}Project X: {FFFFFF}Garageverwaltung - > Ausparken", "{FFFFFF}Du hast zurzeit kein Fahrzeug in deiner Garage.", "Okay", "");
else ShowPlayerDialog(playerid, DIALOG_GARAGE2, DIALOG_STYLE_TABLIST_HEADERS, "{D6543D}Project X: {FFFFFF}Garageverwaltung - > Ausparken", string, "Ausparken", "Zurück");
return 1;
}
}
}
return 1;
}
stock GetVehicleSlot(playerid, vehicleid)
{
for(new i; i < MAX_PRIVATCARS; i++)
{
if(PrivatVehInfo[playerid][i][vehVehicleID] == vehicleid) return i;
}
return -1;
} -
Ich schätze du meinst sowas ?
-
Okay jetzt funktioniert das :')
Also bei mir fängt der Slot ab 0 an und hört dann ab 4 auf also heißt er zählt alle MAX_PRIVATCARS 5
0
1
2
3
4
Heißt ich kann dann also das mit der 0 nicht benutzen richtig ? -
Ok ich habe jetzt von 668 bis 678 den Quellcode
Code
Alles anzeigen/* For testing animations new msg[128+1]; new animlib[32+1]; new animname[32+1]; thisanimid = GetPlayerAnimationIndex(playerid); if(lastanimid != thisanimid) { GetAnimationName(thisanimid,animlib,32,animname,32); format(msg, 128, "anim(%d,%d): %s %s", lastanimid, thisanimid, animlib, animname); lastanimid = thisanimid;
Du hast dort anscheint etwas gelöscht
/* For testing animations
new msg[128+1];
new animlib[32+1];
new animname[32+1];thisanimid = GetPlayerAnimationIndex(playerid);
if(lastanimid != thisanimid)
{
GetAnimationName(thisanimid,animlib,32,animname,32);
format(msg, 128, "anim(%d,%d): %s %s", lastanimid, thisanimid, animlib, animname);
lastanimid = thisanimid;
SendClientMessage(playerid, 0xFFFFFFFF, msg);
}*/
Das ist die Original Version von dem ist aber nicht wichtig in dem punkt da es eigentlich ausgeklammert ist und du es so wie es aussieht gelöscht hast -
Lösch nochmal alles was du jetzt eingefügt hast und mach es nochmal neu also ganz oben im script unter #Include <a_smp> dann
#include <ocmd>
einfügen dann gehst du ganz nach unten und schreibst den Befehl dort hin
ocmd:auf(playerid, params[])
{
if(!IsPlayerInRangeOfPoint(playerid, 1, 1811.1955, -1096.2680, 25.0300))return SendClientMessage(playerid, -1, "Du bist nicht in der Nähe von einem Tor.");
MoveObject(Tor1, 1811.1955, -1096.2680, 25.0300-10, 5);
return 1;
}Wenn der Fehler dort immer noch kommt hast du Aus versehen etwas im Script gelöscht und müsstest mal die komplette Funktion schicken wo der Fehler kommt
-
Oben im script musst du es so einfügen am besten unter a_samp
#include <ocmd> dann sollte es funktionieren wenn du den befehl so hast wie ich dir den geschickt habe -
Hast du überhaupt das ocmd include in deinem server ordner und oben im script deklariert ?
-
Versuch es mal so
ocmd:auf(playerid, params[])
{
if(!IsPlayerInRangeOfPoint(playerid, 1.0, 1811.1955, -1096.2680, 25.0300))return SendClientMessage(playerid, -1, "Du bist nicht in der Nähe von einem Tor.");
MoveObject(Tor1, 1811.1955, -1096.2680, 25.0300-10, 5);
return 1;
} -
Was genau bekommst du den für ein error ?
-
Ja Jetzt funktioniert eigentlich alles soweit.
Danke für die HilfeMuss das Thema nochmal aufmachen also ich habe immer noch das gleiche Problem wie vorher egal auf welches Auto ich drücke es kommt immer das Erste Auto aus der Garage raus
Hab das Script neu geschrieben also nicht wundern warum die Funktionen anders heißen
case DIALOG_GARAGE:
{
if(response)
{
switch(listitem)
{
case 0:
{
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_RED, "* Error: Du bist in keinem Fahrzeug!");
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid, COLOR_RED, "* Error: Du bist nicht der Fahrer des Fahrzeuges!");
if(HouseInfo[HouseID][gVehiclesInside] >= HouseInfo[HouseID][gMaxVehicles])
{
SendClientMessage(playerid, COLOR_RED, "* Error: Deine Garage ist voll!");
}
else
{
new slot = GetVehicleSlot(playerid, GetPlayerVehicleID(playerid));
GetVehiclePos(PrivatVehInfo[playerid][slot][vehVehicleID], PrivatVehInfo[playerid][slot][vehPosX], PrivatVehInfo[playerid][slot][vehPosY], PrivatVehInfo[playerid][slot][vehPosZ]);
GetVehicleZAngle(PrivatVehInfo[playerid][slot][vehVehicleID], PrivatVehInfo[playerid][slot][vehPosR]);
DestroyVehicle(PrivatVehInfo[playerid][slot][vehVehicleID]);
HouseInfo[HouseID][gVehiclesInside] ++;
PrivatVehInfo[playerid][slot][vehGarageStored] = 1;
printf("Vehicle Slot %d Stored", slot);
mysql_format(handle, query, sizeof(query), "UPDATE `privatcardata` SET VehPosX = '%f', VehPosY = '%f', VehPosZ = '%f', VehPosR = '%f', GarageStored = '%i' WHERE Owner = '%s' AND Slot = '%d'", PrivatVehInfo[playerid][slot][vehPosX], PrivatVehInfo[playerid][slot][vehPosY], PrivatVehInfo[playerid][slot][vehPosZ], PrivatVehInfo[playerid][slot][vehPosR], PrivatVehInfo[playerid][slot][vehGarageStored], pInfo[playerid][pName], slot);
mysql_pquery(handle, query);
SendClientMessage(playerid, COLOR_YELLOW, "* Garage: Fahrzeug wurde eingeparkt!");
UpdateHouses(HouseID);
SaveHouses(HouseID);
}
return 1;
}
case 1:
{
for(new slot = 0; slot < MAX_PRIVATCARS; slot ++)
{
if(PrivatVehInfo[playerid][slot][vehGarageStored] == 1)
{
format(string, sizeof(string), "{D6543D}%i\t{FFFFFF}%s\n", slot, VehicleNames[PrivatVehInfo[playerid][slot][vehModelID] - 400]);
strcat(string1, string, sizeof(string1));
format(string, sizeof(string), "#\tFahrzeuge\n%s", string1);
}
}
if(!strlen(string)) ShowPlayerDialog(playerid, DIALOG_GARAGE3, DIALOG_STYLE_MSGBOX, "{D6543D}Project X: {FFFFFF}Garageverwaltung - > Ausparken", "{FFFFFF}Du hast zurzeit kein Fahrzeug in deiner Garage.", "Okay", "");
else ShowPlayerDialog(playerid, DIALOG_GARAGE2, DIALOG_STYLE_TABLIST_HEADERS, "{D6543D}Project X: {FFFFFF}Garageverwaltung - > Ausparken", string, "Ausparken", "Zurück");
return 1;
}
}
}
return 1;
}
case DIALOG_GARAGE2:
{
if(response)
{
new slot, count;
for(new i = 0; i < MAX_PRIVATCARS; i ++)
{
if(PrivatVehInfo[playerid][i][vehGarageStored] == 1)
{
if(count == listitem)
{
slot = i;
break;
}
}
}
PrivatVehInfo[playerid][slot][vehVehicleID] = CreateVehicle(PrivatVehInfo[playerid][slot][vehModelID], PrivatVehInfo[playerid][slot][vehPosX], PrivatVehInfo[playerid][slot][vehPosY], PrivatVehInfo[playerid][slot][vehPosZ], PrivatVehInfo[playerid][slot][vehPosR], PrivatVehInfo[playerid][slot][vehCarColor1], PrivatVehInfo[playerid][slot][vehCarColor1], 0);
HouseInfo[HouseID][gVehiclesInside] --;
PrivatVehInfo[playerid][slot][vehGarageStored] = 0;
PutPlayerInVehicle(playerid, PrivatVehInfo[playerid][slot][vehVehicleID], 0);
printf("Vehicle Slot %d UnStored", slot);
SendClientMessage(playerid, COLOR_YELLOW, "* Garage: Fahrzeug wurde ausgeparkt!");
UpdateHouses(HouseID);
SaveHouses(HouseID);
SavePrivatVehicles(playerid);
}
else
{
ShowPlayerDialog(playerid, DIALOG_GARAGE, DIALOG_STYLE_TABLIST_HEADERS, "{D6543D}Project X: {FFFFFF}Garageverwaltung",
"#\tOption\n\
{D6543D}1.\t{FFFFFF}Parken\n\
{D6543D}2.\t{FFFFFF}Ausparken", "Weiter", "Abbrechen");
}
return 1;
}Das ist zurzeit die Dialog funktion und wie ich schon oben gesagt habe Egal ob ich auf den Infernus oder Sultan drücke es kommt immer der Infernus raus
Sobald der Infernus draußen ist kann man dann auch den Sultan rausholen soll aber nicht so sein es soll ja so sein das man Egal wo drauf man drückt das auch dann dieses auto raus kommt.Was bei mir auch nicht Funktionieren wird ist diese Funktion sobald ich den wert auf 0 stelle passiert mit dem Auto nichts
new slot = GetVehicleSlot(playerid, 0); -
Perfekt danke Jeffrey
-
Edit: Jetzt klappt es anscheind mit dem Save aber der Server will halt jetzt alle Slots speichern die es aber überhaupt nicht gibt also sprich Er will alle 203 Häuser "Speichern" obwohl es nur 5 stück gibt deswegen hängt sich der server leicht auf Müsste halt nur irgwie was anderes deswegen machen
public OnGameModeExit(){ print("[MySQL] Shutting down the Server."); for(new i = 0; i < MAX_HOUSES; i ++) { SaveHouses(i); } mysql_close(handle); return 1;}
Sonst ist halt alles normal sind nur 5 Stück in der Datenbank obwohl er halt versucht alle durch zugehen beim Save oder soll das so sein :x ? Ich kenne das nur so das er nur die Aktuellen in der Datebank abspeichert -
Nein der zweite eintrag ist dann wenn ich den server neustarte und nein ich hab kein 2. Insert Statement ist nur in dem Command
-
Hab es schon in Exit drinne nur halt ausgeklammert weil der Server halt sich aufhängt und in HouseCreated hab ich den cache insert drinne so wie ich das eig kenne
public HouseCreated(id)
{
HouseInfo[id][h_ID] = cache_insert_id();
return 1;
} -
Die Save Funktion habe ich im Script drinne aber nicht in OnGamemodeExit wenn ich die dort drinne habe hängt sich der server auf oder mache ich etwas falsch in der funktion :o ?
public OnGameModeExit()
{
print("[MySQL] Shutting down the Server.");
for(new i = 0; i < MAX_HOUSES; i ++)
{
SaveHouses(i);
}
mysql_close(handle);
return 1;}public SaveHouses(id)
{
printf("[MySQL] Saving Houses...");
mysql_format(handle, query, sizeof(query), "UPDATE `housedata` SET Owner = '%s', EnterPosX = '%f', EnterPosY = '%f', EnterPosZ = '%f', ExitPosX = '%f', ExitPosY = '%f', ExitPosZ = '%f', Interior = '%i', VirtualWorld = '%i', Price = '%i', Type = '%i', Locked = '%i', Rent = '%i', Description = '%s' WHERE ID = '%d'",
HouseInfo[id][hEnterX], HouseInfo[id][hEnterY], HouseInfo[id][hEnterZ], HouseInfo[id][hExitX], HouseInfo[id][hExitY], HouseInfo[id][hExitZ], HouseInfo[id][hInteriorID], HouseInfo[id][hVirtualWorldID], HouseInfo[id][hPrice], HouseInfo[id][hType], HouseInfo[id][hLocked], HouseInfo[id][hRent], HouseInfo[id][hDescription], HouseInfo[id][h_ID]);
printf("[MySQL] %s", query);
mysql_pquery(handle, query);
mysql_format(handle, query, sizeof(query), "UPDATE `housedata` SET Garage = '%i', GaragePosX = '%f', GaragePosY = '%f', GaragePosZ = '%f', MaxVehicles = '%i', VehiclesInside = '%i' WHERE ID = '%d'",
HouseInfo[id][hGarage], HouseInfo[id][gPosX], HouseInfo[id][gPosY], HouseInfo[id][gPosZ], HouseInfo[id][gMaxVehicles], HouseInfo[id][gVehiclesInside], HouseInfo[id][h_ID]);
printf("[MySQL] %s", query);
mysql_pquery(handle, query);
printf("[MySQL] Done.");
return 1;
} -
Guten Abend,
Ich bin kurz vor der Verzweiflung ich hab jetzt wirklich alles probiert und umgeschrieben und trotzdem Ist der "Bug" immer noch da.
Mein Problem ist Wenn ich Ingame ein Haus erstelle und den Server mit gmx neustarte erstellt der Server automatisch eine kopie von dem Haus also sieht es Quasi so in meiner Konsole aus nach dem Neustart
und so in der Datenbank
Ich habe wirklich Jede Funktion einmal neu geschrieben / raus genommen um zu gucken an was es liegen könnte meine Vermutung ist GetFreeHouseID
GetFreeHouseID()
{
for(new i = 0; i < sizeof(HouseInfo); i ++)
{
if(HouseInfo[i][h_ID] == 0)return i;
}
return 0;
}
Hab dort aber auch wirklich alles versucht sogar mir printen lassen und ab einem bestimmten punkt kommt er halt nicht weiter und das ist halt bei GetFreeHouseID
Es kommt in die Schleife rein aber "if(HouseInfo[i][h_ID] == 0)return i;" wird anscheind nicht aufgerufen beim Command
Hier auch mal der Command
ocmd:createhouse(playerid, params[])
{
if(pInfo[playerid][pAdmin] < 4)return 1;
new InteriorTypeID, InteriorID, HouseType, HousePrice, HouseGarage, string[256];
new Float: InteriorX, Float: InteriorY, Float: InteriorZ, Float: EnterX, Float: EnterY, Float: EnterZ;
if(sscanf(params, "iii", InteriorTypeID, HousePrice, HouseGarage))
{
SendClientMessage(playerid, COLOR_SAMP1, "* Usage: /createhouse [InteriorID] [Price] [Garage (0 = Nein | 1 = Ja)]");
SendClientMessage(playerid, COLOR_SAMP1, "* InteriorIDs: Small[1 - 11] | Medium[12- 32] | Big[33-36]");
return 1;
}
if(InteriorTypeID < 1 || InteriorTypeID > 36)return SendClientMessage(playerid, COLOR_RED, "* Error: Ungültige InteriorID! (1 - 36)");
/*====================> [ #SMALL INTERIORS ] <====================*/
if(InteriorTypeID == 1) { InteriorX = 223.0797, InteriorY = 1287.7438, InteriorZ = 1082.1406; InteriorID = 1; HouseType = 0; }
if(InteriorTypeID == 2) { InteriorX = 2282.7927, InteriorY = -1139.3999, InteriorZ = 1050.8984; InteriorID = 11; HouseType = 0; }
if(InteriorTypeID == 3) { InteriorX = 328.0025, InteriorY = 1478.5465, InteriorZ = 1084.4375; InteriorID = 15; HouseType = 0; }
if(InteriorTypeID == 4) { InteriorX = -42.5438, InteriorY = 1406.3199, InteriorZ = 1084.4297; InteriorID = 8; HouseType = 0; }
if(InteriorTypeID == 5) { InteriorX = 300.8615, InteriorY = 309.8871, InteriorZ = 1003.3047; InteriorID = 4; HouseType = 0; }
if(InteriorTypeID == 6) { InteriorX = 2308.8101, InteriorY = -1212.2432, InteriorZ = 1049.0234; InteriorID = 6; HouseType = 0; }
if(InteriorTypeID == 7) { InteriorX = 2233.6196, InteriorY = -1114.5808, InteriorZ = 1050.8828; InteriorID = 5; HouseType = 0; }
if(InteriorTypeID == 8) { InteriorX = 2259.8242, InteriorY = -1135.7554, InteriorZ = 1050.6328; InteriorID = 10; HouseType = 0; }
if(InteriorTypeID == 9) { InteriorX = 2217.8169, InteriorY = -1076.1425, InteriorZ = 1050.4844; InteriorID = 1; HouseType = 0; }
if(InteriorTypeID == 10) { InteriorX = 267.1584, InteriorY = 305.2281, InteriorZ = 999.1484; InteriorID = 2; HouseType = 0; }
if(InteriorTypeID == 11) { InteriorX = 244.1047, InteriorY = 304.9235, InteriorZ = 999.1484; InteriorID = 1; HouseType = 0; }/*====================> [ #MEDIUM INTERIORS ] <====================*/
if(InteriorTypeID == 12) { InteriorX = 235.4070, InteriorY = 1187.3690, InteriorZ = 1080.2578; InteriorID = 3; HouseType = 1; }
if(InteriorTypeID == 13) { InteriorX = 490.8654, InteriorY = 1399.1970, InteriorZ = 1080.2578; InteriorID = 2; HouseType = 1; }
if(InteriorTypeID == 14) { InteriorX = 24.0680, InteriorY = 1340.5543, InteriorZ = 1084.3750; InteriorID = 10; HouseType = 1; }
if(InteriorTypeID == 15) { InteriorX = -283.9743, InteriorY = 1471.1327, InteriorZ = 1084.3750; InteriorID = 15; HouseType = 1; }
if(InteriorTypeID == 16) { InteriorX = -261.2778, InteriorY = 1456.7443, InteriorZ = 1084.3672; InteriorID = 4; HouseType = 1; }
if(InteriorTypeID == 17) { InteriorX = 83.0025, InteriorY = 1322.8451, InteriorZ = 1083.8662; InteriorID = 9; HouseType = 1; }
if(InteriorTypeID == 18) { InteriorX = 2317.9451, InteriorY = -1026.1736, InteriorZ = 1050.2178; InteriorID = 9; HouseType = 1; }
if(InteriorTypeID == 19) { InteriorX = 2496.0198, InteriorY = -1692.6827, InteriorZ = 1014.7422; InteriorID = 3; HouseType = 1; }
if(InteriorTypeID == 20) { InteriorX = 2196.0349, InteriorY = -1204.3772, InteriorZ = 1049.0234; InteriorID = 6; HouseType = 1; }
if(InteriorTypeID == 21) { InteriorX = 376.2806, InteriorY = 1417.5321, InteriorZ = 1081.3281; InteriorID = 15; HouseType = 1; }
if(InteriorTypeID == 22) { InteriorX = 2269.6677, InteriorY = -1210.3624, InteriorZ = 1047.5625; InteriorID = 10; HouseType = 1; }
if(InteriorTypeID == 23) { InteriorX = 447.3249, InteriorY = 1397.5758, InteriorZ = 1084.3047; InteriorID = 2; HouseType = 1; }
if(InteriorTypeID == 24) { InteriorX = 386.5427, InteriorY = 1471.8826, InteriorZ = 1080.1875; InteriorID = 15; HouseType = 1; }
if(InteriorTypeID == 25) { InteriorX = 22.8908, InteriorY = 1403.7777, InteriorZ = 1084.4297; InteriorID = 5; HouseType = 1; }
if(InteriorTypeID == 26) { InteriorX = 2365.3372, InteriorY = -1134.8403, InteriorZ = 1050.8750; InteriorID = 8; HouseType = 1; }
if(InteriorTypeID == 27) { InteriorX = 2237.6023, InteriorY = -1080.8840, InteriorZ = 1049.0234; InteriorID = 2; HouseType = 1; }
if(InteriorTypeID == 28) { InteriorX = 295.0533, InteriorY = 1473.0192, InteriorZ = 1080.2578; InteriorID = 15; HouseType = 1; }
if(InteriorTypeID == 29) { InteriorX = 221.9701, InteriorY = 1140.8445, InteriorZ = 1082.6094; InteriorID = 4; HouseType = 1; }
if(InteriorTypeID == 30) { InteriorX = -68.7771, InteriorY = 1351.9674, InteriorZ = 1080.2109; InteriorID = 6; HouseType = 1; }
if(InteriorTypeID == 31) { InteriorX = 260.8823, InteriorY = 1237.9570, InteriorZ = 1084.2578; InteriorID = 9; HouseType = 1; }
if(InteriorTypeID == 32) { InteriorX = 2468.4509, InteriorY = -1698.2510, InteriorZ = 1013.5078; InteriorID = 2; HouseType = 1; }/*====================> [ #BIG INTERIORS ] <====================*/
if(InteriorTypeID == 33) { InteriorX = 140.1820, InteriorY = 1366.4713, InteriorZ = 1083.8594; InteriorID = 5; HouseType = 2; }
if(InteriorTypeID == 34) { InteriorX = 225.6624, InteriorY = 1022.0758, InteriorZ = 1084.0159; InteriorID = 7; HouseType = 2; }
if(InteriorTypeID == 35) { InteriorX = 234.2033, InteriorY = 1064.1516, InteriorZ = 1084.2117; InteriorID = 6; HouseType = 2; }
if(InteriorTypeID == 36) { InteriorX = 226.7048, InteriorY = 1114.2527, InteriorZ = 1080.9950; InteriorID = 5; HouseType = 2; }/*====================> [ #CREATE HOUSE ] <====================*/
new id = GetFreeHouseID();
GetPlayerPos(playerid, EnterX, EnterY, EnterZ);
HouseInfo[id][hEnterX] = EnterX;
HouseInfo[id][hEnterY] = EnterY;
HouseInfo[id][hEnterZ] = EnterZ;
HouseInfo[id][hExitX] = InteriorX;
HouseInfo[id][hExitY] = InteriorY;
HouseInfo[id][hExitZ] = InteriorZ;
HouseInfo[id][hInteriorID] = InteriorID;
HouseInfo[id][hVirtualWorldID] = 0;
HouseInfo[id][hPrice] = HousePrice;
HouseInfo[id][hType] = HouseType;
HouseInfo[id][hGarage] = HouseGarage;
UpdateHouses(id);
new HouseTypeName[64], GarageName[64];
switch(HouseType)
{
case 0: HouseTypeName = "Klein";
case 1: HouseTypeName = "Medium";
case 2: HouseTypeName = "Groß";
}
switch(HouseGarage)
{
case 0: GarageName = "Nein";
case 1: GarageName = "Ja";
}
mysql_format(handle, query, sizeof(query), "INSERT INTO `housedata` (EnterPosX, EnterPosY, EnterPosZ, ExitPosX, ExitPosY, ExitPosZ, Interior, VirtualWorld, Price, Type, Garage) VALUES ('%f', '%f', '%f', '%f', '%f', '%f', '%i', '%i', '%i', '%i', '%i')",
HouseInfo[id][hEnterX], HouseInfo[id][hEnterY], HouseInfo[id][hEnterZ], HouseInfo[id][hExitX], HouseInfo[id][hExitY], HouseInfo[id][hExitZ], HouseInfo[id][hInteriorID], HouseInfo[id][hVirtualWorldID], HouseInfo[id][hPrice], HouseInfo[id][hType], HouseInfo[id][hGarage]);
printf("%s", query);
mysql_tquery(handle, query, "HouseCreated", "i", id);
format(string, sizeof(string), "[AdmCmd] %s hat ein Haus erstellt. (Preis: $%s | Typ: %s | InteriorID: %i | Garage: %s)", pInfo[playerid][pName], NiceMoney(HouseInfo[id][hPrice]), HouseTypeName, InteriorID, GarageName);
SendAdminMessage(COLOR_LIGHTBLUE, string);
return 1;
}Hoffe mir kann jemand Helfen..
-
Jetzt wird gar kein auto mehr in der Garage geparkt.
Das Fahrzeug in dem ich sitze wird auch nicht Zerstört.
Ist etwas schwer zu erklären also sobald ich an der Garage stehe und /garage eingebe und dann Rausnehmen wähle kommt dann
format(string, sizeof(string), "%s{FFFF00}%i. {FFFFFF}Fahrzeug %i\n", string, slot, PrivatCarInfo[slot][playerid][pfModel]);
nur steht dort Fahrzeug 0 im Dialog.//Edit
Als ich das wieder eingefügt habe hat es Funktioniert.
new idx = GetVehicleSlot(playerid, GetPlayerVehicleID(playerid)); -
Hab das mal so überarbeitet so sollte das eigentlich klappen so wie du mir das jetzt erklärt hast.
if(dialogid == DIALOG_GARAGE)
{
if(response)
{
if(listitem == 0)
{
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_RED, "[ERROR] Du bist in keinem Fahrzeug!");
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid, COLOR_RED, "[ERROR] Du bist nicht der Fahrer des Fahrzeuges!");
if(HouseInfo[house][hgInside] >= HouseInfo[house][hgMaxAutos])
{
SendClientMessage(playerid, COLOR_RED, "[ERROR] Deine Garage ist voll!");
}
else
{
new idx = GetVehicleSlot(playerid, GetPlayerVehicleID(playerid));
HouseInfo[house][hgInside] ++;
PrivatCarInfo[idx][playerid][pfStored] = 1;
DestroyVehicle(PrivatCarInfo[idx][playerid][pf_IDx]);
SendClientMessage(playerid, COLOR_GREEN, "[GARAGE] Fahrzeug wurde erfolgreich in der Garage abgestellt.");
mysql_format(handle, query, sizeof(query), "UPDATE privatcars SET pfStored='%i' WHERE ID='%i'", PrivatCarInfo[idx][playerid][pfStored], PrivatCarInfo[idx][playerid][pf_ID]);
printf("query: %s", query);
mysql_pquery(handle, query);
UpdateHouse(house);
SaveHouse(house);
}
}
if(listitem == 1)
{
for(new slot=0;slot<MAX_PLAYER_VEHS;slot++)
{
if(PrivatCarInfo[slot][playerid][pfStored] == 1)
{
format(string, sizeof(string), "%s{FFFF00}%i. {FFFFFF}Fahrzeug %i\n", string, slot, PrivatCarInfo[slot][playerid][pfModel]);
}
}
if(!strlen(string)) ShowPlayerDialog(playerid, DIALOG_GARAGE3, DIALOG_STYLE_MSGBOX, "{FFFF00}Garagenmenü", "{FFFFFF}Du hast zurzeit kein {FFFF00}Fahrzeug {FFFFFF} in deiner Garage.", "Okay", "");
else ShowPlayerDialog(playerid, DIALOG_GARAGE2, DIALOG_STYLE_LIST, "{FFFF00}Fahrzeuge", string, "Rausholen", "Zurück");
}
}
}Nur ist jetzt halt das mit dem rausholen noch anders. Ich habe Zwei Autos in der Garage aber ich kann nur eins rausholen. Wenn ich das Dialog nochmal öffne kommt das Dialog mit Du hast kein Fahrzeug mehr in der Garage.
Ich hab es auch mit GetVehicleSlot versucht aber ohne erfolgt denn dort passiert nichts.
if(dialogid == DIALOG_GARAGE2)
{
if(response == 1)
{
for(new slot=0;slot<MAX_PLAYER_VEHS;slot++)
{
PrivatCarInfo[slot][playerid][pf_IDx] = CreateVehicle(PrivatCarInfo[slot][playerid][pfModel], HouseInfo[house][hgX], HouseInfo[house][hgY], HouseInfo[house][hgZ], PrivatCarInfo[slot][playerid][pfR], PrivatCarInfo[slot][playerid][pfCarColor1], PrivatCarInfo[slot][playerid][pfCarColor2], 0);
Tankmenge[PrivatCarInfo[slot][playerid][pf_IDx]] = GasMax[GetVehicleModel(PrivatCarInfo[slot][playerid][pf_IDx])-400];
format(string,sizeof(string),"%s", PrivatCarInfo[slot][playerid][pfKennzeichen]);
SetVehicleNumberPlate(PrivatCarInfo[slot][playerid][pf_IDx], string);
HouseInfo[house][hgInside] --;
PrivatCarInfo[slot][playerid][pfStored] = 0;
SendClientMessage(playerid, COLOR_GREEN, "[GARAGE] Fahrzeug wurde erfolgreich aus der Garage rausgeholt.");
PutPlayerInVehicle(playerid, PrivatCarInfo[slot][playerid][pf_IDx], 0);
mysql_format(handle, query, sizeof(query), "UPDATE privatcars SET pfStored='%i' WHERE ID='%i'", PrivatCarInfo[slot][playerid][pfStored], PrivatCarInfo[slot][playerid][pf_ID]);
printf("query: %s", query);
mysql_pquery(handle, query);
UpdateHouse(house);
SaveHouse(house);
}
}
else
{
ShowPlayerDialog(playerid, DIALOG_GARAGE, DIALOG_STYLE_TABLIST_HEADERS, "{FFFF00}Garagenmenü",
"#\tOption\n\
{FFFF00}1.\t{FFFFFF}Parken\n\
{FFFF00}2.\t{FFFFFF}Rausnehmen", "Auswählen", "Abbrechen");
}
} -
Ist das nicht sowas ähnliches wie
getFreeCarID(playerid)
{
for(new slot=0;slot<MAX_PLAYER_VEHS;slot++)
{
if(PrivatCarInfo[slot][playerid][pf_IDx]==0)return slot;
}
return 0;
}
?