listitem 0 == Linie;
zu:
sSpieler[playerid][BusLinie] = 0;
Alternativ auch einfach so:
if(dialogid == LINIE)
{
if(response == 0)
{
return 1;
}
else
{
sSpieler[playerid][BusLinie] = listitem;
}
return 1;
}
listitem 0 == Linie;
zu:
sSpieler[playerid][BusLinie] = 0;
Alternativ auch einfach so:
if(dialogid == LINIE)
{
if(response == 0)
{
return 1;
}
else
{
sSpieler[playerid][BusLinie] = listitem;
}
return 1;
}
Noch zwei Fragen.
Welches Listitem betrifft es dann?
Und wie könnte ich das Listitem 1 ansprechen?
Ich danke dir für deine Hilfe.
In sSpieler[playerid][BusLinie] würde dann das ausgewählte Listitem stehen. Sprich sSpieler[playerid][BusLinie] ist 0, wenn du die erste Linie ausgewählt hast und 1 wenn du die zweite Linie ausgewählt hast.
Du kannst auch
sSpieler[playerid][BusLinie] = listitem + 1;
machen, wenn das verständlicher ist.
EDIT: (Post unten)
SarahCool565: Gerne Sollten weitere Fragen auftauchen kannst du gerne fragen!
In sSpieler[playerid][BusLinie] würde dann das ausgewählte Listitem stehen. Sprich sSpieler[playerid][BusLinie] ist 0, wenn du die erste Linie ausgewählt hast und 1 wenn du die zweite Linie ausgewählt hast.
machen, wenn das verständlicher ist.
Danke das du dir die Zeit in Anspruch genommen hast.
Immer gute Antworten parat.
Ich werde jetzt erstmal die Linie 1 fertig machen und schauen obs klappt.
Danke schön.
So ich habe es jetzt probiert. Reintheoretisch funktioniert es nur.. 1. man muss linie 2 anstatt 1 auswählen und 2.
wenn ich es bei "EnterCheckpoint" blabla tue dann weiß er nicht was Listitem ist und wenn ich es unter den "DialogResponse"
tue dann dann kann ich nur den 1. Checkpoint abfahren und danach geht es nicht mehr weiter.
Ganzer Code: (OnDialogResponse)
if(dialogid == LINIE)
{
if(response == 0)
{
return 1;
}
else
{
new BusLinie;
sSpieler[playerid][BusLinie] = listitem;
if(sSpieler[playerid][Beruf] == 1)
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 431)
{
DisablePlayerCheckpoint(playerid);
if(sSpieler[playerid][BusLinie] == 1)
{
SendClientMessage(playerid,gelb,"Nächste Haltestelle: Stadthalle");
SetPlayerCheckpoint(playerid,1456.0122,-1735.9861,13.0879,5.0);
GivePlayerMoney(playerid,300);
}
else if(sSpieler[playerid][BusLinie] == 2)
{
SendClientMessage(playerid,gelb,"Nächste Haltestelle: Los Santos Police Department (LSPD)");
SetPlayerCheckpoint(playerid,1533.0491,-1690.4596,13.0872,5.0);
GivePlayerMoney(playerid,300);
}
}
}
}
}
new BusLinie;
sSpieler[playerid][BusLinie] = listitem;
Du sollst das ja auch in deinem Enum deklarieren, und nicht immer lokal.
Falls du nicht weißt, wie, dann schicke uns mal dein Enum her (das Enum von sSpieler).
Du sollst das ja auch in deinem Enum deklarieren, und nicht immer lokal.
Falls du nicht weißt, wie, dann schicke uns mal dein Enum her (das Enum von sSpieler).
Also mein Enum heißt "SpielerDaten"
enum SpielerDaten{
Adminlevel,
Level,
Fraktion,
Team,
sLogin,
Geld,
Beruf
};
new sSpieler[MAX_PLAYERS][SpielerDaten];
Wenn ich anstatt sSpieler SpielerDaten einsetze dann funktioniert das nicht. Spieler funktioniert ebenfalls nicht.
sSpieler kannst du auch so lassen, da ist kein Fehler mit. Das Enum solltest du aber in das ändern:
enum SpielerDaten{
Adminlevel,
Level,
Fraktion,
Team,
sLogin,
Geld,
Beruf,
BusLinie
};
So, nun kannst du ganz einfach "BusLinie" so verwenden:
sSpieler[playerid][BusLinie]
ohne das noch extra zu deklarieren (mit "new" usw.)
sSpieler funktioniert nicht.
Zitaterror 017: undefined symbol "playerid"
error 021: symbol already defined: "sSpieler"
Kann man da nicht einfach anstatt sSpieler z.B. SSpieler machen?
Gut. Also wenn ich SSpieler nehme kommt der "already" Error nicht mehr.
Aber eben "undefined symbol "playerid""
Was hast du gemacht?
sSpieler hast du doch bereits definiert, da kann eins von weg.
Bestimmt hast du das so, oder?
new sSpieler[playerid][BusLinie];
Dann kannst du das so löschen.
Was hast du gemacht?
sSpieler hast du doch bereits definiert, da kann eins von weg.
Dann kannst du das so löschen.
Also wie soll ich das jetzt machen?
new Spieler[playerid][BusLinie];
klappt nicht wegen "playerid."
Ich könnte höchstens
new bSpieler[MAX_PLAYERS][BusLinie];
probieren aber ob das klappen würde ist fraglich.
Also gehen tut es auch nicht.
Da sagt er mir: "array index out of bounds (variable "bSpieler")"
Garnichts von beiden, du hast doch dafür das sSpieler.
Ich habe mir jetzt ein Tut von Mr Monat gesucht.
Hat es gut erklärt ist zwar bisschen kompliziert aber so geht es wenigstens. Danke für alle die geholfen haben.
Tut: https://www.youtube.com/watch?…uWlcQWbLuMuPMhTf&index=44
Einfach umwandeln zu Bus dann klappt das schon.
Kleine Verständnisfrage zu threaded queries: hab ich es richtig verstanden, dass nach dem Gebrauch von mysql_tquery IMMER im zweiten Thread weitergeschrieben wird, sprich, dass nie Code unter mysql_tquery soll?
Die Objekte brauchen ihre Zeit bis Sie dem Spieler angezeigt werden.
if(newkeys == KEY_SECONDARY_ATTACK)
{
new HausID = GetNearHausID(playerid);
new Float:hx, Float:hy, Float:hz, Float:ix, Float:iy, Float:iz;
hx = Haus[HausID][hX],hy = Haus[HausID][hY],hz = Haus[HausID][hZ];
ix = Haus[HausID][iX], iy = Haus[HausID][iY], iz = Haus[HausID][iZ];
if(IsPlayerInRangeOfPoint(playerid, 2.0, hx, hy, hz))
{
SetPlayerInterior(playerid,Haus[HausID][hInteriorID]);
SetPlayerPos(playerid, ix, iy, iz);
TogglePlayerControllable(playerid, 0);
SetTimerEx("Unfreeze", 2000, false, "i", playerid);
SendClientMessage(playerid,0xFF0000FF,"[H-INFO]{FFFFFF} Haus wurde betreten.");
}
}
forward Unfreeze(playerid);
public Unfreeze(playerid)
{
TogglePlayerControllable(playerid, 1);
return 1;
}
Kleine Verständnisfrage zu threaded queries: hab ich es richtig verstanden, dass nach dem Gebrauch von mysql_tquery IMMER im zweiten Thread weitergeschrieben wird, sprich, dass nie Code unter mysql_tquery soll?
Du kannst schon unter den mysql_tquery Aufruf Code schreiben, nur eben nichts was mit der abgeschickten Query zu tun hat. Du kannst nicht mysql_tquery aufrufen, und direkt darunter die Werte verwenden, da diese Werte erst bereit stehen wenn der Callback aufgerufen wird.
Warum wird das ganze 10 mal erstellt?
for(new gfirma = 0; gfirma < MAX_FIRMENGR; gfirma++)
{
if(GFirmaInfo[gfirma][firmengrcreate] == 0)
{
format(querygfr,sizeof(querygfr),"INSERT INTO "#DATENBANK"_firmagrundstuck (`firmenname`,`firmengrid`,`create`,`firmenid`,`igekauft`,`posx`,`posy`,`posx2`,`posy2`,`iposx`,`iposy`,`iposz`,`preis`) VALUES ('Niemand','%d','1','-1','0','%f','%f','%f','%f','%f','%f','%f','%d')",
gfirma,gfirmapos[playerid][0],gfirmapos[playerid][1],gfirmapos[playerid][2],gfirmapos[playerid][3],gfirmapos[playerid][4],gfirmapos[playerid][5],gfirmapos[playerid][6],cmd);
mysql_function_query(MYSQLVerbindung,querygfr,false,"","");
GFirmaInfo[gfirma][firmengrcreate] = 1;
GFirmaInfo[gfirma][firmengrid] = gfirma;
}
}