Невидимость , правка плагина

smoke96

Участник
Сообщения
1,134
Реакции
175
Вот есть готовы код http://hlmod.ru/forum/showpost.php?p=46478&postcount=2 но не пойму как сделать так (я хочу переделать под шоп фроза) чтобы игрок в любое время мог включить невидимость а не только при спавне . Помогите :) И чтобы был таймер )
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
B1g, там итак всё есть, тебе нужно лишь:
PHP:
HookEvent("player_spawn", Event_PlayerSpawn);
меняешь на/добавляешь регистрацию новой команды:
PHP:
RegConsoleCmd("sm_inviz", PlayerInvizion);
а
PHP:
public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
на
PHP:
public Action:PlayerInvizion(client, args)
Тебе нужно и при спавне, и командой, что ль?
 

smoke96

Участник
Сообщения
1,134
Реакции
175
B1g, там итак всё есть, тебе нужно лишь:
PHP:
HookEvent("player_spawn", Event_PlayerSpawn);
меняешь на/добавляешь регистрацию новой команды:
PHP:
RegConsoleCmd("sm_inviz", PlayerInvizion);
а
PHP:
public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
на
PHP:
public Action:PlayerInvizion(client, args)
Тебе нужно и при спавне, и командой, что ль?

Только командой :)
 

smoke96

Участник
Сообщения
1,134
Реакции
175
Спасибо!

Добавлено через 14 минут
А подскажи вот , когда игрок включил !инвиз как сделать чтобы ему об этом сообщение написало , но только после написанной команды? А как время истекло тоже писало сообщение?
 
Последнее редактирование модератором:

Scarface_slv

Участник
Сообщения
222
Реакции
47
PHP:
#include <sdkhooks> 

new sm_invisibility_time; 
new Handle:g_hTimer[MAXPLAYERS+1];

public OnPluginStart() 
{ 
	RegConsoleCmd("sm_inviz", PlayerInvizion);   
	new Handle:Cvar = CreateConVar("sm_invisibility_time", "5", "Invisibility time"); 
	HookConVarChange(Cvar, InvisibilityTime);
	sm_invisibility_time = GetConVarInt(Cvar);	
	CloseHandle(Cvar);   
	HookEvent("player_death", Event_PlayerDeath);  
} 

public InvisibilityTime(Handle:cvar, const String:oldVal[], const String:newVal[]) sm_invisibility_time = GetConVarInt(cvar);	

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
	OnClientDisconnect(GetClientOfUserId(GetEventInt(event, "userid")));

public Action:PlayerInvizion(client, args)   
{ 
	if(client > 0 && IsPlayerAlive(client) && g_hTimer[client] == INVALID_HANDLE) 
    { 
		PrintToChat(client, "Невидимость включена"); 
		SetAlpha(client, 0); 
		SDKHook(target, SDKHook_PostThinkPost, OnPostThinkPost);
		g_hTimer[client] = CreateTimer(float(sm_invisibility_time), removeinvis, client); 
    } 
	return Plugin_Handled; 
} 

public Action:removeinvis(Handle:timer, any:client) 
{ 
	SetAlpha(client, 255); 
	PrintToChat(client, "Невидимость отключена"); 
	SDKUnhook(client, SDKHook_PostThinkPost, OnPostThinkPost);
	g_hTimer[client] = INVALID_HANDLE;	
} 

public OnClientDisconnect(client)
{
	if(g_hTimer[client] != INVALID_HANDLE)
	{
		KillTimer(g_hTimer[client]);
		g_hTimer[client] = INVALID_HANDLE;	
		SDKUnhook(client, SDKHook_PostThinkPost, OnPostThinkPost);
	}
}

SetAlpha(target, alpha) 
{         
    SetWeaponsAlpha(target,alpha); 
    SetEntityRenderMode(target, RENDER_TRANSCOLOR); 
    SetEntityRenderColor(target, 255, 255, 255, alpha);     
} 

