Ищу плагины для cs go

Статус
В этой теме нельзя размещать новые ответы.

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #21
Так в конце же подписал он, что так не стоит делать, а сделать надо &&
Почему бы тогда сразу не сделать правильно?


AMD,
& - это побитовое сравнение. Тебе оно нужно при сравнении админ флага.
&& - логическое И (условие выполнится только когда на обоих входах правда)
|| - логическое ИЛИ (условие выполнится только когда хотя бы на одном из входов правда)
 

AMD

Участник
Сообщения
180
Реакции
18
Сейчас проблема в другом, дело в том что:
1. Мне нужно сделать таймер на выдачу гранат, точно также как с хп и ар, выдавать в зависимости от флага, допустим админу 20 сек, игроку 30 сек.
2. Далее ситуация складывается так что если игрок остался жив и у него есть гранаты, то при спавне код выполняется ещё раз и всё что у игрока в арсенале дропается так-как выдается по новой, получается нужно каждый раз когда происходит событие Round_End забирать или как то обнулять гранаты игрока.

Я пытаюсь как нибуть сделать таймер но у меня не получается, использую это:
PHP:
native Handle:CreateTimer(Float:interval, Timer:func, any:data=INVALID_HANDLE, flags=0);

Только не смейтесь, я и так пытался:
PHP:
CreateTimer(15, Delay_gr);

public Action:Delay_gr(Handle:timer) 
{
	public Event_HeGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
	{
		new client = GetClientOfUserId(GetEventInt(event, "userid"));
		if(client > 0 && IsPlayerAlive(client))
		{
			GivePlayerItem(client, "weapon_hegrenade");
			if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната");
		}
	}
}

И так:
PHP:
new Handle:wS_Timer[MAXPLAYERS+1];

PHP:
public OnPluginStart() 
{
	wS_Timer[client] = CreateTimer(15.0, wS_Hello, client);
}

PHP:
public Event_HeGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		public Action:wS_Hello(Handle:timer, any:client)
		{
			GivePlayerItem(client, "weapon_hegrenade");
			if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната");
		}
	}
}

PHP:
public OnClientDisconnect(client) 
{ 
     if (wS_Timer[client] != INVALID_HANDLE) 
     { 
         KillTimer(wS_Timer[client]); 
         wS_Timer[client] = INVALID_HANDLE; 
     } 
}

Вот мой полный код что имею сейчас:
PHP:
#pragma semicolon 1
#include <sourcemod>
#include <sdktools_functions>

new Handle:g_Msg;

public OnPluginStart() 
{
	g_Msg = CreateConVar("sm_grenade_msg", "1", "Message On/Off", FCVAR_NOTIFY, true, 0.0, true, 1.0);
	HookEvent("player_spawn", Event_OnPlayerSpawn, EventHookMode_PostNoCopy);
	HookEvent("hegrenade_detonate", Event_HeGrenadeDetonate);
	HookEvent("flashbang_detonate", Event_FlashBangDetonate);
	HookEvent("smokegrenade_detonate", Event_SmokeGrenadeDetonate);
	HookEvent("decoy_detonate", Event_DecoyGrenadeDetonate);
	HookEvent("molotov_detonate", Event_MolotovGrenadeDetonate);
}

public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
    new client = GetClientOfUserId(GetEventInt(event, "userid")), value_hp, value_armor;
	if (client > 0 && IsPlayerAlive(client)) 
    { 
        if (GetUserFlagBits(client) & ADMFLAG_ROOT) 
        {  
            value_hp = 250;  
            value_armor = 100;  
        }  
        else  
        {  
            value_hp = 200;  
            value_armor = 50;  
        } 
		GivePlayerItem(client, "weapon_hegrenade"); 
        GivePlayerItem(client, "weapon_flashbang"); 
        GivePlayerItem(client, "weapon_smokegrenade"); 
		GivePlayerItem(client, "weapon_decoy"); 
		GivePlayerItem(client, "weapon_molotov"); 
        SetEntProp(client, Prop_Send, "m_iHealth", value_hp);
		SetEntProp(client, Prop_Send, "m_ArmorValue", value_armor);
        if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM]\x03 Получены гранаты"); 
    } 
}

