Frage für eine autovermietung [Ist Dringent]

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Hallo,


    ich möchte eine Autovermietung machen wo man in ein Car einsteigt (z.b. Flash) und dann ein car gespawnt wird und dass dann genau dieser Wagen nach z.b. 3Stunden oder beim ausloggen des spielers zerstört bzw gelöscht wird (auch wenn man nicht in diesem Fahrzeug ist)
    und dass sollte dann so sein dass aber mehrere den (Flash) mieten können also:


    Person A mietet sich einen Flash und gleich danach die person B. Nach 1stunde geht person B offline ist aber nicht in (seinem Flash) drin aber dieses soll gelöscht werden.
    Person A fährt 3STunden mit dem car und nach 3stunden soll dieses fahrzeug auch gelöscht werden.


    Also man sollte sich (unendlich) cars mieten können (aber pro person nur 1) und dass dann automatisch gelöscht wird nach 3stunden oder wenn man sich ausloggt.



    Ich hoffe ihr könnt mir helfen!

  • Naja so zum Beispiel:


    new player_car[2][MAX_PLAYERS];


    //Dann wo er das car kauft:
    if(player_car[0][playerid]) return //hier hat er schon ein auto!
    player_car[0][playerid] = CreateVehicle(...); //hier z.B. flash erstellen
    player_car[1][playerid] = gettime()+60*60*3; //Hier nach 3std wirds gelöscht


    //Unter OnGameModeInit
    SetTimer("AutoKauf",10000,1);


    //Dann außerhalb
    forward AutoKauf();
    public AutoKauf()
    {
    for(new i; i<MAX_PLAYERS; i++)
    {
    if(!player_car[0][i]) continue;
    if((player_car[1][i]-gettime()) < 0)
    {
    DestroyVehicle(player_car[0][i]);
    player_car[0][i]=0;
    }
    }
    return 1;
    }


    mfg. :thumbup:


    //Edit: Hab was in der schleife vertauscht gehabt...
    //Edit²: Ja ups..danke Jeffry

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    Einmal editiert, zuletzt von Kaliber ()

  • Zeile 3:
    if(player_car[playerid]) return //hier hat er schon ein auto!
    Zu
    if(player_car[0][playerid]) return //hier hat er schon ein auto!


    Außerdem bei OnPlayerDisconnect:
    if(player_car[0][playerid])
    {
    DestroyVehicle(player_car[0][i]);
    player_car[0][i]=0;
    }

  • So habe ich das ca gemacht








    new vFaggio;





    Die Abfrage wenn ein Spieler in den Wagen steigt:


    if(IsPlayerInVehicle(playerid, vFaggio))
    {
    FreezePlayer(playerid);
    ShowPlayerDialog(playerid, VFAGGIO, DIALOG_STYLE_MSGBOX, "Faggio", "Fahrzeug: Faggio\nTank: 30Liter\nPreis: 2500€", "Mieten", "Abbrechen");



    }




    Das Car:


    vFaggio = AddStaticVehicle( 462, 555.880,-1290.119,16.848,0.064, -1, -1);//Faggio




    Der Define:


    #define VFAGGIO 155




    Der Dialog:


    if(dialogid == VFAGGIO)
    {
    if(response == 0)
    {
    UnFreezePlayer(playerid);
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_YELLOW, "Du hast den Kauf abgebrochen!");
    }
    if(response == 1)
    {
    RemovePlayerFromVehicle(playerid);
    UnFreezePlayer(playerid);
    //hier soll dann das gespawnte car sein
    }
    }

  • if(dialogid == VFAGGIO)
    {
    if(response == 0)
    {
    UnFreezePlayer(playerid);
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_YELLOW, "Du hast den Kauf abgebrochen!");
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    UnFreezePlayer(playerid);
    if(player_car[0][playerid]) DestroyVehicle(player_car[0][playerid]);
    player_car[0][playerid] = CreateVehicle( 462, 555.880,-1291.119,16.848,0.064, -1, -1, -1);//Faggio
    player_car[1][playerid] = gettime()+60*60*3;
    PutPlayerInVehicle(playerid, player_car[0][playerid], 0);
    }
    return 1;
    }


    Der Timer und die Deklaration ist gleich wie zuvor gepostet, ebenso der OnPlayerDisconnect Teil.

  • Ok danke es funktioniert.


    aber wie kann ich einstellen wie lange man das car haben kann? also bei :



    player_car[1][playerid] = gettime()+60*60*3;


    Und wozu steht das "i" bei der for schleife?




    public AutoKauf()
    {
    for(new i; i<MAX_PLAYERS; i++)
    {
    if(!player_car[0][i]) continue;
    if((player_car[1][i]-gettime()) < 0)
    {
    DestroyVehicle(player_car[0][i]);
    player_car[0][i]=0;
    }
    }
    return 1;
    }