PDA

Просмотр полной версии : [Вопрос] как сделать лимит денег ?



Unknown
14.08.2014, 09:25
как сделать лимит денег на руках и в банке


Так или нет ?)

if(PlayerInfo[playerid][pMoney] <= 2000000000)
if(PlayerInfo[playerid][pAccount] <= 2000000000)

L0ndl3m
14.08.2014, 10:33
<=
на
>

Пельмень
14.08.2014, 11:03
const MONEY_LIMIT = 2000000000; //Глобальная

new money = PlayerInfo [playerid] [pMoney] + PayMoney; //Допустим PayMoney будет кол-во денег, которое дадут игроку
if (money < MONEY_LIMIT) {
PlayerInfo [playerid] [pMoney] += PayMoney;
} else {
PlayerInfo [playerid] [pMoney] += MAX_MONEY - PlayerInfo [playerid] [pMoney]; //Выдаём до лимита!
}

Аналогично с банком

- - - Добавлено - - -

Точнее if (money <= MONEY_LIMIT)

- - - Добавлено - - -


new money = PlayerInfo [playerid] [pMoney] + PayMoney; //Допустим PayMoney будет кол-во денег, которое дадут игроку
PlayerInfo [playerid] [pMoney] += (money <= MONEY_LIMIT) ? PayMoney : MAX_MONEY - PlayerInfo [playerid] [pMoney];

Unknown
14.08.2014, 11:25
const MONEY_LIMIT = 2000000000; //Глобальная

new moneyy = PlayerInfo [playerid] [pMoney] + PayMoney; //Допустим PayMoney будет кол-во денег, которое дадут игроку
if (moneyy < MONEY_LIMIT) {
PlayerInfo [playerid] [pMoney] += PayMoney;
} else {
PlayerInfo [playerid] [pMoney] += MAX_MONEY - PlayerInfo [playerid] [pMoney]; //Выдаём до лимита!
}




error 010: invalid function or declaration
: error 010: invalid function or declaration
warning 203: symbol is never used: "moneyy"

L0ndl3m
14.08.2014, 11:28
const MONEY_LIMIT = 2000000000; //Глобальная

new moneyy = PlayerInfo [playerid] [pMoney] + PayMoney; //Допустим PayMoney будет кол-во денег, которое дадут игроку
if (moneyy < MONEY_LIMIT) {
PlayerInfo [playerid] [pMoney] += PayMoney;
} else {
PlayerInfo [playerid] [pMoney] += MAX_MONEY - PlayerInfo [playerid] [pMoney]; //Выдаём до лимита!
}




error 010: invalid function or declaration
: error 010: invalid function or declaration
warning 203: symbol is never used: "moneyy"
Код верный. Куда этот код вставляли?

Unknown
14.08.2014, 11:36
В конец мода

Пельмень
14.08.2014, 11:43
В конец мода

Это не в конец мода нужно, а в каждую операцию с деньгами, для простоты можешь сделать так.


stock GiveMoneyForPlayer (playerid, paymoney) {
new moneyy = PlayerInfo [playerid] [pMoney] + paymoney;
PlayerInfo [playerid] [pMoney] += (moneyy <= MONEY_LIMIT) ? PayMoney : MAX_MONEY - PlayerInfo [playerid] [pMoney];
}

И, допустим в /pay юзай
GiveMoneyForPlayer (targetid, money);
А константу в самый верх!

- - - Добавлено - - -

Тьфу ты, в стоке поменяй PayMoney на paymoney!

- - - Добавлено - - -

И да, если будет warning, что moneyy не используется, измени new moneyy на stock moneyy

Unknown
14.08.2014, 12:15
Вот пример команды /pay как тут юзать то правильно ?

