Raised This Month: $51 Target: $400
 12% 

Reconnect Features fix


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
tarsisd2
Veteran Member
Join Date: Feb 2016
Location: brazil
Old 09-30-2018 , 22:40   Reconnect Features fix
Reply With Quote #1

Hi, i'm using Reconnect Features from connor https://forums.alliedmods.net/showthread.php?t=63484

this plugin when you reconnect, you can't spawn on the same round twice, and it restores, frags/money.

i'm having a bug, on my server, every 30 rounds the server restarts automatically, and using this plugin, on round 29, just before the servers restarts, if a player disconnect and connect at the new round which will be 1, he will get the money he had before, and frags too, so we have a pistol round and the player will be able to buy primary weapon, i want to prevent that.

this is the code:

PHP Code:
#include <amxmodx>
#include <fakemeta>

/****** Customization Area ******/
// Flag to allow admin to reconnect without hudmessage
// This is usefull when you reconnect with another nick to watch a suspected cheater
// This will still set back your score/money/...
#define ADMIN_SILENT ADMIN_KICK

// Color for hud message
#define RED    0
#define GREEN    100
#define BLUE    200
/********************************/

#define PLUGIN "Reconnect Features"
#define AUTHOR "ConnorMcLeod"
#define VERSION "0.2.4 BETA"

#define MAX_PLAYERS    32
#define MAX_STORED     64

#define OFFSET_CSMONEY    115
#define OFFSET_CSDEATHS    444

#define TASK_KILL    1946573517
#define TASK_CLEAR    2946573517
#define TASK_PLAYER 3946573517


enum Storage {
    
StoreSteamId[20],
    
StoreFrags,
    
StoreDeaths,
    
StoreMoney,
    
StoreRound
}

new 
g_CurInfos[MAX_PLAYERS+1][Storage]
new 
g_StoredInfos[MAX_STORED][Storage]

new 
bool:g_bPlayerNonSpawnEvent[MAX_PLAYERS 1]
new 
g_iFwFmClientCommandPost

new g_iRoundNum

new g_pcvarTimeg_pcvarScoreg_pcvarMoneyg_pcvarSpawng_pcvarStartMoneyg_pcvarNotify
new mp_startmoney
new g_msgidDeathMsg
new g_iMaxPlayers

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_dictionary("reconnect.txt")

    
register_cvar("reconnect_features"VERSIONFCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)
    
g_pcvarTime register_cvar("amx_noreconnect_time""45")
    
g_pcvarScore register_cvar("amx_noreconnect_score""1")
    
g_pcvarMoney register_cvar("amx_noreconnect_money""1")
    
g_pcvarSpawn register_cvar("amx_noreconnect_spawn""1")
    
g_pcvarStartMoney register_cvar("amx_noreconnect_startmoney""0")
    
g_pcvarNotify register_cvar("amx_noreconnect_notify""1")

    
register_event("HLTV""eNewRound""a""1=0""2=0")

    
register_event("TextMsg""eRestart""a""2&#Game_C""2&#Game_w")

    
register_event("ResetHUD""Event_ResetHUD""b")
    
register_event("TextMsg""Event_TextMsg_GameWillRestartIn""a""2=#Game_will_restart_in")
    
register_clcmd("fullupdate""ClientCommand_fullupdate")

    
register_event("Money""eMoney""be")
    
register_event("ScoreInfo""eScoreInfo""a")
}

public 
plugin_cfg()
{
    
mp_startmoney get_cvar_pointer("mp_startmoney")
    
g_msgidDeathMsg get_user_msgid("DeathMsg")
    
g_iMaxPlayers global_get(glb_maxClients)
}

public 
Event_TextMsg_GameWillRestartIn()
{
    static 
id
    
for(id 1id <= g_iMaxPlayers; ++id)
        if( 
is_user_alive(id) )
            
g_bPlayerNonSpawnEvent[id] = true
}

public 
ClientCommand_fullupdate(id)
{
    
g_bPlayerNonSpawnEvent[id] = true
    
static const szClientCommandPost[] = "Forward_ClientCommand_Post"
    
g_iFwFmClientCommandPost register_forward(FM_ClientCommandszClientCommandPost1)
    return 
PLUGIN_CONTINUE
}

