Jobbefehl /sex

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


    Jetzt nicht das falsche denken ;)


    Ich habe hier etwas gescriptet, was teilweise geht:


    dcmd_sex(playerid,params[])
    {
    new id, preis, string[156];
    if(sscanf(params, "ud", id, preis)) return SendClientMessage(playerid, COLOR_WHITE, "Verwendung: /sex [ID] [Betrag]");
    else if(PlayerInfo[playerid][pJob] != 9) return SendClientMessage(playerid, COLOR_GREY, "Du bist keine Prostituierte");
    else if(id == INVALID_PLAYER_ID || IsPlayerNPC(id)) SendClientMessage(playerid, COLOR_GREY, "Dieser Spieler kann nicht erreicht werden.");
    else if(GetPlayerVehicleID(playerid) != GetPlayerVehicleID(id)) return SendClientMessage(playerid,COLOR_GREY,"Beide Personen müssen sich im selben Auto befinden");
    else
    {
    format(string,sizeof(string),"Du bietest ID %d für $%d ein sexuelles Erlebnis an",id,preis);
    SendClientMessage(playerid, COLOR_WHITE, string);
    format(string,sizeof(string),"ID %d bietet dir für $%d ein sexuelles Erlebnis an. Gebe /acceptsex ein",playerid,preis);
    SendClientMessage(id, COLOR_WHITE, string);
    PlayerInfo[playerid][pJPoints] += 1;
    Angebot[0][id] = id;
    Angebot[1][id] = preis;
    Angebot[2][id] = 3;
    Angebot[3][id] = playerid;
    }
    return true;
    }


    dcmd_acceptsex(playerid,params[])
    {
    #pragma unused params
    new id, string[156];
    if(Angebot[2][playerid] != 3) return SendClientMessage(playerid, COLOR_GREY, "Dir hat keiner etwas angeboten");
    else if(GetPlayerVehicleID(Angebot[0][id]) != GetPlayerVehicleID(Angebot[3][playerid])) return SendClientMessage(playerid,COLOR_GREY,"Beide Personen müssen sich im selben Auto befinden");
    else
    {
    format(string,sizeof(string),"ID %d hatte für $%d eine schöne Zeit mit dir", id, Angebot[1][playerid]);
    SendClientMessage(playerid, COLOR_WHITE, string);
    JB_GivePlayerMoney(playerid, -Angebot[1][id]);
    JB_GivePlayerMoney(Angebot[0][playerid], -Angebot[1][playerid]);
    Angebot[0][playerid] = 999;
    Angebot[1][playerid] = 999;
    Angebot[2][playerid] = 999;
    Angebot[3][playerid] = 999;
    JB_SetPlayerHealth(playerid, 100.0);
    }
    return true;
    }


    Der Code ist sehr fehlerhaft, da ich langsam nicht mehr ganz durchblicke.


    1.)Frage
    Wie kann ich bei /sex ID Geld die ID abspeichern und bei /acceptsex wieder verwenden ? Das gleiche gilt auch für playerid. So auf die Art jetzt geht es nur mit Fehlern.


    2.)Frage
    Irgendwie wird das Geld 2 mal bei der gleichen Person abgezogen, habe ich playerid und id verwechselt ?


    MfG dUDA


    MfG dUDA

  • //Bei OnPlayerConnect(bei GF wahrscheinlich schon drin) Angebot[playerid] = 0;
    new Angebot[MAX_PLAYERS]; //bei den New's
    dcmd_sex(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    new pID, preis, string[128];
    new freier[MAX_PLAYER_NAME], nutte[MAX_PLAYER_NAME];
    if(PlayerInfo[playerid][pJob] == 9)
    {
    if(sscanf(params,"dd",pID,preis))
    { return SendClientMessage(playerid,COLOR_GREY,"Benutze /sex [playerid] [Preis]"); }
    if(sscanf(params,"dd",pID,preis))
    { return SendClientMessage(playerid,COLOR_GREY,"Benutze /sex [playerid] [Preis]"); }
    if(preis < 1 || preis > 10000) { return SendClientMessage(playerid, COLOR_RED,"Du kannst nicht mehr als $10000 oder unter $1 verlangen."); }
    if(pID == playerid || IsPlayerNPC(pID)) { return SendClientMessage(playerid,COLOR_RED,"Nicht möglich"); }
    if(GetPlayerVehicleID(playerid) == GetPlayerVehicleID(pID))
    {
    format(string,sizeof(string),"Du bietest %s Sex für $%d an",freier,preis);
    SendClientMessage(playerid,COLOR_WHITE, string);
    format(string, sizeof(string),"%s bietet dir Sex für $%d an. Gebe /acceptsex ein",nutte,preis);
    SendClientMessage(pID,COLOR_WHITE,string);
    PlayerInfo[playerid][pJPoints] += 1;//was auch immer das ist XD
    Angebot[pID] = 1;
    Angebot[playerid] = 1;
    }
    else { return SendClientMessage(playerid,COLOR_RED,"Du bist nicht mit dem Freier in einem Wagen."); }
    }
    else { return SendClientMessage(playerid,COLOR_RED,"Du bist keine Nutte!"); }
    }
    return 1;
    }
    dcmd_acceptsex(playerid,params[])
    {
    new pID, string[128], preis, nutte[MAX_PLAYER_NAME];
    pID = strval(params);
    if(IsPlayerConnected(playerid))
    {
    if(Angebot[pID] == != 1)//wenn das verneint wird, kommt dann nach der klammer das gegenteil
    { return SendClientMessage(playerid,COLOR_RED,"Dir hat keiner Sex angeboten."); }
    if(GetPlayerVehicleID(playerid) == GetPlayerVehicleID(pID))
    {
    format(string,sizeof(string),"%s fand dich geil und du hattest so viel Lust das du dich besser fühlst.",nutte);
    SendClientMessage(playerid,COLOR_WHITE,string);
    JB_GivePlayerMoney(playerid, -preis);
    JB_GivePlayerMoney(pID,preis);
    Angebot[playerid] = 0;
    Angebot[pID] = 0;
    JB_SetPlayerHealth(playerid,150.0);
    }

    }
    return 1;
    }
    noch ungetestet musste ausprobieren

  • Hallo


    Habe es noch etwas umgebaut, jedoch kommt immer die Meldung, dir wurde kein Angebot gestellt.


    dcmd_sex(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    new pID, preis, string[128];
    new freier[MAX_PLAYER_NAME], nutte[MAX_PLAYER_NAME];
    if(PlayerInfo[playerid][pJob] == 9)
    {
    if(sscanf(params,"dd",pID,preis))
    { return SendClientMessage(playerid,COLOR_GREY,"Benutze /sex [playerid] [Preis]"); }
    if(sscanf(params,"dd",pID,preis))
    { return SendClientMessage(playerid,COLOR_GREY,"Benutze /sex [playerid] [Preis]"); }
    if(preis < 1 || preis > 10000) { return SendClientMessage(playerid, COLOR_RED,"Du kannst nicht mehr als $10000 oder unter $1 verlangen."); }
    if(pID == playerid || IsPlayerNPC(pID)) { return SendClientMessage(playerid,COLOR_RED,"Nicht möglich"); }
    if(GetPlayerVehicleID(playerid) == GetPlayerVehicleID(pID))
    {
    format(string,sizeof(string),"Du bietest %s Sex für $%d an",freier,preis);
    SendClientMessage(playerid,COLOR_WHITE, string);
    format(string, sizeof(string),"%s bietet dir Sex für $%d an. Gebe /acceptsex ein",nutte,preis);
    SendClientMessage(pID,COLOR_WHITE,string);
    PlayerInfo[playerid][pJPoints] += 1;//was auch immer das ist XD
    SAngebot[pID] = 1;
    SAngebot[playerid] = 1;
    }
    else { return SendClientMessage(playerid,COLOR_RED,"Du bist nicht mit dem Freier in einem Wagen."); }
    }
    else { return SendClientMessage(playerid,COLOR_RED,"Du bist keine Nutte!"); }
    }
    return 1;
    }


    dcmd_acceptsex(playerid,params[])
    {
    new pID, string[128], preis, nutte[MAX_PLAYER_NAME];
    pID = strval(params);
    if(IsPlayerConnected(playerid))
    {
    if(SAngebot[pID] == 1)//wenn das verneint wird, kommt dann nach der klammer das gegenteil
    {
    if(GetPlayerVehicleID(playerid) == GetPlayerVehicleID(pID))
    {
    format(string,sizeof(string),"%s fand dich geil und du hattest so viel Lust das du dich besser fühlst.",nutte);
    SendClientMessage(playerid,COLOR_WHITE,string);
    JB_GivePlayerMoney(playerid, -preis);
    JB_GivePlayerMoney(pID,preis);
    SAngebot[playerid] = 0;
    SAngebot[pID] = 0;
    JB_SetPlayerHealth(playerid,150.0);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du befindest dich nicht im gleichen Auto");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Dir hat keiner Sex angeboten.");
    }
    }
    return 1;
    }


    PS: Angebot heisst SAngebot
    JPoints sind Jobpoints, welche am Payday ausgezahlt werden ;)


    MfG dUDA

  • probier ma meine sache
    anleitung ist mit drin
    //edit aber sonst bei SAngebot das [pID] in [playerid] umwandeln dann musst dann mal sehen
    //edit einen fehler beseitigt

  • Hallo


    Ja, bei der Abfrage Auftrag, steht anstatt playerid ja pID, testes mal mit playerid


    MfG dUDA


    Edit: Es geht mal grob, jedoch zieht es kommischerweise kein Geld ab und der Sinn ist ja, dass der Geldbetrag und die ID schon bei /sex definiert werden und dann /acceptsex (ohne ID oder Geld..) den Geldbetrag und die ID verwendet (pragma unused)
    Haste da eine Lösung, wie ich diese 2 Sachen speichern kann und in /acceptsex weiterverwenden kann ?


    Edit 2:


    Irgendetwas kann da nicht stimmen, denn wenn man den Paramter ID hätte, würde sschanf vorkommen müssen (was es nicht tut), wenn Money aber nicht vorkommt, wo ist dann Pragma Unused ?


    dcmd_acceptsex(playerid,params[])
    {
    new pID, string[128], preis, nutte[MAX_PLAYER_NAME];
    pID = strval(params);
    if(IsPlayerConnected(playerid))
    {
    if(SAngebot[playerid] != 1)//wenn das verneint wird, kommt dann nach der klammer das gegenteil
    { return SendClientMessage(playerid,COLOR_RED,"Dir hat keiner Sex angeboten."); }
    if(GetPlayerVehicleID(playerid) == GetPlayerVehicleID(pID))
    {
    format(string,sizeof(string),"%s fand dich geil und du hattest so viel Lust das du dich besser fühlst.",nutte);
    SendClientMessage(playerid,COLOR_WHITE,string);
    JB_GivePlayerMoney(playerid, -preis);
    JB_GivePlayerMoney(pID,preis);
    SAngebot[playerid] = 0;
    SAngebot[pID] = 0;
    JB_SetPlayerHealth(playerid,150.0);
    }
    }
    return 1;
    }


    MfG dUDA