Rollervermietung (1 roller pro User.)

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
  • Guten Morgen. :)


    Wie mache ich das, dass man pro User nur 1 Roller mieten kann?




    ocmd:roller(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid,15.0,412.2759,-1565.2959,27.5801))
    {
    ShowPlayerDialog(playerid,DIALOG_VERLEIH,DIALOG_STYLE_MSGBOX,"Verleih","Willst du einen\nRoller mieten?","Ja","Nein");
    }
    else
    {
    SendClientMessage(playerid, 0xFF0005FF, "Du bist nicht beim Verleih!");
    }
    return 1;
    }


    //Dialog roller
    if(dialogid == DIALOG_VERLEIH)
    {
    if(response == 0)
    {
    SendClientMessage(playerid, 0xFF0005FF, "Du hast den Vorgang abgebrochen!");
    if(response == 1)
    {
    roller[playerid] = CreateVehicle(462,414.1065,-1573.6075,26.6895,355.9865,44,6,-1);
    SetTimerEx("Destroytimer",900000,false,"ii",playerid,roller[playerid]);
    SendClientMessage(playerid, 0xFFBE00FF, "Du hast dir erfolgreich einen Roller gemietet!\nEr wird nach 15 Minuten automatisch zerstört.");
    GivePlayerMoney(playerid,-50);
    }
    }
    }











    Dann hätte ich noch eine Frage wie mache ich das wenn ich den Befehl /rc ausführe das da steht "Projekleiter %s hatt alle Fahrzeuge respawnt." Diese Nachricht soll dann an alle User gehen.


    //rc befehl


    if(strcmp(cmd, "/rc", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] <= 2001)
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du darfst diesen Befehl nicht benutzen!");
    return 1;
    }
    new bool:unwanted[CAR_AMOUNT];
    for(new player=0; player<MAX_PLAYERS; player++)
    {
    if(IsPlayerInAnyVehicle(player)) { unwanted[GetPlayerVehicleID(player)]=true; }
    }
    for(new car = 1; car <= 450; car++)
    {
    if(!unwanted[car]) SetVehicleToRespawn(car);
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    }
    return 1;
    }





    MfG

    2 Mal editiert, zuletzt von StreetsOfRL () aus folgendem Grund: 2. frage eingebunden

  • if(strcmp(cmd, "/rc", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] <= 2001)
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du darfst diesen Befehl nicht benutzen!");
    return 1;
    }
    new bool:unwanted[CAR_AMOUNT];
    for(new player=0; player<MAX_PLAYERS; player++)
    {
    if(IsPlayerInAnyVehicle(player)) { unwanted[GetPlayerVehicleID(player)]=true; }
    }
    for(new car = 1; car <= 450; car++)
    {
    if(!unwanted[car]) SetVehicleToRespawn(car);
    }
    SendClientMessagetoAll(playerid,FARBE,"Projektleiter %s hat alle Fahrzeuge Respawnt",GetPlayerName(playerid, sendername, sizeof(sendername));
    }
    return 1;


    }


    Das ist jetzt nur so aus dem Kopf müsste aber stimmen.

  • Geht leider nicht :(

  • setz einfach eine variable für jeden spieler



    // Variable erstellen
    new HatRoller[MAX_PLAYERS];


    //Wenn er sich einen roller mietet
    HatRoller[playerid] = 1;


    // abfragen ob er einen roller hat und dann message ausgeben
    if(HatRoller[playerid] == 1) return SendClientMessage(playerid,FARBE,"Du hast bereits einen Roller gemietet.");



    //Dialog roller
    if(dialogid == DIALOG_VERLEIH)
    {
    if(response == 0)
    {
    SendClientMessage(playerid, 0xFF0005FF, "Du hast den Vorgang abgebrochen!");
    }// fehlte
    if(response == 1)
    {
    roller[playerid] = CreateVehicle(462,414.1065,-1573.6075,26.6895,355.9865,44,6,-1);
    SetTimerEx("Destroytimer",900000,false,"ii",playerid,roller[playerid]);
    SendClientMessage(playerid, 0xFFBE00FF, "Du hast dir erfolgreich einen Roller gemietet!\nEr wird nach 15 Minuten automatisch zerstört.");
    GivePlayerMoney(playerid,-50);
    }
    }

    >> sPa.M << go, go,Bann me, Bann me


  • wo muss ich das denn einfügen ?


    //Wenn er sich einen roller mietet
    HatRoller[playerid] = 1;


    // abfragen ob er einen roller hat und dann message ausgeben
    if(HatRoller[playerid] == 1) return SendClientMessage(playerid,FARBE,"Du hast bereits einen Roller gemietet.");



    eigendlich doch bei dem ocmd:roller oder ?

  • Ja Hallo wie eronor das schon gemacht hat ist Richtig,


    Wo du es einfügen sollst ?


    Also es sollte lieber dahin wo der Spieler den Roller bekommt
    dann halt HatRoller[playerid] = 1;
    Damit wird gesagt das er ein Roller hat
    Jetzt ne Abfrage ob er ein Roller hat also HatRoller[playerid] == 1
    wenn ja ne nachricht senden und returnen



    Und dann wenn der Spieler Disconnected Wieder auf 0 Setzen


    Dann würde ich noch eine sache machen damit die Rollers später nicht doof rum stehen
    //Ganz oben i-wo
    new startroller[MAX_PLAYERS];


    //Dann unter Onplayerdisconnected


    DestroyVehicle(startroller[playerid]);


    //Und bei kaufen
    startroller[playerid] = CreateVehicle(RollerID, X,Y,Z,COLOR1,COLOR2,Respawn Zeit);

  • Vielen dank eronor für deine schnelle hilfe. :)


    und auch ein Dankeschön an Dead_Coast






    jetz bleibt noch eine Frage offen.


    Wie geht das ? xD


    Dann hätte ich noch eine Frage wie mache ich das wenn ich den Befehl /rc ausführe das da steht "Projekleiter %s hatt alle Fahrzeuge respawnt." Diese Nachricht soll dann an alle User gehen.


    //rc befehl




    if(strcmp(cmd, "/rc", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] <= 2001)
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du darfst diesen Befehl nicht benutzen!");
    return 1;
    }
    new bool:unwanted[CAR_AMOUNT];
    for(new player=0; player<MAX_PLAYERS; player++)
    {
    if(IsPlayerInAnyVehicle(player)) { unwanted[GetPlayerVehicleID(player)]=true; }
    }
    for(new car = 1; car <= 450; car++)
    {
    if(!unwanted[car]) SetVehicleToRespawn(car);
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    }
    return 1;
    }

  • PName[MAX_PLAYER_NAME],string[64]; // erstellung aller nötigen variablen
    GetPlayerName(playerid,PName,sizeof(PName)); // besorgt den namen vom spieler der den cmd ausführt
    format(string,sizeof(string),"Projekleiter %s hatt alle Fahrzeuge respawnt.",PName); // schreibt in den string die nachricht, %s ist ein platzhalter für den spielernamen
    SendClientMessageToAll(FARBE,string); // Sendet das was im string steht an alle spieler

    >> sPa.M << go, go,Bann me, Bann me