dreamstalker / rehlds

Reverse-engineered HLDS
GNU General Public License v3.0
652 stars 167 forks source link

hook_cvar_change + rehlds (re amx mod x 1.8.3) = server crash #251

Closed NewZMLife closed 6 years ago

NewZMLife commented 7 years ago

i tried to use cvar.inc functions instead of Cvar Utilities but server crashes on start. any solution to fix the issue ?

#include <amxmodx>
#include <amxmisc>

new HandleCvarMotdfile;
new HandleCvarMapcyclefile;
new HandleCvarMapchangecfgfile;
new HandleCvarServercfgfile;
new HandleCvarLservercfgfile;
new HandleCvarBannedcfgfile;
new HandleCvarListipcfgfile;
new HandleCvarFilterban;
new HandleCvarServerbrowserinfo;
new HandleCvarSxeinternalip;
new HandleCvarSxescreensave;
new HandleCvarSxechangenick;
new HandleCvarSxeantisound;
new HandleCvarSxeantispeed;
new HandleCvarSxe16bpp;
new HandleCvarSxe16bppshow;
new HandleCvarSxe16bppkick;
new HandleCvarRconpassword;
new HandleCvarHostname;
new HandleCvarSxescreenpath;
new HandleCvarSxezmirror;

new g_addCmd[] = "amx_pausecfg add ^"%s^""

public plugin_init()
{
    register_plugin("Protect Cvar Validation", "1.0", "N3w[ZM]L!F3")

    HandleCvarRconpassword = get_cvar_pointer("rcon_password")
    HandleCvarHostname = get_cvar_pointer("hostname")
    HandleCvarMotdfile = get_cvar_pointer("motdfile")
    HandleCvarMapcyclefile = get_cvar_pointer("mapcyclefile")
    HandleCvarMapchangecfgfile = get_cvar_pointer("mapchangecfgfile")
    HandleCvarServercfgfile = get_cvar_pointer("servercfgfile")
    HandleCvarLservercfgfile = get_cvar_pointer("lservercfgfile")
    HandleCvarBannedcfgfile = get_cvar_pointer("bannedcfgfile")
    HandleCvarListipcfgfile = get_cvar_pointer("listipcfgfile")
    HandleCvarFilterban = get_cvar_pointer("sv_filterban")
    HandleCvarServerbrowserinfo = get_cvar_pointer("sv_serverbrowserinfo")

    HandleCvarSxeinternalip = get_cvar_pointer("__sxei_internal_ip")
    HandleCvarSxescreensave = get_cvar_pointer("__sxei_screen_save")
    HandleCvarSxechangenick = get_cvar_pointer("__sxei_changenick")
    HandleCvarSxeantisound = get_cvar_pointer("__sxei_antisound")
    HandleCvarSxeantispeed = get_cvar_pointer("__sxei_antispeed")
    HandleCvarSxe16bpp = get_cvar_pointer("__sxei_16bpp")
    HandleCvarSxe16bppshow = get_cvar_pointer("__sxei_16bppshow")
    HandleCvarSxe16bppkick = get_cvar_pointer("__sxei_16bppkick")
    HandleCvarSxezmirror = get_cvar_pointer("__sxei_zmirror")
    HandleCvarSxescreenpath = get_cvar_pointer("__sxei_screen_path")

    hook_cvar_change(HandleCvarRconpassword, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarHostname, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarMotdfile, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarMapcyclefile, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarMapchangecfgfile, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarServercfgfile, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarLservercfgfile, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarBannedcfgfile, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarListipcfgfile, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarFilterban, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarServerbrowserinfo, "ProtectCvarValidation")

    hook_cvar_change(HandleCvarSxeinternalip, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarSxescreensave, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarSxechangenick, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarSxeantisound, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarSxeantispeed, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarSxe16bpp, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarSxe16bppshow, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarSxe16bppkick, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarSxezmirror, "ProtectCvarValidation")
    hook_cvar_change(HandleCvarSxescreenpath, "ProtectCvarValidation")
}

public plugin_cfg()
{
    server_cmd(g_addCmd, "Protect Cvar Validation")
}

public ProtectCvarValidation(HandleCvarValidation, const Oldvalue[], const Newvalue[])
{
    if(!(equal(Oldvalue, Newvalue))) set_pcvar_string(HandleCvarValidation, Oldvalue)
}
theAsmodai commented 7 years ago

You can use RH_Cvar_DirectSet hookchain from Reapi

In-line commented 6 years ago

Closing as non active