AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting (https://forums.alliedmods.net/forumdisplay.php?f=107)
-   -   player_spawn - fails to keep setting after respawn. (https://forums.alliedmods.net/showthread.php?t=317570)

ph 07-19-2019 16:24

player_spawn - fails to keep setting after respawn.
 
Team Fortress 2

Script below works, but the client keeps having to type !kson after respawn.
Code:

#pragma semicolon 1
#include <sourcemod>

public OnPluginStart()
{
    RegAdminCmd( "sm_kson", Cmd_Enable, ADMFLAG_CUSTOM6 );
}

public Action:Cmd_Enable( client, args )
{
    SetEntProp( client, Prop_Send, "m_nStreaks", 100 );
    return Plugin_Handled;
}

How do I....
enable for the player (client) to aviod the need to type !kson *again* after respawn.

Dr.Doctor 07-19-2019 16:50

Re: player_spawn - fails to keep setting after respawn.
 
Try this
PHP Code:

#pragma semicolon 1

#include <sourcemod>

bool g_bEnableKson[MAXPLAYERS 1];

public 
void OnPluginStart()
{
    
RegAdminCmd("sm_kson"Cmd_EnableADMFLAG_CUSTOM6);
    
    
HookEvent("player_spawn"Event_PlayerSpawn);
}

public 
void OnClientPutInServer(int client)
{
    
g_bEnableKson[client] = false;
}

public 
Action Cmd_Enable(int clientint args)
{
    if (
client <= || client MaxClients || !IsClientInGame(client))
    {
        return 
Plugin_Handled;
    }
    
    
g_bEnableKson[client] = !g_bEnableKson[client];
    
    if (
g_bEnableKson[client])
    {
        
SetEntProp(clientProp_Send"m_nStreaks"100);
    }
    
    return 
Plugin_Handled;
}

public 
void Event_PlayerSpawn(Event event, const char[] namebool dontBroadcast)
{
    
int client GetClientOfUserId(event.GetInt("userid"));

    if (
g_bEnableKson[client])
    {
        
SetEntProp(clientProp_Send"m_nStreaks"100);
    }



ph 07-19-2019 17:09

Re: player_spawn - fails to keep setting after respawn.
 
Thank you very much, really appreciated.

Working nicely.

ph 03-25-2021 12:08

Re: player_spawn - fails to keep setting after respawn.
 
Quote:

Originally Posted by Dr.Doctor (Post 2659801)
Try this
PHP Code:

#pragma semicolon 1

#include <sourcemod>

bool g_bEnableKson[MAXPLAYERS 1];

public 
void OnPluginStart()
{
    
RegAdminCmd("sm_kson"Cmd_EnableADMFLAG_CUSTOM6);
    
    
HookEvent("player_spawn"Event_PlayerSpawn);
}

public 
void OnClientPutInServer(int client)
{
    
g_bEnableKson[client] = false;
}

public 
Action Cmd_Enable(int clientint args)
{
    if (
client <= || client MaxClients || !IsClientInGame(client))
    {
        return 
Plugin_Handled;
    }
    
    
g_bEnableKson[client] = !g_bEnableKson[client];
    
    if (
g_bEnableKson[client])
    {
        
SetEntProp(clientProp_Send"m_nStreaks"100);
    }
    
    return 
Plugin_Handled;
}

public 
void Event_PlayerSpawn(Event event, const char[] namebool dontBroadcast)
{
    
int client GetClientOfUserId(event.GetInt("userid"));

    if (
g_bEnableKson[client])
    {
        
SetEntProp(clientProp_Send"m_nStreaks"100);
    }




Can the script be amended to do the following:-


a) !kson automatically applied on player connection/join, without typing !kson (ADMFLAG_CUSTOM6)


Thanks in advance.

Bacardi 03-25-2021 13:20

Re: player_spawn - fails to keep setting after respawn.
 
Try this :/
Code:

#pragma semicolon 1

#include <sourcemod>

bool g_bEnableKson[MAXPLAYERS + 1];

public void OnPluginStart()
{
    RegAdminCmd("sm_kson", Cmd_Enable, ADMFLAG_CUSTOM6);
   
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void OnClientPostAdminCheck(int client)
{
    g_bEnableKson[client] = CheckCommandAccess(client, "sm_kson", ADMFLAG_CUSTOM6);
}

public Action Cmd_Enable(int client, int args)
{
    if (client <= 0 || client > MaxClients || !IsClientInGame(client))
    {
        return Plugin_Handled;
    }
   
    g_bEnableKson[client] = !g_bEnableKson[client];
   
    if (g_bEnableKson[client])
    {
        SetEntProp(client, Prop_Send, "m_nStreaks", 100);
    }
   
    return Plugin_Handled;
}

public void Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));

    if (g_bEnableKson[client])
    {
        SetEntProp(client, Prop_Send, "m_nStreaks", 100);
    }
}


ThatKidWhoGames 03-25-2021 13:22

Re: player_spawn - fails to keep setting after respawn.
 
Quote:

Originally Posted by ph (Post 2741770)
Can the script be amended to do the following:-


a) !kson automatically applied on player connection/join, without typing !kson (ADMFLAG_CUSTOM6)


