Eine Art Mietvertrag

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
  • 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? :D


    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

    3 Mal editiert, zuletzt von thacoga308 () aus folgendem Grund: neuer versuch