SetWeaponsAlpha(target, alpha) 
{ 
	if(IsPlayerAlive(target)) 
    { 
		new m_hMyWeapons = FindSendPropOffs("CBasePlayer", "m_hMyWeapons");     
		for(new i = 0, weapon; i < 47; i += 4) 
        { 
			weapon = GetEntDataEnt2(target, m_hMyWeapons + i); 
			if(weapon > -1 ) 
            { 
				SetEntityRenderMode(weapon, RENDER_TRANSCOLOR); 
				SetEntityRenderColor(weapon, 255, 255, 255, alpha); 
            } 
		} 
    } 
}  

public OnPostThinkPost(client) SetEntProp(client, Prop_Send, "m_iAddonBits", 0);
 
Последнее редактирование:

-_-Ecarus-_-

Участник
Сообщения
76
Реакции
2
PHP:
#include <sdkhooks>

new sm_invisibility_time;
new Handle:g_hTimer[MAXPLAYERS+1];

public OnPluginStart()
{
    RegConsoleCmd("sm_inviz", PlayerInvizion);  
    new Handle:Cvar = CreateConVar("sm_invisibility_time", "5", "Invisibility time");
    HookConVarChange(Cvar, InvisibilityTime);
    sm_invisibility_time = GetConVarInt(Cvar);   
    CloseHandle(Cvar);  
    HookEvent("player_death", Event_PlayerDeath); 
}

public InvisibilityTime(Handle:cvar, const String:oldVal[], const String:newVal[]) sm_invisibility_time = GetConVarInt(cvar);   

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
    OnClientDisconnect(GetClientOfUserId(GetEventInt(event, "userid")));

public Action:PlayerInvizion(client, args)  
{
    if(client > 0 && IsPlayerAlive(client) && g_hTimer[client] == INVALID_HANDLE)
    {
        PrintToChat(client, "Невидимость включена");
        SetAlpha(client, 0);
        SDKHook(target, SDKHook_PostThinkPost, OnPostThinkPost);
        g_hTimer[client] = CreateTimer(float(sm_invisibility_time), removeinvis, client);
    }
    return Plugin_Handled;
}

public Action:removeinvis(Handle:timer, any:client)
{
    SetAlpha(client, 255);
    PrintToChat(client, "Невидимость отключена");
    SDKUnhook(client, SDKHook_PostThinkPost, OnPostThinkPost);
    g_hTimer[client] = INVALID_HANDLE;   
}

public OnClientDisconnect(client)
{
    if(g_hTimer[client] != INVALID_HANDLE)
    {
        KillTimer(g_hTimer[client]);
        g_hTimer[client] = INVALID_HANDLE;   
        SDKUnhook(client, SDKHook_PostThinkPost, OnPostThinkPost);
    }
}

SetAlpha(target, alpha)
{        
    SetWeaponsAlpha(target,alpha);
    SetEntityRenderMode(target, RENDER_TRANSCOLOR);
    SetEntityRenderColor(target, 255, 255, 255, alpha);    
}

SetWeaponsAlpha(target, alpha)
{
    if(IsPlayerAlive(target))
    {
        new m_hMyWeapons = FindSendPropOffs("CBasePlayer", "m_hMyWeapons");    
        for(new i = 0, weapon; i < 47; i += 4)
        {
            weapon = GetEntDataEnt2(target, m_hMyWeapons + i);
            if(weapon > -1 )
            {
                SetEntityRenderMode(weapon, RENDER_TRANSCOLOR);
                SetEntityRenderColor(weapon, 255, 255, 255, alpha);
            }
        }
    }
} 

public OnPostThinkPost(client) SetEntProp(client, Prop_Send, "m_iAddonBits", 0);
Компилируется с ошибкой
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,921
  • Команда форума
  • #8
PHP:
#include <sdkhooks> 

new sm_invisibility_time; 
new Handle:g_hTimer[MAXPLAYERS+1];

public OnPluginStart() 
{ 
    RegConsoleCmd("sm_inviz", PlayerInvizion);  
    new Handle:Cvar = CreateConVar("sm_invisibility_time", "5", "Invisibility time"); 
    HookConVarChange(Cvar, InvisibilityTime);
    sm_invisibility_time = GetConVarInt(Cvar);    
    CloseHandle(Cvar);  
    HookEvent("player_death", Event_PlayerDeath);  
} 