public Event_HeGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		GivePlayerItem(client, "weapon_hegrenade");
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната");
	}
}

public Event_FlashBangDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		GivePlayerItem(client, "weapon_flashbang");
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена FLASHBANG граната");
	}
}

public Event_SmokeGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		GivePlayerItem(client, "weapon_smokegrenade");
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена SMOKE граната");
	}
}

public Event_DecoyGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		GivePlayerItem(client, "weapon_decoy");
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена DECOY граната");
	}
}

public Event_MolotovGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		GivePlayerItem(client, "weapon_molotov");
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена MOLOTOV граната");
	}
}

99% что без вашей помощи у меня не получится, я имею кое какое понятие об этом и об программировании в целом, но не выходит у меня(

Выручите рябят пожалуйста(

Добавлено через 3 минуты
Почему бы тогда сразу не сделать правильно?


AMD,
& - это побитовое сравнение. Тебе оно нужно при сравнении админ флага.
&& - логическое И (условие выполнится только когда на обоих входах правда)
|| - логическое ИЛИ (условие выполнится только когда хотя бы на одном из входов правда)

У меня так сделано.
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #23
AMD,
PHP:
public OnPluginStart()  
{ 
	HookEvent("hegrenade_detonate", Event_HeGrenadeDetonate); 
}

public Event_HeGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
	new client = GetClientOfUserId(GetEventInt(event, "userid")); 
	if(client > 0 && IsPlayerAlive(client)) 
	{ 
		CreateTimer(15.0, GiveHE, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната"); 
	} 
}

public Action:GiveHE(Handle:hTimer, any:UserId)  
{
	new client = GetClientOfUserId(UserId); 
	if(client && IsPlayerAlive(client)) 
	{
		GivePlayerItem(client, "weapon_hegrenade"); 
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната"); 
	} 
}

А еще лучше напиши полностью что тебе нужно сделать, т.к. у меня нет времени листать тему и искать кусочки ТЗ.
 
  • Мне нравится
Реакции: AMD

AMD

Участник
Сообщения
180
Реакции
18
R1KO,
PHP:
#pragma semicolon 1
#include <sourcemod>
#include <sdktools_functions>

new Handle:g_Msg;

public OnPluginStart() 
{
	g_Msg = CreateConVar("sm_grenade_msg", "1", "Message On/Off", FCVAR_NOTIFY, true, 0.0, true, 1.0);
	HookEvent("player_spawn", Event_OnPlayerSpawn);
	HookEvent("hegrenade_detonate", Event_HeGrenadeDetonate);
	HookEvent("flashbang_detonate", Event_FlashBangDetonate);
	HookEvent("smokegrenade_detonate", Event_SmokeGrenadeDetonate);
	HookEvent("decoy_detonate", Event_DecoyGrenadeDetonate);
	HookEvent("molotov_detonate", Event_MolotovGrenadeDetonate);
}

public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
    new client = GetClientOfUserId(GetEventInt(event, "userid")), value_hp, value_armor;
	if (client > 0 && IsPlayerAlive(client)) 
    { 
        if (GetUserFlagBits(client) & ADMFLAG_ROOT) 
        {  
            value_hp = 250;  
            value_armor = 100;  
        }  
        else  
        {  
            value_hp = 200;  
            value_armor = 50;  
        } 
		GivePlayerItem(client, "weapon_hegrenade"); 
        GivePlayerItem(client, "weapon_flashbang"); 
        GivePlayerItem(client, "weapon_smokegrenade"); 
		GivePlayerItem(client, "weapon_decoy"); 
		GivePlayerItem(client, "weapon_molotov"); 
        SetEntProp(client, Prop_Send, "m_iHealth", value_hp);
		SetEntProp(client, Prop_Send, "m_ArmorValue", value_armor);
        if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM]\x03 Получены гранаты"); 
    } 
}

public Event_HeGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		CreateTimer(15.0, GiveHE, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната");
	}
}

