sowie das jetzt gemacht ist von dir würde er ja komplett i durchlaufen und für jedes i ein Haus erstellen?
Haussystem speichert keine Einträge
- IceWave
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Nein.
Die Schleife geht durch alle Häuser ja, doch dann frage ich ab ob h_Erstellt == 0 ist, sprich ob da nichts erstellt wurde bei der nächstliegenden ID. -
ja aber wenn jetzt z.b. nur Haus 1,2,3 erstellt sind, dann sind ja die anderen alle nicht erstellt.
Würde ja bedeuten er Haus 1 2 3 = erstellt(1) Haus 4,5,6,..... erstellt = 0 Somit würde er einfach alle erstellen
-
Schau mal:
Es existieren 0 Häuser.
Du gibst den Befehl ein und die Schleife geht durch ALLE Häuser, da ja keins existiert fängt das ganze bei ID 1 an.
Erstellst du nun z.B 9 weitere Häuser, sind wir bei ID 10.
Nun willst du ein 11 Haus erstellen, die Schleife geht durch (Beispiel: #define MAX_HAUS 300) also durch 300 und sieht das 10 Häuser bereits bestehen, also kommt ID 11 da die Variable h_Erstellt == 0 bei der ID 11 ist, da diese ID ja Frei ist, erstellt er das Haus mit der ID 11.Falls du das mit MAX_HAUS machen möchtest:
#define MAX_HAUS 300
for(new i=1; i<sizeof(MAX_HAUS); i++)Beachte das du damit nur 300 Häuser erstellen kannst.
-
Ja, aber die Schleife wird ja dann nicht abgebrochen.
-
Sag das doch gleich:
ocmd:createhaus(playerid,params[])
{
new preis,interior,Float:ixc,Float:iyc,Float:izc;
if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid, ROT, "Du bist kein Admin oder dein Rang ist zu niedrig!");
if(sscanf(params,"iifff",preis,interior,ixc,iyc,izc))return SendClientMessage(playerid,ROT,"Befehl: /createhaus [PREIS][INTERIOR][INT-X][INT-Y][INT-Z]");
new Float:xc, Float: yc, Float:zc;
GetPlayerPos(playerid,xc,yc,zc);
for(new i=1; i<sizeof(hInfo); i++)
{
if(hInfo[i][h_Erstellt] == 0)
{
hInfo[i][h_Erstellt] =1;
hInfo[i][h_x]=xc;
hInfo[i][h_y]=yc;
hInfo[i][h_z]=zc;
hInfo[i][h_ix]=Float:ixc;
hInfo[i][h_iy]=Float:iyc;
hInfo[i][h_iz]=Float:izc;
hInfo[i][h_interior]=interior;
hInfo[i][h_preis]=preis;
strmid(hInfo[i][h_besitzer],"",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
updateHaus(i);
new query[256];
format(query,sizeof(query),"INSERT INTO house (h_id,h_Erstellt,h_x,h_y,h_z,h_ix,h_iy,h_iz,h_interior,preis) VALUES ('%i','%i','%f','%f','%f','%f','%f','%f','%i','%i')",i,hInfo[i][h_Erstellt],xc,yc,zc,hInfo[i][h_ix],hInfo[i][h_iy],hInfo[i][h_iz],hInfo[i][h_interior],hInfo[i][h_preis]);
mysql_function_query(dbverbindung, query, false,"","");
return 1;
}
}
return 1;
} -
Danke für deine Hilfe!
Aber ich mach das ja vorallem zur Übung gerade, drum fände ich es gut, wenn mir vll jemand erklären könnte, was bei mir falsch ist..
-
Kein Problem.
-
Auf Anfrage in PN:
Mach beim /enter Befehl mal das hier weg:
if(GetPlayerVirtualWorld(playerid)!=i)continue; -
achja wie d*** habs wieder nicht gesehen:D
Habs jetzt einfach zu !=0 gemacht.Danke, hat mir sehr geholfen!!!
-
breadfish.de
Hat das Thema geschlossen.