How to edit this
#1

Hi, i have this command on my server but how can i edit it so that the players can give money even if they don't have it.
pawn Код:
// On my defines
#define PocketMoney 1000

///////////////////////////////////////////////////The command
public OnPlayerCommandText(playerid, cmdtext[])
{

        new string[256];
    new playermoney;
    new sendername[MAX_PLAYER_NAME];
    new giveplayer[MAX_PLAYER_NAME];
    new cmd[256];
    new giveplayerid, moneys, idx;

    cmd = strtok(cmdtext, idx);
if(!IsPlayerAdmin(playerid)) return 1;
if(strcmp(cmd, "/givecash", true) == 0) {
        PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0);
        new tmp[256];
        tmp = strtok(cmdtext, idx);

        if(!strlen(tmp)) {
            SendClientMessage(playerid, 0xFFFFFFAA, "{FF3300}Use: {FFFFFF}/givecash [id] [amount]");
            return 1;
        }
        giveplayerid = strval(tmp);

        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) {
            SendClientMessage(playerid, 0xFFFFFFAA, "{FF3300}Usa: {FFFFFF}/givecash [id] [amount]");
            return 1;
        }
        moneys = strval(tmp);

        //printf("givecash_command: %d %d",giveplayerid,moneys);


        if (IsPlayerConnected(giveplayerid)) {
            GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
            GetPlayerName(playerid, sendername, sizeof(sendername));
            playermoney = GetPlayerMoney(playerid);
            if (moneys > 0 && playermoney >= moneys) {
                GivePlayerMoney(playerid, (0 - moneys));
                GivePlayerMoney(giveplayerid, moneys);
                format(string, sizeof(string), "You gave to {DBED15}%s(id: %d){FFFFFF}, ${00CCFF}%d{FFFFFF}.", giveplayer,giveplayerid, moneys);
                SendClientMessage(playerid, 0xFFFFFFAA, string);
                format(string, sizeof(string), "You got ${00CCFF}%d{FFFFFF} from {DBED15}%s(id: %d){FFFFFF}.", moneys, sendername, playerid);
                SendClientMessage(giveplayerid, 0xFFFFFFAA, string);
                printf("{DBED15}%s (id: %d){FFFFFF} gave ${00CCFF}%d{FFFFFF} to {DBED15}%s (id: %d){FFFFFF}.",sendername, playerid, moneys, giveplayer, giveplayerid);
            }
            else {
                SendClientMessage(playerid, 0xFFFFFFAA, "Invalid transaction amount.");
            }
        }
        else {
                format(string, sizeof(string), "The player {DBED15}%d{FFFFFF} is not connected.", giveplayerid);
                SendClientMessage(playerid, 0xFFFFFFAA, string);
            }
        return 1;
    }
/////////////////////At the end of my script
strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
Reply
#2

Код:
COMMAND:money(playerid, params[])
{
    new targetid, amount;
    GivePlayerMoney(targetid, amount);
    return 1;
}
Reply
#3

this is a combination of zcmd && sscanf

pawn Код:
CMD:givemoney(playerid, params[])
{
    new string[128], playerb, amount;
    if(sscanf(params, "ui", playerb, amount)) return SendClientMessage(playerid, -1, "USAGE: /givemoney [playerid] [amount]");
    if(amount <= 0) return SendClientMessage(playerid, -1, "Invalid money amount.");
    if(GetPlayerMoney(playerid) < amount) return SendClientMessage(playerid, -1, "You don't have that much on you right now.");
    GivePlayerMoney(playerid, -amount);
    GivePlayerMoney(playerb, amount);
    return 1;
}
Reply
#4

Remember what he said in the first post...

Use this: ^^
pawn Код:
CMD:givemoney(playerid, params[])
{
    new string[128], playerb, amount;
    if(sscanf(params, "ui", playerb, amount)) return SendClientMessage(playerid, -1, "USAGE: /givemoney [playerid] [amount]");
    if(amount <= 0) return SendClientMessage(playerid, -1, "Invalid money amount.");
    GivePlayerMoney(playerb, amount);
    return 1;
}
Reply
#5

Here
pawn Код:
new string[256];
    new playermoney;
    new sendername[MAX_PLAYER_NAME];
    new giveplayer[MAX_PLAYER_NAME];
    new cmd[256];
    new giveplayerid, moneys, idx;

    cmd = strtok(cmdtext, idx);
