PDA

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



johnlaw
24.04.2018, 03:47
CMD:ticket(playerid,params[])
{
new string[1000];
if(!IsACopFunction(playerid)) return send(playerid, COLOR_GREY, UnAdminMes);
if(sscanf(params, "dds[64]", params[0], params[1], params[2])) return send(playerid, COLOR_LIGHTBLUE, "Используйте: {FFFFFF} /ticket [playerid] [цена] [причина]");
if(params[1] < 1 || params[1] > 99999) return send(playerid, 0xAFAFAFAA, "Билет может стоить не ниже 1 и не выше 99999 !");
if(!IsPlayerConnected(params[0])) return send(playerid, COLOR_GREY, NoConnectGivePlayer);
if(params[0] == INVALID_PLAYER_ID) return send(playerid, COLOR_GREY, NoRules);
f(string, "* Ты выписал игроку {4169E1}%s{FFFFFF} штраф {32CD32}$%d{FFFFFF}, причина: {4169E1}%s{FFFFFF}", Player[params[0]][pName], params[1], (params[2]));
send(playerid, COLOR_WHITE, string);
f(string, "* Законник %s выписал вам штраф {32CD32}$%d{FFFFFF}, причина: {4169E1}%s{FFFFFF}\nПри отказе оплаты штрафа поднимется уровень розыска.", Player[playerid][pName], params[1], (params[2]));
ShowPlayerDialog(params[0], DIALOG_TICKET , DIALOG_STYLE_MSGBOX, "{33CCFF}Штраф.", string, "Оплатить", "Отказ");
SetPVarInt(params[0],"TicketOffer",playerid);
SetPVarInt(params[0],"TicketMoney",params[1]);
return true;
}

поставить проверку, только как...

Nash_Brigers
24.04.2018, 09:23
Тип того

CMD:ticket(playerid,params[])
{
new string[1000];
if(!IsACopFunction(playerid)) return send(playerid, COLOR_GREY, UnAdminMes);
if(sscanf(params, "dds[64]", params[0], params[1], params[2])) return send(playerid, COLOR_LIGHTBLUE, "Используйте: {FFFFFF} /ticket [playerid] [цена] [причина]");
if(params[1] < 1 || params[1] > 99999) return send(playerid, 0xAFAFAFAA, "Билет может стоить не ниже 1 и не выше 99999 !");
if(!IsPlayerConnected(params[0])) return send(playerid, COLOR_GREY, NoConnectGivePlayer);
if(params[0] == INVALID_PLAYER_ID) return send(playerid, COLOR_GREY, NoRules);
if(GetPlayerMoney(params[0]) < params[1]) return send(playerid, 0xAFAFAFAA, "У нарушителя недостаточно денег.");//проверка на бабло
f(string, "* Ты выписал игроку {4169E1}%s{FFFFFF} штраф {32CD32}$%d{FFFFFF}, причина: {4169E1}%s{FFFFFF}", Player[params[0]][pName], params[1], (params[2]));
send(playerid, COLOR_WHITE, string);
f(string, "* Законник %s выписал вам штраф {32CD32}$%d{FFFFFF}, причина: {4169E1}%s{FFFFFF}\nПри отказе оплаты штрафа поднимется уровень розыска.", Player[playerid][pName], params[1], (params[2]));
ShowPlayerDialog(params[0], DIALOG_TICKET , DIALOG_STYLE_MSGBOX, "{33CCFF}Штраф.", string, "Оплатить", "Отказ");
SetPVarInt(params[0],"TicketOffer",playerid);
SetPVarInt(params[0],"TicketMoney",params[1]);
return true;
}

johnlaw
24.04.2018, 12:38
Тип того

CMD:ticket(playerid,params[])
{
new string[1000];
if(!IsACopFunction(playerid)) return send(playerid, COLOR_GREY, UnAdminMes);
if(sscanf(params, "dds[64]", params[0], params[1], params[2])) return send(playerid, COLOR_LIGHTBLUE, "Используйте: {FFFFFF} /ticket [playerid] [цена] [причина]");
if(params[1] < 1 || params[1] > 99999) return send(playerid, 0xAFAFAFAA, "Билет может стоить не ниже 1 и не выше 99999 !");
if(!IsPlayerConnected(params[0])) return send(playerid, COLOR_GREY, NoConnectGivePlayer);
if(params[0] == INVALID_PLAYER_ID) return send(playerid, COLOR_GREY, NoRules);
if(GetPlayerMoney(params[0]) < params[1]) return send(playerid, 0xAFAFAFAA, "У нарушителя недостаточно денег.");//проверка на бабло
f(string, "* Ты выписал игроку {4169E1}%s{FFFFFF} штраф {32CD32}$%d{FFFFFF}, причина: {4169E1}%s{FFFFFF}", Player[params[0]][pName], params[1], (params[2]));
send(playerid, COLOR_WHITE, string);
f(string, "* Законник %s выписал вам штраф {32CD32}$%d{FFFFFF}, причина: {4169E1}%s{FFFFFF}\nПри отказе оплаты штрафа поднимется уровень розыска.", Player[playerid][pName], params[1], (params[2]));
ShowPlayerDialog(params[0], DIALOG_TICKET , DIALOG_STYLE_MSGBOX, "{33CCFF}Штраф.", string, "Оплатить", "Отказ");
SetPVarInt(params[0],"TicketOffer",playerid);
SetPVarInt(params[0],"TicketMoney",params[1]);
return true;
}

Спасибо!

StevenH
24.04.2018, 20:22
Спасибо!

Ну да, работать то будет, но проверку лучше сделать не через GetPlayerMoney, а через переменную, где хранятся деньги, в ином случае если через собейт дать себе деньги, сервер (а именно GetPlayerMoney) подумает что у игрока есть деньги..