не давало денег на первом раунде а на следующих давало
#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 секунду.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); }
Ну тоесть нльзя что ли узнать при спавне какой раундИтак на 1 раунд задаётся стандартное значение денег всем. Далее - ничего, пока карта не сменится. ОффтопПлагин подгружать вручную нельзя!Это к автору VIP'а, я не в курсе, даёт эта штука или отбирает, что дало + нужно название include + значение VIP_MONEY, иначе не скомпилируется.
Выше - универсальное решение, по идее.
Не работает... =(Какой код? Выдачи кредитов? На это нужен форвард Action, либо сам плагин денег редактировать.
Я не пойму, в чём проблема решения выше? Не работает? Время побольше выставлялось или так и тестировалось?
*хрусь* *хрусь*О каком 1 раунде вообще речь? Разминочном или тот, что начинается, когда игроки заходят на новую карту? ОффтопКороче, информации "полно" - это надолго, поигрем в "угадайку".
Так и не понял, о чём идёт речь. Время выдачи самого VIP-статуса? Оно ни к чему для кода выше.выдаются привилегии согласно выставленному времени в файле настроек ядра
А перед этим нужно было включать телепата? ТС не уточнил, я так понял, что 1 раунд - это имеется ввиду сам разминочный и делал под него.от последней секунды до рестарта на первый раунд после разминки
Если возродится в этом времени рестарта, тоже нужно убирать деньги или нет смысла и это сделать сразу в 1 раунде после разминки?умерев или возродившись в которую
Можно узнать общий счет команды если он равен 0, то это и есть первый раунд, самый первый.Ну тоесть нльзя что ли узнать при спавне какой раунд
if(какойраунда == 1)
{
то код не идет
}
типа такого
Спасибо, постараюсь что то из этого вытащить. Если будут проблемы напишу)))Можно узнать общий счет команды если он равен 0, то это и есть первый раунд, самый первый.
[C++] First round - Pastebin.com дальше редактируешь под себя.
[C++] GetRound stock - Pastebin.com Версия от меня
@Azat777, не знаю что там проблемного может быть. я тебе дал функцию через которую мы можем получить все раунды.