Доступ к готовым решениям

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

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

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

Система кейсов,(/putmoney & /pickmoney).

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

xDimasx

Эксперт
Пользователь
Регистрация
1 Фев 2014
Сообщения
1,364
Лучшие ответы
4
Репутация
158
Всем привет. Сегодня мне понадобилась система выбрасывания денег,которой в паблике я не нашёл (без багов).
Поэтому я решил её сделать себе и Вам.

Что используется здесь для создания этой системы?:
- SSCANF
- ZCMD/DC_CMD

Ну что-же,приступим.

В начало мода:
PHP:
#define MAX_CASE 50 // Лимит на кейсы.

enum caseInfo
{
	Float:csX,
	Float:csY,
	Float:csZ,
	csMoney,
	csObject
}
new CaseInfo[MAX_CASE][caseInfo];
new TOTALCASE;
Ко всем командам:
PHP:
CMD:putmoney(playerid, params[])
{
	if(gPlayerLogged[playerid] == 0) return true; // Проверка на авторизацию. (Может быть другая)
	if(PlayerInfo[playerid][pLevel] < 3) return SendClientMessage(playerid, -1, "Выкладывать деньги можно с 3-ого уровня."); // Можете убрать проверку на то,с какого уровня выкидывать деньги. (PlayerInfo[playerid][pLeve] меняем под себя)
	if(GetPVarInt(playerid, "PlayerCase") == 0) return SendClientMessage(playerid, -1, "У Вас нет чемодана для денег!"); // Проверка на чемодан. (Сделайте покупку в магазине или уберите проверку).
	if(TOTALCASE >= MAX_CASE) return SendClientMessage(playerid, -1, "Превышен лимит выбрасываемых кейсов."); // Проверка на лимт кейсов.
	if(GetPVarInt(playerid,"AntiFlood") > gettime()) return SendClientMessage(playerid, -1, "Нельзя так часто выкидывать деньги!"); // Антифлуд
	if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "Взять деньги находясь в машине - нельзя."); // Проверка на нахождение игрока в машине
	if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, -1, "Используйте: /putmoney [сумма]");
	if(params[0] < 1 || params[0] > PlayerInfo[playerid][pMoney]) return SendClientMessage(playerid, -1,"У Вас недостаточно денег на руках."); // Проверка на деньги (PlayerInfo[playerid][pMoney] меняйте под себя).
	new i = TOTALCASE,string[128];
	TOTALCASE++;
	GetPlayerPos(playerid, CaseInfo[i][csX], CaseInfo[i][csY], CaseInfo[i][csZ]); // УЗнаём позицию
	CaseInfo[i][csObject] = CreateDynamicObject(1210, CaseInfo[i][csX], CaseInfo[i][csY]+1.0, CaseInfo[i][csZ]-0.87, 0.0, 0.0, 0.0, -1, -1, -1, 300.0), RemovePlayerAttachedObject(playerid, 4); // Создаём кейс
	RemovePlayerAttachedObject(playerid, 5); // Удаляем кейс из рук
	PlayerInfo[playerid][pMoney] -= params[0], CaseInfo[i][csMoney] = params[0]; // Снимаем деньги (PlayerInfo[playerid][pMoney] меняйте под себя)
	if(CaseInfo[i][csMoney] >= 100000) format(string, sizeof(string), "[A] Игрок %s[%d] только что положил чемодан с %d$", Player[playerid][pName], playerid, CaseInfo[i][csMoney]), ABroadCast(0xAAAAAAFF, string, 1); // Если игрок выкинул чемодан с боле чем 100.000$ то оповещаем администрацию. (ABroadCast у вас может быть другой).
	SetPVarInt(playerid,"AntiFlood",gettime() + 30), DeletePVar(playerid, "PlayerCase"); // Создаём антифлуд + удаляем значение что у нас есть чемодан.
	format(string,sizeof(string),"Вы положили чемодан с %d$", params[0]),SendClientMessage(playerid, -1, string);
	return true;
}

CMD:pickmoney(playerid, params[])
{
    if(gPlayerLogged[playerid] == 0) return true; // Проверка на авторизацию. (Может быть другая)
	if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "Положить деньги находясь в машине - нельзя."); // Проверка на нахождение игрока в машине
	new cas,string[128]; // Создаём переменные
	for(new i = 0; i <= TOTALCASE; i++) // Создаём цикл
	{
		if(IsPlayerInRangeOfPoint(playerid, 3.0, CaseInfo[i][csX], CaseInfo[i][csY], CaseInfo[i][csZ])) // Создаём проверку на нахождение рядом с кейсом
		{ // Если кейсов рядом,то продолжаем.
			cas++,TOTALCASE--,SetPlayerAttachedObject(playerid, 5, 1210, 5, 0.272000,0.073000,-0.045000, 0.000000,-83.099998,0.000000),SetPVarInt(playerid, "PlayerCase", 1), DestroyDynamicObject(CaseInfo[i][csObject]); // Функции)
			format(string,sizeof(string),"Вы подобрали чемодан с %d$", CaseInfo[i][csMoney]),SendClientMessage(playerid, -1, string);
			if(CaseInfo[i][csMoney] >= 100000) format(string, sizeof(string), "[A] Игрок %s[%d] только что подобрал чемодан с %d$", PlayerInfo[playerid][pName], playerid, CaseInfo[i][csMoney]), ABroadCast(0xAAAAAAFF, string, 1); // Если игрок поднял чемодан с более чем 100.000$ то оповещаем администрацию. (Вместо ABroadCast может быть SendAdminMessage и т.д),а также вместо PlayerInfo[playerid][pName] ставим своё.
			PlayerInfo[playerid][pMoney] += CaseInfo[i][csMoney]; // ПРибавляем кол-во денег с кейса. PlayerInfo[playerid][pMoney] меняем под себя.
			CaseInfo[i][csX] = 0.0, CaseInfo[i][csY] = 0.0, CaseInfo[i][csZ] = 0.0; // Убираем найденный кейс.
			break;
		} // Если кейса рядом нет,то ничего не делаем
	}
	if(cas == 0) SendClientMessage(playerid, -1, "Рядом с вами нет чемодана!");
	return true;
}
Система без сохранения.
Если есть какие-то ошибки то пишите. Возможно что то забыл вставить.
Вот такой вот лёгкий урок) Если хотите какую-либо систему то пишите мне и я постараюсь её сделать в паблик.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу