rename SetUserInfo to UserInfoCallback.

set self to the client entity for UserInfoCallback.
add void (entity ent, string key, string value) setinfokey = #102;
	similar usage to infokey.
This commit is contained in:
Bill Currie 2001-07-20 05:05:47 +00:00
parent d30f1ee0c2
commit 743fd9cc19
4 changed files with 27 additions and 8 deletions

View file

@ -170,6 +170,6 @@ extern func_t EndFrame;
extern func_t SpectatorConnect;
extern func_t SpectatorThink;
extern func_t SpectatorDisconnect;
extern func_t SetUserInfo;
extern func_t UserInfoCallback;
#endif // __sv_progs_h

View file

@ -1675,6 +1675,23 @@ PF_charcount (progs_t *pr)
}
void
PF_setinfokey (progs_t *pr)
{
edict_t *edict = G_EDICT (pr, OFS_PARM0);
int e1 = NUM_FOR_EDICT (pr, edict);
const char *key = G_STRING (pr, OFS_PARM1);
const char *value = G_STRING (pr, OFS_PARM2);
if (e1 == 0) {
Info_SetValueForKey (localinfo, key, value, MAX_LOCALINFO_STRING);
} else if (e1 <= MAX_CLIENTS) {
Info_SetValueForKey (svs.clients[e1 - 1].userinfo, key, value,
MAX_INFO_STRING);
}
}
void
PF_Fixme (progs_t *pr)
{
@ -1829,9 +1846,10 @@ builtin_t sv_builtins[] = {
PF_Fixme,
PF_Fixme,
PF_Fixme,
PF_Checkextension,
PF_Checkextension, // 99
PF_strlen,
PF_charcount,
PF_setinfokey,
};
int sv_numbuiltins = sizeof (sv_builtins) / sizeof (sv_builtins[0]);

View file

@ -59,7 +59,7 @@ func_t EndFrame;
func_t SpectatorConnect;
func_t SpectatorDisconnect;
func_t SpectatorThink;
func_t SetUserInfo;
func_t UserInfoCallback;
static int reserved_edicts = MAX_CLIENTS;
@ -256,7 +256,7 @@ SV_LoadProgs (void)
// Zoid, find the spectator functions
SpectatorConnect = SpectatorThink = SpectatorDisconnect = 0;
SetUserInfo = 0;
UserInfoCallback = 0;
if ((f = ED_FindFunction (&sv_pr_state, "SpectatorConnect")) != NULL)
SpectatorConnect = (func_t) (f - sv_pr_state.pr_functions);
@ -264,8 +264,8 @@ SV_LoadProgs (void)
SpectatorThink = (func_t) (f - sv_pr_state.pr_functions);
if ((f = ED_FindFunction (&sv_pr_state, "SpectatorDisconnect")) != NULL)
SpectatorDisconnect = (func_t) (f - sv_pr_state.pr_functions);
if ((f = ED_FindFunction (&sv_pr_state, "SetUserInfo")) != NULL)
SetUserInfo = (func_t) (f - sv_pr_state.pr_functions);
if ((f = ED_FindFunction (&sv_pr_state, "UserInfoCallback")) != NULL)
UserInfoCallback = (func_t) (f - sv_pr_state.pr_functions);
// 2000-01-02 EndFrame function by Maddes/FrikaC
EndFrame = 0;

View file

@ -1105,14 +1105,15 @@ SV_SetInfo_f (void)
return; // don't set priveledged values
if (SetUserInfo) {
if (UserInfoCallback) {
float ret;
*sv_globals.self = EDICT_TO_PROG (&sv_pr_state, host_client);
G_var (&sv_pr_state, OFS_PARM0, string) = PR_SetString (&sv_pr_state,
Cmd_Argv (1));
G_var (&sv_pr_state, OFS_PARM1, string) = PR_SetString (&sv_pr_state,
Cmd_Argv (2));
PR_ExecuteProgram (&sv_pr_state, SetUserInfo);
PR_ExecuteProgram (&sv_pr_state, UserInfoCallback);
ret = G_FLOAT (&sv_pr_state, OFS_RETURN); // get the return value
if (!ret)
return;