if(!IsPlayerAdmin(playerid)) return 1;
if(strcmp(cmd, "/givecash", true) == 0) {
        PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0);
        new tmp[256];
        tmp = strtok(cmdtext, idx);

        if(!strlen(tmp)) {
            SendClientMessage(playerid, 0xFFFFFFAA, "{FF3300}Use: {FFFFFF}/givecash [id] [amount]");
            return 1;
        }
        giveplayerid = strval(tmp);

        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) {
            SendClientMessage(playerid, 0xFFFFFFAA, "{FF3300}Usa: {FFFFFF}/givecash [id] [amount]");
            return 1;
        }
        moneys = strval(tmp);

        //printf("givecash_command: %d %d",giveplayerid,moneys);


        if (IsPlayerConnected(giveplayerid)) {
            GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
            GetPlayerName(playerid, sendername, sizeof(sendername));
            playermoney = GetPlayerMoney(playerid);
            if (moneys > 0) {
                GivePlayerMoney(giveplayerid, moneys);
                format(string, sizeof(string), "You gave to {DBED15}%s(id: %d){FFFFFF}, ${00CCFF}%d{FFFFFF}.", giveplayer,giveplayerid, moneys);
                SendClientMessage(playerid, 0xFFFFFFAA, string);
                format(string, sizeof(string), "You got ${00CCFF}%d{FFFFFF} from {DBED15}%s(id: %d){FFFFFF}.", moneys, sendername, playerid);
                SendClientMessage(giveplayerid, 0xFFFFFFAA, string);
                printf("{DBED15}%s (id: %d){FFFFFF} gave ${00CCFF}%d{FFFFFF} to {DBED15}%s (id: %d){FFFFFF}.",sendername, playerid, moneys, giveplayer, giveplayerid);
            }
        }
        else {
                format(string, sizeof(string), "The player {DBED15}%d{FFFFFF} is not connected.", giveplayerid);
                SendClientMessage(playerid, 0xFFFFFFAA, string);
            }
        return 1;
    }
/////////////////////At the end of my script
strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
Reply
#6

pawn Код:
CMD:givemoney(playerid, params[])
{
    new string[128], playerb, amount;
    if(sscanf(params, "ui", playerb, amount)) return SendClientMessage(playerid, -1, "USAGE: /givemoney [playerid] [amount]");
    if(amount <= 0) return SendClientMessage(playerid, -1, "Invalid money amount.");
    GivePlayerMoney(playerb, amount);
    return 1;
}
Got this: (I ha to include sscanf2 on my script)
Код:
DM.pwn(1960) : warning 204: symbol is assigned a value that is never used: "string"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase

1 Warning.
Reply
#7

pawn Код:
CMD:givemoney(playerid, params[])
{
   new playerb, amount;
    if(sscanf(params, "ui", playerb, amount)) return SendClientMessage(playerid, -1, "USAGE: /givemoney [playerid] [amount]");
    if(amount <= 0) return SendClientMessage(playerid, -1, "Invalid money amount.");
    GivePlayerMoney(playerb, amount);
    return 1;
}
Tested, this works. No errors.

Hope it was this you wanted
Reply
#8

Quote:
Originally Posted by airplanesimen
Посмотреть сообщение
pawn Код:
CMD:givemoney(playerid, params[])
{
   new playerb, amount;
    if(sscanf(params, "ui", playerb, amount)) return SendClientMessage(playerid, -1, "USAGE: /givemoney [playerid] [amount]");
    if(amount <= 0) return SendClientMessage(playerid, -1, "Invalid money amount.");
    GivePlayerMoney(playerb, amount);
    return 1;
}
Tested, this works. No errors.

Hope it was this you wanted
I'm using ZCMD not sscanf
Код:
DM.pwn(1959) : error 017: undefined symbol "sscanf"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase

1 Error.
Reply
#9

Well then it's highly recommended you use sscanf for this kind of command.
Download the latest SSCANF include/plugin and add
pawn Код:
#include <sscanf2>
to the top of your script. Then your command should be:
pawn Код:
CMD:givemoney(playerid, params[])
{
    new playerb, amount;
    if(sscanf(params, "ui", playerb, amount)) return SendClientMessage(playerid, -1, "USAGE: /givemoney [playerid] [amount]");
    if(amount <= 0) return SendClientMessage(playerid, -1, "Invalid money amount.");
    if(amount > GetPlayerMoney(playerid)) return SendClientMessage(playerid, -1, "You don't have that much money.");
    GivePlayerMoney(playerb, amount);
    return 1;
}
Reply
#10

Quote:
Originally Posted by BenzoAMG
Посмотреть сообщение
Well then it's highly recommended you use sscanf for this kind of command.
Download the latest SSCANF include/plugin and add
pawn Код:
#include <sscanf2>
to the top of your script. Then your command should be:
pawn Код:
CMD:givemoney(playerid, params[])
{
    new playerb, amount;
    if(sscanf(params, "ui", playerb, amount)) return SendClientMessage(playerid, -1, "USAGE: /givemoney [playerid] [amount]");
    if(amount <= 0) return SendClientMessage(playerid, -1, "Invalid money amount.");
    if(amount > GetPlayerMoney(playerid)) return SendClientMessage(playerid, -1, "You don't have that much money.");
    GivePlayerMoney(playerb, amount);
    return 1;
}
Yep but I don't like to use sscanf
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)