Extra Cash

random.81

Участник
Сообщения
496
Реакции
819
Extra Cash

Описание: Каждый раунд игрокам выдается указанное Вами количество денег.По умолчанию 16000$.

Настройки:
extra_cash_on - Включить/Выключить плагин.
extra_cash_amount - сумма денег, выдаваемая игрокам начале раунда.

Оригинал
 

Вложения

  • Extra Cash v0.2.zip
    2.6 КБ · Просмотры: 3,035
Последнее редактирование:

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Re: Extra Cash v0.2

Обновил
Сейчас вроде должно работать.. :blush2:

Список изменений:
1. Добавил конфигурационный файл
2. Добавил квар. Включение = 1/ Отключение = 0 выдачи денег только админам

Смотрим
 

Вложения

  • ExtraCash.cfg
    522 байт · Просмотры: 355
  • extra_cash.sp
    1.5 КБ · Просмотры: 230
  • extra_cash.smx
    2.8 КБ · Просмотры: 200
Последнее редактирование:

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Re: Extra Cash v0.2

Новая версия плагина
  • Добавлен квар. Минимальное количество игроков, при котором плагин будет выдавать деньги.
  • Добавлен квар. Через сколько раундов выдавать установленное вами количество денег.
PHP:
#include <sourcemod>

#define PLUGIN_VERSION "0.4"

new Handle:Switch;
new Handle:Cash;
new Handle:AdminCash;
new Handle:MinPlayer;
new Handle:Round;

new Rounds;
new ClientInGame;

public Plugin:myinfo = 
{
	name = "Extra Cash",
	author = "Peoples Army, DoK",
	description = "Adds Extra Cash On Each Spawn",
	version = PLUGIN_VERSION,
	url = "www.sourcemod.net"
};

public OnPluginStart()
{
	Switch = CreateConVar("extra_cash_enable", "1", "Включение = 1/ отключение = 0 плагина", FCVAR_NOTIFY);
	Cash = CreateConVar("extra_cash_amount", "16000", "Количество денег, выдаваемое в начале раунда", FCVAR_NOTIFY);
	AdminCash = CreateConVar("extra_cash_admin", "1", "Вкючение = 1/ отлючение = 0 вывода денег только админам", FCVAR_NOTIFY);
	MinPlayer = CreateConVar("extra_cash_min_player", "4", "Минимальное количество игроков на сервере", FCVAR_NOTIFY);
	Round = CreateConVar("extra_cash_round", "2", "Через сколько раундов будут выдаваться деньги", FCVAR_NOTIFY);
	
	HookEvent("player_spawn" , Event_OnPlayerSpawn);
	HookEvent("round_start", Event_OnRoundStart);
	
	AutoExecConfig(true, "ExtraCash");
}

public OnMapStart()
{
	Rounds = 0;
}

public Event_OnRoundStart(Handle: event , const String: name[] , bool: dontBroadcast)
{
	ClientInGame = 0;
	for(new i = 1; i <= MaxClients; i++)	
	{
		if(IsClientInGame(i))
		{
			if(GetClientTeam(i) != 1)
			{
				ClientInGame++;
			}
		}
	}
	Rounds++;
}

public Event_OnPlayerSpawn(Handle: event , const String: name[] , bool: dontBroadcast)
{
	if(Rounds > GetConVarInt(Round))
	{
		if(ClientInGame >= GetConVarInt(MinPlayer)) 
		{
			new client = GetClientOfUserId(GetEventInt(event,"userid"));	
			new AdminId:admin_cash = GetUserAdmin(client);
			if(GetConVarInt(Switch) == 1)
			{
				if(GetConVarInt (AdminCash) == 1) 
				{
					if(admin_cash != INVALID_ADMIN_ID) 
					{
						SetEntProp(client, Prop_Send, "m_iAccount", GetConVarInt(Cash));
					}
				}
				else if(GetConVarInt (AdminCash) == 0)
				{
					SetEntProp(client, Prop_Send, "m_iAccount", GetConVarInt(Cash));
				}
			}
		}
	}
}
 
