JoinT.
Специалист
Система банка.
Во время написания мода Samp Role Play многие меня просили и до сих пор
просят сделать систему банка копию samp-rp.ru (не реклама)
Ну так вот я сделал и решил выложить ее до первой версии мода.
Команды банка у нас будут на sscanf + zcmd
При проверке, лично я багов не обнаружил.
Приступим:
в enum pInfo добавим
PHP:
pBank
PHP:
PlayerInfo[playerid][pBank] = 0;
PHP:
iniSetInt(iniFile,"Bank",PlayerInfo[playerid][pBank]);
PHP:
iniSetInt(iniFile,"Bank",PlayerInfo[playerid][pBank]);
PHP:
iniGetInt(iniFile,"Bank",PlayerInfo[playerid][pBank]);
Ко всем переменным:
PHP:
new yeart, montht,dayt;
new hourt,minuitet;
PHP:
#define SCM SendClientMessage
PHP:
CMD:balance(playerid, params[])
{
if(gPlayerLogged[playerid] == false) return true;
if(!PlayerToPoint(5.0,playerid,2308.8201,-13.2660,26.7422)) return SCM(playerid, COL_GREY, "Вы не в банке!");
SendMes(playerid,COL_YELLOW32,"На вашем счету %d вирт", PlayerInfo[playerid][pBank]);
return true;
}
CMD:bank(playerid, params[])
{
if(gPlayerLogged[playerid] == false) return true;
if(!PlayerToPoint(5.0,playerid,2308.8201,-13.2660,26.7422)) return SCM(playerid, COL_GREY, "Вы не в банке!");
if(sscanf(params, "d", params[0]))
{
SCM(playerid, COL_WHITE, "Введите: /bank [сумма]");
SendMes(playerid,COL_WHITE,"На вашем счету %d вирт", PlayerInfo[playerid][pBank]);
return true;
}
if(PlayerInfo[playerid][pCash] < params[0]) return SCM(playerid, COL_GREY, "У вас нет столько денег!");
if(params[0] > 1000000 || params[0] < 1) return SCM(playerid, COL_GREY, "Неправильное кол-во денег.");
SCM(playerid, COL_WHITE, "--------------===[ ЧЕК ]===--------------");
SendMes(playerid,0xC0C0C0AA,"Старый баланс: %d вирт", PlayerInfo[playerid][pBank]);
SendMes(playerid,0xD3D3D3AA,"Переведено: %d вирт", params[0]);
SendMes(playerid,COL_WHITE, "Новый баланс: %d вирт", PlayerInfo[playerid][pBank]+params[0]);
PlayerInfo[playerid][pCash] -= params[0];
PlayerInfo[playerid][pBank] += params[0];
return true;
}
CMD:withdraw(playerid, params[])
{
if(gPlayerLogged[playerid] == false) return true;
if(!PlayerToPoint(5.0,playerid,2308.8201,-13.2660,26.7422)) return SCM(playerid, COL_GREY, "Вы не в банке!");
if(sscanf(params, "d", params[0]))
{
SCM(playerid, COL_WHITE, "Введите: /withdraw [сумма]");
SendMes(playerid,COL_WHITE,"На вашем счету %d вирт", PlayerInfo[playerid][pBank]);
return true;
}
if(PlayerInfo[playerid][pBank] < params[0]) return SCM(playerid, COL_GREY, "У вас нет столько денег!");
if(params[0] > 1000000 || params[0] < 1) return SCM(playerid, COL_GREY, "Неправильное кол-во денег.");
PlayerInfo[playerid][pCash] += params[0];
PlayerInfo[playerid][pBank] -= params[0];
SendMes(playerid,COL_YELLOW32, "ВЫ сняли %d вирт. Остаток: %d вирт",params[0],PlayerInfo[playerid][pBank]);
return true;
}
CMD:transfer(playerid, params[])
{
if(gPlayerLogged[playerid] == false) return true;
if(PlayerInfo[playerid][pLevel] <= 2) return SCM(playerid, COL_GREY, "ДЛя перевода необходим 3лвл!");
if(!PlayerToPoint(5.0,playerid,2308.8201,-13.2660,26.7422)) return SCM(playerid, COL_GREY, "Вы не в банке!");
if(sscanf(params, "dd", params[0],params[1])) return SCM(playerid, COL_WHITE, "Введите: /transfer [id игрока/часть ника][сумма]");
if(!IsPlayerConnected(params[0]) || params[0] == INVALID_PLAYER_ID) return SCM(playerid, COL_GREY, "Данный игрок не найден.");
if(gPlayerLogged[params[0]] == false) return SCM(playerid, COL_GREY, "Данный игрок не авторизирован");
if(PlayerInfo[playerid][pBank] < params[1]) return SCM(playerid, COL_GREY, "У вас нет столько денег!");
if(params[1] > 1000000 || params[1] < 1) return SCM(playerid, COL_GREY, "Неправильное кол-во денег.");
getdate(yeart,montht,dayt);
gettime(hourt,minuitet);
SendMes(playerid,COL_WHITE, "Вы передали %d вирт, на счет %s[%d/%d/%d %d:%d]",params[1],PlayerInfo[params[0]][pName],yeart,montht,dayt,hourt,minuitet);
SendMes(params[0],COL_WHITE, "Вы получили %d вирт, на свой счет от %s[%d/%d/%d %d:%d]",params[1],PlayerInfo[playerid][pName],yeart,montht,dayt,hourt,minuitet);
PlayerInfo[playerid][pBank] -= params[1];
PlayerInfo[params[0]][pBank] += params[0];
return true;
}
CMD:housebank(playerid, params[])
{
if(gPlayerLogged[playerid] == false) return true;
if(PlayerInfo[playerid][pPhousekey] == 255) return SCM(playerid, COL_GREY, "Вы не владеете домом!");
if(!PlayerToPoint(5.0,playerid,2308.8201,-13.2660,26.7422)) return SCM(playerid, COL_GREY, "Вы не в банке!");
if(sscanf(params, "d", params[0])) return SCM(playerid, COL_WHITE, "Введите: /housebank [сумма]");
if(PlayerInfo[playerid][pBank] < params[0]) return SendClientMessage(playerid, COL_GREY, "У вас нет столько денег в банке!");
PlayerInfo[playerid][pBank] -= params[0];
HouseInfo[PlayerInfo[playerid][pPhousekey]][hTakings] += params[0];
SendMes(playerid,COL_WHITE, "ВЫ положили на домашний счет %d вирт",params[0]);
SendMes(playerid,COL_WHITE, "Квартирный счет: %d вирт",HouseInfo[PlayerInfo[playerid][pPhousekey]][hTakings]);
return true;
}
Мануал будет полезен тем кто пишет моды с new.pwn
Жду ваших комментариев.
Последнее редактирование:
