Mit Dialog Taxi bestätigen aber wie?

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 bins wieder^^


    Ich möchte gern ein Taxi script machen, sodass man mit ein Dialog bestätigt ob man mitfahren will...
    PS: /Taxi [PLAYERID] [KOSTEN]



    Ich hab schon mal mit DCMD vorgearbeitet:
    dcmd_Taxi(playerid,params[])
    {
    if(gTeam[playerid] == TEAM_TAXI)
    {
    new
    pID,
    ALVL;
    if(sscanf(params, "di",pID,ALVL)) {
    return SendClientMessage(playerid,COLOR_RED,"USAGE: /taxi [playerid] [Kosteten]");
    }
    if(!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    }
    if (!ProxDetectorS(8.0, playerid, pID)){
    return SendClientMessage(playerid,COLOR_RED,"Sie sind zu weit von den Spieler weg.");
    }
    new
    ThePlayer[MAX_PLAYER_NAME],
    GivePlayer[MAX_PLAYER_NAME],
    string[128],
    string1[128];
    GetPlayerName(pID,GivePlayer,sizeof(GivePlayer));
    GetPlayerName(playerid,ThePlayer,sizeof(ThePlayer));
    format(string,sizeof(string),"%s (ID %d) hat für %d$ ein Taxi angebot an %s (ID %d) gemacht. ",ThePlayer,playerid,ALVL,GivePlayer,pID);
    SendClientMessage(playerid, 0x007F00FF,string);
    format(string1,sizeof(string1),"Du hast ein\nAngebot bekommen.\n\nTaxifahrt für %d$\nAngeobt von %s (ID%d)\n\nWollen sie dieses Taxi nehmen?",ALVL,ThePlayer,playerid);
    ShowPlayerDialog(playerid,Taxifahrte,DIALOG_STYLE_MSGBOX,"Taxifahrt",string1,"Fahren","Abbrechen");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Sie sind nicht berechtigt!");
    }
    return 1;
    }


    So und ich weiß jetzt nicht wie ich das Dialog Taxifahrte so machen soll, sodass man dann wenn man fahren drückt
    das geld abgezogen bekommt und der Fahrer es bekommt...



    Ich danke für alle antworten =)


    Mfg Pascal


    //EDIT hab was vergessen

  • zuerst bei dcmd was hinzufügen


    SetPVarInt(pID,"taxiID",playerid);


    dann beim dialog

    if(dialogid==DEINDIALOG)
    {
    if(response==0) return 0;
    GivePlayerMoney(GetPVarInt(playerid,"taxiID"),-1000);
    DeletePVar(playerid,"taxiID");
    }

  • ok


    SetPVarInt(pID,"taxiID",playerid);// hier setzt du in die PlayerVariable von pID also der was in das taxi einsteigt .... du weißt ihr den Wert playerid zu also die id vom taxi fahrer der den befehl eingibt



    if(dialogid==DEINDIALOG) // hier fragst du den dialog ab ;)
    {
    if(response==0) return 0; // wenn er auf nein drück ,halt auf den 2.button dann returnt er 0 also verschwindet der dialog
    GivePlayerMoney(GetPVarInt(playerid,"taxiID"),-1000); // hier gibst du einem player geld , du holst hier die variable von dem player bei dem der dialog angezeigt wird , und in der variable steht ja die id vom taxifahrer
    DeletePVar(playerid,"taxiID");// hier löscht du die variable ...
    }


    PVars sind sehr Ressourcen schonend natürlich nicht immer besser als ein enum ;) und pvars sind wie der name schon sagt spielervariablen

  • @[iP]Zabus.
    Ich hab gerrade ein Problem gefunden.
    Da der Befehl /Taxi [SPIELERID][Kosten] funktionier,
    muss der spieler dann auch die Kosten vom Taxi zahlen.
    aber du hast es so gemacht das es immer nur 1000€ kostet
    GivePlayerMoney(GetPVarInt(playerid,"taxiID"),-1000);


    Wie kann man es einstellen das wenn er Fahren drückt das er es dann zahlt?


    //EDIT
    AN ADMINS!
    Ich hab das Thema nochmal hergeholt, weil mir der fehler erst jetzt richtig aufgefallen ist.
    Ich hätte ja auch ein neues Thema machen können aber hab ich nicht!


    //EDIT²
    Fehler...

    Einmal editiert, zuletzt von iVirtual ()