diff --git a/source/src/clientgame.cpp b/source/src/clientgame.cpp index ae8b7c0b..94da22a5 100644 --- a/source/src/clientgame.cpp +++ b/source/src/clientgame.cpp @@ -127,7 +127,8 @@ void newteam(char *name) else conoutf("your team is: %s", player1->team); } -void newskin(int skin) { player1->nextskin = skin; } +VARNP(skin, nextskin, 0, 0, 1000); + int curteam() { return team_int(player1->team); } int currole() { return player1->clientrole; } int curmode() { return gamemode; } @@ -139,7 +140,6 @@ void curmap(int cleaned) COMMANDN(team, newteam, ARG_1STR); COMMANDN(name, newname, ARG_1STR); -COMMANDN(skin, newskin, ARG_1INT); COMMAND(curteam, ARG_IVAL); COMMAND(currole, ARG_IVAL); COMMAND(curmode, ARG_IVAL); @@ -171,7 +171,7 @@ void spawnstate(playerent *d) // reset player state not persistent d->spawnstate(gamemode); if(d==player1) { - if(player1->skin!=player1->nextskin) setskin(player1, player1->nextskin); + if(player1->skin!=nextskin) setskin(player1, nextskin); setscope(false); } } diff --git a/source/src/clients2c.cpp b/source/src/clients2c.cpp index 7583f30c..dcfd5106 100644 --- a/source/src/clients2c.cpp +++ b/source/src/clients2c.cpp @@ -348,7 +348,8 @@ void parsemessages(int cn, playerent *d, ucharbuf &p) loopi(NUMGUNS) player1->mag[i] = getint(p); player1->state = CS_ALIVE; findplayerstart(player1, false, arenaspawn); - if(player1->skin!=player1->nextskin) setskin(player1, player1->nextskin); + extern int nextskin; + if(player1->skin!=nextskin) setskin(player1, nextskin); arenaintermission = 0; if(m_arena) { diff --git a/source/src/command.cpp b/source/src/command.cpp index 5b254aba..3067fc18 100644 --- a/source/src/command.cpp +++ b/source/src/command.cpp @@ -821,7 +821,7 @@ void writecfg() FILE *f = openfile(path("config/saved.cfg", true), "w"); if(!f) return; fprintf(f, "// automatically written on exit, DO NOT MODIFY\n// delete this file to have defaults.cfg overwrite these settings\n// modify settings in game, or put settings in autoexec.cfg to override anything\n\n"); - fprintf(f, "name %s\nskin %d\n", player1->name, player1->nextskin); + fprintf(f, "name %s\n", player1->name); extern Texture *defaultcrosshair, *crosshairs[NUMGUNS]; fprintf(f, "loadcrosshair %s\n", defaultcrosshair->name+strlen("packages/misc/crosshairs/")); loopi(NUMGUNS) if(crosshairs[i]) fprintf(f, "loadcrosshair %s %d\n", crosshairs[i]->name+strlen("packages/misc/crosshairs/"), i); diff --git a/source/src/command.h b/source/src/command.h index 3bafa176..8dc35bd1 100644 --- a/source/src/command.h +++ b/source/src/command.h @@ -85,6 +85,7 @@ enum { IEXC_CORE = 0, IEXC_CFG, IEXC_PROMPT, IEXC_MAPCFG, IEXC_NUM }; // script #define VARP(name, min, cur, max) int name = variable(#name, min, cur, max, &name, NULL, true) #define VAR(name, min, cur, max) int name = variable(#name, min, cur, max, &name, NULL, false) #define VARN(name, global, min, cur, max) int global = variable(#name, min, cur, max, &global, NULL, false) +#define VARNP(name, global, min, cur, max) int global = variable(#name, min, cur, max, &global, NULL, true) #define VARF(name, min, cur, max, body) void var_##name(); int name = variable(#name, min, cur, max, &name, var_##name, false); void var_##name() { body; } #define VARFP(name, min, cur, max, body) void var_##name(); int name = variable(#name, min, cur, max, &name, var_##name, true); void var_##name() { body; } diff --git a/source/src/entity.h b/source/src/entity.h index 1e4e7fac..1c75bf23 100644 --- a/source/src/entity.h +++ b/source/src/entity.h @@ -339,7 +339,7 @@ struct playerent : dynent, playerstate string name, team; int weaponchanging; int nextweapon; // weapon we switch to - int skin, nextskin; // skin after respawning + int skin; int spectatemode, followplayercn; int eardamagemillis; int respawnoffset; @@ -359,7 +359,7 @@ struct playerent : dynent, playerstate vec head; playerent() : clientnum(-1), lastupdate(0), plag(0), ping(0), lifesequence(0), frags(0), flagscore(0), deaths(0), lastpain(0), lastvoicecom(0), clientrole(CR_DEFAULT), - skin(0), nextskin(0), spectatemode(SM_NONE), followplayercn(-1), eardamagemillis(0), respawnoffset(0), + skin(0), spectatemode(SM_NONE), followplayercn(-1), eardamagemillis(0), respawnoffset(0), prevweaponsel(NULL), weaponsel(NULL), nextweaponsel(NULL), primweap(NULL), nextprimweap(NULL), lastattackweapon(NULL), smoothmillis(-1), head(-1, -1, -1)