public Action:GiveHE(Handle:hTimer, any:UserId)  
{
    new client = GetClientOfUserId(UserId); 
    if(client && IsPlayerAlive(client)) 
    {
        GivePlayerItem(client, "weapon_hegrenade"); 
        if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната"); 
    } 
}

public Event_FlashBangDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		CreateTimer(15.0, GiveFL, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена FLASHBANG граната");
	}
}

public Action:GiveFL(Handle:hTimer, any:UserId)  
{
    new client = GetClientOfUserId(UserId); 
    if(client && IsPlayerAlive(client)) 
    {
        GivePlayerItem(client, "weapon_flashbang");
        if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната"); 
    } 
}

public Event_SmokeGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		CreateTimer(15.0, GiveSM, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена SMOKE граната");
	}
}

public Action:GiveSM(Handle:hTimer, any:UserId)  
{
    new client = GetClientOfUserId(UserId); 
    if(client && IsPlayerAlive(client)) 
    {
        GivePlayerItem(client, "weapon_smokegrenade");
        if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната"); 
    } 
}

public Event_DecoyGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		CreateTimer(15.0, GiveDC, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена DECOY граната");
	}
}

public Action:GiveDC(Handle:hTimer, any:UserId)  
{
    new client = GetClientOfUserId(UserId); 
    if(client && IsPlayerAlive(client)) 
    {
        GivePlayerItem(client, "weapon_decoy");
        if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната"); 
    } 
}

public Event_MolotovGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		CreateTimer(15.0, GiveML, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена MOLOTOV граната");
	}
}

public Action:GiveML(Handle:hTimer, any:UserId)  
{
    new client = GetClientOfUserId(UserId); 
    if(client && IsPlayerAlive(client)) 
    {
        GivePlayerItem(client, "weapon_molotov");
        if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната"); 
    } 
}

1. Простым игрокам выдавать гранаты через 30 сек, игрокам с флагами допустим ROOT через 15 сек, важно чтобы для каждой гранаты была возможность прописать отдельный флаг.

2. Когда игрок который выжил в предидущем раунде спавнется в следующем то имеющиеся у него гранаты дропаются из-за того что выдаются новые, нужно как то исправить.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #25
1. При создании флага проверяй флаги игрока.
2. Дроп всех гранат:
PHP:
// Чтобы удалить гранаты пишешь:
RemoveNades(iClient);



// В конец плагина вставляешь:

stock RemoveNades(iClient)
{
	while (RemoveWeaponBySlot(iClient, 3)) {}
}

stock bool:RemoveWeaponBySlot(iClient, slot)
{
	new entity_index = GetPlayerWeaponSlot(iClient, slot);
	if (entity_index > 0)
	{
		RemovePlayerItem(iClient, entity_index);
		AcceptEntityInput(entity_index, "Kill");
		return true;
	}
	return false;
}
 
  • Мне нравится
Реакции: AMD

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
AlmazON, почему у тебя в последнем коде || ???
Вы что, народ?! Сам исправит, поэксперементирует, я же написал об этом. Мне уже уходить надо было, а не коды переписывать. К тому же, то полностью действующий код!
AlmazON только все равно это не верно, надо только одну &.
Поясню:
& = and = И
ll = или
Эт кто такой бред писал? Основы основ не читали?
& - это побитовое сравнение. Тебе оно нужно при сравнении админ флага.
&& - логическое И (условие выполнится только когда на обоих входах правда)
|| - логическое ИЛИ (условие выполнится только когда хотя бы на одном из входов правда)
Другое дело!
Оффтоп
 

AMD

Участник
Сообщения
180
Реакции
18
R1KO, Проверки на флаг сделал, обнуление не работает, ещё заметил что если игрок бросил гранату, и подобрал чужую то через устоновленое таймером время ему дадут ещё гранату, а та которая у него была в арсенале, выпадет, нужно останавливать таймер если игрок поднял гранату, и запускать если бросил, в данном случаи таймер запускается только тогда когда граната взорвется.
PHP:
#pragma semicolon 1
#include <sourcemod>
#include <sdktools_functions>

