hey leute,
ich versuche es hinzukriegen, dass wenn ein Spieler sich in ein Auto hineinsetzt, ein Timer startet der sozusagen einen Mietvertrag laufen lässt.
Nach Beendigung des Vertrages soll das Auto wieder dort spawnen wo es vorher stand. So ne Art Taxi
Also man steigt in ein Auto, das bereits erschaffen wurde.
Dann soll man sozusagen eingefroren werden bis man /mieten eingibt.(Man muss noch austeigen können)
Wenn man /mieten eingegeben hat beginnt eine Art Mietvertrag für ne gewisse Zeit.
Dann soll das Auto am alten Standort respawnt werden. (Auch wenns kaputt geht)
Jetzt würde ich gerne wissen wie ich es schaffe, z.B 10 fahrzeuge(BMX) zu erstellen. Diesen dann eine eindeutige ID o.ä. zu verpassen und die halt jeden spieler einzeln zuordnen.
Bsp:
Ich miete jetzt ein BMX mit /rentbike.-> werde intern als mieter eingetragen.
Fahre zwei Meter, steige ab.
Laufe zum neuen BMX und gebe erneut /rentbike ein.
Kriege die Nachricht: Sie mieten bereits ein BMX oder Mieter XY hat das BMX bereits gemietet.
geschafft:
- dass mir beim einsteigen in ein BMX z.B, ein Textdraw erscheint und der Spieler gefreezt wird bis er /rentbike oder /exit eingibt.
- jetzt habe ich mir ein enum erstellt mit dem ich die MietInformationen speichere(s.o), dort hab ich den bool Wert nach eingeben von /rentbike z.b auf true gesetzt.
nicht hingekriegt:
- die information Mieter soll den Namen des Mieter's enthalten der das BMX fährt.
- eindeutigkeit jedes einzelnen BMX.
#define MAX_BIKES 11
new bike[MAX_BIKES];
// GAMEMODEINIT();
bike[0]=AddStaticVehicleEx(); //BMX
bike[1]=AddStaticVehicleEx(); //BMX
bike[2]=AddStaticVehicleEx(); //BMX
bike[3]=AddStaticVehicleEx(); //BMX
bike[4]=AddStaticVehicleEx(); //BMX
bike[5]=AddStaticVehicleEx(); //BMX
bike[6]=AddStaticVehicleEx(); //BMX
bike[7]=AddStaticVehicleEx(); //BMX
bike[8]=AddStaticVehicleEx(); //BMX
bike[9]=AddStaticVehicleEx(); //BMX
bike[10]=AddStaticVehicleEx(); //BMX
enum MietVertragInfo
{
Mieter,
bool:MietVertrag
}
new mietInfo[MAX_BIKES][MietVertragInfo];
else if (strcmp("/rentbike", cmdtext, true, 10) == 0)
{
new vehicleid = GetPlayerVehicleID(playerid);
new playername[MAX_PLAYER_NAME+1], string[24+MAX_PLAYER_NAME+1];
for(new i=0;i<MAX_BIKES;i++)
{
if(GetVehicleModel(vehicleid) == bike[i])
{
new Money = GetPlayerMoney(playerid);
if(mietInfo[playerid][MietVertrag] == false && Money <= 199)
{
SendClientMessage(playerid,GRAU,"Du hast nicht genug Geld.");
return 1;
}
else if(mietInfo[playerid][MietVertrag] == false && Money >= 199)
{
mietInfo[i][MietVertrag] = true; // setze mietvertrag
mietInfo[i][Mieter] = GetPlayerName(playerid,playername,sizeof(playername)); // setze mietername
SendClientMessage(playerid,GRAU,"Du hast das BMX erfolgreich gemietet.");
TogglePlayerControllable(playerid,1);
GivePlayerMoney(playerid,-200);
return 1;
}
else if(!IsPlayerInAnyVehicle(playerid))
return SendClientMessage(playerid,GRAU,"Sie müssen auf einem BMX sitzen!");
else if(mietInfo[playerid][MietVertrag] == true || Money >= 199 )
{
SendClientMessage(playerid,GRAU,"Du hast bereits ein BMX gemietet, bitte versuch dieses wiederzufinden oder warte bis dein Mietvertrag ausläuft.");
GetPlayerName(playerid,playername,sizeof(playername));
format(string, sizeof(string), "%s, hat das BMX bereits gemietet.", playername);
SendClientMessageToAll(GRAU, string);
return 1;
}
}
else
{
SendClientMessage(playerid,GRAU,"Du sitzt auf keinem BMX!");
return 1;
}
}
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER) // Player entered a vehicle as a driver
{
new vehicleid = GetPlayerVehicleID(playerid);
if(GetVehicleModel(vehicleid) == 481 && mietInfo[playerid][MietVertrag] == false)
{
TogglePlayerControllable(playerid,0);
SetTimerEx("deleteBMXTextDraw", 5000, false, "d", playerid);
//SendClientMessage(playerid,GRAU,"Ihr Mietvertrag laeuft in 20min aus.");
}
else if(GetVehicleModel(vehicleid) == 481 && mietInfo[playerid][MietVertrag] == true)
{
TogglePlayerControllable(playerid,1);
SetTimerEx("deleteBMXTextDraw", 5000, false, "d", playerid);
//SendClientMessage(playerid,GRAU,"Ihr Mietvertrag laeuft in 20min aus.");
}
}
return 1;
}
Irgendwas stimmt mit der Abfrage nicht. bike[i] hat glaube ich keinen Wert oder einen falschen, obwohl AddStaticVehicleEx
die vehicleid liefert...
if(GetVehicleModel(vehicleid) == bike[i])
Mit
GetVehicleModel(vehicleid) == 481
würde das ganze klappen. Nur die BMX wären nicht mehr eindeutig. Wenn ihr versteht was ich meine :D
Komme auf keine Mögliche Lösung, kann mir jemand weiterhelfen oder wisst ihr ob irgendein gamemode soetwas
ähnliches eingebaut hat, wo ich mir das mal anschauen kann?
Ich würde gerne wissen, wie ich es schaffe den 10BMX die ich da erschaffen habe, eindeutig zuzuordnen jedem Spieler genau 1. Also man darf nur GENAU EIN Mietvertrag haben.
Was mache ich falsch kann mir jemand helfen ?:D
danke