if(strcmp(cmd, "/pay", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return error(playerid, "/pay [ ID игрока / Nick игрока ] [ Сумма ]");
new tmpp=ReturnUser(tmp);
if(tmpp == playerid) return error(playerid, "Вы не можете передать деньги самому себе.");
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return error(playerid, "/pay [ ID игрока / Nick игрока ] [ количество ]");
if(PlayerInfo[playerid][pLevel] < 1) return error(playerid, "Передача денег доступна с первого уровня.");
moneys = strval(tmp);
if(moneys < 1 || moneys > 100000) return error(playerid, "Нельзя передать меньше 1$ и больше 100.000$.");
if (!IsPlayerConnected(giveplayerid)) return NoPlayerConnect;
if(giveplayerid == INVALID_PLAYER_ID) return NetotID;
if (!ProxDetectorS(5.0, playerid, giveplayerid)) return error(playerid, "Вы слишком далеко.");
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
playermoney = PlayerInfo[playerid][pMoney];
if (moneys < 0 || playermoney < moneys) return error(playerid, "Неправильное количество.");
PlayerInfo[giveplayerid][pMoney] += moneys;
PlayerInfo[playerid][pMoney] -= moneys;
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
if(moneys >= 90000)
{
format(string, 256, "%s[%d] передал %d$ игроку %s[%d]",sendername,playerid, moneys, giveplayer,giveplayerid);
SendAdminMessage(COLOR_YELLOW, string);
}
PlayerPlaySound(giveplayerid, 1052, 0.0, 0.0, 0.0);
format(string, sizeof(string), "передал наличных игроку %s." ,giveplayer);
Action(playerid, string);
format(string, sizeof(string), "Ты передал %d$ игроку %s.", moneys, giveplayer);
SendClientMessage(playerid, COLOR_GRAD1, string);
format(string, sizeof(string), "Ты получил %d$ наличных от %s.", moneys, sendername);
SendClientMessage(giveplayerid, COLOR_GRAD1, string);
log("pay", string);
return true;
}

Пельмень
14.08.2014, 15:19
PlayerInfo[giveplayerid][pMoney] += moneys;
PlayerInfo[playerid][pMoney] -= moneys;

замени на


new moneyy = PlayerInfo [giveplayerid] [pMoney] + moneys;
PlayerInfo [giveplayerid] [pMoney] += (moneyy <= MONEY_LIMIT) ? moneys : MAX_MONEY - PlayerInfo [giveplayerid] [pMoney];
PlayerInfo [playerid] [pMoney] -= (moneyy <= MONEY_LIMIT) ? moneys : MAX_MONEY - PlayerInfo [giveplayerid] [pMoney];

Unknown
14.08.2014, 15:57
а тут я понимаю уже
new cashwithdraw = strval(inputtext);
if (cashwithdraw > PlayerInfo[playerid][pAccount] || cashwithdraw < 1) return Dialog(playerid,44,DIALOG_STYLE_MSGBOX," ","У вас нет столько денег!","Назад","");
PlayerInfo[playerid][pAccount] = PlayerInfo[playerid][pAccount] - cashwithdraw;
PlayerInfo[playerid][pMoney] += cashwithdraw;
format(string, sizeof(string), "Вы сняли: %d$. Остаток: %d$", cashwithdraw, PlayerInfo[playerid][pAccount]);
Dialog(playerid,42,DIALOG_STYLE_MSGBOX,"Банк: Чек",string,"Назад","");


Так и оставлять ?)

L0ndl3m
14.08.2014, 16:12
а тут я понимаю уже
new cashwithdraw = strval(inputtext);
if (cashwithdraw > PlayerInfo[playerid][pAccount] || cashwithdraw < 1) return Dialog(playerid,44,DIALOG_STYLE_MSGBOX," ","У вас нет столько денег!","Назад","");
PlayerInfo[playerid][pAccount] = PlayerInfo[playerid][pAccount] - cashwithdraw;
PlayerInfo[playerid][pMoney] += cashwithdraw;
format(string, sizeof(string), "Вы сняли: %d$. Остаток: %d$", cashwithdraw, PlayerInfo[playerid][pAccount]);
Dialog(playerid,42,DIALOG_STYLE_MSGBOX,"Банк: Чек",string,"Назад","");


Так и оставлять ?)
Да...

Unknown
14.08.2014, 22:44
а это я так понимаю

if(IsPlayerConnected(Transferid[playerid]))
{
PlayerInfo[playerid][pAccount] -= moneys;
PlayerInfo[Transferid[playerid]][pAccount] += moneys;
вот так ?

if(IsPlayerConnected(Transferid[playerid]))
{
new moneyy1 = PlayerInfo[Transferid[playerid]][pAccount]+moneys;
PlayerInfo[Transferid[playerid]][pAccount] +=(moneyy1 <= MONEY_LIMIT)?moneys:MAX_MONEY-PlayerInfo[playerid][pAccount];
PlayerInfo[playerid][pAccount]-=(moneyy1 <= MONEY_LIMIT)?moneys:MAX_MONEY-PlayerInfo[playerid][pAccount];

и

stock GiveMoneyForPlayer1(playerid,paymoney)
{
new moneyy1 = PlayerInfo[Transferid[playerid]][pAccount]+paymoney;
PlayerInfo[Transferid[playerid]][pAccount] +=(moneyy1 <= MONEY_LIMIT)?paymoney:MAX_MONEY-PlayerInfo[playerid][pAccount];
}