public 
Forward_ClientCommand_Post(id)
{
    
unregister_forward(FM_ClientCommandg_iFwFmClientCommandPost1)
    
g_bPlayerNonSpawnEvent[id] = false
    
return FMRES_HANDLED
}

public 
Event_ResetHUD(id)
{
    if (!
is_user_alive(id))
        return

    if (
g_bPlayerNonSpawnEvent[id])
    {
        
g_bPlayerNonSpawnEvent[id] = false
        
return
    }

    
Forward_PlayerSpawn(id)
}

Forward_PlayerSpawn(id)
{
    if(
g_CurInfos[id][StoreRound] == g_iRoundNum)
    {
        
g_CurInfos[id][StoreRound] = 0
        set_task
(0.1"task_delay_kill"id+TASK_KILL)
    }
}

public 
task_delay_kill(id)
{
    
id -= TASK_KILL

    
new Float:fFrags
    pev
(idpev_fragsfFrags)
    
set_pev(idpev_frags, ++fFrags)

    
set_pdata_int(idOFFSET_CSDEATHSget_pdata_int(idOFFSET_CSDEATHS) - 1)

    new 
msgblock get_msg_block(g_msgidDeathMsg)
    
set_msg_block(g_msgidDeathMsgBLOCK_ONCE)
    
dllfunc(DLLFunc_ClientKillid)
    
set_msg_block(g_msgidDeathMsgmsgblock)

    
client_print(idprint_chat"** [Anti-Retry] %L"id"RF_SPAWN")
}

public 
eMoney(id)
{
    
g_CurInfos[id][StoreMoney] = read_data(1)
}

public 
eScoreInfo()
{
    new 
id read_data(1)
    if(!(
1<= id <= g_iMaxPlayers))
        return

    
g_CurInfos[id][StoreFrags] = read_data(2)
    
g_CurInfos[id][StoreDeaths] = read_data(3)
}

public 
eRestart()
{
    for(new 
iMAX_STOREDi++)
    {
        
remove_task(i+TASK_CLEAR)
        
remove_task(i+TASK_PLAYER)
        
g_StoredInfos[i][StoreSteamId][0] = 0
    
}
}

public 
eNewRound()
{
    
g_iRoundNum++
}

public 
client_disconnect(id)
{
    if(
is_user_bot(id) || is_user_hltv(id))
    {
        return
    }

    new 
Float:fTaskTime get_pcvar_float(g_pcvarTime)
    if(!
fTaskTime)
        return

    static 
iFree
    
for(iFree 0iFree <= MAX_STOREDiFree++)
    {
        if(
iFree == MAX_STORED)
        {
            return
        }
        if(!
g_StoredInfos[iFree][StoreSteamId][0])
            break
    }

    
copy(g_StoredInfos[iFree][StoreSteamId], 19g_CurInfos[id][StoreSteamId])
    
g_StoredInfos[iFree][StoreFrags] = g_CurInfos[id][StoreFrags]
    
g_StoredInfos[iFree][StoreDeaths] = g_CurInfos[id][StoreDeaths]
    
g_StoredInfos[iFree][StoreMoney] = g_CurInfos[id][StoreMoney]
    
g_StoredInfos[iFree][StoreRound] = g_iRoundNum

    g_CurInfos
[id][StoreSteamId][0] = 0
    g_CurInfos
[id][StoreFrags] = 0
    g_CurInfos
[id][StoreDeaths] = 0
    g_CurInfos
[id][StoreMoney] = 0
    g_CurInfos
[id][StoreRound] = 0

    set_task
(fTaskTime"task_clear"iFree+TASK_CLEAR)
}

public 
task_clear(iTaskId)
{
    
iTaskId -= TASK_CLEAR
    g_StoredInfos
[iTaskId][StoreSteamId][0] = 0
}