Последнее редактирование:

acik_traiks

Что нибудь напишем?)
Сообщения
770
Реакции
627
Re: Extra Cash v0.2

DoK_1997, может Добавишь "через сколько раундов будет работать плагин", а то хотелось бы поиграть на пистолетах)
 

abvshka

Участник
Сообщения
3
Реакции
0
Re: Extra Cash v0.2

Скомпилируйте пожалуйста кто-нибудь плагин из 3-его поста. На соурсмоде.ком, выдает ошибку. А через Total Commander не компилируется.
 

abvshka

Участник
Сообщения
3
Реакции
0

pihmih

Участник
Сообщения
512
Реакции
23
Re: Extra Cash v0.2

Могли бы вы ввести флаг для админа, которому я бы хотел сделать деньги?
 

DJ Cool Spot

Участник
Сообщения
80
Реакции
6
Re: Extra Cash v0.2

исправьте плагин чтобы выдавал 16000 через каждые 5 раундов)
а то версия которую написал The End Is Near... работает неисправно((
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Re: Extra Cash v0.2

В смысле каждые 5 раундов? Там от начала карты считаются раунды так-то, твой запрос - другая логика плагина
Оффтоп
 

DJ Cool Spot

Участник
Сообщения
80
Реакции
6
Re: Extra Cash v0.2

The End Is Near... ты меня наверно не понял, так как я вопрос не совсем точно поставил...
Хотелось бы вот так:
Начало карты. Отсчёт раундов от начала карты до 5 раундов. Выдача 16000$ уже в 6 раунде. Следующая выдача 16000$ должна произойти через 5 раундов:)
Вот как надо)
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Re: Extra Cash v0.2

DJ Cool Spot
Пробуй
PHP:
#include <sourcemod>

new CountRounds = 0;

public OnPluginStart()
{
	HookEvent("round_start", Event_OnRoundStart);
	HookEvent("player_spawn", Event_OnPlayerSpawn);
}

public OnMapStart()
{
	CountRounds = 0;
}

public Event_OnRoundStart(Handle:event, const String:name[], bool:silent)
{
	CountRounds++;
}

public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent)
{
	if (CountRounds > 5)
	{
		SetEntProp(GetClientOfUserId(GetEventInt(event, "userid")), Prop_Send, "m_iAccount", 16000);

		CountRounds = 0;
	}
}
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
Re: Extra Cash v0.2

Потому что он допустил логическую ошибку - выдавать деньги надо всем игрокам, и делать это в цикле в событии round_start. А сейчас 16 000$ получает один из игроков, и в этот момент CountRounds = 0, и для следующего игрока уже не выполняется условие "пятого раунда" (потому что события player_spawn выполняются для каждого игрока отдельно, но последовательно). Лучше всего обойтись одним round_start, дабы у вновь подключившихся игроков не было 16 000$ вместо 800$, ну или если это требуется, то добавить глобальную bool переменную, отвечающую за то, является ли текущий раунд бонусным или нет, и в зависимости от неё в player_spawn выдавать деньги.

P. S. Хотя может и стоит идти только вторым путем - round_start вроде бы вызывается раньше чем все player_spawn, тогда лучше хукать round_freeze_end, и уже в нем увеличивать счетчик и выдавать бонусные деньги. Но опять же таки, при mp_freezetime 0 я не уверен, что вызываться будет уже после всех player_spawn.

P. S. S. Попробуйте так:
C-подобный:
new g_iRoundCounter;
public OnPluginStart()
{
	HookEvent("round_freeze_end", Event_RoundFreezeEnd);
}
public OnMapStart()
{
	g_iRoundCounter = 0;
}
public Action:Event_RoundFreezeEnd(Handle:hEvent, const String:sEventName[], bool:bSilent)
{
	g_iRoundCounter++;

	if ( g_iRoundCounter % 5 == 0 )
		for ( new i = 1; i <= MaxClients; i++ )
			if ( IsClientInGame(i) && IsPlayerAlive(i) )
				SetEntProp(i, Prop_Send, "m_iAccount", 16000);
}
 

