kill messages cfg editable in game, and separated from server config

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@6347 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
Lucas GAUTHERON
2011-04-25 23:23:02 +00:00
parent 8b2f33b614
commit aec37282f8
7 changed files with 69 additions and 109 deletions
+47 -31
View File
@@ -750,6 +750,53 @@ bool tryrespawn()
VARP(hitsound, 0, 0, 1);
// client kill messages
void setkillmessage(int gun, bool gib, const char *message)
{
if(!message || !*message)
{
result(killmessage(gun, gib));
return;
}
if(gun < 0 || gun >= NUMGUNS)
{
conoutf("invalid gun specified");
return;
}
if(gib) copystring(gibmessages[gun], message, sizeof(gibmessages[gun]));
else copystring(fragmessages[gun], message, sizeof(fragmessages[gun]));
}
void fragmessage(const char *gun, const char *message)
{
setkillmessage(atoi(gun), false, message);
}
void gibmessage(const char *gun, const char *message)
{
setkillmessage(atoi(gun), true, message);
}
COMMAND(fragmessage, ARG_2STR);
COMMAND(gibmessage, ARG_2STR);
void writekillmsgcfg()
{
stream *f = openfile(path("config/killmessages.cfg", true), "w");
if(!f) return;
f->printf("// kill messages for each weapon\n");
loopi(NUMGUNS)
{
const char *fragmsg = killmessage(i, false);
const char *gibmsg = killmessage(i, true);
f->printf("\nfragmessage %d \"%s\"", i, fragmsg);
f->printf("\ngibmessage %d \"%s\"", i, gibmsg);
}
f->printf("\n");
}
// damage arriving from the network, monsters, yourself, all ends up here.
void dodamage(int damage, playerent *pl, playerent *actor, int gun, bool gib, bool local)
@@ -785,37 +832,6 @@ void dodamage(int damage, playerent *pl, playerent *actor, int gun, bool gib, bo
else audiomgr.playsound(S_PAIN1+rnd(5), pl);
}
void setkillmessage(int gun, bool gib, const char *message)
{
if(!message || !*message)
{
result(killmessage(gun, gib));
return;
}
if(gun < 0 || gun >= NUMGUNS)
{
conoutf("invalid gun specified");
return;
}
if(gib) copystring(gibmessages[gun], message, sizeof(gibmessages[gun]));
else copystring(fragmessages[gun], message, sizeof(fragmessages[gun]));
}
void fragmessage(const char *gun, const char *message)
{
setkillmessage(atoi(gun), false, message);
}
void gibmessage(const char *gun, const char *message)
{
setkillmessage(atoi(gun), true, message);
}
COMMAND(fragmessage, ARG_2STR);
COMMAND(gibmessage, ARG_2STR);
void dokill(playerent *pl, playerent *act, bool gib, int gun)
{
if(pl->state!=CS_ALIVE || intermission) return;
+2 -1
View File
@@ -34,6 +34,7 @@ void quit() // normal exit
extern void writeinitcfg();
writeinitcfg();
writeservercfg();
writekillmsgcfg();
if(resetcfg) deletecfg();
else writecfg();
cleanup(NULL);
@@ -1107,7 +1108,6 @@ int main(int argc, char **argv)
exec("config/scontext.cfg");
exec("config/locale.cfg");
exec("config/keymap.cfg");
exec("config/killmessages.cfg");
exec("config/menus.cfg");
exec("config/scripts.cfg");
exec("config/prefabs.cfg");
@@ -1115,6 +1115,7 @@ int main(int argc, char **argv)
exec("config/securemaps.cfg");
exec("config/admin.cfg");
execfile("config/servers.cfg");
execfile("config/killmessages.cfg");
persistidents = true;
static char resdata[] = { 112, 97, 99, 107, 97, 103, 101, 115, 47, 116, 101, 120, 116, 117, 114, 101, 115, 47, 107, 117, 114, 116, 47, 107, 108, 105, 116, 101, 50, 46, 106, 112, 103, 0 };
+2 -2
View File
@@ -746,6 +746,7 @@ extern void push(const char *name, const char *action);
extern void pop(const char *name);
extern void alias(const char *name, const char *action);
extern const char *getalias(const char *name);
extern void writekillmsgcfg();
extern void writecfg();
extern void deletecfg();
extern void identnames(vector<const char *> &names, bool builtinonly);
@@ -847,7 +848,6 @@ struct serverconfigfile
};
// server commandline parsing
struct servercommandline
{
int uprate, serverport, syslogfacility, filethres, syslogthres, maxdemos, maxclients, kickthreshold, banthreshold, verbose, incoming_limit, afk_limit, ban_time, demotimelocal;
@@ -861,7 +861,7 @@ struct servercommandline
maxclients(DEFAULTCLIENTS), kickthreshold(-5), banthreshold(-6), verbose(0), incoming_limit(10), afk_limit(45000), ban_time(20*60*1000), demotimelocal(0),
ip(""), master(NULL), logident(""), serverpassword(""), adminpasswd(""), demopath(""),
maprot("config/maprot.cfg"), pwdfile("config/serverpwd.cfg"), blfile("config/serverblacklist.cfg"), nbfile("config/nicknameblacklist.cfg"),
infopath("config/serverinfo"), motdpath("config/motd"), forbidden("config/forbidden.cfg"), killmessages("config/killmessages.cfg"),
infopath("config/serverinfo"), motdpath("config/motd"), forbidden("config/forbidden.cfg"), killmessages("config/serverkillmessages.cfg"),
logtimestamp(false), demo_interm(false),
clfilenesting(0)
{