public InvisibilityTime(Handle:cvar, const String:oldVal[], const String:newVal[]) sm_invisibility_time = GetConVarInt(cvar);    

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
    OnClientDisconnect(GetClientOfUserId(GetEventInt(event, "userid")));

public Action:PlayerInvizion(client, args)  
{ 
    if(client > 0 && IsPlayerAlive(client) && g_hTimer[client] == INVALID_HANDLE) 
    { 
        PrintToChat(client, "Невидимость включена"); 
        SetAlpha(client, 0); 
        SDKHook(client, SDKHook_PostThinkPost, OnPostThinkPost);
        g_hTimer[client] = CreateTimer(float(sm_invisibility_time), removeinvis, client); 
    } 
    return Plugin_Handled; 
} 

public Action:removeinvis(Handle:timer, any:client) 
{ 
    SetAlpha(client, 255); 
    PrintToChat(client, "Невидимость отключена"); 
    SDKUnhook(client, SDKHook_PostThinkPost, OnPostThinkPost);
    g_hTimer[client] = INVALID_HANDLE;    
} 

public OnClientDisconnect(client)
{
    if(g_hTimer[client] != INVALID_HANDLE)
    {
        KillTimer(g_hTimer[client]);
        g_hTimer[client] = INVALID_HANDLE;    
        SDKUnhook(client, SDKHook_PostThinkPost, OnPostThinkPost);
    }
}

SetAlpha(target, alpha) 
{        
    SetWeaponsAlpha(target,alpha); 
    SetEntityRenderMode(target, RENDER_TRANSCOLOR); 
    SetEntityRenderColor(target, 255, 255, 255, alpha);    
} 

SetWeaponsAlpha(target, alpha) 
{ 
    if(IsPlayerAlive(target)) 
    { 
        new m_hMyWeapons = FindSendPropOffs("CBasePlayer", "m_hMyWeapons");    
        for(new i = 0, weapon; i < 47; i += 4) 
        { 
            weapon = GetEntDataEnt2(target, m_hMyWeapons + i); 
            if(weapon > -1 ) 
            { 
                SetEntityRenderMode(weapon, RENDER_TRANSCOLOR); 
                SetEntityRenderColor(weapon, 255, 255, 255, alpha); 
            } 
        } 
    } 
}  

public OnPostThinkPost(client) SetEntProp(client, Prop_Send, "m_iAddonBits", 0);
 

-_-Ecarus-_-

Участник
Сообщения
76
Реакции
2
PHP:
#include <sdkhooks>

new sm_invisibility_time;
new Handle:g_hTimer[MAXPLAYERS+1];

public OnPluginStart()
{
    RegConsoleCmd("sm_inviz", PlayerInvizion); 
    new Handle:Cvar = CreateConVar("sm_invisibility_time", "5", "Invisibility time");
    HookConVarChange(Cvar, InvisibilityTime);
    sm_invisibility_time = GetConVarInt(Cvar);   
    CloseHandle(Cvar); 
    HookEvent("player_death", Event_PlayerDeath); 
}

public InvisibilityTime(Handle:cvar, const String:oldVal[], const String:newVal[]) sm_invisibility_time = GetConVarInt(cvar);   

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
    OnClientDisconnect(GetClientOfUserId(GetEventInt(event, "userid")));

public Action:PlayerInvizion(client, args) 
{
    if(client > 0 && IsPlayerAlive(client) && g_hTimer[client] == INVALID_HANDLE)
    {
        PrintToChat(client, "Невидимость включена");
        SetAlpha(client, 0);
        SDKHook(client, SDKHook_PostThinkPost, OnPostThinkPost);
        g_hTimer[client] = CreateTimer(float(sm_invisibility_time), removeinvis, client);
    }
    return Plugin_Handled;
}

public Action:removeinvis(Handle:timer, any:client)
{
    SetAlpha(client, 255);
    PrintToChat(client, "Невидимость отключена");
    SDKUnhook(client, SDKHook_PostThinkPost, OnPostThinkPost);
    g_hTimer[client] = INVALID_HANDLE;   
}