DJ Cool Spot

Участник
Сообщения
80
Реакции
6
Re: Extra Cash v0.2

Reiko1231, дружищще это фикс того исходника или это готовый, уже для компиляции?:)

Добавлено через 15 минут
Reiko1231, не работает... скомпилировался, закинул и всё равно не то что надо...
Надо вот что:
Начало карты
1 раунд (тут $800 как по стандарту)
2 раунд (тут бабло копится ну всё как обычно в общем)
3 раунд (и тут)
4 раунд (и тут)
5 раунд (ахахах и тут тоже)
6 раунд (все игроки ликуют! бабла $16000 дали)
7 раунд (в этом раунде повторно $16000 уже не выдаётся. пусть сами зарабатывают)
8 раунд (в этом тоже)
9 раунд (в этом тоже не выдавать)
10 раунд (и в этом)
11 раунд (ну и пожалуй в этом)
12 раунд (все игроки ликуют! бабла $16000 дали.)

ну и так далее)))
вот бы научиться так плагины писать:D ахахахха))))))

ну и сделать чтобы у игроков которые зашли было $800 и чтобы цикличность выдачи денег у каждого игрока была своя, а не зависила от раундов сыгранных уже другими игроками)
 
Последнее редактирование:

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Re: Extra Cash v0.2

Reiko1231
Не совсем, если игрок присоеденился на секунду позже (образно), то деньги уже не получит. Еще учитывай, если значение фриза слишком большое, то игрокам придется ждать выдачи денег, что не есть гуд
PHP:
#include <sourcemod>

new CountRounds = 0;

public OnPluginStart()
{
	HookEvent("round_start", Event_OnRoundStart);
	HookEvent("player_spawn", Event_OnPlayerSpawn);
	HookEvent("round_end", Event_OnRoundEnd);
}

public OnMapStart()
{
	CountRounds = 0;
}

public Event_OnRoundStart(Handle:event, const String:name[], bool:silent)
{
	CountRounds++;
}

public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent)
{
	if (CountRounds > 5)
	{
		SetEntProp(GetClientOfUserId(GetEventInt(event, "userid")), Prop_Send, "m_iAccount", 16000, 4);
	}
}

public Event_OnRoundEnd(Handle:event, const String:name[], bool:silent)
{
	if (CountRounds > 5)
	{
		CountRounds = 0;
	}
}


DJ Cool Spot
ну и сделать чтобы у игроков которые зашли было $800 и чтобы цикличность выдачи денег у каждого игрока была своя, а не зависила от раундов сыгранных уже другими игроками)
PHP:
#include <sourcemod>

new CountRounds[MAXPLAYERS + 1] = 0;

public OnPluginStart()
{
	HookEvent("player_spawn", Event_OnPlayerSpawn);
}

public OnClientPutInServer(client)
{
	CountRounds[client] = 0;
}

public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));

	if (++CountRounds[client] > 5)
	{
		SetEntProp(client, Prop_Send, "m_iAccount", 16000, 4);

		CountRounds[client] = 0;
	}
}
 
Последнее редактирование:

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
Re: Extra Cash v0.2

The End Is Near..., CountRounds[client] нигде не увеличивается и всегда будет = 0.
Вот так будет правильно:
C-подобный:
new CountRounds[MAXPLAYERS + 1] = { 0, ... };
public OnPluginStart()
{
    HookEvent("player_spawn", Event_OnPlayerSpawn);
}
public OnClientPutInServer(client)
{
    CountRounds[client] = 0;
}
public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    CountRounds[client]++;
	
    if (CountRounds[client] > 5)
    {
        SetEntProp(client, Prop_Send, "m_iAccount", 16000);
        CountRounds[client] = 0;
    }
}

P.S. Писать #include <sourcemod> не обязательно.
 
Сверху Снизу