/Pay Befehl 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
  • Hallo Liebes Samp Forum,
    Ich bin grade dabei einen German Reallife Selfmade Script zu schreiben und habe im moment ein kleines Problem ..


    Ich hab den Befehl /Pay [spielerid] [betrag] zwa schon erstellt,
    aber wenn man zB. nur 30$ hat kann man 40$ überweisen oder mehr ..
    Ich will aber nur machen das man soviel überweisen kann, wieviel man hat,
    ich komme nicht weiter hier ist mein Code:


    dcmd_pay(playerid,params[])
    {
    new pID, gID;
    if(sscanf(params, "ud",pID,gID))return SendClientMessage(playerid,0xB0AFB0FF,"/pay [ID/Name] [money]");
    if (!IsPlayerConnected(pID))return SendClientMessage(playerid,0xB0AFB0FF,"Dieser Spieler ist nicht online");
    {
    new stri[128] ,stri2[128];
    format(stri,sizeof(stri), "%s hat dir %d$ gegeben",playername[playerid], gID);
    format(stri2,sizeof(stri2), "Du hast %s %d$ gegeben",playername[pID],gID);
    SendClientMessage(pID,0xB0AFB0FF, stri);
    SendClientMessage(playerid,0xB0AFB0FF,stri2);
    GivePlayerMoney(pID,gID);
    GivePlayerMoney(playerid,-gID);
    }
    return 1;
    }


    Edit:
    Und anstatt:


    Streaker22 hat dir ** gegeben.


    steht dort nur:


    hat dir ** gegeben.


  • new moneys = strval(tmp);
    if(GetPlayerMoney(playerid) < money)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Der Betrag ist zu hoch!");
    return 1;
    }


    Versuchs mal so, füge diese Abfrage mit rein.


    //edit


    Code angepasst.


  • Edit:


    Hab nen Error:



    dcmd_pay(playerid,params[])
    {
    new pID, gID;
    if(sscanf(params, "ud",pID,gID))return SendClientMessage(playerid,0xB0AFB0FF,"{FF00B9}[VERWENDUNG]: {00EBFF}/Pay [SpielerID] [Betrag]");
    if (!IsPlayerConnected(pID))return SendClientMessage(playerid,0xB0AFB0FF,"{FF00B9}[SERVER]: {00EBFF}Spieler(/ID) wurde nicht gefunden!");
    {
    if(GetPlayerMoney(playerid) >= giD)
    {
    new stri[128] ,stri2[128];
    format(stri,sizeof(stri), "%s hat dir %d$ gegeben",playername[playerid], gID);
    format(stri2,sizeof(stri2), "Du hast %s %d$ gegeben",playername[pID],gID);
    SendClientMessage(pID,0xB0AFB0FF, stri);
    SendClientMessage(playerid,0xB0AFB0FF,stri2);
    GivePlayerMoney(pID,gID);
    GivePlayerMoney(playerid,-gID);
    } else
    {
    return SendClientMessage(playerid, ROT, "{FF00B9}[SERVER]: {00EBFF}Du hast nicht soviel Geld!");
    }
    }
    return 1;
    }


    Error:



    C:\Users\*******\Desktop\Samp Server\gamemodes\Selfmade.pwn(198) : error 017: undefined symbol "giD"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

  • Wenn es nicht klappt, versuch es mal so, allerdings nicht mit dcmd sondern ocmd:



    ocmd:pay(playerid,params[])
    {
    new pID, gID;
    if(sscanf(params, "ui",pID,gID))return SendClientMessage(playerid,0xB0AFB0FF,"/pay [ID/Name] [money]");
    if (!IsPlayerConnected(pID))return SendClientMessage(playerid,0xB0AFB0FF,"Dieser Spieler ist nicht online");
    {
    if(GetPlayerMoney(playerid) >= giD)
    {
    new string[128] ,string2[128], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(stri,sizeof(string), "%s hat dir %d$ gegeben",name, gID);
    format(stri2,sizeof(string2), "Du hast %s %d$ gegeben",name,gID);
    SendClientMessage(pID,0xB0AFB0FF, string);
    SendClientMessage(playerid,0xB0AFB0FF,string2);
    GivePlayerMoney(pID,gID);
    GivePlayerMoney(playerid,-gID);
    }
    else
    {
    SendClientMessage(playerid,0xB0AFB0FF,"Du hast nicht genügend Geld auf der Hand!");
    }
    }
    return 1;
    }



    Ungetestet

  • Da es ja bei dir soweit klappt, aber der Spieler dem jeweiligen Spieler eine negative Zahl geben kann, schreib dies noch in das Befehl, hat Anonymous gerade eben auch gepostet.



    if(gID < 1 || gID > 99999)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Der Betrag muss zwischen $1 und $99999 sein!");
    return 1;
    }

  • EDIT
    DANKE VIEL MALS, ES FUNKTIONIERT :D


    Hast du vllt. Skype oder so?


    Ps. hab noch des mit dem Namen Problem.


    Das dort nicht steht, "Streaker22 hat dir 3$ gegeben" sondern, "hat dir 3$ gegeben" ..

    Einmal editiert, zuletzt von Streaker22 ()

  • dcmd_pay(playerid,params[]){ new pID, gID; if(sscanf(params, "ud",pID,gID))return SendClientMessage(playerid,0xB0AFB0FF,"{FF00B9}[VERWENDUNG]: {00EBFF}/Pay [SpielerID] [Betrag]"); if (!IsPlayerConnected(pID))return SendClientMessage(playerid,0xB0AFB0FF,"{FF00B9}[SERVER]: {00EBFF}Spieler(/ID) wurde nicht gefunden!"); { if(GetPlayerMoney(playerid) >= gID) { if(gID < 1 || gID > 99999) { new stri[128] ,stri2[128]; format(stri,sizeof(stri), "%s hat dir %d$ gegeben",playername[playerid], gID); format(stri2,sizeof(stri2), "Du hast %s %d$ gegeben",playername[pID],gID); SendClientMessage(pID,0xB0AFB0FF, stri); SendClientMessage(playerid,0xB0AFB0FF,stri2); GivePlayerMoney(pID,gID); GivePlayerMoney(playerid,-gID); } else { SendClientMessage(playerid,irgendnefarbe,"Beitrag zu niedrig oder zu hoch!"); } } else { SendClientMessage(playerid, ROT, "{FF00B9}[SERVER]: {00EBFF}Du hast nicht soviel Geld!"); } } return 1;}



    /edit
    Ah es funktioniert doch.


    Kein Ding :D