public OnClientDisconnect(client)
{
    if(g_hTimer[client] != INVALID_HANDLE)
    {
        KillTimer(g_hTimer[client]);
        g_hTimer[client] = INVALID_HANDLE;   
        SDKUnhook(client, SDKHook_PostThinkPost, OnPostThinkPost);
    }
}

SetAlpha(target, alpha)
{       
    SetWeaponsAlpha(target,alpha);
    SetEntityRenderMode(target, RENDER_TRANSCOLOR);
    SetEntityRenderColor(target, 255, 255, 255, alpha);   
}

SetWeaponsAlpha(target, alpha)
{
    if(IsPlayerAlive(target))
    {
        new m_hMyWeapons = FindSendPropOffs("CBasePlayer", "m_hMyWeapons");   
        for(new i = 0, weapon; i < 47; i += 4)
        {
            weapon = GetEntDataEnt2(target, m_hMyWeapons + i);
            if(weapon > -1 )
            {
                SetEntityRenderMode(weapon, RENDER_TRANSCOLOR);
                SetEntityRenderColor(weapon, 255, 255, 255, alpha);
            }
        }
    }
} 

public OnPostThinkPost(client) SetEntProp(client, Prop_Send, "m_iAddonBits", 0);
Как сделать, чтобы он был на 1 раунд?
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,921
  • Команда форума
  • #10
@-_-Ecarus-_-, то есть чтобы только один раз можно было включить инвиз за всю карту?
--- Добавлено позже ---
PHP:
#include <sdkhooks> 

new sm_invisibility_time; 
new Handle:g_hTimer[MAXPLAYERS+1];
new bool:activation[MAXPLAYERS+1];

public OnPluginStart() 
{ 
    RegConsoleCmd("sm_inviz", PlayerInvizion);  
    new Handle:Cvar = CreateConVar("sm_invisibility_time", "5", "Invisibility time"); 
    HookConVarChange(Cvar, InvisibilityTime);
    sm_invisibility_time = GetConVarInt(Cvar);    
    CloseHandle(Cvar);  
    HookEvent("player_death", Event_PlayerDeath);  
}

public OnMapStart()
{
    for (new client = 1; client<=MAXPLAYERS; client++)
        activation[client] = false;
}

public InvisibilityTime(Handle:cvar, const String:oldVal[], const String:newVal[]) sm_invisibility_time = GetConVarInt(cvar);    

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
    OnClientDisconnect(GetClientOfUserId(GetEventInt(event, "userid")));

public Action:PlayerInvizion(client, args)  
{ 
    if(client > 0 && IsPlayerAlive(client) && g_hTimer[client] == INVALID_HANDLE) 
    { 
        if (activation[client]) {
            PrintToChat(client, "Включить невидимость невозможно: вы уже включали её ранее.");
            return Plugin_Handled;
        }
        PrintToChat(client, "Невидимость включена"); 
        SetAlpha(client, 0); 
        SDKHook(client, SDKHook_PostThinkPost, OnPostThinkPost);
        g_hTimer[client] = CreateTimer(float(sm_invisibility_time), removeinvis, client); 
        activation[client] = true;
    } 
    return Plugin_Handled; 
} 

public Action:removeinvis(Handle:timer, any:client) 
{ 
    SetAlpha(client, 255); 
    PrintToChat(client, "Невидимость отключена"); 
    SDKUnhook(client, SDKHook_PostThinkPost, OnPostThinkPost);
    g_hTimer[client] = INVALID_HANDLE;    
} 

public OnClientDisconnect(client)
{
    if(g_hTimer[client] != INVALID_HANDLE)
    {
        activation[client] = false;
        KillTimer(g_hTimer[client]);
        g_hTimer[client] = INVALID_HANDLE;    
        SDKUnhook(client, SDKHook_PostThinkPost, OnPostThinkPost);
    }
}

SetAlpha(target, alpha) 
{        
    SetWeaponsAlpha(target,alpha); 
    SetEntityRenderMode(target, RENDER_TRANSCOLOR); 
    SetEntityRenderColor(target, 255, 255, 255, alpha);    
} 