new Handle:g_Msg;

RemoveNades(iClient);

public OnPluginStart() 
{
	g_Msg = CreateConVar("sm_grenade_msg", "1", "Message On/Off", FCVAR_NOTIFY, true, 0.0, true, 1.0);
	HookEvent("player_spawn", Event_OnPlayerSpawn);
	HookEvent("hegrenade_detonate", Event_HeGrenadeDetonate);
	HookEvent("flashbang_detonate", Event_FlashBangDetonate);
	HookEvent("smokegrenade_detonate", Event_SmokeGrenadeDetonate);
	HookEvent("decoy_detonate", Event_DecoyGrenadeDetonate);
	HookEvent("molotov_detonate", Event_MolotovGrenadeDetonate);
}

public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
    new client = GetClientOfUserId(GetEventInt(event, "userid")), value_hp, value_armor;
	if (client > 0 && IsPlayerAlive(client)) 
    { 
        if (GetUserFlagBits(client) & ADMFLAG_ROOT) 
        {  
            value_hp = 250;  
            value_armor = 100;  
        }  
        else  
        {  
            value_hp = 200;  
            value_armor = 50;  
        } 
		GivePlayerItem(client, "weapon_hegrenade"); 
        GivePlayerItem(client, "weapon_flashbang"); 
        GivePlayerItem(client, "weapon_smokegrenade"); 
		GivePlayerItem(client, "weapon_decoy"); 
		GivePlayerItem(client, "weapon_molotov"); 
        SetEntProp(client, Prop_Send, "m_iHealth", value_hp);
		SetEntProp(client, Prop_Send, "m_ArmorValue", value_armor);
        if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM]\x03 Получены гранаты"); 
    } 
}

public Event_HeGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		if (GetUserFlagBits(client) & ADMFLAG_ROOT) 
		{  
			CreateTimer(10.0, GiveHE, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		}  
		else  
		{  
			CreateTimer(20.0, GiveHE, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		} 
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната");
	}
}

public Action:GiveHE(Handle:hTimer, any:UserId)  
{
    new client = GetClientOfUserId(UserId); 
    if(client && IsPlayerAlive(client)) 
    {
        GivePlayerItem(client, "weapon_hegrenade"); 
        if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната"); 
    } 
}

public Event_FlashBangDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		if (GetUserFlagBits(client) & ADMFLAG_ROOT) 
		{  
			CreateTimer(10.0, GiveFL, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		}  
		else  
		{  
			CreateTimer(20.0, GiveFL, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		} 
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена FLASHBANG граната");
	}
}

public Action:GiveFL(Handle:hTimer, any:UserId)  
{
    new client = GetClientOfUserId(UserId); 
    if(client && IsPlayerAlive(client)) 
    {
        GivePlayerItem(client, "weapon_flashbang");
        if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната"); 
    } 
}

public Event_SmokeGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		if (GetUserFlagBits(client) & ADMFLAG_ROOT) 
		{  
			CreateTimer(10.0, GiveSM, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		}  
		else  
		{  
			CreateTimer(20.0, GiveSM, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		} 
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена SMOKE граната");
	}
}

public Action:GiveSM(Handle:hTimer, any:UserId)  
{
    new client = GetClientOfUserId(UserId); 
    if(client && IsPlayerAlive(client)) 
    {
        GivePlayerItem(client, "weapon_smokegrenade");
        if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната"); 
    } 
}

public Event_DecoyGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		if (GetUserFlagBits(client) & ADMFLAG_ROOT) 
		{  
			CreateTimer(10.0, GiveDC, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		}  
		else  
		{  
			CreateTimer(20.0, GiveDC, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		} 
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена DECOY граната");
	}
}

public Action:GiveDC(Handle:hTimer, any:UserId)  
{
    new client = GetClientOfUserId(UserId); 
    if(client && IsPlayerAlive(client)) 
    {
        GivePlayerItem(client, "weapon_decoy");
        if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната"); 
    } 
}

