Помогите сделать проверку

Azat777

Участник
Сообщения
23
Реакции
3
Хочу сделать проверку что бы випам не давало денег на первом раунде а на следующих давало

Скриптеры помогите сделать проверку

Если не та тему пожалуйста просто переместите тему)))
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
не давало денег на первом раунде а на следующих давало
PHP:
#define TIME_MONEY	0.5		//Время, через которое деньги у игрока меняются (по исходнику + 0.1).

new bool:g_bHook, g_iOffsetMoney, g_iStandartMoney;

public OnPluginStart()
{
	if ((g_iOffsetMoney = FindSendPropInfo("CCSPlayer", "m_iAccount")) < 1) SetFailState("Set money is not supported (failure 'CCSPlayer::m_iAccount' offset)!");
	decl Handle:h;
	HookConVarChange(h = FindConVar("mp_startmoney"), ChangeCvar_startmoney);
	g_iStandartMoney = GetConVarInt(h);
}

public ChangeCvar_startmoney(Handle:cvar, String:oldValue[], String:newValue[]) g_iStandartMoney = GetConVarInt(cvar);

public OnConfigsExecuted()
{
	if (!g_bHook)
	{
		g_bHook = true;
		HookEvent("player_spawn", Event_PlayerSpawn);
		HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);
	}
}

public Event_PlayerSpawn(Handle:event, String:name[], bool:dontBroadcast)
{
	CreateTimer(TIME_MONEY, SetMoneyStandart, GetEventInt(event, "userid"), TIMER_FLAG_NO_MAPCHANGE);
}

public Action:SetMoneyStandart(Handle:timer, any:userid)
{
	decl client;
	if ((client = GetClientOfUserId(userid))) SetEntData(client, g_iOffsetMoney, g_iStandartMoney, 4, true);
}

public Event_RoundEnd(Handle:event, String:name[], bool:dontBroadcast)
{
	g_bHook = false;
	UnhookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);
	UnhookEvent("player_spawn", Event_PlayerSpawn);
}
Первая строка: TIME_MONEY - подсчитать, сколько проходит времени от спавна до выдачи дополнительных денег и установить значение на большее на 0.1 секунду.
 

Azat777

Участник
Сообщения
23
Реакции
3
PHP:
#define TIME_MONEY    0.5        //Время, через которое деньги у игрока меняются (по исходнику + 0.1).

new bool:g_bHook, g_iOffsetMoney, g_iStandartMoney;

public OnPluginStart()
{
    if ((g_iOffsetMoney = FindSendPropInfo("CCSPlayer", "m_iAccount")) < 1) SetFailState("Set money is not supported (failure 'CCSPlayer::m_iAccount' offset)!");
    decl Handle:h;
    HookConVarChange(h = FindConVar("mp_startmoney"), ChangeCvar_startmoney);
    g_iStandartMoney = GetConVarInt(h);
}

public ChangeCvar_startmoney(Handle:cvar, String:oldValue[], String:newValue[]) g_iStandartMoney = GetConVarInt(cvar);

public OnConfigsExecuted()
{
    if (!g_bHook)
    {
        g_bHook = true;
        HookEvent("player_spawn", Event_PlayerSpawn);
        HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);
    }
}

public Event_PlayerSpawn(Handle:event, String:name[], bool:dontBroadcast)
{
    CreateTimer(TIME_MONEY, SetMoneyStandart, GetEventInt(event, "userid"), TIMER_FLAG_NO_MAPCHANGE);
}

public Action:SetMoneyStandart(Handle:timer, any:userid)
{
    decl client;
    if ((client = GetClientOfUserId(userid))) SetEntData(client, g_iOffsetMoney, g_iStandartMoney, 4, true);
}

public Event_RoundEnd(Handle:event, String:name[], bool:dontBroadcast)
{
    g_bHook = false;
    UnhookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);
    UnhookEvent("player_spawn", Event_PlayerSpawn);
}
Первая строка: TIME_MONEY - подсчитать, сколько проходит времени от спавна до выдачи дополнительных денег и установить значение на большее на 0.1 секунду.
Спасибо кончено за код.

но можно просто сюда поставить проверку что бы не срабатывало 1 раунд

if(VIP_IsClientFeatureUse(iClient, VIP_MONEY))
{
UTIL_GiveClientData(iClient, VIP_MONEY, m_iAccount);
}
 

Azat777

Участник
Сообщения
23
Реакции
3
Итак на 1 раунд задаётся стандартное значение денег всем. Далее - ничего, пока карта не сменится. ОффтопЭто к автору VIP'а, я не в курсе, даёт эта штука или отбирает, что дало + нужно название include + значение VIP_MONEY, иначе не скомпилируется.
Выше - универсальное решение, по идее.
Ну тоесть нльзя что ли узнать при спавне какой раунд

if(какойраунда == 1)
{
то код не идет
}

типа такого
 

Dreizehnt

Доминик
Сообщения
1,160
Реакции
798
Ооо, тоже нужно, игроки соблазняются под угрозой бана, сейчас буду проверять))
P.S. Время выдачи привилегий ставится здесь: /cfg/vip/vip_core.cfg, ели кому-то нужно узнать где вообще выставляется.
 

Dreizehnt

Доминик
Сообщения
1,160
Реакции
798
Какой код? Выдачи кредитов? На это нужен форвард Action, либо сам плагин денег редактировать.
Я не пойму, в чём проблема решения выше? Не работает? Время побольше выставлялось или так и тестировалось?
Не работает... =(
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755

Dreizehnt

Доминик
Сообщения
1,160
Реакции
798
О каком 1 раунде вообще речь? Разминочном или тот, что начинается, когда игроки заходят на новую карту? Оффтоп
*хрусь* *хрусь*
Есть модуль для ядра VIP от R1ko, который выдаёт вип-игрокам деньги, указанные в файле настройки групп groups.ini, выдаются привилегии согласно выставленному времени в файле настроек ядра (vip_core.cfg) с минимальным значением 0.1 (по стандарту стоит 1 секунда). Можно деньги как прибавлять игроку, так и строго указывать сумму при возрождении. В CS:GO разминку выключить нельзя, она будет всегда, даже если все значения в 0. От того и боль. При разминке деньги максимальные и не прибавляются после смерти и возрождении, премиум не задействован. После окончания разминки. существует "ямка времени", от последней секунды до рестарта на первый раунд после разминки, умерев или возродившись в которую (как через консоль, так и посредством убийства), вип-игроки получают дополнительные деньги на первом раунде, а такого быть не должно. Те вип-игроки, которые умерли нормально, не попадая в яму, возрождаются с серверным значением для всех, как собственно и должно происходить. "Яму времени" обхитрить невозможно, как и игроков, которые сознательно "килляются" для получение денежек, тут бы какой-нибудь "стопер" на первый раунд для модуля....
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
выдаются привилегии согласно выставленному времени в файле настроек ядра
Так и не понял, о чём идёт речь. Время выдачи самого VIP-статуса? Оно ни к чему для кода выше.
от последней секунды до рестарта на первый раунд после разминки
А перед этим нужно было включать телепата? ТС не уточнил, я так понял, что 1 раунд - это имеется ввиду сам разминочный и делал под него.
умерев или возродившись в которую
Если возродится в этом времени рестарта, тоже нужно убирать деньги или нет смысла и это сделать сразу в 1 раунде после разминки?
 

SlipknotRU

Участник
Сообщения
35
Реакции
14
Ну тоесть нльзя что ли узнать при спавне какой раунд

if(какойраунда == 1)
{
то код не идет
}

типа такого
Можно узнать общий счет команды если он равен 0, то это и есть первый раунд, самый первый.

[C++] First round - Pastebin.com дальше редактируешь под себя.

[C++] GetRound stock - Pastebin.com Версия от меня
 
Последнее редактирование:

Azat777

Участник
Сообщения
23
Реакции
3
Можно узнать общий счет команды если он равен 0, то это и есть первый раунд, самый первый.

[C++] First round - Pastebin.com дальше редактируешь под себя.

[C++] GetRound stock - Pastebin.com Версия от меня
Спасибо, постараюсь что то из этого вытащить. Если будут проблемы напишу)))

P.S А они будут :D
 

SlipknotRU

Участник
Сообщения
35
Реакции
14
@Azat777, не знаю что там проблемного может быть. я тебе дал функцию через которую мы можем получить все раунды.
 

Azat777

Участник
Сообщения
23
Реакции
3
@Azat777, не знаю что там проблемного может быть. я тебе дал функцию через которую мы можем получить все раунды.

Все сделал спасибо)))
--- Добавлено позже ---
@SlipknotRU, Слушай а не подскажешь как узнать есть ли у человека в руке например мед шприц

и поставить сюда проверку если есть шприц то не выдавать

Оффтоп
 
Последнее редактирование:
Сверху Снизу