dcmd selldrugs

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 Tag


    Ich möchte gerne einen Drogendealer ermöglichen Drogen an Bürger zu verkaufen. Nun würde alles super klappen, doch damit es nicht lauter beschwerden gibt, möchte ich das gerne so machen das der Spieler erst ein Angebot vom DrogenDealer bekommt und sobald er das Angebot akzeptiert erst die Drogen bekommt und der DrogenDealer das Geld.
    Nun weiß ich nicht genau wie ich das machen muss, mit dem akzeptieren. Ich habe bereits die Anzahl und den Preis definiert, den ich einfach in dem /accept befehl abfragen muss. doch sobald man es akzeptiert soll das Geld und die Nachricht an den Spieler gehen der dem Spieler die Drogen angeboten hat. wenn ich nun eine Variable erstelle:
    new test[MAX_PLAYERS]; und sobald der DrogenDealer dem Spieler Drogen anbietet die Variable auf 1 stelle test[playerid] = 1; und dann bei den /accept mit einer for-schleife abfrage abfrage von wem die variable auf 1 ist if(test[i] == 1) return bla; dann wird die nachricht an jedem geschickt der gerade einem Drogen angeboten hat und nicht an dem der genau diese Person diese Drogen mit dem Preis angeboten hat, außerdem würde dann Jeder das Geld bekommen.


    Ich hoffe ihr wisst was ich meine. der Spieler der anbietet soll eine Nachricht + das Geld bekommen und die Drogen sollen bei ihm abgezogen werden, wenn der Kunde annimmt.


    hier mein scriptausschnitt:


    new danzahl[MAX_PLAYERS],dpreis[MAX_PLAYERS];
    dcmd_selldrugs(playerid,params[])
    {
    new pID, anzahl, preis;
    if(sscanf(params, "udd", pID, anzahl, preis))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Benutzte /selldrugs [playerid] [Anzahl] [Preis]");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Ungültige Id!");
    }
    if(gTeam[playerid] != 4)
    {
    return 0;
    }
    if(gTeam[pID] == 4)
    {
    return SendClientMessage(playerid,0xFF0000FF,"Du kannst keinem DrogenDealer Drogen verkaufen!");
    }
    if(playerid == pID)
    {
    return SendClientMessage(playerid,0xFF0000FF,"Das macht keinen Sinn!");
    }
    if(anzahl< 0 || anzahl>Spieler[playerid][Drogen])
    {
    new str[125];
    format(str,sizeof(str),"Du kannst maximal %d Drogen verkaufen!",Spieler[playerid][Drogen]);
    return SendClientMessage(playerid,0xFF0000FF,str);
    }
    if(Spieler[pID][Drogen] >= 50)
    {
    return SendClientMessage(playerid,0xFF0000FF,"Spieler hat genug Drogen!");
    }
    if(preis<anzahl*5 || preis>anzahl*10)
    {
    return SendClientMessage(playerid,0xFF0000FF,"Du kannst 1g Drogen für minimal $5 und maximal $10 verkaufen!");
    }
    else
    {
    new str1[256], str2[256], aname[MAX_PLAYER_NAME], bname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,aname,sizeof(aname));
    GetPlayerName(pID,bname,sizeof(bname));
    format(str1,sizeof(str1),"Du bietest %s %dg Drogen für $%d an.",bname, anzahl, preis);
    format(str2,sizeof(str2),"%s bietet dir %dg Drogen für $%d an, benutze /accept drugs um das angebot anzunehmen!",aname, anzahl, preis);
    SendClientMessage(playerid,türkis,str1);
    SendClientMessage(pID,türkis,str2);
    danzahl[pID] = anzahl;
    dpreis[pID] = preis;
    //hier brauch ich hilfe. wie muss das jetzt aussehen, was auf den /accept befehl übertragen wird.
    }
    return 1;
    }


    dcmd_accept(playerid,params[])
    {
    new s[256];
    if(sscanf(params, "s", s))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Benutzung: /accept [SACHE]");
    }
    else
    {
    if(!strcmp(s,"drugs",true))
    {
    Spieler[playerid][Drogen] = danzahl[playerid];
    GivePlayerMoney(playerid,-dpreis[playerid]);
    //hier brauche ich auch wieder hilfe. wie bekommt der dd nun sein geld und seine drogen abgezogen?
    }
    else
    {
    return 0;
    }
    }
    return 1;
    }


    //edit: problem gelöst.

    2 Mal editiert, zuletzt von Simon ()