public 
client_putinserver(id)
{
    if(
is_user_bot(id) || is_user_hltv(id))
        return

    
g_bPlayerNonSpawnEvent[id] = false

    
static szSteamId[20]
    
get_user_authid(idszSteamId19)
    
copy(g_CurInfos[id][StoreSteamId], 19szSteamId)

    for(new 
iMAX_STOREDi++)
    {
        if(!
g_StoredInfos[i][StoreSteamId][0])
            continue

        if( 
equal(g_StoredInfos[i][StoreSteamId], szSteamIdstrlen(szSteamId)) )
        {
            if(
get_pcvar_num(g_pcvarScore))
            {
                
set_pev(idpev_fragsfloat(g_StoredInfos[i][StoreFrags]))
                
set_pdata_int(idOFFSET_CSDEATHSg_StoredInfos[i][StoreDeaths])
                
g_CurInfos[id][StoreFrags] = g_StoredInfos[i][StoreFrags]
                
g_CurInfos[id][StoreDeaths] = g_StoredInfos[i][StoreDeaths]
            }
            if(
get_pcvar_num(g_pcvarMoney))
            {
                new 
iMoney g_StoredInfos[i][StoreMoney]
                new 
iStartMoney get_pcvar_num(mp_startmoney)
                if(
get_pcvar_num(g_pcvarStartMoney) && iMoney iStartMoney)
                {
                    
set_pdata_int(idOFFSET_CSMONEYiStartMoney)
                    
g_CurInfos[id][StoreMoney] = iStartMoney
                
}
                else
                {
                    
set_pdata_int(idOFFSET_CSMONEYiMoney)
                    
g_CurInfos[id][StoreMoney] = iMoney
                
}
            }
            if(
get_pcvar_num(g_pcvarSpawn))
            {
                
g_CurInfos[id][StoreRound] = g_StoredInfos[i][StoreRound]
            }

            
remove_task(id+TASK_PLAYER)
            
set_task(10.0"task_print_player"id+TASK_PLAYER)

            
g_StoredInfos[i][StoreSteamId][0] = 0

            
new iNotifyType get_pcvar_num(g_pcvarNotify)
            if(
iNotifyType && !(get_user_flags(id)&ADMIN_SILENT) )
            {
                static 
szName[32]
                
get_user_name(idszName31)
                if( 
iNotifyType == )
                {
                    
set_hudmessage(REDGREENBLUE, -1.00.3523.010.00.10.2, -1)
                    
show_hudmessage(0"%L"LANG_PLAYER"RF_ALL"szName)
                }
                else
                {
                    
client_print(0print_chat"** [Anti-Retry] %L"LANG_PLAYER"RF_ALL"szName)
                }
            }
            return
        }
    }
    
g_CurInfos[id][StoreRound] = -1
}

public 
task_print_player(id)
{
    if(
is_user_connected(id -= TASK_PLAYER))
    {
        static 
szText[128]
        new 
formatex(szText127"** [Anti-Retry] %L"id"RF_PLAYER_PRINT")
        if(
get_pcvar_num(g_pcvarScore))
            
+= formatex(szText[n], 127 n" %L"id"RF_SCORE")
        if(
get_pcvar_num(g_pcvarMoney))
            
+= formatex(szText[n], 127 n" %L"id"RF_MONEY")
        
client_print(idprint_chatszText)
    }

thanks
tarsisd2 is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 09-30-2018 , 22:57   Re: Reconnect Features fix
Reply With Quote #2

If you have issues with a plugin, post in the plugin's own thread.
__________________
fysiks is offline
tarsisd2
Veteran Member
Join Date: Feb 2016
Location: brazil
Old 09-30-2018 , 23:42   Re: Reconnect Features fix
Reply With Quote #3

Quote:
Originally Posted by fysiks View Post
If you have issues with a plugin, post in the plugin's own thread.
that's what i meant to do, but the plugin creator hasn't logged into the forum over a year, that's why i posted here
tarsisd2 is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 10-01-2018 , 00:45   Re: Reconnect Features fix
Reply With Quote #4

Quote:
Originally Posted by tarsisd2 View Post
that's what i meant to do, but the plugin creator hasn't logged into the forum over a year, that's why i posted here
Connor isn't the only one who can respond to posts in that thread. Always post in the thread of the plugin first and wait the requisite 2 weeks before posting elsewhere (because it's the equivalent of bumping).
__________________
fysiks is offline
tarsisd2
Veteran Member
Join Date: Feb 2016
Location: brazil
Old 10-01-2018 , 04:02   Re: Reconnect Features fix
Reply With Quote #5

Quote:
Originally Posted by fysiks View Post
Connor isn't the only one who can respond to posts in that thread. Always post in the thread of the plugin first and wait the requisite 2 weeks before posting elsewhere (because it's the equivalent of bumping).
i posted there, thanks
tarsisd2 is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 18:45.


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