Wie genau mache ich diese Abfrage ? :x
Denn ich hätte jetzt gerade keine Idee Wie oder ich stelle mich gerade nur dumm an.
Beiträge von JOK3R
-
-
Hab das System komplett mal umgeändert
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
{
for(new slot=0;slot<MAX_PLAYER_VEHS;slot++)
{
HouseInfo[house][hgInside] ++;
PrivatCarInfo[slot][playerid][pfStored] = 1;
DestroyVehicle(PrivatCarInfo[slot][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[slot][playerid][pfStored], PrivatCarInfo[slot][playerid][pf_ID]);
printf("query: %s", query);
mysql_pquery(handle, query);
UpdateHouse(house);
SaveHouse(house);
}
}
}
if(listitem == 1)
{
if(listitem == 1)
{
for(new slot=0;slot<MAX_PLAYER_VEHS;slot++)
{
if(PrivatCarInfo[slot][playerid][pfStored] == 1)
{
for(new i; i < HouseInfo[house][hgInside]; i++)
{
format(string, sizeof(string), "%s{FFFF00}%i. {FFFFFF}Fahrzeug %i\n", string, i, PrivatCarInfo[slot][playerid][pfModel]);
}
ShowPlayerDialog(playerid, DIALOG_GARAGE2, DIALOG_STYLE_LIST, "{FFFF00}Fahrzeuge", string, "Rausholen", "Zurück");
}
else
{
ShowPlayerDialog(playerid, DIALOG_GARAGE3, DIALOG_STYLE_MSGBOX, "{FFFF00}Garagenmenü", "{FFFFFF}Du hast zurzeit kein {FFFF00}Fahrzeug {FFFFFF} in deiner Garage.", "Okay", "");
}
}
}
}
}
}
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");
}
}
Aber da es kommt immer noch das Dialog wo steht das ich keine Fahrzeuge in der Garage habe. -
Okay jetzt habe ich wirklich alles umgestellt.
Aber es ist immer noch wie im oberen Screenshot das alle 5 Nummerierung die Fahrzeug ID 560 haben aber das dialog soll ja nur 2 fahrzeuge zeigen
Einmal den Infernus 411 und dann den Sultan 560. -
Ich hatte vorher aber new PrivatCarInfo[1000][carEnum];
muss ich trotzdem alles umändern ? -
Hab [MAX_PLAYERS] eingefüt und [playerid] hinter die PrivatCarInfo eingefügt.
Was mache ich bei dem Dialog wo ich schon [playerid] habe ? was füge ich an zweiter stelle ein ? -
So sieht das komplette Dialog aus.
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
{
HouseInfo[house][hgInside] ++;
PrivatCarInfo[playerid][pfStored] = 1;
DestroyVehicle(PrivatCarInfo[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[playerid][pfStored], PrivatCarInfo[playerid][pf_ID]);
printf("query: %s", query);
mysql_pquery(handle, query);
UpdateHouse(house);
SaveHouse(house);
}
}
if(listitem == 1)
{
if(listitem == 1)
{
if(PrivatCarInfo[playerid][pfStored] == 1)
{
for(new i; i < 5; i++)
{
format(string, sizeof(string), "%s{FFFF00}%i. {FFFFFF}Fahrzeug %i\n", string, i, PrivatCarInfo[playerid][pfModel]);
}
ShowPlayerDialog(playerid, DIALOG_GARAGE2, DIALOG_STYLE_LIST, "{FFFF00}Fahrzeuge", string, "Rausholen", "Zurück");
}
else
{
ShowPlayerDialog(playerid, DIALOG_GARAGE3, DIALOG_STYLE_MSGBOX, "{FFFF00}Garagenmenü", "{FFFFFF}Du hast zurzeit kein {FFFF00}Fahrzeug {FFFFFF} in deiner Garage.", "Okay", "");
}
}
}
}
} -
Jetzt sieht das ganze so aus
Nur Müsste an Erster stelle Der Infernus sein und an Zweiter stelle dann der Sultan also 411 und dann 560.
Ich habe mit dem [ i ] errors bekommen. -
Ich hätte da eine Kleine fragen bezüglich zu Dialogen.
Und zwar geht es darum Ich habe ein Garagen System angefangen und Wollte das wenn man die Autos aus der Garage rausholt das die in einem Listen-Dialog untereinander mit Nummerierung aufgereiht sind
z.B
1. Fahrzeug 411
2 Fahrzeug 560
Nun ist meine Frage wie man dies umsetzen könnte.
Ich habe so mit dem Code angefangen:
if(listitem == 1)
{
if(PrivatCarInfo[playerid][pfStored] == 1)
{
for(new i; i < 5; i++)
{
format(string, sizeof(string), "{FFFF00}%i. {FFFFFF}Fahrzeug %i\n", i, PrivatCarInfo[playerid][pfModel]);
ShowPlayerDialog(playerid, DIALOG_GARAGE2, DIALOG_STYLE_LIST, "{FFFF00}Fahrzeuge", string, "Rausholen", "Zurück");
}
}
else
{
ShowPlayerDialog(playerid, DIALOG_GARAGE3, DIALOG_STYLE_MSGBOX, "{FFFF00}Garagenmenü", "{FFFFFF}Du hast zurzeit kein {FFFF00}Fahrzeug {FFFFFF} in deiner Garage.", "Okay", "");
}
}
nur glaube ich das die for schleife falsch ist weil nur ein Auto immer nur angezeigt wird.
Hoffe mir kann das prinzip einer Erklären.MfG
Jonny -
Alles klaro jetzt funktioniert wenigstens dieses Blöde system
Ich bedanke mich für deine Hilfe -
Habe es nochmal Überarbeitet
-
Mein Held des Tages danke
Es gibt nur noch ein Problem mit dem System und zwar wenn ich dann die Übersicht aufrufe
Steht bei Besitzer immer noch Frei :x wie behebe ich das bei OnDialogResponse ?Hab das oben bei DialogResponse so stehen
new house = pInfo[playerid][pHaus]Und dann das Dialog
if(dialogid == DIALOG_HOUSE)
{
if(response)
{
if(listitem == 0)
{
format(string, sizeof(string), "{FFFF00}Haus Übersicht:\n\nBesitzer: {FFFFFF}%s\n{FFFF00}Aktuelle Mieter: {FFFFFF}%d\n{FFFF00}Aktueller Mietpreis: {FFFFFF}%s", HouseInfo[house][hOwner], HouseInfo[house][hMieter], NiceMoney(HouseInfo[house][hRent]));
ShowPlayerDialog(playerid, DIALOG_HOUSE2, DIALOG_STYLE_MSGBOX, "{FFFF00}Haus Übersicht", string, "Zurück", "");
}
}
} -
Beim laden lasse ich die Häuser auch in der Console printen.
public OnHouseLoad()
{
new rows;
cache_get_row_count(rows);
if(!rows)return 1;
for(new i=0; i<rows; i++)
{
new id = getFreeHouseID();
cache_get_value_name_int(i, "ID", HouseInfo[id][hID]);
cache_get_value_name_int(i, "hOwned", HouseInfo[id][hOwned]);
cache_get_value(i, "hOwner", HouseInfo[id][hOwner], 64);
cache_get_value_name_int(i, "hMieter", HouseInfo[id][hMieter]);
cache_get_value_name_int(i, "hMaxMieter", HouseInfo[id][hMaxMieter]);
cache_get_value_name_int(i, "hPreis", HouseInfo[id][hPreis]);
cache_get_value_name_float(i, "hX", HouseInfo[id][hX]);
cache_get_value_name_float(i, "hY", HouseInfo[id][hY]);
cache_get_value_name_float(i, "hZ", HouseInfo[id][hZ]);
cache_get_value_name_float(i, "ihX", HouseInfo[id][ihX]);
cache_get_value_name_float(i, "ihY", HouseInfo[id][ihY]);
cache_get_value_name_float(i, "ihZ", HouseInfo[id][ihZ]);
cache_get_value_name_int(i, "hInterior", HouseInfo[id][hInterior]);
cache_get_value_name_int(i, "hTill", HouseInfo[id][hTill]);
UpdateHouse(id);
printf("HausID: %i, Owned: %i, Besitzer:%s, Preis:%i, %f, %f, %f, %f, %f, %f, Interior:%i, Steuern:%i", HouseInfo[id][hID], HouseInfo[id][hOwned], HouseInfo[id][hOwner], HouseInfo[id][hPreis], HouseInfo[id][hX], HouseInfo[id][hY], HouseInfo[id][hZ], HouseInfo[id][ihX], HouseInfo[id][ihY], HouseInfo[id][ihZ], HouseInfo[id][hInterior], HouseInfo[id][hTill]);
}
print("<-| [HOUSES] Es wurden alle Häuser erfolgreich geladen.");
return 1;
} -
Hab das mal etwas angepasst aber das funktioniert nicht wirklich
ocmd:housemenu(playerid, params[])
{
if(pInfo[playerid][pHaus] == -1) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Du besitzt kein Haus!");
new h = pInfo[playerid][pHaus];
printf("Owned: %i", HouseInfo[h][hOwned]);
if(HouseInfo[h][hOwned] == 0) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Dieses Haus gehört dir nicht!");
new int = GetPlayerInterior(playerid);
new Float:houseX, Float:houseY, Float:houseZ;
if(int == HouseInfo[h][hInterior]) //ggf Anpassen
{
//im Haus
houseX = HouseInfo[h][ihX];
houseY = HouseInfo[h][ihY];
houseZ = HouseInfo[h][ihZ];
}
else
{
//Ausserhalb des hauses
houseX = HouseInfo[h][hX];
houseY = HouseInfo[h][hY];
houseZ = HouseInfo[h][hZ];
}
if(!IsPlayerInRangeOfPoint(playerid, 5.0, houseX, houseY, houseZ)) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Du bist nicht in deinem Haus!");
ShowPlayerDialog(playerid, DIALOG_HOUSE, DIALOG_STYLE_TABLIST_HEADERS, "{FFFF00}Hausmenü",
"#\tOption\n\
{FFFF00}1.\t{FFFFFF}Übersicht", "Auswählen", "Abbrechen");
return 1;
}
Egal bei welchem Haus ich den Command ausführe steht dann "Dieses Haus gehört dir nicht!"
Und in der Console ist Owned: 0 geprintet. -
ocmd:housemenu(playerid, params[])
{
if(pInfo[playerid][pHaus] == -1)return SendClientMessage(playerid, COLOR_RED, "[ERROR] Du besitzt kein Haus!");
for(new i=0; i<sizeof(HouseInfo); i++)
{
if(pInfo[playerid][pHaus] == i)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
printf("Playercoords: %f, %f, %f", X, Y, Z);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ]))return SendClientMessage(playerid, COLOR_RED, "[ERROR] Du bist nicht an deinem Haus!");
printf("Housecoords: %f, %f, %f", HouseInfo[i][hX], HouseInfo[i][hY], HouseInfo[i][hZ]);
ShowPlayerDialog(playerid, DIALOG_HOUSE, DIALOG_STYLE_TABLIST_HEADERS, "{FFFF00}Hausmenü",
"#\tOption\n\
{FFFF00}1.\t{FFFFFF}Übersicht", "Auswählen", "Abbrechen");
}
}
return 1;
} -
Hab das mit dem hOwned eingefügt aber jetzt funktioniert der Befehl nicht. Es kommt auch keine nachricht wie "Dieser befehlt existiert nicht"
//Edit
HouseInfo[pInfo[playerid][pHaus]][ihX] ist genau das gleiche ohne Schleife es passiert in HausID2 und HausID3 obwhol ich HausID2 besitze.//Edit
Ich habe anstatt die Interior Koordinaten mal die Haus Icon Koordinaten genommen und Jetzt wird das Dialog nur noch bei HausID 3 gezeigt obwohl ich HausID 2 besitze. -
Okay das hat Schonmal geklappt. Nur ist jetzt die HausID3 das Problem dort bekomme ich auch das Dialog.
Kann man da noch sowas wie "HouseInfo[i][hOwned]" mit einbringen ? und wenn ja wäre das dann ==0 ? -
Jetzt funktioniert es wirklich nur noch in der HausID1 obwohl ich dieses Haus halt nicht besitze.
In meinem Haus steht dann wieder "Du bist nicht in deinem Haus" -
Guten Abend Breadfish Community,
Ich versuche es kurz und knackig. Es geht um den befehl /housemenu der nicht richtig bei mir Funktioniert.
Dieser befehl funktioniert außerhalb des Hauses und sobald ich in dem Interior drinnen bin heißt es "Du bist nicht in deinem Haus!"
Ich habe auch die Koordinaten geprintet und Komischerweise sind die Interior Koordinaten von einem Anderem Haus und zwar der HausID 1.In dem Zweitem Bild sieht man das Ich die HausID 2 Besitze und auch die Koordinaten vom dem Interior mit meiner Position übereinstimmen.
Hier ist mal der befehl Ich habe bis jetzt alles versucht aber Jedesmal ist es immer "Du bist nicht in deinem Haus!"
ocmd:housemenu(playerid, params[])
{
if(pInfo[playerid][pHaus] == -1)return SendClientMessage(playerid, COLOR_RED, "[ERROR] Du besitzt kein Haus!");
for(new i=0; i<sizeof(HouseInfo); i++)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
printf("Playercoords: %f, %f, %f", X, Y, Z);
if(IsPlayerInRangeOfPoint(playerid, 50.0, HouseInfo[i][ihX], HouseInfo[i][ihY], HouseInfo[i][ihZ]))return SendClientMessage(playerid, COLOR_RED, "[ERROR] Du bist nicht in deinem Haus!");
printf("Housecoords: %f, %f, %f", HouseInfo[i][ihX], HouseInfo[i][ihY], HouseInfo[i][ihZ]);
ShowPlayerDialog(playerid, DIALOG_HOUSE, DIALOG_STYLE_TABLIST_HEADERS, "{FFFF00}Hausmenü",
"#\tOption\n\
{FFFF00}1.\t{FFFFFF}Übersicht", "Auswählen", "Abbrechen");
}
return 1;
}Ich hoffe mir kann einer Helfen
Mit freundlichen Grüßen.
Jonny -
Weil Asmir auf dem Server 3-4 Jahr gespielt hat Und er auch alles genau weiß.
Und wir vergleichen auch nichts mit dem altem WestCoast sondern wollen nur hinweißen das es von dem Altem script von 2010 angelegt ist. -
Guten Tag zusammen.
um eines vorweg zu klären: Das Projekt ist kein offizieller Remake von den damaligen Projektleitung.
Einige Personen die sich schon informiert haben wissen, dass wir an einem neuen Westcoast arbeiten (Informationen diesbezüglich gibt es bei mir per PN).Ich finde es sehr schade, dass man sich an einem neuen Westcoast widmet, aber nicht mal wusste, dass wir ein Roleplayserver waren.
Nein, stattdessen wird auf Reallife hingespielt. Ich möchte nicht, dass ihr weiterhin das offizielle Westcoast mit euch in Verbindung zieht.Eines der offiziellen Domains (bald auch die andere) http://gtawc.de/ führt auch zum richtigen Projekt.
Bei allem Respekt, sowas hätte man wenigstens kurz mit uns ansprechen können.
Gruß
Das war mir schon bewusst. Da ich aber leider nie die Zeit früher hatte konnte ich nie Auf WestCoast wirklich spielen .
Wir haben auch nichts mit dem damaligen Team zutun.