Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

[Мануал]Система банка (Samp-Rp)

Статус
В этой теме нельзя размещать новые ответы.

JoinT.

Специалист
Система банка.​

Во время написания мода Samp Role Play многие меня просили и до сих пор
просят сделать систему банка копию samp-rp.ru (не реклама)
Ну так вот я сделал и решил выложить ее до первой версии мода.
Команды банка у нас будут на sscanf + zcmd
При проверке, лично я багов не обнаружил.
Приступим:


в enum pInfo добавим

PHP:
pBank
в public OnPlayerConnect

PHP:
PlayerInfo[playerid][pBank] = 0;
В public OnPlayerRegister

PHP:
iniSetInt(iniFile,"Bank",PlayerInfo[playerid][pBank]);
В public OnPlayerUpdateRL

PHP:
iniSetInt(iniFile,"Bank",PlayerInfo[playerid][pBank]);
В public OnPlayerLogin

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
Жду ваших комментариев.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу