[Zombie:Reloaded] После использования kill человек в следующем раунде теряет все деньги

★Сириус★

Участник
Сообщения
743
Реакции
197
Ребят, за определенную сумму, может кто-нибудь написать плагин на Zombie:Reloaded для CS:S, суть плагина следующая.
Если humans (выживший) прописывает команду kill (часто люди прописывают чтобы их не съели зомби), этот человек в следующем раунде теряет сумму денег прописанную в определенном cvar.
Например плагин имеет cvar: sm_kill_money 16000, тогда у игрока в следующем раунде вычитается эта сумма денег и в чате напишет ему: За использование команды kill в прошлом раунде, вы оштрафованы на 16000$
Таким образом, этот человек уже не сможет закупить оружие
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Пробуй
PHP:
#include <sourcemod>

new Handle:g_hMoney = INVALID_HANDLE;

new bool:Check[MAXPLAYERS + 1] = {false, ...};

new CVAR_Money = 0;

public OnPluginStart()
{
	g_hMoney = CreateConVar("sm_kill_money", "16000", "Укажите сумму денег, которая будет вычитаться");

	AddCommandListener(ACL_Kill, "kill");

	HookEvent("player_spawn", Event_OnPlayerSpawn);
}

public OnMapStart()
{
	CVAR_Money = GetConVarInt(g_hMoney);
}

public OnClientDisconnect(client)
{
	if (Check[client])
	{
		Check[client] = false;
	}
}

public Action:ACL_Kill(client, const String:name[], args)
{
	if (IsPlayerAlive(client))
	{
		Check[client] = true;
	}
}

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

	if (Check[client])
	{
		new money = GetEntProp(client, Prop_Send, "m_iAccount", 4);

		SetEntProp(client, Prop_Send, "m_iAccount", money <= CVAR_Money ? 0 : (money - CVAR_Money));

		Check[client] = false;

		PrintToChat(client, "За использование команды kill в прошлом раунде, вы оштрафованы на %d$", CVAR_Money);
	}
}
 

★Сириус★

Участник
Сообщения
743
Реакции
197
на zr есть квар такой zr_account_cashfill_value "12000", который каждый раунд выдает сумму указанную денег.
и соответственно твой вариант не работает

Добавлено через 58 секунд
в чат написало что я оштрафован, но не сняло денег, а может и сняло но потом снова восстановило

Добавлено через 7 минут
попробовал без мода Zombie:Reloaded, то все работает
 
Последнее редактирование:

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
★Сириус★
Попробуй так
PHP:
#include <sourcemod>

new Handle:g_hMoney = INVALID_HANDLE;

new bool:Check[MAXPLAYERS + 1] = {false, ...};

new CVAR_Money = 0;

public OnPluginStart()
{
	g_hMoney = CreateConVar("sm_kill_money", "16000", "Укажите сумму денег, которая будет вычитаться");

	AddCommandListener(ACL_Kill, "kill");

	HookEvent("player_spawn", Event_OnPlayerSpawn);
}

public OnMapStart()
{
	CVAR_Money = GetConVarInt(g_hMoney);
}

public OnClientDisconnect(client)
{
	if (Check[client])
	{
		Check[client] = false;
	}
}

public Action:ACL_Kill(client, const String:name[], args)
{
	if (IsPlayerAlive(client))
	{
		Check[client] = true;
	}
}

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

	if (Check[client])
	{
		CreateTimer(0.2, Timer, client);
	}
}

public Action:Timer(Handle:timer, any:client)
{
	if (IsClientInGame(client))
	{
		new money = GetEntProp(client, Prop_Send, "m_iAccount", 4);
		SetEntProp(client, Prop_Send, "m_iAccount", money <= CVAR_Money ? 0 : (money - CVAR_Money));

		Check[client] = false;

		PrintToChat(client, "За использование команды kill в прошлом раунде, вы оштрафованы на %d$", CVAR_Money);
	}
}
 

★Сириус★

Участник
Сообщения
743
Реакции
197
The End Is Near..., спасибо работает, только я не подумал, в моде есть автомагазин (автозакупка) и чел успевает закупиться до того как плагин вычтет деньги.
Вобщем ладно, спасибо за работу, то что я заказывал то есть в твоей версии.
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
★Сириус★
Попробуй так. Проверь, работает ли автозакупка
PHP:
#include <sourcemod>

new Handle:g_hMoney = INVALID_HANDLE;

new bool:Check[MAXPLAYERS + 1] = {false, ...};

new CVAR_Money = 0;

