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

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

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

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

Система PayDay

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

MrMak

Ученик
Описание: Самая обычная система PayDay, но EXP не выдаётся игроку, если он не пробыл в игре хотя бы 20 минут.
Как это работает? Очень просто: мы делаем обычную рекламу на сервер, которая высвечивается всем игрокам в 20 минут и 40 минут часа. Например: 09:20;11:40 и тд.
Во время того как высвечивается реклама мы прибавим к заранее созданной переменной единицу, а в PayDay укажем условие.

Вот сама система:


Вариант от Saibot`a
Ко всем new
PHP:
new bool: time_played[MAX_PLAYERS char];
В OnGameModeInit
PHP:
SetTimer(!"@_TimePayday", 1000, false);
В конец мода
PHP:
@_TimePayday();
@_TimePayday()
{
	new hour_payday,
		minutes_payday,
		second_payday;

	gettime(hour_payday, minutes_payday, second_payday);

	if(minutes_payday == 20 || minutes_payday == 40
	&& second_payday == 00)
	{
		foreach(Player, i)
		{
			time_played{i} = true;
			SendClientMessage(i, -1, !"Вы отыграли 20 мн.");
		}
	}
	if(hour_payday == hour_payday && second_payday == 00)
	{
		SetWorldTime(hour_payday);
		PayDay();
	}
	SetTimer("@_TimePayday", 1000, false);
}
PHP:
stock PayDay()
{
    new str_fmt[72 + 14 + 11],
		level_up;

	foreach(Player, i)
	{
		if(time_played{i})
		{
		    time_played{i} = false;

		    PlayerInfo[i][pExp] ++;

		    SendClientMessage(i, -1, !"__________Банковский чек__________");

		    format(str_fmt, sizeof(str_fmt), "Текущая сумма в банке: $%d\n",\
			PlayerInfo[i][член_перечесление_деньги_в_банке]);
			SendClientMessage(i, -1, str_fmt);

		    format(str_fmt, sizeof(str_fmt), "В данный момент у вас %d-й уровень и %d/%d респектов\n",\
			PlayerInfo[i][pLevel], PlayerInfo[i][pExp], (PlayerInfo[i][pLevel] + 1 ) * 4);
			SendClientMessage(i,-1,str_fmt);

			SendClientMessage(i, -1, !"__________________________________");
			GameTextForPlayer(i, !"~y~PAYDAY", 3000, 1);

			level_up = (PlayerInfo[i][pLevel] + 1) * 4;
			if(PlayerInfo[i][pExp] >= level_up)
			{
				PlayerInfo[i][pLevel] ++;
				PlayerInfo[i][pExp] -= level_up;
				SetPlayerScore(i, PlayerInfo[i][pLevel]);
				format(str_fmt, sizeof(str_fmt),"Поздравляю! Вы достигли %d-го уровня!", PlayerInfo[i][pLevel]);
				SendClientMessage(i, -1, str_fmt);
			}

		}
		else SendClientMessage(i, 0xFF6347FF, !"Для получения PayDay вы должны отыграть минимум 20 минут.")
	}
	return true;
}
pLevel, pExp >> Это все меняем на свое!!!


Вариант Автора:
ко всем new добавим:
PHP:
new PAYDAY = 0;
new twelve[MAX_PLAYERS];
new othtimer;
в public OnPlayerConnect(playerid)
PHP:
twelve[playerid] = 0;
В конец мода добавим сток:
PHP:
stock Fresh()
{
	new year,month,day,minute,second,hour;
   	getdate(year,month,day);
   	gettime(hour,minute,second);
	if(minute == 0 && second >= 11 && second <= 16) PAYDAY = 0;
   	if(minute == 0 && second >= 0 && second <= 10 && PAYDAY == 0)
   	{
   	    PAYDAY = 1;
   	    SetWorldTime(hour); // время суток в игре
   	    PayDay();
   	}
   	if(minute == 20  && second == 00)
	{
		for(new i;i<MAX_PLAYERS;i++)
		{
			if(gPlayerLogged[i])
			{
				twelve[i]++;
			}
		}
		SendClientMessageToAll(0xFFCC00FF,"---------------------------------------------------------------");
		SendClientMessageToAll(0xFFCC00FF,"реклама");
		SendClientMessageToAll(0xFFCC00FF,"Реклама");
		SendClientMessageToAll(0xFFCC00FF,"реклама");
		SendClientMessageToAll(0xFFCC00FF,"---------------------------------------------------------------");
	}
	if(minute == 40  && second == 00)
	{
		for(new i;i<MAX_PLAYERS;i++)
		{
			if(gPlayerLogged[i])// проверка на то, авторизован ли игрок
			{
				twelve[i]++;
			}
		}
		SendClientMessageToAll(0xFFCC00FF,"---------------------------------------------------------------");
		SendClientMessageToAll(0xFFCC00FF,"реклама");
		SendClientMessageToAll(0xFFCC00FF,"Реклама");
		SendClientMessageToAll(0xFFCC00FF,"реклама");
		SendClientMessageToAll(0xFFCC00FF,"---------------------------------------------------------------");
	}
	return true;
}
и еще один сток:
PHP:
stock PayDay()
{
	new string[900];// 900 ячеек, потому что нужно добавлять ЗП, фрак ЗП ну и еще что вам нужно.. Вобщем если планируете так оставить уменьшите значение до 300, а может меньше, посчитаете...
	for(new i = 0;i < MAX_PLAYERS; i ++)
	{
	    if(!IsPlayerConnected(i)) {SendClientMessage(i, -1, "Вы не на сервере"); continue;}
	    if(gPlayerLogged[i])
	    {
	        if(twelve[i]>0)
			{
	   			twelve[i]=0;
		        PlayerInfo[i][pExp] += 1;

		        SendClientMessage(i,COLOR_VALIK,"__________Банковский чек__________");
		        format(string,sizeof(string),"Текущая сумма в банке: $%d\n",PlayerInfo[i][pSchetBank]);
		        SendClientMessage(i,-1,string);
		        format(string,sizeof(string),"В данный момент у вас %d-й уровень и %d/%d респектов\n",PlayerInfo[i][pLevel],PlayerInfo[i][pExp],(PlayerInfo[i][pLevel]+1)*4);
		        SendClientMessage(i,-1,string);
		        SendClientMessage(i,COLOR_VALIK,"__________________________________");
		        format(string, sizeof(string), "~y~PAYDAY");
		        SaveAccount(i);
				GameTextForPlayer(i, string, 3000, 1);
		        CheckNextLevel(i);
			}
			else SendClientMessage(i, COLOR_RED, "Для получения PayDay вы должны отыграть минимум 20 минут."),twelve[i]++;
	    }else SendClientMessage(i, -1, "Вы не авторизированы для получения зарплаты");
	}
	return true;
}
еще сток:
PHP:
stock CheckNextLevel(playerid)
{
	new expamount = ( PlayerInfo[playerid][pLevel] + 1) * 4, string[144];
	if(PlayerInfo[playerid][pExp] >= expamount)
	{
		PlayerInfo[playerid][pLevel] ++;
		PlayerInfo[playerid][pExp] -= expamount;
		SetPlayerScore(playerid,PlayerInfo[playerid][pLevel]);
		format(string,sizeof(string),"Поздравляю! Вы достигли %d-го уровня!",PlayerInfo[playerid][pLevel]);
		SendClientMessage(playerid,COLOR_VALIK,string);
		//SaveAccount(playerid);
		return true;
	}
	return false;
}
PHP:
publics: OtherTimer()
{
	Fresh();
	return true;
}
в public OnGameModeInit
PHP:
othtimer = SetTimer("OtherTimer", 1000, 1);

Вот и вся система...
Автор не я. Вырезал из Аризоны, немного переделал.

Критики на подобии: "Гавнокодер, дэбил, что это за х**ня?" не жду. Кто хочет оставить такой пост, будьте добры, не делайте этого, дабы избежать сквернословия.
Кому нравится, кушайте на здоровье...
Будут ошибки пишите, исправим вместе.
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу