Hall Brotfische,
Ich möchte abfragen wie viel Autos ein Spieler hat, dazu möchte ich gerne einen Stock machen der mir dann die Anzahl der Fahrzeuge liefert. Nun weiß ich nicht genau wie ich das machen soll...
Ich hoffe ihr könnt mir helfen
MfG
Hall Brotfische,
Ich möchte abfragen wie viel Autos ein Spieler hat, dazu möchte ich gerne einen Stock machen der mir dann die Anzahl der Fahrzeuge liefert. Nun weiß ich nicht genau wie ich das machen soll...
Ich hoffe ihr könnt mir helfen
MfG
Du könntest mit Hilfe einer Schleife durch alle Autos gehen, und von jedem Fahrzeug den Besitzer ermitteln. Sollte der Besitzer des Fahrzeuges mit "playerid" übereinstimmen, so lässt du eine Variable hochzählen (++). Wenn die Schleife zu Ende ist, lässt du die variable einfach returnen, und schon hast du die Anzahl der Fahrzeuge von "playerid".
Falls du nicht weißt was ich meine, dann schicke bitte den Code womit du den Besitzer vom Fahrzeug speicherst.
Also wenn ein Spieler am Autohaus ein Auto kauft, wird meine createcarforplayer Funktion ausgeführt.
createcarforplayer(playerid,modelid,Float:x,Float:y,Float:z,Float:r)
{
for(new i=0; i<sizeof(cInfo); i++)
{
if(cInfo[i][id_x]!=0)continue;
cInfo[i][besitzer]=sInfo[playerid][db_id];
cInfo[i][c_x]=x;
cInfo[i][c_y]=y;
cInfo[i][c_z]=z;
cInfo[i][c_r]=r;
cInfo[i][model]=modelid;
cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1);
tank[cInfo[i][id_x]] = 100;
saveCarToDB(playerid,i);
return 1;
}
return 1;
}
saveCarToDB(playerid,carid)
{
new query[1000];
format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",sInfo[playerid][db_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
mysql_function_query(dbhandle,query,true,"carSavedToDB","i",carid);
return 1;
}
GetPlayerCars(playerid)
{
new count_cars;
for(new i;i<sizeof cInfo;i++)
{
if(cInfo[i][besitzer] == sInfo[playerid][db_id])
{
count_cars ++;
}
}
return count_cars;
}
//Verwendung:
printf("playerid %i hat %i Fahrzeuge",playerid,GetPlayerCars(playerid));
So
Vielen Dank, klappt^^
Ich habe noch eine Frage, undzwar hat diese jetzt nichts mit diesem Theama zutun. Ich möchte wenn man /nearestatm eintippt, das der Näheset ATM angezeigt wird...
Kann man das irgewendie in diese richtung machen?:
for(new i=0; i<MAX_ATMS; i++)
{
GetPlayerDistanceFromPoint(playerid, atmInfo[i][atm_x] , atmInfo[i][atm_y], atmInfo[i][atm_z])
//...... Und dann irgenwie mit > & < oder so :)
}
new closestID = -1,closestMeter = 10000;
for(new i=0; i<MAX_ATMS; i++)
{
new dist = GetPlayerDistanceFromPoint(playerid, atmInfo[i][atm_x] , atmInfo[i][atm_y], atmInfo[i][atm_z]);
if(dist < closestMeter)
{
closestID = i;
closestMeter = dist;
}
}
atmInfo[closestID] ist dann der nächste ATM
OKay... Danke
Aber wie setzte ich jetzt dort den Checkpoint..
SetPlayerCheckpoint(playerid,atmInfo[closestID][atm_x],atmInfo[closestID][atm_y],atmInfo[closestID][atm_Z],4.0);
Einfach das nach der Schleife einfügen.
Okay habe es jetzt so: (Bekomme diesen Fehlercode : [warning 213: tag mismatch])
ocmd:nearestatm(playerid)
{
new closestID = -1,closestMeter = 10000;
for(new i=0; i<MAX_ATMS; i++)
{
new Float:dist = GetPlayerDistanceFromPoint(playerid,atmInfo[i][atm_x],atmInfo[i][atm_y],atmInfo[i][atm_z]); //Fehler
if(dist < closestMeter)
{
closestID = i;
closestMeter = dist;
}
}
SetPlayerCheckpoint(playerid,atmInfo[closestID][atm_x],atmInfo[closestID][atm_y],atmInfo[closestID][atm_z],3.0);
return 1;
}
Schreibe die Deklaration mal so, clostestMeter muss auch ein Float: sein.
new closestID = -1,Float:closestMeter = 10000.0;
Danke, das mit dem ATM geht schonmal aber nochmal zu der Abfrage GetPlayerCars:
Wenn ich jetzt einegebe /mycars dann kommt du hast 8 Fahrzeuge, das stimmt auch.
Ich möchte aber das ganze noch in eine Variable formatieren. Leider kommt dann beim print in der Konsole "0" herraus...
Code:
format(PlayerCars[playerid],sizeof(PlayerCars[]),"%i",GetPlayerCars(playerid));
printf("%i",PlayerCars[playerid]);
Mach das einfach so:
PlayerCars[playerid] = GetPlayerCars(playerid);
printf("%i",PlayerCars[playerid]);
PlayerCars darf bei dieser Methode kein String sein.
=> EDIT:
Das Problem bei deiner Methode ist, das du die Zahl der Fahrzeuge in einem String speicherst, aber dann bei printf %i stehen hast. Falls du deine Methode verwenden möchtest, musst du nur das %i zu %s ändern, dann sollte das passen. (PlayerCars muss dann aber ein String bleiben)