public Event_MolotovGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(client > 0 && IsPlayerAlive(client))
	{
		if (GetUserFlagBits(client) & ADMFLAG_ROOT) 
		{  
			CreateTimer(10.0, GiveML, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		}  
		else  
		{  
			CreateTimer(20.0, GiveML, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		} 
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена MOLOTOV граната");
	}
}

public Action:GiveML(Handle:hTimer, any:UserId)  
{
    new client = GetClientOfUserId(UserId); 
    if(client && IsPlayerAlive(client)) 
    {
        GivePlayerItem(client, "weapon_molotov");
        if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната"); 
    } 
}

stock RemoveNades(iClient)
{
    while (RemoveWeaponBySlot(iClient, 3)) {}
}

stock bool:RemoveWeaponBySlot(iClient, slot)
{
    new entity_index = GetPlayerWeaponSlot(iClient, slot);
    if (entity_index > 0)
    {
        RemovePlayerItem(iClient, entity_index);
        AcceptEntityInput(entity_index, "Kill");
        return true;
    }
    return false;
}
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
if (GetUserFlagBits(client) & ADMFLAG_ROOT) 
        {  
            CreateTimer(10.0, GiveHE, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
        }  
        else  
        {  
            CreateTimer(20.0, GiveHE, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
        }
Какая ресурсоёмкая и неоптимизированная организация...
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #31
AlmazON, я сейчас всё сделаю. Не трать время.


AMD, Тебе делать обчный игрок/админ (по флагу) или еще по разным флагам?
 

AMD

Участник
Сообщения
180
Реакции
18
Float для таймеров в самый раз. Аналогия c value_XXX.

PHP:
public Event_HeGrenadeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event, "userid")), Float:time_he;
	if(client > 0 && IsPlayerAlive(client))
	{
		if (GetUserFlagBits(client) & ADMFLAG_ROOT) 
		{  
			time_he = 10.0;
		}  
		else  
		{  
			time_he = 20.0;
		}
		CreateTimer(time_he, GiveHE, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE);
		if(GetConVarBool(g_Msg)) PrintToChat(client, "\x01\x05[SM] \x03Получена HE граната");
	}
}

Посмотрите так?

Добавлено через 6 минут
AlmazON, я сейчас всё сделаю. Не трать время.


AMD, Тебе делать обчный игрок/админ (по флагу) или еще по разным флагам?

Вот я выше написал, точно не уверен но вроде верно, мне желательно по разным флагам.

Проблема с удалением гранат если игрок выжил, и остановкой таймера когда игрок подымает чужую гранату, остаётся не решёным
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #33
Пробуй.
 

Вложения

  • 35.sp
    7.8 КБ · Просмотры: 16
  • 35.smx
    6.7 КБ · Просмотры: 3
  • Мне нравится
Реакции: AMD

R1KO

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

AMD

Участник
Сообщения
180
Реакции
18

Когда игрок умирает, далее в новом раунде спанится всё работает прекрасно, но если игрок выжил, то в новом раунде у него из арсенала дропнется молотов, при этом в арсенале останется не 5 а 4 гранаты, если бросить любую из гранат то освободится место для молотова и его можно подобрать, слотов под гранаты по прежнему 4 и одна выкинутая запускает таймер, как только проходит таймер и происходит выдача, то граната тупо выбрасывается как молотов в начале раунда, и так можно делать бесконечно, использовать любую гранату освобождая слот, на её место поднимать дропнутую, потом происходит выдача и она тупо не влезает.

P.S Квар на кол-во гранат в конфиге мода = 5.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #37
AMD, при каждом спавне должны выбрасываться все гранаты. Разве что в кс го не та слоты идут
 

R1KO

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

AMD

Участник
Сообщения
180
Реакции
18

Может посмотришь этот код:
https://forums.alliedmods.net/showthread.php?p=1796153
Плагин позволяет настраивать гранаты как угодно любое колличество, мб там есть код который можно применить для кс го.

P.S Там молотов как то иначе сделан, ни как все остальные гранаты.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу