Drogensystem-Problem

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
  • Ich teste mich wieder ein bisschen am PRP Script. Leider musste ich feststellen, dass meine Idee nicht so ganz klappt wie sie soll.



    COMMAND:sellsdrugs(playerid,params[])
    {
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,SAMP_ROT,""ACCINFO"Du hast keine erlaubnis diesen Befehl benutzen zu drüfen.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,SAMP_WEISS,""ACCINFO"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,SAMP_WEISS,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,SAMP_WEISS,""#HTML_BLAU"Verwendung:"#HTML_WEISS" /back");
    if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,SAMP_WEISS,"Du bist im Prison.");
    if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,SAMP_WEISS,"Du bist nicht in der Lage zu schrieben.");
    if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,SAMP_WEISS,"Du bist verletzt.");
    if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,SAMP_WEISS,"Du bist im Gefängnis.");
    if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,SAMP_WEISS,"Du bist K.O/getazert.");
    if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,SAMP_WEISS,"Du bist gefesselt.");
    new string[128],cmd[15],menge;
    if(!isPlayerInJob(playerid,15))return SendClientMessage(playerid,SAMP_WEISS,"Kein Drogendealer.");
    if(isell[playerid] > gettime())return SendClientMessage(playerid,SAMP_WEISS,"Du kannst erst nach 10 Sekunden etwas verkaufen.");
    if(sscanf(params,"s[15]udd",cmd,menge))return SendClientMessage(playerid,SAMP_WEISS,""#HTML_BLAU"Benutze:"#HTML_WEISS"/sellsdrugs [Ganja/Kokain/Opium/Spice][Menge]");
    if(!IsPlayerInRangeOfPoint(playerid,5.0,2942.2861,-2051.8843,3.5480))return SendClientMessage(playerid,SAMP_WEISS,"Du bist nicht in der Nähe des Drogendealers.");
    if(strcmp(cmd,"Ganja",true) == 0)
    {
    new preisberechnung = menge*50;
    Spieler[playerid][pGanja] -= menge;
    format(string,sizeof(string),"Du hast soeben %ig Ganja für %i$ an den Dealer verkauft.",menge,preisberechnung);
    SendClientMessage(playerid,GRUEN,string);
    ACMoney(playerid,preisberechnung);
    isell[playerid] = gettime() + (10);
    return 1;
    }
    if(strcmp(cmd,"Kokain",true) == 0)
    {
    new preisberechnung = menge*100;
    Spieler[playerid][pKokain] -= menge;
    format(string,sizeof(string),"Du hast soeben %ig Kokain für %i$ an den Dealer verkauft.",menge,preisberechnung);
    SendClientMessage(playerid,GRUEN,string);
    ACMoney(playerid,preisberechnung);
    isell[playerid] = gettime() + (10);
    return 1;
    }
    if(strcmp(cmd,"Opium",true) == 0)
    {
    new preisberechnung = menge*150;
    Spieler[playerid][pOpium] -= menge;
    format(string,sizeof(string),"Du hast soeben %ig Opium für %i$ an den Dealer verkauft.",menge,preisberechnung);
    SendClientMessage(playerid,GRUEN,string);
    ACMoney(playerid,preisberechnung);
    isell[playerid] = gettime() + (10);
    return 1;
    }
    if(strcmp(cmd,"Spice",true) == 0)
    {
    new preisberechnung = menge*200;
    Spieler[playerid][pSpice] -= menge;
    format(string,sizeof(string),"Du hast soeben %ig Spice für %i$ an den Dealer verkauft.",menge,preisberechnung);
    SendClientMessage(playerid,GRUEN,string);
    ACMoney(playerid,preisberechnung);
    isell[playerid] = gettime() + (10);
    return 1;
    }
    return 1;


    }

    Wenn ich den Befehl ausführe, steht dort mit einmal, dass ich 65535g Ganja oder von den anderen 3 verkauft habe obwohl ich /sellsdrugs Ganja 10 eingegeben habe. Wo liegt das Problem? Anscheinend muss es ja an der Mengenangabe liegen. Ich bitte um Hilfe.

  • Versuche es so.

  • Funktioniert es denn nun?
    Hier, ich habe das u entfernt:
    if(sscanf(params,"s[15]udd",cmd,menge))return SendClientMessage(playerid,SAMP_WEISS,""#HTML_BLAU"Benutze:"#HTML_WEISS"/sellsdrugs [Ganja/Kokain/Opium/Spice][Menge]");


    Außerdem ist 65535 eine ungültige Zahl.

  • Hier, ich habe das u entfernt:

    Dann solltest du auch noch ein d entfernen, es sei denn er muss da noch eine Variable für den Preis einfügen. ;)

  • Stimmt, danke Marvin!
    So müsste es nun funktionieren:


  • if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,SAMP_ROT,""ACCINFO"Du hast keine erlaubnis diesen Befehl benutzen zu drüfen.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,SAMP_WEISS,""ACCINFO"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,SAMP_WEISS,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,SAMP_WEISS,""#HTML_BLAU"Verwendung:"#HTML_WEISS" /back");
    if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,SAMP_WEISS,"Du bist im Prison.");
    if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,SAMP_WEISS,"Du bist nicht in der Lage zu schrieben.");
    if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,SAMP_WEISS,"Du bist verletzt.");
    if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,SAMP_WEISS,"Du bist im Gefängnis.");
    if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,SAMP_WEISS,"Du bist K.O/getazert.");
    if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,SAMP_WEISS,"Du bist gefesselt.");


    Verwende doch dafuer bitte Funktionen... Wenn Du da mal ne neue Abfrage rein machst, musst Du das in jedem Befehl einbauen und zudem siehts noch scheisse aus. Dafuer hat man auch Funktionen erfunden.