Thanks in advance.

PHP Code:


#pragma semicolon 1 

#include <sourcemod> 

bool g_bEnableKson[MAXPLAYERS 1]; 

public 
void OnPluginStart() 

    
RegAdminCmd("sm_kson"Cmd_EnableADMFLAG_CUSTOM6); 
     
    
HookEvent("player_spawn"Event_PlayerSpawn); 


public 
void OnClientPutInServer(int client

    
g_bEnableKson[client] = false
}

public 
void OnClientPostAdminCheck(int client)
{
    
g_bEnableKson[client] = CheckCommandAccess(client“sm_kson”ADMFLAG_CUSTOM6);
}

public 
Action Cmd_Enable(int clientint args

    if (
client <= || client MaxClients || !IsClientInGame(client)) 
    { 
        return 
Plugin_Handled
    } 
     
    
g_bEnableKson[client] = !g_bEnableKson[client]; 
     
    if (
g_bEnableKson[client]) 
    { 
        
SetEntProp(clientProp_Send"m_nStreaks"100); 
    } 
     
    return 
Plugin_Handled


public 
void Event_PlayerSpawn(Event event, const char[] namebool dontBroadcast

    
int client GetClientOfUserId(event.GetInt("userid")); 

    if (
g_bEnableKson[client]) 
    { 
        
SetEntProp(clientProp_Send"m_nStreaks"100); 
    } 



ph 03-25-2021 17:53

Re: player_spawn - fails to keep setting after respawn.
 
Thank you, I shall give this a try.

ph 03-25-2021 19:31

Re: player_spawn - fails to keep setting after respawn.
 
Quote:

Originally Posted by ThatKidWhoGames (Post 2741779)
PHP Code:


#pragma semicolon 1 

#include <sourcemod> 

bool g_bEnableKson[MAXPLAYERS 1]; 

public 
void OnPluginStart() 

    
RegAdminCmd("sm_kson"Cmd_EnableADMFLAG_CUSTOM6); 
     
    
HookEvent("player_spawn"Event_PlayerSpawn); 


public 
void OnClientPutInServer(int client

    
g_bEnableKson[client] = false
}

public 
void OnClientPostAdminCheck(int client)
{
    
g_bEnableKson[client] = CheckCommandAccess(client, &#8220;sm_kson”, ADMFLAG_CUSTOM6);
}

public 
Action Cmd_Enable(int clientint args

    if (
client <= || client MaxClients || !IsClientInGame(client)) 
    { 
        return 
Plugin_Handled
    } 
     
    
g_bEnableKson[client] = !g_bEnableKson[client]; 
     
    if (
g_bEnableKson[client]) 
    { 
        
SetEntProp(clientProp_Send"m_nStreaks"100); 
    } 
     
    return 
Plugin_Handled


public 
void Event_PlayerSpawn(Event event, const char[] namebool dontBroadcast

    
int client GetClientOfUserId(event.GetInt("userid")); 

    if (
g_bEnableKson[client]) 
    { 
        
SetEntProp(clientProp_Send"m_nStreaks"100); 
    } 



Quote:

Originally Posted by Bacardi (Post 2741778)
Try this :/
Code:

#pragma semicolon 1

#include <sourcemod>

bool g_bEnableKson[MAXPLAYERS + 1];

public void OnPluginStart()
{
    RegAdminCmd("sm_kson", Cmd_Enable, ADMFLAG_CUSTOM6);
   
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void OnClientPostAdminCheck(int client)
{
    g_bEnableKson[client] = CheckCommandAccess(client, "sm_kson", ADMFLAG_CUSTOM6);
}

public Action Cmd_Enable(int client, int args)
{
    if (client <= 0 || client > MaxClients || !IsClientInGame(client))
    {
        return Plugin_Handled;
    }
   
    g_bEnableKson[client] = !g_bEnableKson[client];
   
    if (g_bEnableKson[client])
    {
        SetEntProp(client, Prop_Send, "m_nStreaks", 100);
    }
   
    return Plugin_Handled;
}

public void Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));

    if (g_bEnableKson[client])
    {
        SetEntProp(client, Prop_Send, "m_nStreaks", 100);
    }
}





Both scripts work, but there is a problem.

Example:

A player joins the server, however streak effects failed to be applied immediately, unless player respawns/dies.

Can this be fixed so that the streak effects is instantly applied? rather than waiting to respawn.

Bacardi 03-26-2021 06:08

Re: player_spawn - fails to keep setting after respawn.
 
- I added check, when player spawn actually in team, not at the time when enter in server (team 0)
- One frame delay after spawn. Maybe game reset something from player at spawn event ?
-- If plugin is reloaded, it loop all clients in game, setting feature back. (They need respawn after this tough :P)

Code:

#pragma semicolon 1

#include <sourcemod>

bool g_bEnableKson[MAXPLAYERS + 1];

public void OnPluginStart()
{
        // Plugin reloaded ?
        for(int i = 1; i <= MaxClients; i++)
        {
                if(IsClientInGame(i)) OnClientPostAdminCheck(i);
        }



        RegAdminCmd("sm_kson", Cmd_Enable, ADMFLAG_CUSTOM6);

        HookEvent("player_spawn", Event_PlayerSpawn);
}

public void OnClientPostAdminCheck(int client)
{
        g_bEnableKson[client] = CheckCommandAccess(client, "sm_kson", ADMFLAG_CUSTOM6);
}

public Action Cmd_Enable(int client, int args)
{
        if (client <= 0 || client > MaxClients || !IsClientInGame(client))
        {
                return Plugin_Handled;
        }
       
        g_bEnableKson[client] = !g_bEnableKson[client];
       
        ReplyToCommand(client, "[SM] You have %s sm_kson", g_bEnableKson[client] ? "ENABLED":"DISABLED");
       
        if (g_bEnableKson[client])
        {
                SetEntProp(client, Prop_Send, "m_nStreaks", 100);
        }
       
        return Plugin_Handled;
}

public void Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
        int userid = event.GetInt("userid");
        int client = GetClientOfUserId(userid);

        if (g_bEnableKson[client] && GetClientTeam(client) > 1)
        {
                RequestFrame(nextframe, userid);
        }
}

public void nextframe(int userid)
{
        int client = GetClientOfUserId(userid);
       
        if(!client || !IsClientInGame(client)) return;

        SetEntProp(client, Prop_Send, "m_nStreaks", 100);
}


ph 03-26-2021 07:50

Re: player_spawn - fails to keep setting after respawn.
 
Thank you Barcadi, working nicely.

<3


All times are GMT -4. The time now is 22:09.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.