Написание плагина проверяющий деньги игроков

hanson

Участник
Сообщения
303
Реакции
15
Здравствуйте.

У меня возникла такая проблема, которую я уже долго не могу решить. Прошу написать (бесплатно или за плату) плагин, который будет работать следующим образом: В первом раунде он будет проверять деньги всех игроков, и, если это значение не равно "mp_startmoney", то изменять это значение на "mp_startmoney". Также в конце раунда плагин запоминает сколько у игроков денег на момент конца раунда (когда roundtime=0:00) и в начале следующего раунда если кол-во и денег не равно тому значению которое было в конце прошлого раунда, то изменить кол-во на то которое было в конце предыдущего. Выдача денег должна происходить через 1 секунду после респауа игроков.

Заранее спасибо

Добавлено через 3 минуты
1 раунд. Если "money" не равен "stratmoney", то изменить "money" на "stratmoney". В конце раунда запомнить чему равно "money" и присвоить это значение к "endmoney".
2 раунд. Если "money" не равен "endmoney", то изменить "money" на "endmoney"

Надеюсь понятно объяснил
 
Последнее редактирование:

FBZA

Участник
Сообщения
58
Реакции
8
Ты же понимаешь, что у всех игроков разное кол-во денег?
Оставлять большее значение из проверенного или меньшее?
Или же можно сделать, что в первом раунде 16000, во втором 13000, в третьем 10000 и т.д.
 

hanson

Участник
Сообщения
303
Реакции
15
FBZA, ни большее и ни меньшее. Записывать нужно кол-во денег всех игроков и выдавать определенному игроку только деньги опеделенного игрока.
 

FBZA

Участник
Сообщения
58
Реакции
8
Ааааааааа, вон оно что, я думал всей тиме определенное кол-во денег

Добавлено через 1 час 28 минут
Не понял, а почему именно через 1 секунду после начала раунда?

Добавлено через 1 час 31 минуту
На, только учти, что у тебя люди постепенно вообще без денег останутся.
Лучше сделать так, чтобы еще каждый раунд по 1-3к к предыдущему числу добавлялось.
PHP:
#include <sourcemod>

new g_iAccount = -1;
new g_OldAccountValue[MAXPLAYERS+1];

public Plugin:myinfo = 
{
    name = "Last Round Money",
    version = "1.0",
}

public OnMapStart()
{
    for(new i = 1; i <= MaxClients; ++i)
    g_OldAccountValue[i] = GetConVarInt(FindConVar("mp_startmoney"));
}

public OnPluginStart()
{
    g_iAccount = FindSendPropOffs("CCSPlayer", "m_iAccount");
    HookEvent("round_end", End, EventHookMode_Pre);
    HookEvent("player_spawn", Spawn);
}

public Action:End(Handle:event, const String:name[], bool:dontBroadcast)
{
    for(new i = 1; i <= MaxClients; ++i)
{
    if(IsClientInGame(i))
    {
        g_OldAccountValue[i] = GetEntData(i, g_iAccount);
    }
}
}

public Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new i = GetClientOfUserId(GetEventInt(event, "userid"));
    if(IsClientInGame(i)) SetEntData(i, g_iAccount, g_OldAccountValue[i]);
}
 
Последнее редактирование:

R1KO

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

new g_iAccount = -1,
	g_iStartMoney,
	bool:g_bFirstRound;
new g_OldAccountValue[MAXPLAYERS+1];

public Plugin:myinfo = 
{
	name = "Last Round Money",
	version = "1.0",
}

public OnPluginStart()
{
	g_iAccount = FindSendPropOffs("CCSPlayer", "m_iAccount");
	HookEvent("round_end", End);
	HookEvent("player_spawn", Spawn);
	
	new Handle:hCvar = FindConVar("mp_startmoney");
	g_iStartMoney = GetConVarInt(hCvar);
	HookConVarChange(hCvar, OnStartMoneyChange);
}

public OnMapStart()
{
	g_bFirstRound = true;
}

public OnStartMoneyChange(Handle:hCvar, const String:oldValue[], const String:newValue[])	g_iStartMoney = GetConVarInt(hCvar);

public End(Handle:event, const String:name[], bool:dontBroadcast)
{
	g_bFirstRound = false;
	for(new i = 1; i <= MaxClients; ++i)
	{
		if(IsClientInGame(i))
		{
			g_OldAccountValue[i] = GetEntData(i, g_iAccount);
		}
	}
}

public Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new i = GetClientOfUserId(GetEventInt(event, "userid"));
    if(g_bFirstRound && g_OldAccountValue[i] != g_iStartMoney)
	{
		SetEntData(i, g_iAccount, g_iStartMoney);
	}
	else if(g_OldAccountValue[i] != GetEntData(i, g_iAccount))
	{
		SetEntData(i, g_iAccount, g_OldAccountValue[i]);
	}
}
P.S. Компилировать не пробывал
 

FBZA

Участник
Сообщения
58
Реакции
8
PHP:
#pragma semicolon 1
#include <sourcemod>

new g_iAccount = -1,
    g_iStartMoney,
    bool:g_bFirstRound;
new g_OldAccountValue[MAXPLAYERS+1];

public Plugin:myinfo = 
{
    name = "Last Round Money",
    version = "1.0",
}

public OnPluginStart()
{
    g_iAccount = FindSendPropOffs("CCSPlayer", "m_iAccount");
    HookEvent("round_end", End);
    HookEvent("player_spawn", Spawn);
    
    new Handle:hCvar = FindConVar("mp_startmoney");
    g_iStartMoney = GetConVarInt(hCvar);
    HookConVarChange(hCvar, OnStartMoneyChange);
}

public OnMapStart()
{
    g_bFirstRound = true;
}

public OnStartMoneyChange(Handle:hCvar, const String:oldValue[], const String:newValue[])    g_iStartMoney = GetConVarInt(hCvar);

public End(Handle:event, const String:name[], bool:dontBroadcast)
{
    g_bFirstRound = false;
    for(new i = 1; i <= MaxClients; ++i)
    {
        if(IsClientInGame(i))
        {
            g_OldAccountValue[i] = GetEntData(i, g_iAccount);
        }
    }
}

public Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new i = GetClientOfUserId(GetEventInt(event, "userid"));
    if(g_bFirstRound && g_OldAccountValue[i] != g_iStartMoney)
    {
        SetEntData(i, g_iAccount, g_iStartMoney);
    }
    else if(g_OldAccountValue[i] != GetEntData(i, g_iAccount))
    {
        SetEntData(i, g_iAccount, g_OldAccountValue[i]);
    }
}
P.S. Компилировать не пробывал
Компилируется нормально
 

hanson

Участник
Сообщения
303
Реакции
15
FBZA, через секунду, потому что у меня через 1,1 выдаются деньги випам. И еще вопрос. Эта процедура происходит каждый раунд или только во втором?
 
Сверху Снизу