Деньги слабым игрокам.

pihmih

Участник
Сообщения
512
Реакции
23
Здравствуйте. Не кто не встречал плагин, выдающий денег самым слабым игрокам на сервере?
 

максимка27

Участник
Сообщения
513
Реакции
213
видел плагин, при проигрыше 3 раунда с подряд одной из сторон, выдаются деньги им большего размера, прикольный плагин
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #5
pihmih, там писать 5 минут
 

pihmih

Участник
Сообщения
512
Реакции
23
[CSS] Reverse Cash Flow
Вот еще прикольный плагин для мотивации кемперов имхо, чем больше ходишь, тем больше денег:
[CS:S] Money By Walking v2.1
Интересные плагины, но хотелось бы давать деньги, только слабому игроку. Не обязательно его командва должна выигрывать или проигрывать.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #8
pihmih, смотря как будет определятся слабость. Можно сделать по соотношению убийств/смертей за определенное количесто раундов.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #10
Поправьте если что не так:

PHP:
#include <sourcemod>

new Float:KDR[MAXPLAYERS+1] = 0, g_iAccount, Count_R[MAXPLAYERS+1];

public Plugin:myinfo = 
{
	name = "Cash for noobs",
	author = "R1KO",
	version = "1.0"
};

public OnPluginStart()
{
	g_iAccount = FindSendPropOffs("CCSPlayer", "m_iAccount");
	HookEvent("player_death", OnPlayerDeath);
	HookEvent("round_start", OnRoundStart);
}

public OnMapStart() Count_R = 0;

public OnPlayerDeath(Handle:event, const String:name[], bool:silent) 
{ 
	new client = GetClientOfUserId(GetEventInt(event, "userid")); 
	if (client > 0) 
	{
	Frags = GetClientFrags(client);
	Deaths = GetClientDeaths(client);
	if (Frags > 0 && Deaths >= 0) KDR[client] = Frags/Deaths;
	} 

}

public OnClientDisconnect() KDR[i] = 0;

public OnRoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid")); 
	if (client > 0) 
	{
		Count_R[client] ++;
		if(Count_R >= 3)
		{
			for (new i = 1; i <= MaxClients; i++)
			{
				if (IsClientInGame(i) && GetClientTeam(i) > 2)
				{
					if(KDR[i] =< 1)
					{
						new totalmoney = GetEntData(i, g_iAccount) + 1000;
                					SetEntData(i, g_iAccount, totalmoney);
					}
				}
			}
			Count_R[client]  = 0;
		}
	}
}
 
Последнее редактирование:

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
R1KO
1. Отсчитывай раунды для каждого игрока

2. EventHookMode_Pre необязательно

3. KDR - число с плавающей точкой, так и сравнивай float, а не int

4. Если игрок не умирал ни разу, но и не убивал никого (0:0), ему не дадут денег

5. clientid откуда

6. g_winnermoney откуда

7. Если игрок с плохим кдр выйдет, зайдет новый - кдр сохранится

8*. float думаю не нужно


*. Не уверен, если стоит звездочка
 
  • Мне нравится
Реакции: R1KO

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Неправильно

Добавлено через 11 минут
PHP:
#include <sourcemod>

// Количество денег, выдаваемое КАЖДЫЙ раунд, если у игрока КДР (Отношение фрагов к смертям) меньше 1.0
#define MONEY 350

new g_iAccount = -1;

public OnPluginStart()
{
	g_iAccount = FindSendPropOffs("CCSPlayer", "m_iAccount");

	HookEvent("round_start", Event_OnRoundStart);
}

public Event_OnRoundStart(Handle:event, const String:name[], bool:silent)
{
	for (new i = 1; i <= MaxClients; i++)
	{
		new frags = GetClientFrags(i), deaths = GetClientDeaths(i);
		if (frags > 0 && deaths > 0 && (frags / deaths) < 1.0)
		{
			SetEntData(i, g_iAccount, GetEntData(i, g_iAccount) + MONEY);
		}
	}
}
Есть одно но, если у игрока 0 фрагов и 999 смертей - денег он не получит, лишний код ) да и мудрить не охота
 
Последнее редактирование:

pihmih

Участник
Сообщения
512
Реакции
23
Неправильно

Добавлено через 11 минут
PHP:
#include <sourcemod>

// Количество денег, выдаваемое КАЖДЫЙ раунд, если у игрока КДР (Отношение фрагов к смертям) меньше 1.0
#define MONEY 350

new g_iAccount = -1;

public OnPluginStart()
{
	g_iAccount = FindSendPropOffs("CCSPlayer", "m_iAccount");

	HookEvent("round_start", Event_OnRoundStart);
}

public Event_OnRoundStart(Handle:event, const String:name[], bool:silent)
{
	for (new i = 1; i <= MaxClients; i++)
	{
		new frags = GetClientFrags(i), deaths = GetClientDeaths(i);
		if (frags > 0 && deaths > 0 && (frags / deaths) < 1.0)
		{
			SetEntData(i, g_iAccount, GetEntData(i, g_iAccount) + MONEY);
		}
	}
}
Есть одно но, если у игрока 0 фрагов и 999 смертей - денег он не получит, лишний код ) да и мудрить не охота
Ошибка:
L 07/12/2013 - 18:16:01: [SM] Native "GetClientFrags" reported: Client 1 is not in game
L 07/12/2013 - 18:16:01: [SM] Displaying call stack trace for plugin "money.smx":
L 07/12/2013 - 18:16:01: [SM] [0] Line 19, E:\server\server\cstrike\addons\sourcemod\scripting\money::Event_OnRoundStart()
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #15
pihmih, вот
PHP:
#include <sourcemod>

// Количество денег, выдаваемое КАЖДЫЙ раунд, если у игрока КДР (Отношение фрагов к смертям) меньше 1.0
#define MONEY 350

new g_iAccount = -1;

public OnPluginStart()
{
    g_iAccount = FindSendPropOffs("CCSPlayer", "m_iAccount");

    HookEvent("round_start", Event_OnRoundStart);
}

public Event_OnRoundStart(Handle:event, const String:name[], bool:silent)
{
    for (new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i))
        {
            new frags = GetClientFrags(i), deaths = GetClientDeaths(i);
            if (frags > 0 && deaths > 0 && (frags / deaths) < 1.0)
            {
                SetEntData(i, g_iAccount, GetEntData(i, g_iAccount) + MONEY);
            }
        }
    }
}
 
Сверху Снизу