public OnPluginStart()
{
	g_hMoney = CreateConVar("sm_kill_money", "16000", "Укажите сумму денег, которая будет вычитаться");

	AddCommandListener(ACL_Kill, "kill");

	HookEvent("player_spawn", Event_OnPlayerSpawn);
}

public OnMapStart()
{
	CVAR_Money = GetConVarInt(g_hMoney);
}

public OnClientDisconnect(client)
{
	if (Check[client])
	{
		Check[client] = false;
	}
}

public Action:CS_OnBuyCommand(client, const String:weapon[])
{
	if (Check[client])
	{
		return Plugin_Handled;
	}

	return Plugin_Continue;
}

public Action:ACL_Kill(client, const String:name[], args)
{
	if (IsPlayerAlive(client))
	{
		Check[client] = true;
	}
}

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

	if (Check[client])
	{
		CreateTimer(0.2, Timer, client);
	}
}

public Action:Timer(Handle:timer, any:client)
{
	if (IsClientInGame(client))
	{
		new money = GetEntProp(client, Prop_Send, "m_iAccount", 4);
		SetEntProp(client, Prop_Send, "m_iAccount", money <= CVAR_Money ? 0 : (money - CVAR_Money));

		Check[client] = false;

		PrintToChat(client, "За использование команды kill в прошлом раунде, вы оштрафованы на %d$", CVAR_Money);
	}
}
 

★Сириус★

Участник
Сообщения
743
Реакции
197
The End Is Near..., все осталось также как и было

Добавлено через 12 минут
в общем поставил значение
C-подобный:
        CreateTimer([B][COLOR="Red"]0.1[/COLOR][/B], Timer, client);
и все стало норм, плагин стал успевать забрать деньги до автозакупки

Добавлено через 16 минут
а можно ли еще в плагин добавить условие, чтобы он работал только у живых humans, у zombie плагин не работал.
 
Последнее редактирование:

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • #8
Вот попробуй:
PHP:
#include <sourcemod>
#include <zombiereloaded>

new Handle:g_hMoney = INVALID_HANDLE;

new bool:Check[MAXPLAYERS + 1] = {false, ...};

new CVAR_Money = 0;

public OnPluginStart()
{
    g_hMoney = CreateConVar("sm_kill_money", "16000", "Укажите сумму денег, которая будет вычитаться");

    AddCommandListener(ACL_Kill, "kill");

    HookEvent("player_spawn", Event_OnPlayerSpawn);
}

public OnMapStart()
{
    CVAR_Money = GetConVarInt(g_hMoney);
}

public OnClientDisconnect(client)
{
    if (Check[client])
    {
        Check[client] = false;
    }
}

public Action:CS_OnBuyCommand(client, const String:weapon[])
{
    if (Check[client])
    {
        return Plugin_Handled;
    }

    return Plugin_Continue;
}

public Action:ACL_Kill(client, const String:name[], args)
{
    if (ZR_IsClientHuman(client) && IsPlayerAlive(client))
    {
        Check[client] = true;
    }
}

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

    if (Check[client])
    {
        CreateTimer(0.1, Timer, client);
    }
}

public Action:Timer(Handle:timer, any:client)
{
    if (IsClientInGame(client))
    {
        new money = GetEntProp(client, Prop_Send, "m_iAccount", 4);
        SetEntProp(client, Prop_Send, "m_iAccount", money <= CVAR_Money ? 0 : (money - CVAR_Money));

        Check[client] = false;

        PrintToChat(client, "За использование команды kill в прошлом раунде, вы оштрафованы на %d$", CVAR_Money);
    }
}
 

★Сириус★

Участник
Сообщения
743
Реакции
197
White Wolf, странно, в твоем варианте оружие успевает закупиться
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,336
Попробуйте заблокировать команду autobuy. Ведь она как раз отвечает за автозакупку, и когда check[client] пытается её использовать, возвращайте Plugin_Handled.
 

★Сириус★

Участник
Сообщения
743
Реакции
197
Может просто заблочить команду килл)))
нет, если бы я хотел сделать так, то не создавал данный запрос.

Еще так для справки, может кто не знает.
В контре есть еще одна консольная команда: explode - значение её точно такое же как kill
 

★Сириус★

Участник
Сообщения
743
Реакции
197
В Zombie:Reloaded есть квар который запрещает суицид
ну началось
я без вас этого не знаю как будто. читайте первый пост

Добавлено через 3 минуты
В общем закрывайте тему,
в целом мне помогли.
За что всем выражаю огромную благодарность,
а то начнется сейчас есть то, есть то, а еще есть то. и все это в стандартных функциях .......
Всем спасибо
 
Последнее редактирование:
Сверху Снизу