Merge pull request #313 from alliedmodders/set-client-name
Add SetClientName native.
This commit is contained in:
commit
91302da050
@ -50,6 +50,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
SH_DECL_HOOK6(IServerGameDLL, LevelInit, SH_NOATTRIB, false, bool, const char *, const char *, const char *, const char *, bool, bool);
|
SH_DECL_HOOK6(IServerGameDLL, LevelInit, SH_NOATTRIB, false, bool, const char *, const char *, const char *, const char *, bool, bool);
|
||||||
|
#if SOURCE_ENGINE == SE_CSS
|
||||||
|
SH_DECL_HOOK1_void_vafmt(IVEngineServer, ClientCommand, SH_NOATTRIB, 0, edict_t *);
|
||||||
|
#endif
|
||||||
|
|
||||||
SDKTools g_SdkTools; /**< Global singleton for extension's main interface */
|
SDKTools g_SdkTools; /**< Global singleton for extension's main interface */
|
||||||
IServerGameEnts *gameents = NULL;
|
IServerGameEnts *gameents = NULL;
|
||||||
@ -261,6 +264,10 @@ bool SDKTools::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlen, bool
|
|||||||
#endif
|
#endif
|
||||||
GET_V_IFACE_ANY(GetEngineFactory, soundemitterbase, ISoundEmitterSystemBase, SOUNDEMITTERSYSTEM_INTERFACE_VERSION);
|
GET_V_IFACE_ANY(GetEngineFactory, soundemitterbase, ISoundEmitterSystemBase, SOUNDEMITTERSYSTEM_INTERFACE_VERSION);
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE == SE_CSS
|
||||||
|
SH_ADD_HOOK(IVEngineServer, ClientCommand, engine, SH_MEMBER(this, &SDKTools::OnSendClientCommand), false);
|
||||||
|
#endif
|
||||||
|
|
||||||
gpGlobals = ismm->GetCGlobals();
|
gpGlobals = ismm->GetCGlobals();
|
||||||
enginePatch = SH_GET_CALLCLASS(engine);
|
enginePatch = SH_GET_CALLCLASS(engine);
|
||||||
enginesoundPatch = SH_GET_CALLCLASS(engsound);
|
enginesoundPatch = SH_GET_CALLCLASS(engsound);
|
||||||
@ -268,6 +275,14 @@ bool SDKTools::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlen, bool
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SDKTools::SDK_OnMetamodUnload(char *error, size_t maxlen)
|
||||||
|
{
|
||||||
|
#if SOURCE_ENGINE == SE_CSS
|
||||||
|
SH_REMOVE_HOOK(IVEngineServer, ClientCommand, engine, SH_MEMBER(this, &SDKTools::OnSendClientCommand), false);
|
||||||
|
#endif
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void SDKTools::SDK_OnAllLoaded()
|
void SDKTools::SDK_OnAllLoaded()
|
||||||
{
|
{
|
||||||
SM_GET_LATE_IFACE(BINTOOLS, g_pBinTools);
|
SM_GET_LATE_IFACE(BINTOOLS, g_pBinTools);
|
||||||
@ -456,6 +471,21 @@ void SDKTools::OnClientPutInServer(int client)
|
|||||||
g_Hooks.OnClientPutInServer(client);
|
g_Hooks.OnClientPutInServer(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE == SE_CSS
|
||||||
|
void SDKTools::OnSendClientCommand(edict_t *pPlayer, const char *szFormat)
|
||||||
|
{
|
||||||
|
// Due to legacy code, CS:S still sends "name \"newname\"" to the client after a
|
||||||
|
// name change. The engine has a change hook on name causing it to reset to the
|
||||||
|
// player's Steam name. This quashes that to make SetClientName work properly.
|
||||||
|
if (!strncmp(szFormat, "name ", 5))
|
||||||
|
{
|
||||||
|
RETURN_META(MRES_SUPERCEDE);
|
||||||
|
}
|
||||||
|
|
||||||
|
RETURN_META(MRES_IGNORED);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
class SDKTools_API : public ISDKTools
|
class SDKTools_API : public ISDKTools
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -83,7 +83,7 @@ public: //public SDKExtension
|
|||||||
public:
|
public:
|
||||||
#if defined SMEXT_CONF_METAMOD
|
#if defined SMEXT_CONF_METAMOD
|
||||||
virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlen, bool late);
|
virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlen, bool late);
|
||||||
//virtual bool SDK_OnMetamodUnload(char *error, size_t maxlen);
|
virtual bool SDK_OnMetamodUnload(char *error, size_t maxlen);
|
||||||
//virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlen);
|
//virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlen);
|
||||||
#endif
|
#endif
|
||||||
public: //IConCommandBaseAccessor
|
public: //IConCommandBaseAccessor
|
||||||
@ -101,6 +101,9 @@ public: // IVoiceServer
|
|||||||
#else
|
#else
|
||||||
void OnClientCommand(edict_t *pEntity);
|
void OnClientCommand(edict_t *pEntity);
|
||||||
#endif
|
#endif
|
||||||
|
#if SOURCE_ENGINE == SE_CSS
|
||||||
|
void OnSendClientCommand(edict_t *pPlayer, const char *szFormat);
|
||||||
|
#endif
|
||||||
|
|
||||||
public: //ICommandTargetProcessor
|
public: //ICommandTargetProcessor
|
||||||
bool ProcessCommandTarget(cmd_target_info_t *info);
|
bool ProcessCommandTarget(cmd_target_info_t *info);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* vim: set ts=4 :
|
* vim: set ts=4 :
|
||||||
* =============================================================================
|
* =============================================================================
|
||||||
* SourceMod SDKTools Extension
|
* SourceMod SDKTools Extension
|
||||||
* Copyright (C) 2004-2010 AlliedModders LLC. All rights reserved.
|
* Copyright (C) 2004-2010 AlliedModders LLC. All rights reserved.
|
||||||
* =============================================================================
|
* =============================================================================
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it under
|
* This program is free software; you can redistribute it and/or modify it under
|
||||||
@ -1267,6 +1267,61 @@ static cell_t ActivateEntity(IPluginContext *pContext, const cell_t *params)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static cell_t SetClientName(IPluginContext *pContext, const cell_t *params)
|
||||||
|
{
|
||||||
|
if (iserver == NULL)
|
||||||
|
{
|
||||||
|
return pContext->ThrowNativeError("IServer interface not supported, file a bug report.");
|
||||||
|
}
|
||||||
|
|
||||||
|
IGamePlayer *player = playerhelpers->GetGamePlayer(params[1]);
|
||||||
|
IClient *pClient = iserver->GetClient(params[1] - 1);
|
||||||
|
|
||||||
|
if (player == NULL || pClient == NULL)
|
||||||
|
{
|
||||||
|
return pContext->ThrowNativeError("Invalid client index %d", params[1]);
|
||||||
|
}
|
||||||
|
if (!player->IsConnected())
|
||||||
|
{
|
||||||
|
return pContext->ThrowNativeError("Client %d is not connected", params[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ValveCall *pCall = NULL;
|
||||||
|
if (!pCall)
|
||||||
|
{
|
||||||
|
ValvePassInfo params[1];
|
||||||
|
InitPass(params[0], Valve_String, PassType_Basic, PASSFLAG_BYVAL);
|
||||||
|
|
||||||
|
if (!CreateBaseCall("SetClientName", ValveCall_Entity, NULL, params, 1, &pCall))
|
||||||
|
{
|
||||||
|
return pContext->ThrowNativeError("\"SetClientName\" not supported by this mod");
|
||||||
|
}
|
||||||
|
else if (!pCall)
|
||||||
|
{
|
||||||
|
return pContext->ThrowNativeError("\"SetClientName\" wrapper failed to initialize");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// The IClient vtable is +4 from the CBaseClient vtable due to multiple inheritance.
|
||||||
|
void *pGameClient = (void *)((intptr_t)pClient - 4);
|
||||||
|
|
||||||
|
// Change the name in the engine.
|
||||||
|
START_CALL();
|
||||||
|
void **ebuf = (void **)vptr;
|
||||||
|
*ebuf = pGameClient;
|
||||||
|
DECODE_VALVE_PARAM(2, vparams, 0);
|
||||||
|
FINISH_CALL_SIMPLE(NULL);
|
||||||
|
|
||||||
|
// Notify the server of the change.
|
||||||
|
#if SOURCE_ENGINE == SE_DOTA
|
||||||
|
serverClients->ClientSettingsChanged(player->GetIndex());
|
||||||
|
#else
|
||||||
|
serverClients->ClientSettingsChanged(player->GetEdict());
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static cell_t SetClientInfo(IPluginContext *pContext, const cell_t *params)
|
static cell_t SetClientInfo(IPluginContext *pContext, const cell_t *params)
|
||||||
{
|
{
|
||||||
if (iserver == NULL)
|
if (iserver == NULL)
|
||||||
@ -1418,6 +1473,7 @@ sp_nativeinfo_t g_Natives[] =
|
|||||||
{"EquipPlayerWeapon", WeaponEquip},
|
{"EquipPlayerWeapon", WeaponEquip},
|
||||||
{"ActivateEntity", ActivateEntity},
|
{"ActivateEntity", ActivateEntity},
|
||||||
{"SetClientInfo", SetClientInfo},
|
{"SetClientInfo", SetClientInfo},
|
||||||
|
{"SetClientName", SetClientName},
|
||||||
{"GetPlayerResourceEntity", GetPlayerResourceEntity},
|
{"GetPlayerResourceEntity", GetPlayerResourceEntity},
|
||||||
{"GivePlayerAmmo", GivePlayerAmmo},
|
{"GivePlayerAmmo", GivePlayerAmmo},
|
||||||
{NULL, NULL},
|
{NULL, NULL},
|
||||||
|
@ -119,6 +119,15 @@
|
|||||||
"windows" "17"
|
"windows" "17"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "16"
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -210,6 +210,17 @@
|
|||||||
"linux" "64"
|
"linux" "64"
|
||||||
"mac" "64"
|
"mac" "64"
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Linux offset straight from VTable dump.
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "16"
|
||||||
|
"linux" "63"
|
||||||
|
"mac" "63"
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -169,6 +169,17 @@
|
|||||||
"linux" "63"
|
"linux" "63"
|
||||||
"mac" "63"
|
"mac" "63"
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Linux offset straight from VTable dump.
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "16"
|
||||||
|
"linux" "62"
|
||||||
|
"mac" "62"
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -189,6 +189,17 @@
|
|||||||
"SetUserCvar"
|
"SetUserCvar"
|
||||||
{
|
{
|
||||||
/* Not 100% sure on this, why would windows change and not linux - TEST ME */
|
/* Not 100% sure on this, why would windows change and not linux - TEST ME */
|
||||||
|
"windows" "28"
|
||||||
|
"linux" "65"
|
||||||
|
"mac" "65"
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Linux offset straight from VTable dump.
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
"windows" "27"
|
"windows" "27"
|
||||||
"linux" "64"
|
"linux" "64"
|
||||||
"mac" "64"
|
"mac" "64"
|
||||||
|
@ -157,6 +157,17 @@
|
|||||||
"linux" "58"
|
"linux" "58"
|
||||||
"mac" "58"
|
"mac" "58"
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Linux offset straight from VTable dump.
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "17"
|
||||||
|
"linux" "57"
|
||||||
|
"mac" "57"
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -189,6 +189,15 @@
|
|||||||
{
|
{
|
||||||
"windows" "17"
|
"windows" "17"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "16"
|
||||||
|
}
|
||||||
|
|
||||||
"UpdateUserSettings"
|
"UpdateUserSettings"
|
||||||
{
|
{
|
||||||
|
@ -218,6 +218,17 @@
|
|||||||
"SetUserCvar"
|
"SetUserCvar"
|
||||||
{
|
{
|
||||||
"windows" "26"
|
"windows" "26"
|
||||||
|
"linux" "63"
|
||||||
|
"mac" "63"
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Linux offset straight from VTable dump.
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "25"
|
||||||
"linux" "62"
|
"linux" "62"
|
||||||
"mac" "62"
|
"mac" "62"
|
||||||
}
|
}
|
||||||
|
@ -254,6 +254,16 @@
|
|||||||
"windows" "17"
|
"windows" "17"
|
||||||
"linux" "53"
|
"linux" "53"
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Linux offset straight from VTable dump.
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "16"
|
||||||
|
"linux" "52"
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -219,6 +219,16 @@
|
|||||||
"windows" "17"
|
"windows" "17"
|
||||||
"linux" "55"
|
"linux" "55"
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Linux offset straight from VTable dump.
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "16"
|
||||||
|
"linux" "54"
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -162,6 +162,17 @@
|
|||||||
"linux" "58"
|
"linux" "58"
|
||||||
"mac" "58"
|
"mac" "58"
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Linux offset straight from VTable dump.
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "17"
|
||||||
|
"linux" "57"
|
||||||
|
"mac" "57"
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -149,6 +149,14 @@
|
|||||||
{
|
{
|
||||||
"windows" "17"
|
"windows" "17"
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "16"
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -177,6 +177,17 @@
|
|||||||
"linux" "67"
|
"linux" "67"
|
||||||
"mac" "67"
|
"mac" "67"
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Linux offset straight from VTable dump.
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "19"
|
||||||
|
"linux" "66"
|
||||||
|
"mac" "66"
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -185,6 +185,17 @@
|
|||||||
"linux" "63"
|
"linux" "63"
|
||||||
"mac" "63"
|
"mac" "63"
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Linux offset straight from VTable dump.
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "16"
|
||||||
|
"linux" "62"
|
||||||
|
"mac" "62"
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -60,6 +60,17 @@
|
|||||||
"linux" "63"
|
"linux" "63"
|
||||||
"mac" "63"
|
"mac" "63"
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Linux offset straight from VTable dump.
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "16"
|
||||||
|
"linux" "62"
|
||||||
|
"mac" "62"
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -91,6 +91,17 @@
|
|||||||
"linux" "58"
|
"linux" "58"
|
||||||
"mac" "58"
|
"mac" "58"
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Linux offset straight from VTable dump.
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "17"
|
||||||
|
"linux" "57"
|
||||||
|
"mac" "57"
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -144,6 +144,14 @@
|
|||||||
/* Not 100% sure on this, why would windows change and not linux - TEST ME */
|
/* Not 100% sure on this, why would windows change and not linux - TEST ME */
|
||||||
"windows" "17"
|
"windows" "17"
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "16"
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -119,6 +119,17 @@
|
|||||||
"linux" "63"
|
"linux" "63"
|
||||||
"mac" "63"
|
"mac" "63"
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* CBaseClient::SetName(char const*);
|
||||||
|
* Linux offset straight from VTable dump.
|
||||||
|
* Has string "(%d)%-0.*s"
|
||||||
|
*/
|
||||||
|
"SetClientName"
|
||||||
|
{
|
||||||
|
"windows" "16"
|
||||||
|
"linux" "62"
|
||||||
|
"mac" "62"
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
* Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
|
||||||
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
* Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
|
||||||
|
@ -332,6 +332,15 @@ native ActivateEntity(entity);
|
|||||||
*/
|
*/
|
||||||
native SetClientInfo(client, const String:key[], const String:value[]);
|
native SetClientInfo(client, const String:key[], const String:value[]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes a client's name.
|
||||||
|
*
|
||||||
|
* @param client Player's index.
|
||||||
|
* @param name New name.
|
||||||
|
* @error Invalid client index, or client not connected.
|
||||||
|
*/
|
||||||
|
native void SetClientName(int client, const char[] name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gives ammo of a certain type to a player.
|
* Gives ammo of a certain type to a player.
|
||||||
* This natives obeys the maximum amount of ammo a player can carry per ammo type.
|
* This natives obeys the maximum amount of ammo a player can carry per ammo type.
|
||||||
|
@ -50,9 +50,6 @@ public Plugin:myinfo =
|
|||||||
TopMenu hTopMenu;
|
TopMenu hTopMenu;
|
||||||
|
|
||||||
/* Used to get the SDK / Engine version. */
|
/* Used to get the SDK / Engine version. */
|
||||||
/* This is used in sm_rename and sm_changeteam */
|
|
||||||
new EngineVersion:g_ModVersion = Engine_Unknown;
|
|
||||||
|
|
||||||
#include "playercommands/slay.sp"
|
#include "playercommands/slay.sp"
|
||||||
#include "playercommands/slap.sp"
|
#include "playercommands/slap.sp"
|
||||||
#include "playercommands/rename.sp"
|
#include "playercommands/rename.sp"
|
||||||
@ -65,8 +62,6 @@ public OnPluginStart()
|
|||||||
RegAdminCmd("sm_slap", Command_Slap, ADMFLAG_SLAY, "sm_slap <#userid|name> [damage]");
|
RegAdminCmd("sm_slap", Command_Slap, ADMFLAG_SLAY, "sm_slap <#userid|name> [damage]");
|
||||||
RegAdminCmd("sm_slay", Command_Slay, ADMFLAG_SLAY, "sm_slay <#userid|name>");
|
RegAdminCmd("sm_slay", Command_Slay, ADMFLAG_SLAY, "sm_slay <#userid|name>");
|
||||||
RegAdminCmd("sm_rename", Command_Rename, ADMFLAG_SLAY, "sm_rename <#userid|name>");
|
RegAdminCmd("sm_rename", Command_Rename, ADMFLAG_SLAY, "sm_rename <#userid|name>");
|
||||||
|
|
||||||
g_ModVersion = GetEngineVersion();
|
|
||||||
|
|
||||||
/* Account for late loading */
|
/* Account for late loading */
|
||||||
TopMenu topmenu;
|
TopMenu topmenu;
|
||||||
|
@ -37,22 +37,8 @@ PerformRename(client, target)
|
|||||||
{
|
{
|
||||||
LogAction(client, target, "\"%L\" renamed \"%L\" to \"%s\")", client, target, g_NewName[target]);
|
LogAction(client, target, "\"%L\" renamed \"%L\" to \"%s\")", client, target, g_NewName[target]);
|
||||||
|
|
||||||
/* Used on OB / L4D engine */
|
SetClientName(target, g_NewName[target]);
|
||||||
if (g_ModVersion != Engine_SourceSDK2006)
|
|
||||||
{
|
|
||||||
SetClientInfo(target, "name", g_NewName[target]);
|
|
||||||
}
|
|
||||||
else /* Used on CSS and EP1 / older engine */
|
|
||||||
{
|
|
||||||
if (!IsPlayerAlive(target)) /* Lets tell them about the player renamed on the next round since they're dead. */
|
|
||||||
{
|
|
||||||
decl String:m_TargetName[MAX_NAME_LENGTH];
|
|
||||||
|
|
||||||
GetClientName(target, m_TargetName, sizeof(m_TargetName));
|
|
||||||
ReplyToCommand(client, "[SM] %t", "Dead Player Rename", m_TargetName);
|
|
||||||
}
|
|
||||||
ClientCommand(target, "name %s", g_NewName[target]);
|
|
||||||
}
|
|
||||||
g_NewName[target][0] = '\0';
|
g_NewName[target][0] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,12 +15,6 @@
|
|||||||
{
|
{
|
||||||
"en" "Rename player"
|
"en" "Rename player"
|
||||||
}
|
}
|
||||||
|
|
||||||
"Dead Player Rename"
|
|
||||||
{
|
|
||||||
"#format" "{1:s}"
|
|
||||||
"en" "{1} will be renamed on the next round."
|
|
||||||
}
|
|
||||||
|
|
||||||
"Slap player"
|
"Slap player"
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user