SetWeaponsAlpha(target, alpha) 
{ 
    if(IsPlayerAlive(target)) 
    { 
        new m_hMyWeapons = FindSendPropOffs("CBasePlayer", "m_hMyWeapons");    
        for(new i = 0, weapon; i < 47; i += 4) 
        { 
            weapon = GetEntDataEnt2(target, m_hMyWeapons + i); 
            if(weapon > -1 ) 
            { 
                SetEntityRenderMode(weapon, RENDER_TRANSCOLOR); 
                SetEntityRenderColor(weapon, 255, 255, 255, alpha); 
            } 
        } 
    } 
}  

public OnPostThinkPost(client) SetEntProp(client, Prop_Send, "m_iAddonBits", 0);
 
Последнее редактирование:

-_-Ecarus-_-

Участник
Сообщения
76
Реакции
2
@-_-Ecarus-_-, то есть чтобы только один раз можно было включить инвиз за всю карту?
--- Добавлено позже ---
PHP:
#include <sdkhooks>

new sm_invisibility_time;
new Handle:g_hTimer[MAXPLAYERS+1];
new bool:activation[MAXPLAYERS+1];

public OnPluginStart()
{
    RegConsoleCmd("sm_inviz", PlayerInvizion); 
    new Handle:Cvar = CreateConVar("sm_invisibility_time", "5", "Invisibility time");
    HookConVarChange(Cvar, InvisibilityTime);
    sm_invisibility_time = GetConVarInt(Cvar);   
    CloseHandle(Cvar); 
    HookEvent("player_death", Event_PlayerDeath); 
}

public OnMapStart()
{
    for (new client = 1; client<=MAXPLAYERS; client++)
        activation[client] = false;
}

public InvisibilityTime(Handle:cvar, const String:oldVal[], const String:newVal[]) sm_invisibility_time = GetConVarInt(cvar);   

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
    OnClientDisconnect(GetClientOfUserId(GetEventInt(event, "userid")));

public Action:PlayerInvizion(client, args) 
{
    if(client > 0 && IsPlayerAlive(client) && g_hTimer[client] == INVALID_HANDLE)
    {
        if (activation[client]) {
            PrintToChat(client, "Включить невидимость невозможно: вы уже включали её ранее.");
            return Plugin_Handled;
        }
        PrintToChat(client, "Невидимость включена");
        SetAlpha(client, 0);
        SDKHook(client, SDKHook_PostThinkPost, OnPostThinkPost);
        g_hTimer[client] = CreateTimer(float(sm_invisibility_time), removeinvis, client);
        activation[client] = true;
    }
    return Plugin_Handled;
}

public Action:removeinvis(Handle:timer, any:client)
{
    SetAlpha(client, 255);
    PrintToChat(client, "Невидимость отключена");
    SDKUnhook(client, SDKHook_PostThinkPost, OnPostThinkPost);
    g_hTimer[client] = INVALID_HANDLE;   
}

public OnClientDisconnect(client)
{
    if(g_hTimer[client] != INVALID_HANDLE)
    {
        activation[client] = false;
        KillTimer(g_hTimer[client]);
        g_hTimer[client] = INVALID_HANDLE;   
        SDKUnhook(client, SDKHook_PostThinkPost, OnPostThinkPost);
    }
}

SetAlpha(target, alpha)
{       
    SetWeaponsAlpha(target,alpha);
    SetEntityRenderMode(target, RENDER_TRANSCOLOR);
    SetEntityRenderColor(target, 255, 255, 255, alpha);   
}

SetWeaponsAlpha(target, alpha)
{
    if(IsPlayerAlive(target))
    {
        new m_hMyWeapons = FindSendPropOffs("CBasePlayer", "m_hMyWeapons");   
        for(new i = 0, weapon; i < 47; i += 4)
        {
            weapon = GetEntDataEnt2(target, m_hMyWeapons + i);
            if(weapon > -1 )
            {
                SetEntityRenderMode(weapon, RENDER_TRANSCOLOR);
                SetEntityRenderColor(weapon, 255, 255, 255, alpha);
            }
        }
    }
} 

public OnPostThinkPost(client) SetEntProp(client, Prop_Send, "m_iAddonBits", 0);
Нет. Чтобы было ограничение использования за 1 раунд.
 

-_-Ecarus-_-

Участник
Сообщения
76
Реакции
2
Последнее редактирование:
Сверху Снизу