Fix it all up and add 4.25 zbotcheck
This commit is contained in:
parent
c480e687aa
commit
75156a00b6
7
Makefile
7
Makefile
|
@ -38,6 +38,7 @@ g_ai.o \
|
||||||
g_chase.o \
|
g_chase.o \
|
||||||
g_cmds.o \
|
g_cmds.o \
|
||||||
g_combat.o \
|
g_combat.o \
|
||||||
|
zbotcheck.o \
|
||||||
g_ctf.o \
|
g_ctf.o \
|
||||||
g_ent.o \
|
g_ent.o \
|
||||||
g_func.o \
|
g_func.o \
|
||||||
|
@ -164,7 +165,7 @@ OBJS = $(C_OBJS) $(G_OBJS) $(M_OBJS) $(P_OBJS) $(Q_OBJS)
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
# Uncomment for Linux
|
# Uncomment for Linux
|
||||||
TARGET = gamei386.so
|
TARGET = game.so
|
||||||
|
|
||||||
# Uncomment for Solaris
|
# Uncomment for Solaris
|
||||||
#TARGET = gamesparc.so
|
#TARGET = gamesparc.so
|
||||||
|
@ -181,7 +182,7 @@ SHELL = /bin/sh
|
||||||
# it this way the same source code can be built under both
|
# it this way the same source code can be built under both
|
||||||
# platforms unchanged.
|
# platforms unchanged.
|
||||||
#
|
#
|
||||||
BASE_CFLAGS = -Dstricmp=strcasecmp
|
BASE_CFLAGS = -Dstricmp=strcasecmp -fcommon
|
||||||
|
|
||||||
# These build objects optimized for speed rather than size on Linux.
|
# These build objects optimized for speed rather than size on Linux.
|
||||||
#CFLAGS = $(BASE_CFLAGS) -O2 -DC_ONLY -ffast-math -funroll-loops \
|
#CFLAGS = $(BASE_CFLAGS) -O2 -DC_ONLY -ffast-math -funroll-loops \
|
||||||
|
@ -239,8 +240,6 @@ stripcr: .
|
||||||
clean:
|
clean:
|
||||||
@echo "Deleting WF temporary and compiled files..."
|
@echo "Deleting WF temporary and compiled files..."
|
||||||
@rm -f $(OBJS) *.orig ~* core *.so
|
@rm -f $(OBJS) *.orig ~* core *.so
|
||||||
@echo "Restoring p_trail.o..."
|
|
||||||
@cp p_trail.o.sav p_trail.o
|
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
@echo "Deleting everything that can be rebuilt..."
|
@echo "Deleting everything that can be rebuilt..."
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
Weapons Factory 4 for Unix
|
||||||
|
-=-=-=-=-=-=-=--=-=-=-=-=-=-
|
||||||
|
|
||||||
|
Instructions for how to install:
|
||||||
|
|
||||||
|
1) Install the client PAK5.PAK file in the WF dir.
|
||||||
|
|
||||||
|
2) Move motd.txt to your WF dir. Edit the motd.txt if you wish.
|
||||||
|
|
||||||
|
3) Move wflinux/wfsolaris to your main Q2 dir.
|
||||||
|
|
||||||
|
NOTE: the "nohup" command is nessesary if you want your server to run in
|
||||||
|
the background... remove it if you want the server to run on a console.
|
||||||
|
|
||||||
|
4) Edit the server.cfg to your tastes. Use the wfserver.html for help.
|
||||||
|
|
||||||
|
5) Edit maplist.ini to include your maps.
|
||||||
|
|
||||||
|
6) Run "./wflinux" or "./wfsolaris", depending on your OS.
|
||||||
|
|
||||||
|
Have fun!
|
||||||
|
|
||||||
|
http://www.captured.com/weaponsfactory
|
10
g_ctf.c
10
g_ctf.c
|
@ -1,6 +1,7 @@
|
||||||
/* g_ctf.c */
|
/* g_ctf.c */
|
||||||
|
|
||||||
#include "g_local.h"
|
#include "g_local.h"
|
||||||
|
#include "wf_fileio.h"
|
||||||
#include "wf_classmgr.h"
|
#include "wf_classmgr.h"
|
||||||
#include "stdlog.h" // StdLog - Mark Davies
|
#include "stdlog.h" // StdLog - Mark Davies
|
||||||
//ERASER START
|
//ERASER START
|
||||||
|
@ -8,7 +9,6 @@
|
||||||
#include "bot_procs.h"
|
#include "bot_procs.h"
|
||||||
|
|
||||||
void cmd_RemoveLaserDefense(edict_t *ent);
|
void cmd_RemoveLaserDefense(edict_t *ent);
|
||||||
void readline(FILE *file, char *str, int max);
|
|
||||||
int PlayerChangeScore(edict_t *self, int points);
|
int PlayerChangeScore(edict_t *self, int points);
|
||||||
void WFClassCount(edict_t *self, int *classcount);
|
void WFClassCount(edict_t *self, int *classcount);
|
||||||
void WFEndDMLevel (char *mapname);
|
void WFEndDMLevel (char *mapname);
|
||||||
|
@ -4920,9 +4920,9 @@ int CTFUpdateJoinMenu(edict_t *ent)
|
||||||
|
|
||||||
if (motd_file = fopen("motd.txt", "r"))
|
if (motd_file = fopen("motd.txt", "r"))
|
||||||
{
|
{
|
||||||
readline(motd_file, motd_line1, 79);
|
wfreadline(motd_file, motd_line1, 79);
|
||||||
readline(motd_file, motd_line2, 79);
|
wfreadline(motd_file, motd_line2, 79);
|
||||||
readline(motd_file, motd_line3, 79);
|
wfreadline(motd_file, motd_line3, 79);
|
||||||
// close the file
|
// close the file
|
||||||
fclose(motd_file);
|
fclose(motd_file);
|
||||||
}
|
}
|
||||||
|
@ -5766,4 +5766,4 @@ void Cmd_MapHelp_f (edict_t *ent)
|
||||||
|
|
||||||
WFFillMapHelp(ent);
|
WFFillMapHelp(ent);
|
||||||
PMenu_Open(ent, wfMapHelpMenu, -1, sizeof(wfMapHelpMenu) / sizeof(pmenu_t), true, false);
|
PMenu_Open(ent, wfMapHelpMenu, -1, sizeof(wfMapHelpMenu) / sizeof(pmenu_t), true, false);
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -2473,14 +2473,14 @@ qboolean ClientConnect (edict_t *ent, char *userinfo)
|
||||||
// drop port #
|
// drop port #
|
||||||
tmp = value;
|
tmp = value;
|
||||||
if (!ent->bot_client)
|
if (!ent->bot_client)
|
||||||
while (tmp)
|
/* while (tmp)
|
||||||
{
|
{
|
||||||
if (*(++tmp) == ':')
|
if (*(++tmp) == ':')
|
||||||
{
|
{
|
||||||
*tmp = (char) NULL;
|
*tmp = (char) NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}*/ // mv: who thought of this
|
||||||
|
|
||||||
if (IsBanned(value))
|
if (IsBanned(value))
|
||||||
{
|
{
|
||||||
|
@ -3621,4 +3621,4 @@ void ClientBeginServerFrame (edict_t *ent)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//ERASER END
|
//ERASER END
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
This zip file contains all of the Weapons Factory 4.2 server related files.
|
||||||
|
|
||||||
|
For complete info on how to set up a Weapons Factory server, visit the
|
||||||
|
Weapons Factory web site at http://www.captured.com/weaponsfactory and
|
||||||
|
look at the Server Setup section.
|
||||||
|
|
||||||
|
For those of you who are upgrading, make sure you make a copy of your
|
||||||
|
server.cfg and wfserver.ini files before installing these files. There are
|
||||||
|
so many new changes for server administrators that you should visit the web
|
||||||
|
site and review the Server Setup page.
|
||||||
|
|
||||||
|
There are some new files included in this release to support the built in
|
||||||
|
Weapons Factory eraser bot, including a few .DLLs and .CFG files. If you
|
||||||
|
plan on running bots on your server, please visit the WF Eraser Bot page
|
||||||
|
on the WF web site. You should also look at the eraser_readme.txt and
|
||||||
|
wferaser42.htm files. The fastest way to get bots working on your server
|
||||||
|
is to run this command in the console window:
|
||||||
|
|
||||||
|
bot_num 4
|
||||||
|
|
||||||
|
The number at the end of the command is the number of bots to add. They will
|
||||||
|
automatically divide themselves into separate teams.
|
|
@ -0,0 +1,33 @@
|
||||||
|
// Sample Server Configuration File for WF
|
||||||
|
|
||||||
|
set dmflags 803348
|
||||||
|
|
||||||
|
// set wfflags 1120 - now set in wfserver.ini
|
||||||
|
|
||||||
|
set hostname "Server Name"
|
||||||
|
set ftp "ftp://my.ftp.com" s
|
||||||
|
set admin "me@me.com" s
|
||||||
|
set system "Pentium/Sparc 450Mhz" s
|
||||||
|
set inet "My Internet Connection Speed" s
|
||||||
|
set os "My OS"
|
||||||
|
|
||||||
|
set deathmatch 1
|
||||||
|
set maxclients 18
|
||||||
|
set fraglimit 150
|
||||||
|
set capturelimit 12
|
||||||
|
set timelimit 60
|
||||||
|
|
||||||
|
set allow_download 1
|
||||||
|
set allow_download_maps 1
|
||||||
|
set allow_download_models 1
|
||||||
|
set allow_download_players 1
|
||||||
|
set allow_download_sounds 1
|
||||||
|
|
||||||
|
set logfile 2
|
||||||
|
|
||||||
|
// set rcon_password mypassword
|
||||||
|
|
||||||
|
set public 1
|
||||||
|
setmaster q2master.planetquake.com
|
||||||
|
|
||||||
|
map 2fort7wf
|
|
@ -0,0 +1,72 @@
|
||||||
|
Φ³ ³·Έ΄
|
||||||
|
Τεαν±°
|
||||||
|
|
||||||
|
Ϋ<EFBFBD>εγοξέ
|
||||||
|
ζεναμε ψςεγίς ψςεγίβ °
|
||||||
|
± ² ³ ΄ ³Ά ° ° ° ° °
|
||||||
|
Ά ΅ ³
|
||||||
|
±°° ΅·΅ ²°° ²Ά²±΄Ή ·Ά
|
||||||
|
²°° ΅° ° ³΅ ±°° °
|
||||||
|
|
||||||
|
ΫΞυςσεέ
|
||||||
|
ζεναμε ψξυςίς ψξυςίβ ²
|
||||||
|
± ² ²΅ ΄ ±± ° ° ° ° °
|
||||||
|
± ±² °
|
||||||
|
±²΅ ³·΅ ²°° ΆΆ ±²
|
||||||
|
²°° ±°° ° ³΅ ±°° °
|
||||||
|
|
||||||
|
ΫΕξηιξεεςέ
|
||||||
|
ναμε ψεξηίς ψεξηίβ °
|
||||||
|
± ² ²· ³ ΄ ° ° ±³ ° °
|
||||||
|
± ±³ ±΄
|
||||||
|
±°° ²΅° ²°° ³²ΈΈ³² ±²
|
||||||
|
²°° ±°° ²° ²΅ ±°° ²°
|
||||||
|
|
||||||
|
ΫΝαςιξεέ
|
||||||
|
ναμε ψναςίς ψναςίβ ²
|
||||||
|
± ² ° ° ° ±Έ · Ά ° °
|
||||||
|
± ΄ Έ
|
||||||
|
±·΅ ±Έ΅ ²°° ²Ά³±ΆΈ ±΄
|
||||||
|
° ΅° ΄° ²΅ ±°° ²°
|
||||||
|
|
||||||
|
ΫΓωβοςηέ
|
||||||
|
γωβοςη ψγωβίς ψγωβίβ °
|
||||||
|
± ² ° ±΄ ±Ά Έ ³± ° ° °
|
||||||
|
±Ά ² Ά
|
||||||
|
²²΅ ²±΅ ²°° ±³³±²° ±΄
|
||||||
|
° ΅° ±°° ³΅ ±°° ΅°
|
||||||
|
|
||||||
|
ΫΑςσοξιστέ
|
||||||
|
γωβοςη ψαςσίς ψαςσίβ ²
|
||||||
|
± ² ²° ° ° ²± ²² ° ΄³ ²³
|
||||||
|
± Ή ²°
|
||||||
|
±·΅ ³²΅ ²°° Έ±Ή² ±²
|
||||||
|
±°° ΅° ΄° ²΅ ΅° ²΅
|
||||||
|
|
||||||
|
ΫΗυξξεςέ
|
||||||
|
ζεναμε ψηυξίς ψηυξίβ ΄
|
||||||
|
± ² ° ΄ ±Ή ΅ ³² ° ° °
|
||||||
|
± ±Ά °
|
||||||
|
²΅° ³°° ²°° ΄°ΉΆ ±΄
|
||||||
|
³°° ΅° ° ²΅ ±°° °
|
||||||
|
|
||||||
|
ΫΣξιπεςέ
|
||||||
|
ναμε ψσξιίς ψσξιίβ ΄
|
||||||
|
± ² ° ° ²Ή ° ° ° Ή °
|
||||||
|
± ±· °
|
||||||
|
±΅° ±Έ΅ ²°° ²Ά²±΄΄ ·Ά
|
||||||
|
° ΅° ° ²΅ ° ΅°
|
||||||
|
|
||||||
|
ΫΣπωέ
|
||||||
|
ναμε ψσπωίς ψσπωίβ Ά
|
||||||
|
± ² ° ΄ ³³ ³΄ ° ° ° °
|
||||||
|
± ±° ±
|
||||||
|
±°° ±Έ΅ ²°° ΅² ·Ά
|
||||||
|
²°° ΅° ° ²΅ ±°° °
|
||||||
|
|
||||||
|
ΫΝεςγεξαςωέ
|
||||||
|
ναμε ψνεςίς ψνεςίβ Έ
|
||||||
|
± ² ³Ά ³΅ ³΄ ³· ° ° ° °
|
||||||
|
± ±΅ Ά
|
||||||
|
²°° ²°° ²°° ° ±³
|
||||||
|
²°° Ά° ²° ²΅ ΅° ΅°
|
|
@ -0,0 +1,23 @@
|
||||||
|
Φ³ ³·Έ΄
|
||||||
|
Τεαν³
|
||||||
|
|
||||||
|
Ϋ<EFBFBD>εγοξέ
|
||||||
|
ζεναμε ψςεγίς ψςεγίβ °
|
||||||
|
± ² ³ ° ° ° ° Ά Ή °
|
||||||
|
± ΅ Ά
|
||||||
|
²°° ΅·΅ ²°° ²Ά²±΄΅ ·Έ
|
||||||
|
²°° ±°° ΅° ΅° ²°° ΅°
|
||||||
|
|
||||||
|
ΫΝαςιξεέ
|
||||||
|
ναμε ψναςίς ψναςίβ °
|
||||||
|
± ² ³ ΄ ° ° · ° ° °
|
||||||
|
΄ ³ Έ
|
||||||
|
²°° ±Έ΅ ²°° ²Ά²±΄΅ ±΄
|
||||||
|
²°° ±°° ΅° ΅° ²°° ΅°
|
||||||
|
|
||||||
|
ΫΓωβοςηέ
|
||||||
|
γωβοςη ψγωβίς ψγωβίβ °
|
||||||
|
± ² ³ ° ΅ ° · Έ ° °
|
||||||
|
Ή ² ·
|
||||||
|
²°° ²±΅ ²°° ²Ά²±΄΄ ΄·
|
||||||
|
²°° ±°° ΅° ΅° ²°° ΅°
|
|
@ -0,0 +1,44 @@
|
||||||
|
ヨウ<EFBFBD>ウキクエ
|
||||||
|
ヤ裔昮
|
||||||
|
|
||||||
|
ロメ裙<EFBFBD>ン
|
||||||
|
趺涖<EFBFBD><EFBFBD><EFBFBD>裙゚<EFBFBD><EFBFBD>裙゚笄ー
|
||||||
|
ア<EFBFBD>イ<EFBFBD>ー<EFBFBD>ー<EFBFBD>イケ<EFBFBD>ー<EFBFBD>ー<EFBFBD>ー<EFBFBD>ケ<EFBFBD>ー
|
||||||
|
アキ<EFBFBD>オ<EFBFBD>ー
|
||||||
|
オー<EFBFBD>オキオ<EFBFBD>ケー<EFBFBD><EFBFBD>イカイアエオ<EFBFBD><EFBFBD>ク
|
||||||
|
イーー<EFBFBD>アーー<EFBFBD>オー<EFBFBD>オー<EFBFBD>イーー<EFBFBD>オー
|
||||||
|
|
||||||
|
ロホ<EFBFBD><EFBFBD>ン
|
||||||
|
趺涖<EFBFBD><EFBFBD><EFBFBD><EFBFBD>゚<EFBFBD><EFBFBD><EFBFBD>゚笄イ
|
||||||
|
ア<EFBFBD>イ<EFBFBD>イオ<EFBFBD>エ<EFBFBD>アア<EFBFBD>ー<EFBFBD>ー<EFBFBD>ー<EFBFBD>ー<EFBFBD>ー
|
||||||
|
ア<EFBFBD>アー<EFBFBD>アイ
|
||||||
|
アイオ<EFBFBD>ウキオ<EFBFBD>アキオ<EFBFBD><EFBFBD>イカイアエエ<EFBFBD><EFBFBD>アイ
|
||||||
|
イーー<EFBFBD>アーー<EFBFBD>オー<EFBFBD>オー<EFBFBD>イーー<EFBFBD>オー
|
||||||
|
|
||||||
|
ロナ鰀鴃裹<EFBFBD>
|
||||||
|
涖<EFBFBD><EFBFBD><EFBFBD>鰀゚<EFBFBD><EFBFBD>鰀゚笄ー
|
||||||
|
ア<EFBFBD>イ<EFBFBD>イキ<EFBFBD>エ<EFBFBD>ー<EFBFBD>ー<EFBFBD>ー<EFBFBD>アウ<EFBFBD>ー<EFBFBD>ー
|
||||||
|
ア<EFBFBD>アウ<EFBFBD>アエ
|
||||||
|
イーー<EFBFBD>イオー<EFBFBD>アオー<EFBFBD><EFBFBD>ウイククウウ<EFBFBD><EFBFBD>ク
|
||||||
|
イーー<EFBFBD>アーー<EFBFBD>オー<EFBFBD>オー<EFBFBD>イーー<EFBFBD>オー
|
||||||
|
|
||||||
|
ロヘ碪鴃袿
|
||||||
|
涖<EFBFBD><EFBFBD><EFBFBD>碪゚<EFBFBD><EFBFBD>碪゚笄イ
|
||||||
|
ア<EFBFBD>イ<EFBFBD>ウ<EFBFBD>アケ<EFBFBD>オ<EFBFBD>アク<EFBFBD>キ<EFBFBD>カ<EFBFBD>ー<EFBFBD>ー
|
||||||
|
エ<EFBFBD>ウ<EFBFBD>ク
|
||||||
|
イーー<EFBFBD>アクオ<EFBFBD>イイオ<EFBFBD><EFBFBD>イカキイカオ<EFBFBD><EFBFBD>エイ
|
||||||
|
イーー<EFBFBD>アーー<EFBFBD>オー<EFBFBD>オー<EFBFBD>イーー<EFBFBD>オー
|
||||||
|
|
||||||
|
ロテ<EFBFBD><EFBFBD>釼
|
||||||
|
脩糀<EFBFBD><EFBFBD><EFBFBD><EFBFBD>゚<EFBFBD><EFBFBD><EFBFBD>゚笄ー
|
||||||
|
ア<EFBFBD>イ<EFBFBD>ー<EFBFBD>アエ<EFBFBD>アカ<EFBFBD>ク<EFBFBD>キ<EFBFBD>ウア<EFBFBD>ー<EFBFBD>ー
|
||||||
|
アカ<EFBFBD>イ<EFBFBD>カ
|
||||||
|
イーー<EFBFBD>イアオ<EFBFBD>アイオ<EFBFBD><EFBFBD>ウケオイカエ<EFBFBD><EFBFBD>エカ
|
||||||
|
イーー<EFBFBD>アーー<EFBFBD>オー<EFBFBD>オー<EFBFBD>イーー<EFBFBD>オー
|
||||||
|
|
||||||
|
ロチ<EFBFBD><EFBFBD>鴣<EFBFBD>
|
||||||
|
脩糀<EFBFBD><EFBFBD><EFBFBD><EFBFBD>゚<EFBFBD><EFBFBD><EFBFBD>゚笄イ
|
||||||
|
ア<EFBFBD>イ<EFBFBD>イー<EFBFBD>ー<EFBFBD>ー<EFBFBD>イア<EFBFBD>イイ<EFBFBD>ー<EFBFBD>ー<EFBFBD>イウ
|
||||||
|
ア<EFBFBD>ケ<EFBFBD>アー
|
||||||
|
アオー<EFBFBD>ウイオ<EFBFBD>アーー<EFBFBD><EFBFBD>イカイアエエ<EFBFBD><EFBFBD>ク
|
||||||
|
イーー<EFBFBD>アーー<EFBFBD>オー<EFBFBD>オー<EFBFBD>イーー<EFBFBD>オー
|
|
@ -119,7 +119,8 @@ void fire_clusterrocket (edict_t *self, vec3_t start, vec3_t dir, int damage, in
|
||||||
// CCH: a few more attributes to let the rocket 'die'
|
// CCH: a few more attributes to let the rocket 'die'
|
||||||
VectorSet(rocket->mins, -10, -3, 0);
|
VectorSet(rocket->mins, -10, -3, 0);
|
||||||
VectorSet(rocket->maxs, 10, 3, 6);
|
VectorSet(rocket->maxs, 10, 3, 6);
|
||||||
rocket->mass = 10;+ rocket->health = 10;
|
rocket->mass = 10;
|
||||||
|
rocket->health = 10;
|
||||||
rocket->die = Rocket_Die;
|
rocket->die = Rocket_Die;
|
||||||
rocket->takedamage = DAMAGE_NO;
|
rocket->takedamage = DAMAGE_NO;
|
||||||
rocket->monsterinfo.aiflags = AI_NOSTEP;
|
rocket->monsterinfo.aiflags = AI_NOSTEP;
|
||||||
|
|
|
@ -147,7 +147,8 @@ void fire_napalmrocket (edict_t *self, vec3_t start, vec3_t dir, int damage, int
|
||||||
// CCH: a few more attributes to let the rocket 'die'
|
// CCH: a few more attributes to let the rocket 'die'
|
||||||
VectorSet(rocket->mins, -10, -3, 0);
|
VectorSet(rocket->mins, -10, -3, 0);
|
||||||
VectorSet(rocket->maxs, 10, 3, 6);
|
VectorSet(rocket->maxs, 10, 3, 6);
|
||||||
rocket->mass = 10;+ rocket->health = 10;
|
rocket->mass = 10;
|
||||||
|
rocket->health = 10;
|
||||||
rocket->die = Rocket_Die;
|
rocket->die = Rocket_Die;
|
||||||
rocket->takedamage = DAMAGE_NO;
|
rocket->takedamage = DAMAGE_NO;
|
||||||
rocket->monsterinfo.aiflags = AI_NOSTEP;
|
rocket->monsterinfo.aiflags = AI_NOSTEP;
|
||||||
|
@ -205,4 +206,4 @@ void Weapon_RocketNapalmLauncher (edict_t *ent)
|
||||||
static int fire_frames[] = {5, 0};
|
static int fire_frames[] = {5, 0};
|
||||||
|
|
||||||
Weapon_Generic (ent, 4, 12, 50, 54, pause_frames, fire_frames, Weapon_RocketNapalmLauncher_Fire);
|
Weapon_Generic (ent, 4, 12, 50, 54, pause_frames, fire_frames, Weapon_RocketNapalmLauncher_Fire);
|
||||||
}
|
}
|
||||||
|
|
|
@ -157,7 +157,7 @@ void fire_pellet_rocket (edict_t *self, vec3_t start, vec3_t dir, int damage, in
|
||||||
// CCH: a few more attributes to let the rocket 'die'
|
// CCH: a few more attributes to let the rocket 'die'
|
||||||
VectorSet(rocket->mins, -10, -3, 0);
|
VectorSet(rocket->mins, -10, -3, 0);
|
||||||
VectorSet(rocket->maxs, 10, 3, 6);
|
VectorSet(rocket->maxs, 10, 3, 6);
|
||||||
rocket->mass = 10;+ rocket->health = 10;
|
rocket->mass = 10;rocket->health = 10;
|
||||||
rocket->die = Rocket_Die;
|
rocket->die = Rocket_Die;
|
||||||
// rocket->takedamage = DAMAGE_YES;
|
// rocket->takedamage = DAMAGE_YES;
|
||||||
rocket->takedamage = DAMAGE_NO; //to fix self damage bug?
|
rocket->takedamage = DAMAGE_NO; //to fix self damage bug?
|
||||||
|
@ -216,4 +216,4 @@ void Weapon_PelletRocketLauncher (edict_t *ent)
|
||||||
static int fire_frames[] = {5, 0};
|
static int fire_frames[] = {5, 0};
|
||||||
|
|
||||||
Weapon_Generic (ent, 4, 12, 50, 54, pause_frames, fire_frames, Weapon_PelletRocketLauncher_Fire);
|
Weapon_Generic (ent, 4, 12, 50, 54, pause_frames, fire_frames, Weapon_PelletRocketLauncher_Fire);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
P {
|
||||||
|
font-family: Optima, Arial, Lucida Sans Unicode, sans-serif;
|
||||||
|
font-size: 12pt;
|
||||||
|
line-height: 17pt;
|
||||||
|
color: #C9D1D0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.DATE {
|
||||||
|
color: #FFFF00;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
A {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
B {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #A79514
|
||||||
|
}
|
||||||
|
|
||||||
|
H1 {
|
||||||
|
font-family: Optima, Arial, Lucida Sans Unicode, sans-serif;
|
||||||
|
font-size: 18pt;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #FFFF00;
|
||||||
|
}
|
||||||
|
|
||||||
|
H2 {
|
||||||
|
font-family: Optima, Arial, Lucida Sans Unicode, sans-serif;
|
||||||
|
font-size: 16pt;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #FFFF00;
|
||||||
|
}
|
||||||
|
|
||||||
|
H3 {
|
||||||
|
font-family: Optima, Arial, Lucida Sans Unicode, sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 14pt;
|
||||||
|
color: #C9D1D0;
|
||||||
|
}
|
||||||
|
|
||||||
|
LI {
|
||||||
|
font-family: Optima, Arial, Lucida Sans Unicode, sans-serif;
|
||||||
|
font-size: 12pt;
|
||||||
|
line-height: 17pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
OL {
|
||||||
|
font-family: Optima, Arial, Lucida Sans Unicode, sans-serif;
|
||||||
|
font-size: 12pt;
|
||||||
|
line-height: 17pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
UL {
|
||||||
|
font-family: Optima, Arial, Lucida Sans Unicode, sans-serif;
|
||||||
|
font-size: 12pt;
|
||||||
|
line-height: 17pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
EM {
|
||||||
|
color: #00AAAA;
|
||||||
|
}
|
|
@ -9,11 +9,11 @@
|
||||||
|
|
||||||
#include "g_local.h"
|
#include "g_local.h"
|
||||||
#include "wf_classmgr.h"
|
#include "wf_classmgr.h"
|
||||||
|
#include "wf_fileio.h"
|
||||||
|
|
||||||
//Global variable
|
//Global variable
|
||||||
int modID;
|
int modID;
|
||||||
|
|
||||||
void readline(FILE *file, char *str, int max);
|
|
||||||
void fixline(char *str);
|
void fixline(char *str);
|
||||||
|
|
||||||
int wf_GetModelFromName(char *name);
|
int wf_GetModelFromName(char *name);
|
||||||
|
@ -76,7 +76,7 @@ int IsEncrypted(unsigned char *s, int len)
|
||||||
|
|
||||||
int ReadEncryptedLine(FILE *fp, char *szLineIn, int maxlen, int lineno)
|
int ReadEncryptedLine(FILE *fp, char *szLineIn, int maxlen, int lineno)
|
||||||
{
|
{
|
||||||
readline(fp, szLineIn, maxlen);
|
wfreadline(fp, szLineIn, maxlen);
|
||||||
if (IsEncrypted(szLineIn, strlen(szLineIn)) == 0)
|
if (IsEncrypted(szLineIn, strlen(szLineIn)) == 0)
|
||||||
{
|
{
|
||||||
DecryptString(szLineIn, strlen(szLineIn));
|
DecryptString(szLineIn, strlen(szLineIn));
|
||||||
|
|
10
wf_config.c
10
wf_config.c
|
@ -3,8 +3,8 @@
|
||||||
|
|
||||||
#include "g_local.h"
|
#include "g_local.h"
|
||||||
#include "wf_classmgr.h"
|
#include "wf_classmgr.h"
|
||||||
|
#include "wf_fileio.h"
|
||||||
|
|
||||||
void readline(FILE *file, char *str, int max);
|
|
||||||
void WFFillMapNames();
|
void WFFillMapNames();
|
||||||
void ClearMapVotes();
|
void ClearMapVotes();
|
||||||
void lcase(char *str);
|
void lcase(char *str);
|
||||||
|
@ -171,7 +171,7 @@ void get4Chunks(char *sline, char *s1, char *s2, char *s3, char *s4)
|
||||||
|
|
||||||
void cfgReadLine(FILE *fp, char *str, int maxlen)
|
void cfgReadLine(FILE *fp, char *str, int maxlen)
|
||||||
{
|
{
|
||||||
readline(fp, str, maxlen);
|
wfreadline(fp, str, maxlen);
|
||||||
if (str[0] == -1) str[0] = 0;
|
if (str[0] == -1) str[0] = 0;
|
||||||
RemoveComments(str);
|
RemoveComments(str);
|
||||||
//gi.dprintf("Read: %s, 1st=%d\n", str, str[0]);
|
//gi.dprintf("Read: %s, 1st=%d\n", str, str[0]);
|
||||||
|
@ -180,7 +180,7 @@ void cfgReadLine(FILE *fp, char *str, int maxlen)
|
||||||
|
|
||||||
void cfgReadLineKeepAll(FILE *fp, char *str, int maxlen)
|
void cfgReadLineKeepAll(FILE *fp, char *str, int maxlen)
|
||||||
{
|
{
|
||||||
readline(fp, str, maxlen);
|
wfreadline(fp, str, maxlen);
|
||||||
if (str[0] == -1) str[0] = 0;
|
if (str[0] == -1) str[0] = 0;
|
||||||
//gi.dprintf("Read: %s, 1st=%d\n", str, str[0]);
|
//gi.dprintf("Read: %s, 1st=%d\n", str, str[0]);
|
||||||
rtrim(str);
|
rtrim(str);
|
||||||
|
@ -918,7 +918,7 @@ void LoadWeaponInfo()
|
||||||
gi.dprintf("WeaponConfig: Could not open file: %s\n",path);
|
gi.dprintf("WeaponConfig: Could not open file: %s\n",path);
|
||||||
}
|
}
|
||||||
|
|
||||||
readline(fp, str, 200);
|
wfreadline(fp, str, 200);
|
||||||
if (str[0] == -1) str[0] = 0;
|
if (str[0] == -1) str[0] = 0;
|
||||||
RemoveComments(str);
|
RemoveComments(str);
|
||||||
|
|
||||||
|
@ -955,7 +955,7 @@ void LoadWeaponInfo()
|
||||||
}
|
}
|
||||||
|
|
||||||
//Read next line
|
//Read next line
|
||||||
readline(fp, str, 200);
|
wfreadline(fp, str, 200);
|
||||||
if (str[0] == -1) str[0] = 0;
|
if (str[0] == -1) str[0] = 0;
|
||||||
RemoveComments(str);
|
RemoveComments(str);
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,7 +92,7 @@ void lcase(char *str)
|
||||||
}
|
}
|
||||||
|
|
||||||
//Read a line from a file
|
//Read a line from a file
|
||||||
void readline(FILE *file, char *str, int max)
|
void wfreadline(FILE *file, char *str, int max)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int enough;
|
int enough;
|
||||||
|
|
|
@ -6,4 +6,4 @@
|
||||||
|
|
||||||
FILE *WFOpenFile(edict_t *ent, char *filename);
|
FILE *WFOpenFile(edict_t *ent, char *filename);
|
||||||
void WFCloseFile(edict_t *ent, FILE *fp);
|
void WFCloseFile(edict_t *ent, FILE *fp);
|
||||||
void ReadLine( FILE *fp, char *buffer, int maxlen);
|
void WFReadLine( FILE *fp, char *buffer, int maxlen);
|
||||||
|
|
|
@ -0,0 +1,181 @@
|
||||||
|
<HTML>
|
||||||
|
<HEAD>
|
||||||
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
|
||||||
|
<META NAME="Generator" CONTENT="Microsoft Word 97">
|
||||||
|
<TITLE>WF Eraser Bot Documentation VERSION 4</TITLE>
|
||||||
|
</HEAD>
|
||||||
|
<BODY>
|
||||||
|
|
||||||
|
<B><U><FONT FACE="MS Sans Serif" SIZE=1><P>WF Eraser Bot Documentation VERSION 4.2x 4/2/99</P>
|
||||||
|
</U>
|
||||||
|
<P>Note</B>: you will need the WF 4.x client files .</P>
|
||||||
|
</FONT><FONT SIZE=2>
|
||||||
|
<P>Files that must be included with WFeraser.</P>
|
||||||
|
<P>zip32.dll , only for PC, I put mine in /quake2, you can put it in /WF</P>
|
||||||
|
<P>unzip32.dll , only for PC, I put mine in /quake2 ,you can put it in /WF</P>
|
||||||
|
<P>FAVORITE.txt , list of favorite weapon numbers and other info</P>
|
||||||
|
<P>readme.txt </P>
|
||||||
|
<P>chat.txt ,list of bot chat messages.</P>
|
||||||
|
<P>launcher.cfg </P>
|
||||||
|
<P>bots.cfg ,bot settings</P>
|
||||||
|
|
||||||
|
<B><U><P>READ: the favorite.txt and readme</P>
|
||||||
|
</B></U>
|
||||||
|
<P>* are amendments</P>
|
||||||
|
<P>x disabled found bug</P>
|
||||||
|
<P>p private use</P>
|
||||||
|
|
||||||
|
<B><P>1.</B>Extract the zip file to your root directory if quake is on C drive extract to C and use the directory paths in the zip, if your using winzip make sure <B>"use folder names"</B> is checked , and if you have any WF server files rename them or back them up.</P>
|
||||||
|
|
||||||
|
<B><P>2.</B> Start <B>quake2 +game wf +set ctf 1 +set deathmatch 1 +set maxclients 30 </P>
|
||||||
|
</B><P>note: you may not have to set ctf 1 but sometimes if the server crashes or is restarted ctf gets set to 0,you can</P>
|
||||||
|
<P>start the game anyway you like,thats just they way I start mine...</P>
|
||||||
|
|
||||||
|
<B><P>a.</B> load a map ,if you have a rtz file for that map you should see the wf menu,if not make one or download one.</P>
|
||||||
|
|
||||||
|
<B><P>3.</B> Type <B>bot_num 1</B>, or 2 or 3 or 4 or 5 up to your maxclient setting, type <B>maxclients</B> ,</P>
|
||||||
|
<P>or you can look in bots.cfg for the bots names and type <B>botname name</B>.if you wish to change</P>
|
||||||
|
<P>a bots class or skill or favorite weapon use the bots.cfg file.</P>
|
||||||
|
|
||||||
|
<B><P>4.</B>If you plan on running a server make sure you type <B>bot_free_clients 1 </B>or more..</P>
|
||||||
|
|
||||||
|
<B><P>5.</B> Edit the maplist.txt</P>
|
||||||
|
|
||||||
|
<B><P>6.</B> You should be all set have fun :)</P>
|
||||||
|
|
||||||
|
<B><P>To make your own route table goto http://botepidemic.com/q2rfd/ there's real good help</P>
|
||||||
|
</B><P> <B>and they also have route files for WF maps</P>
|
||||||
|
</B>
|
||||||
|
<B><U><P>Things to remember with this release:</P>
|
||||||
|
</U><P>subject to changes by other wf staff, but good as of 4/2/99</P>
|
||||||
|
</B><P>//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////</P>
|
||||||
|
<P>This is a beta and may crash every so often</P>
|
||||||
|
|
||||||
|
<B><U><P>Servers </P>
|
||||||
|
</B></U><P>If you plan on playing this on a <B>LAN</B> or other with real players,set <B>bot_free_clients 1</B> or more and check maxclients ,this is why when real players try to join they get fov 00000000 error, it's similar to server is full msg I believe your trying to take over a bots body so its saying fov error.</P>
|
||||||
|
<P>Also you can use the ctf team commands to even out bots vs. players,but I haven't tested those alot, so they</P>
|
||||||
|
<P>may cause problems.</P>
|
||||||
|
|
||||||
|
<B><U><P>Bot Guarding</P>
|
||||||
|
</B></U><P>- To stop bots from flag guarding, type <B>bot_melee 1</B> before the map loads,also <B>bot_melee </B>will allow</P>
|
||||||
|
<P>bot L3 sentrys.</P>
|
||||||
|
<B><U>
|
||||||
|
<P>Lamer Guard</P>
|
||||||
|
</B></U><P>- You must now have <B>bot_allow_client_commands 1</B> to use any bot commands,like botpause,redflag,ctf_item,,</P>
|
||||||
|
<P>make sure if your running a server, to check <B>bot_allow_client_commands </B>and make sure its set to <B>0</B>, its default</P>
|
||||||
|
<P>is 0 but you may have left it 1 while editing settings/routes....</P>
|
||||||
|
<B><U>
|
||||||
|
<P>Bots.cfg</P>
|
||||||
|
</B></U><P>- Don't try to add weapons to the bots.cfg I havent coded in yet, mainly the sniper rifle.</P>
|
||||||
|
|
||||||
|
<B><U><P>While making route tables:</P>
|
||||||
|
</B></U><P>- <B>Avoid all Teleports</B>, that are behind trigger_hurts, Those glass like shields you die from if your on the wrong team like in 2fort7,the bots don't know enough not to use them, some maps may not work at all ,I've only tested a few.</P>
|
||||||
|
<P>- You can always download the older wf maps before the triggers were added</P>
|
||||||
|
<P> </P>
|
||||||
|
<B><U><P>General</B>:</P>
|
||||||
|
</U><P>If you don't want bots running over a dropped flag until the flag return timeout, set
|
||||||
|
the <B>zoid_flagcap</B> option in the wfserver.ini file. This turns on the ability to return
|
||||||
|
a dropped flag - otherwise the bots hover over it trying to return it.</P>
|
||||||
|
|
||||||
|
<B><U><P>4.2 </B></U>check your settings in wfserver.ini, too </P>
|
||||||
|
|
||||||
|
<B><P>Make sure you read the readme.txt file it explains all the commands you can use...</P>
|
||||||
|
</B>
|
||||||
|
<P>The more bots you run the more chances you'll get <B>overflow and netchan errors</B>,if your getting strange error messages try typing </P>
|
||||||
|
<B><P>bot_chat 0</B>...</P>
|
||||||
|
|
||||||
|
<B><U><P>Do not use any of the multi team commands WF only supports ctf red/blue teams</P>
|
||||||
|
|
||||||
|
<P>NOTE:</P>
|
||||||
|
</B></U><P>Please don't email me. I'm no longer coding WF bots for public use, for the time being. If you have bugs/suggestions for bots, feign , freezer gun, WF, or need help not covered by this doc, email the WF programmers. Hehe besides 8-9 months of all my free time have gone into WF and its time to break for a week or two. Think I'll relax with some mapping :)</P>
|
||||||
|
<P>////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////</P>
|
||||||
|
<B><U><P>Specials</P>
|
||||||
|
<P>Sentry&Biosentry:</P>
|
||||||
|
<P>Supply&Healing Depots:</P>
|
||||||
|
<P>Flag Returns:</P>
|
||||||
|
</B></U><P>To place a special node, type <B>ctf_item item_sentryspot or ctf_item item_depotspot</B>,you can do this without turning node calculation back on, if you've already routed a level.</P>
|
||||||
|
|
||||||
|
<P>xxxxxxxAlso make sure you give the nodes enough room away from walls and other nodes for a sentry or depot all the way around it,to see the nodes type <B>bot_debug_nodes 1</B> before you load the map,this will turn on a model and also allow real players to use the node for testing...xxxxx I guess with gl and 3dfx you'ld see while diamonds so this wont work,so now ,snode models will always be visible.Hey someone give me 3dfx:) hehe</P>
|
||||||
|
|
||||||
|
<B><P>If this is done on a existing route file</B> and you have other items you've placed with ctf_item ,make sure you dont screw up placing these or you'll have to do clearitems and startover,because the bots may get stuck trying to place a sentry in the wall......until some radius check can be added,best thing to do is backup your route file...</P>
|
||||||
|
|
||||||
|
<B><U><P>Flag Returns:</P>
|
||||||
|
</B></U><P>You can now drop alternative flag returns,type <B>ctf_item item_flagreturn_team1</B> or <B>team2</P>
|
||||||
|
</B>
|
||||||
|
<B><U><P>Linux,, </B></U>if there is one.</P>
|
||||||
|
<P>If your using a linux release and you want to use existing route files,rename the .rtz files to .zip,then use winzip</P>
|
||||||
|
<P>or similar tool to extract the rt3 files.linux reads rt3</P>
|
||||||
|
<P>///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////</P>
|
||||||
|
<B><U><P>Things I'm working on,,</P>
|
||||||
|
</B></U><P>pppppppppppppp</P>
|
||||||
|
|
||||||
|
<B><U><P>Back burner:</P>
|
||||||
|
</B></U><P>pppppppppppppp</P>
|
||||||
|
<B><U>
|
||||||
|
<P>Things I've done,,</P>
|
||||||
|
<P>4.2</P>
|
||||||
|
</B></U><P>testing slime/acid fix for maps those types of brushes pppppppp</P>
|
||||||
|
<P>bots can be frozen****</P>
|
||||||
|
<P>bot cam,fixed it so theres a off that lets you rejoin the server****</P>
|
||||||
|
<P>bots ability to target, laser defence,enemy depots, grenades specials,decoys,etc pppppp</P>
|
||||||
|
<P>player targets or goals overriding bots attacking sentrys pppppppp</P>
|
||||||
|
<P>bots can now use seperate capping spot****</P>
|
||||||
|
<P>you can now drop alternative capping spots in maps without them****</P>
|
||||||
|
<P>added protection for bot commands,so they can't be accessed on server games******</P>
|
||||||
|
<P>bots can now lay sentrys and biosentrys****</P>
|
||||||
|
<P>new way to place special nodes,,,see above****</P>
|
||||||
|
<P>added bot stinger missles****working but still need ai work</P>
|
||||||
|
<P>added bot knife****working but still need ai work pppppppppp</P>
|
||||||
|
<P>fixed eng class so they use armordart instead of poisondart**</P>
|
||||||
|
<P>all sz getspace errors should be squashed*****</P>
|
||||||
|
<P>few other errors**</P>
|
||||||
|
<P>bots can now lay supply and healing depots ****</P>
|
||||||
|
<P>bot code affected flag dropping and return timeout, fixed*******</P>
|
||||||
|
<P>changed code so it can read mock classnames** read favorite.txt</P>
|
||||||
|
<P>bot vwep support for 3.20**</P>
|
||||||
|
<P>Sentries disappear sometimes if touched by bots ,has to do with the bounding boxes ,also strange angles between models when bot places them sometimes.think its fixed******</P>
|
||||||
|
<P>3 commands have been removed view_weapons 0/1, grapple0/1, mapmod_random 0/1****</P>
|
||||||
|
<B><U>
|
||||||
|
<P>3.4</P>
|
||||||
|
</B></U><P>fixed a couple crashes</P>
|
||||||
|
<P>real player disguise,limited ,if your found out by grabbing the flag etc you will be a target until you die or attaker dies or has new enemy or goal</P>
|
||||||
|
<P>bots grapple up depends on your route file,,,<B><U>note:</B></U> all bot classes have a grapple for now</P>
|
||||||
|
<P>added <B>bot_melee</B> 0/1,,,turning this to 1,stops all bots from flag guarding,this is temp command</P>
|
||||||
|
<P>Changed the normal flag guarding ai a bit still testing it </P>
|
||||||
|
<P>turned off grappling to get there faster,internal call,was stupid hehe,to turn it back on set <B>bot_tarzan</B> 1 ,but what real player would grapple down a ramp and give themselves away :)</P>
|
||||||
|
<P>refixed pack grabbing,3.4 used different code</P>
|
||||||
|
<P>fixed showpaths</P>
|
||||||
|
<P>offhand grapple command is now "offhand"****4.2 is back to "grapple"</P>
|
||||||
|
<P>bots ability to target non players,,sofar only sentrys</P>
|
||||||
|
<P>Nurses heal teammates ,still needs some tweaks xxxxxxxxxx</P>
|
||||||
|
<B><U><P>2.4d</P>
|
||||||
|
</B></U><P>Pack Grabbing Hogs :),,bots kept running for them in pack only maps like 2fort7,,may affect bots attacking and following Commands, or getting lost,normal eraser uses everything for routing,,</P>
|
||||||
|
<P>Favorite weapon, refer to new FAVORITE.TXT</P>
|
||||||
|
<P>Eraser command menus, you still need to read the readme.txt this is just for reference</P>
|
||||||
|
<P>Maybe found the last sz get space error,3.4 might have 1</P>
|
||||||
|
<P>Flamethrower damage fixed</P>
|
||||||
|
<P>Bots can cap the enemy flag if theirs is gone.</P>
|
||||||
|
<P>Added 99% of all normal 2.4d WF hand weapons, no mock weapons yet.</P>
|
||||||
|
<P>Made a grenade routine, eraser had none.</P>
|
||||||
|
<P>A little bit to weapon switching so they don't use the same weapons in the same order, just the nurse so far.</P>
|
||||||
|
<P>Lots of technical stuff :).</P>
|
||||||
|
<P>Bots should ignore routes to enemy team items like ammo packs.</P>
|
||||||
|
<P>Bots don't try and get armor they're class cant use, before it was like dropped flag running in place</P>
|
||||||
|
<P>trying to pick it up.</P>
|
||||||
|
<P>Added support for the grenades skin/models 3.x uses</P>
|
||||||
|
<P>Added pack support like 3.x has</P>
|
||||||
|
<P>Lots lots more hehe</P>
|
||||||
|
|
||||||
|
<B><P>HAVE FUN</P>
|
||||||
|
</B>
|
||||||
|
<P> </P>
|
||||||
|
<B><U><P>DISCLAIMER</P>
|
||||||
|
</B></U>
|
||||||
|
<P> This is a 4.2 BETA release, I therefore will not take responsibility</P>
|
||||||
|
<P> for your system barfing after playing the game. I can however </P>
|
||||||
|
<P> guarantee that I have not purposely added any malicious content</P>
|
||||||
|
<P> to this application.</P>
|
||||||
|
|
||||||
|
<P>Acrid-</P>
|
||||||
|
<P>acridcola@hotmail.com</P></FONT></BODY>
|
||||||
|
</HTML>
|
|
@ -0,0 +1,6 @@
|
||||||
|
echo ---------------------------
|
||||||
|
echo DEDICATED WF SERVER STARTUP
|
||||||
|
echo ---------------------------
|
||||||
|
|
||||||
|
mv wf/qconsole.log wf/qconsole.log.bak
|
||||||
|
nohup ./quake2 +set dedicated 1 +set game wf +set gamename wf +exec server.cfg +set noipx 1 > /dev/null &
|
|
@ -0,0 +1,123 @@
|
||||||
|
/ WF Config file
|
||||||
|
/ (note -any part of a line following the "/" character is ignored)
|
||||||
|
|
||||||
|
|
||||||
|
[general]
|
||||||
|
classdef = team10.class / Defines the class definition file to use.
|
||||||
|
map_voting = 0 / allow map voting?
|
||||||
|
map_rotation = 0 / map rotation; 0=sequence 1=random
|
||||||
|
zbot_detect = 0 / Stop those zbots!
|
||||||
|
weaponfilename = / Used to change default damage/speed of weapons and grenades
|
||||||
|
frag_logging = 0 / if 1, turns on frag logging
|
||||||
|
logfilename = std.log / Name of the frag log file
|
||||||
|
ref_password = / If it's blank, nobody can be the ref
|
||||||
|
floodertime = 5 / messages typed quicker x seconds will be considered flooding
|
||||||
|
unbalanced_limit = 3 / prevents teams with too many people from taking frag. 0 = no checking
|
||||||
|
zoid_flagcap = 0 / set for old style flag captures
|
||||||
|
auto_team_balance = 0 / Turns on automatic team balancing
|
||||||
|
anarchy = 0 / special mode for death match instead of ctf play
|
||||||
|
special_lights = 0 / Allows switchable and rotating lights. Could cause extra lag!!
|
||||||
|
no_fort_respawn = 0 / disable same fort respawn? (the rest are probably not usefull)
|
||||||
|
no_decoys = 0 / decoys disabled?
|
||||||
|
no_flying = 0 / flying disabled?
|
||||||
|
decoy_pursue = 0 / no longer usefull
|
||||||
|
no_turret = 0 / turrets disabled?
|
||||||
|
no_earthquakes = 0 / earthquakes disabled? (not used)
|
||||||
|
no_player_classes = 0 / don't think this works any more
|
||||||
|
friendly_fire = 0 / does not determine damage, but targeting of weapons
|
||||||
|
no_grapple = 0 / grapple disabled?
|
||||||
|
no_homing = 0 / homing missles disabled?
|
||||||
|
|
||||||
|
/ Message of the day - Used by menus and "motd" command
|
||||||
|
/ up to 3 lines
|
||||||
|
/ NOTE - DONT PUT COMMENTS ON MOTD LINES BECAUSE IT MIGHT BE A URL WITH / CHAR
|
||||||
|
|
||||||
|
[motd]
|
||||||
|
WEAPONS FACTORY SERVER
|
||||||
|
Hosted by John Smith
|
||||||
|
http://www.johnsmith.com
|
||||||
|
|
||||||
|
[maplist] / List of maps
|
||||||
|
2fort8wf
|
||||||
|
2fortse2
|
||||||
|
acid3
|
||||||
|
blastoma2wf
|
||||||
|
cancer1wf
|
||||||
|
chernobyl
|
||||||
|
dropzone
|
||||||
|
headshot2
|
||||||
|
mckinley1wf
|
||||||
|
purifier
|
||||||
|
slab7
|
||||||
|
tkv2
|
||||||
|
tufort
|
||||||
|
welt3wf
|
||||||
|
wickedx
|
||||||
|
wonfort2
|
||||||
|
zardoz4se
|
||||||
|
|
||||||
|
[banwords] / Players can't say these words
|
||||||
|
cunt
|
||||||
|
CUNT
|
||||||
|
fuck
|
||||||
|
FUCK
|
||||||
|
asshole
|
||||||
|
ASSHOLE
|
||||||
|
ass
|
||||||
|
ASS
|
||||||
|
prick
|
||||||
|
PRICK
|
||||||
|
dick
|
||||||
|
DICK
|
||||||
|
nigger
|
||||||
|
NIGGER
|
||||||
|
|
||||||
|
|
||||||
|
[classlimits]
|
||||||
|
1 = 99 / recon
|
||||||
|
2 = 99 / nurse
|
||||||
|
3 = 3 / engineer
|
||||||
|
4 = 99 / marine
|
||||||
|
5 = 99 / cyborg
|
||||||
|
6 = 99 / arsonist
|
||||||
|
7 = 99 / gunner
|
||||||
|
8 = 99 / sniper
|
||||||
|
9 = 99 / spy
|
||||||
|
10 = 99 / mercenary
|
||||||
|
|
||||||
|
|
||||||
|
[Scoring]
|
||||||
|
frag_points = 1
|
||||||
|
suicide_points = -1
|
||||||
|
sentry_points = 1
|
||||||
|
capture_bonus = 15
|
||||||
|
team_bonus = 10
|
||||||
|
recovery_bonus = 1
|
||||||
|
flag_bonus = 0
|
||||||
|
frag_carrier_bonus = 2
|
||||||
|
carrier_danger_protect_bonus = 2
|
||||||
|
carrier_protect_bonus = 1
|
||||||
|
flag_defense_bonus = 1
|
||||||
|
return_flag_assist_bonus = 1
|
||||||
|
frag_carrier_assist_bonus = 2
|
||||||
|
|
||||||
|
###
|
||||||
|
(Anything below the #### is ignored)
|
||||||
|
|
||||||
|
Notes on scoring:
|
||||||
|
|
||||||
|
Point Name Default Value Description
|
||||||
|
------------------------- ------------- ---------------------
|
||||||
|
frag_points 1 points for a frag
|
||||||
|
suicide_points -1 points for a suicide
|
||||||
|
sentry_points 1 points for killing a sentry gun
|
||||||
|
capture_bonus 15 what you get for capture
|
||||||
|
team_bonus 10 what your team gets for capture
|
||||||
|
recovery_bonus 1 what you get for recovery
|
||||||
|
flag_bonus 0 what you get for picking up enemy flag
|
||||||
|
frag_carrier_bonus 2 what you get for fragging enemy flag carrier
|
||||||
|
carrier_danger_protect_bonus 2 bonus for fragging someone who has recently hurt your flag carrier
|
||||||
|
carrier_protect_bonus 1 bonus for fragging someone while either you or your target are near your flag carrier
|
||||||
|
flag_defense_bonus 1 bonus for fragging someone while either you or your target are near your flag
|
||||||
|
return_flag_assist_bonus 1 awarded for returning a flag that causes a capture to happen almost immediately
|
||||||
|
frag_carrier_assist_bonus 2 award for fragging a flag carrier if a capture happens almost immediately
|
|
@ -0,0 +1,584 @@
|
||||||
|
<HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||||
|
|
||||||
|
<HTML>
|
||||||
|
<HEAD>
|
||||||
|
<link rel="stylesheet" type="text/css" href="wf.css">
|
||||||
|
<TITLE>Weapons Factory Server Instructions</TITLE>
|
||||||
|
</HEAD>
|
||||||
|
|
||||||
|
<BODY bgcolor="Black" text="#C9D1D0" link="#C9D1D0" vlink="#C9D1D0" alink="Red">
|
||||||
|
|
||||||
|
<table cellspacing="2" cellpadding="2">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<!-- Begin Header -->
|
||||||
|
<center>
|
||||||
|
<H1>Weapons Factory Server Setup</H1>
|
||||||
|
<br>
|
||||||
|
<font size = +1><b>
|
||||||
|
<a href="#download">How To Download the 4.2 Server Software</a><br>
|
||||||
|
<a href="#whatsnew">See What's New for 4.2</a><br>
|
||||||
|
</b>
|
||||||
|
</font>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
<!-- End Header -->
|
||||||
|
|
||||||
|
|
||||||
|
<p>These instructions will show you how to set up a Weapons Factory server. You should
|
||||||
|
also follow these instructions if you are setting up a single player game to use the
|
||||||
|
Weapons Factory eraser bots. </p>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Setting up a Basic Weapons Factory Server</h2>
|
||||||
|
<p>Before you can set up a Weapons Factory server, you should first understand how to set up
|
||||||
|
a normal Q2 server. It is important to understand that there two types of Q2 servers. For
|
||||||
|
both server types, you need to download and install the Weapons Factory server software.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><b>Listen -</b> A listen server uses the normal Q2 game. In this mode, of the players acts as the "host"
|
||||||
|
and lets other players connect to their Q2 game. You also need to follow these instructions
|
||||||
|
if you want to play WF as a single player game with WF eraser bots.
|
||||||
|
|
||||||
|
<p>To run a listen server, you start Q2 just as you would if you were going to play. You then
|
||||||
|
use the Q2 menus to start a server. Before you do that though, you need to add an option to your
|
||||||
|
Q2 startup icon to make it use the Weapons Factory mod. So here are the steps to set up a listen server:
|
||||||
|
<ul>
|
||||||
|
<li>Make sure you have the latest Q2 patches from id Software. Q2 updates can be found at <a
|
||||||
|
href="ftp://ftp.cdrom.com/pub/idgames/idstuff/quake2">ftp://ftp.cdrom.com/pub/idgames/idstuff/quake2</a></li>
|
||||||
|
<li>Download and install the latest <a href="wf.software.html">WF client files</a> into your quake2\wf directory if needed</li>
|
||||||
|
<li>Download and install the latest <a href="#download">WF server files</a> into your quake2\wf directory</li>
|
||||||
|
<li>Make sure the team10.class file has been unzipped into your quake2\wf directory</li>
|
||||||
|
<li>Download and install map files you wish to use into your quake2\wf\maps directory</li>
|
||||||
|
<li>Change your Q2 startup icon. Go to the icon properties, select the "Shortcut" tab,
|
||||||
|
and edit the "Target" field to add this at the end of the line: "+set game wf +set deathmatch 1"</li>
|
||||||
|
<li>Start Q2 using the modified Q2 icon</li>
|
||||||
|
<li>Bring up the Q2 menu and select "Multiplayer". Then select "Start network server".</li>
|
||||||
|
<li>You can fill in a number of server settings, including the initial map. Unfortunately, you
|
||||||
|
can't pick any of the WF maps from this screen. Don't worry about it - just select the
|
||||||
|
"begin" option.</li>
|
||||||
|
<li>Join a team and pick a class.</li>
|
||||||
|
<li>If you want to change maps, type "gamemap 2fort8wf" in the console (or whatever map you want). You are now
|
||||||
|
running as a WF listen server.</li>
|
||||||
|
<li>Have other people connect to your game by giving them your IP address. They can
|
||||||
|
connect to your server by typing "connect <ip address>" in their console window.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><b>Dedicated - </b> Dedicated servers are the most common way to set up a public server. In
|
||||||
|
dedicated mode, a separate machine acts as the server, and players connect to it
|
||||||
|
from separate machines. The key difference between listen servers and dedicated servers
|
||||||
|
is that dedicated servers only show the console window - you can't play as the
|
||||||
|
server administrator. Also, dedicated servers are the only kind of server that can
|
||||||
|
register with the Q2 master servers to be visible from GameSpy. To set up a dedicated WF
|
||||||
|
server, do the following:
|
||||||
|
<ul>
|
||||||
|
<li>Make sure you have the latest Q2 patches from id Software. Q2 updates can be found at <a
|
||||||
|
href="ftp://ftp.cdrom.com/pub/idgames/idstuff/quake2">ftp://ftp.cdrom.com/pub/idgames/idstuff/quake2</a></li>
|
||||||
|
<li>Download and install the latest <a href="wf.software.html">WF client files</a> into your quake2\wf directory if needed</li>
|
||||||
|
<li>Download and install the latest <a href="#download">WF server files</a> into your quake2\wf directory</li>
|
||||||
|
<li>Make sure the team10.class file has been unzipped into your quake2\wf directory</li>
|
||||||
|
<li>Download and install map files you wish to use into your quake2\wf\maps directory</li>
|
||||||
|
<li>Start a dedicated server by using this command line (or from an icon):<br>
|
||||||
|
quake2.exe +set dedicated 1 +set game wf +set deathmatch 1
|
||||||
|
</li>
|
||||||
|
<li>Join a team and pick a class.</li>
|
||||||
|
<li>If you want to change maps, type "gamemap 2fort8wf" in the console (or whatever map you want). </li>
|
||||||
|
<li>Have other people connect to your game by giving them your IP address. They can
|
||||||
|
connect to your server by typing "connect <ip address>" in their console window.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>If you need some more information on how to set up a Q2 server, visit <a
|
||||||
|
href="http://www.planetquake.com/q2s-faq">http://www.planetquake.com/q2s-faq</a>.
|
||||||
|
Admins using Linux may want to check <a href="http://www.linuxquake.com">http://www.linuxquake.com</a>.
|
||||||
|
We also recommend the news group "rec.games.computer.quake.servers". Here you can
|
||||||
|
post server questions and seek answers. You can also subscribe to the <a
|
||||||
|
href="http://list.gamespy.com/scripts/lyris.pl?enter=q2servers">Q2 server mailing
|
||||||
|
list</a>.</p>
|
||||||
|
|
||||||
|
<p>At this point, you should have a basic WF server up and running. The remainder of the document describes all of the
|
||||||
|
various WF server options.</p>
|
||||||
|
|
||||||
|
<h2>Setting up a LAN Network</h2>
|
||||||
|
<P>For basic information on how to set up a Local Area Network, check out <A href="http://www.gamers.com/quake2/server-lan.asp" target="_top">Gamers.com</A>.</P>
|
||||||
|
|
||||||
|
<h2>Special Linux/Unix Installation Instructions</h2>
|
||||||
|
<p>A few additional steps are required to get Weapons Factory working under Linux or
|
||||||
|
Solaris. You'll get the best results by running your server under the root login. If you are upgrading, be sure to copy your server config file and
|
||||||
|
wfserver.ini file to a safe location, or they will be overwritten. </p>
|
||||||
|
<ul>
|
||||||
|
<li>As with NT, you must first get and configure a standard Quake2 server Be sure to install the binaries
|
||||||
|
that include the CTF option.</li>
|
||||||
|
<li> Make a "wf" subdirectory off your Quake2 directory. </li>
|
||||||
|
<li>Download the WF server and Client files. The server files come in both *.tar.gz and *.tar.Z flavors.</li>
|
||||||
|
<li>Uncompress the server files by copying the archive into the Quake2 directory. Type the following command to uncompress the binaries into the
|
||||||
|
WF directory: zcat wfserver42.tar.gz | tar xvf -</li>
|
||||||
|
<li>Now, copy the Client files into the WF directory. Uncompress the archive by typing: unzip wfclient42.zip</li>
|
||||||
|
<li>Now that the files are uncompressed, change the ownership of the files to the root user. Change to the WF directory, and type:
|
||||||
|
chown root.root *</li>
|
||||||
|
<li>Check to be sure all files are named with lower case letters.</li>
|
||||||
|
</ul></p>
|
||||||
|
|
||||||
|
<a name="download"><h2>Downloading the Weapons Factory server software</h2></a>
|
||||||
|
<p><b>NOTE!!!</b> If you are upgrading from an older version, make sure you create a backup version of your server.cfg and
|
||||||
|
wfserver.ini files. This version will replace those files.</p>
|
||||||
|
<p><b>Download problems?</b> If you have any trouble downloading from the links below, go
|
||||||
|
to this site: <a
|
||||||
|
href="ftp://ftp.cdrom.com/pub/idgames2/planetquake/captured/weaponsfactory/">ftp://ftp.cdrom.com/pub/idgames2/planetquake/captured/weaponsfactory/
|
||||||
|
</a>. You'll have to make a note and download the individual files that you need.</p>
|
||||||
|
<blockquote>
|
||||||
|
<table width="540" cellspacing="5" cellpadding="5">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td width = 150 valign="top" bgcolor="#62570C"><b><a
|
||||||
|
href="http://asp.planetquake.com/dl/dl.asp?captured/weaponsfactory/wfserver42-nt.zip">wfserver42-nt.zip</a></b></td>
|
||||||
|
<td valign="top" bgcolor="#62570C">Win 95/NT - Version 4.2 Server Files. (You must also
|
||||||
|
download wfclient42.zip from the <a
|
||||||
|
href="http://www.captured.com/weaponsfactory/wf.software.html">downloads</a> page)</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td valign="top" bgcolor="#62570C"><b><a
|
||||||
|
href="http://asp.planetquake.com/dl/dl.asp?captured/weaponsfactory/wfserver42-unix.tar.gz">wfserver42-unix.tar.gz<B></a></b></td>
|
||||||
|
<td valign="top" bgcolor="#62570C">Combined Linux/Solaris server for WF 4.2. Includes
|
||||||
|
updated documentation and installation instructions for WF 4.2. .tar.gz version. (You must
|
||||||
|
also download wfclient42.zip from the <a
|
||||||
|
href="http://www.captured.com/weaponsfactory/wf.software.html">downloads</a> page)</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td valign="top" bgcolor="#62570C"><b><a
|
||||||
|
href="http://asp.planetquake.com/dl/dl.asp?captured/weaponsfactory/wfserver42-unix.tar.z">wfserver42-unix.tar.z<B></a></b></td>
|
||||||
|
<td valign="top" bgcolor="#62570C">Combined Linux/Solaris server for WF 4.2. Includes
|
||||||
|
updated documentation and installation instructions for WF 4.2. .tar.Z version for people
|
||||||
|
who don't have gzip. (You must also download wfclient42.zip from the <a
|
||||||
|
href="http://www.captured.com/weaponsfactory/wf.software.html">downloads</a> page)</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<h2>Quick Start Dedicated WF Server</h2></a>
|
||||||
|
<p>Once you've downloaded the WF server files, you can start a dedicated WF
|
||||||
|
server by starting Q2 like this:
|
||||||
|
<blockquote>
|
||||||
|
quake2.exe +set dedicated 1 +set deathmatch 1 +set game wf +set gamedir wf
|
||||||
|
</blockquote>
|
||||||
|
Thats all there is to it. The rest of this document describes all of the
|
||||||
|
various server options.</p>
|
||||||
|
|
||||||
|
<a name="whatsnew"><h2>What's New in 4.2?</h2></a>
|
||||||
|
Just about everything! We've made some major changes (hopefully for the better) to help make administering
|
||||||
|
WF servers easier. Almost all of the WF specific settings have moved to the WFSERVER.INI file. Previously,
|
||||||
|
the wfserver.ini file was used only for the map list. It now controls almost all aspects of the WF server including:
|
||||||
|
<ul>
|
||||||
|
<li>Individual settings to replace the WFFLAGS variable</li>
|
||||||
|
<li>Scoring</li>
|
||||||
|
<li>Class Limits</li>
|
||||||
|
<li>Message of the day</li>
|
||||||
|
<li>Banned Word List</li>
|
||||||
|
<li>Defining the class definition file to use</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>Keep in mind you still will need a server.cfg file for setting variabes like DMFLAGS, frag limits, time limits
|
||||||
|
and the initial map to load. But you no longer need to set the WFFLAGS variable. Each WFFLAGS option now has it's own
|
||||||
|
setting line in the wfserver.ini file.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>What makes a good server?</h2>
|
||||||
|
<ul>
|
||||||
|
<li>A good admin. Check your server often. Play there. Listen to your
|
||||||
|
users. Resist the urge to be a tyrant.</li>
|
||||||
|
<li>A fast network connection. ISDN or telephone modems won't cut the mustard.
|
||||||
|
Cable modems can, in some circumstances, work well. But it depends on your
|
||||||
|
cable company's quality of service.</li>
|
||||||
|
<li>A good machine. You don't need a Cray to run a first class server. But you won't
|
||||||
|
get good results on a 486 either. Linux servers tend to need less horsepower than NT
|
||||||
|
servers, but both need an adequate machine. A pentium 200+ should be able to run a
|
||||||
|
16 player game pretty well with enough memory. 128 megs is ideal on Linux - NT <em>may</em>
|
||||||
|
require more depending on what else you have running on the machine.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Advanced Weapons Factory Game Options</h2>
|
||||||
|
<p>Included in the WF distribution files are two sample server
|
||||||
|
configuration files - <em>server.cfg</em> and <em>wfserver.ini</em>. The biggest change for WF server administrators
|
||||||
|
in version 4.2 is that most WF specific settings are now done by setting options in the wfserver.ini file. Each of the
|
||||||
|
sections in this file are described. When editing the wfserver.ini file, remember that anything after a / character will be
|
||||||
|
ignored. This is usefull for adding comments to the file.</p>
|
||||||
|
|
||||||
|
<p>If you are running multiple WF servers from the same machine, you can select different configuration files
|
||||||
|
to use on startup. Lets say you want to run two dedicated WF servers on the same machine with different configuration
|
||||||
|
files. You could do this with the following commands:</p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
<font size = -1 color = yellow>
|
||||||
|
quake2.exe +set dedicated 1 +set game wf +set deathmatch 1 +set port 27910 +set wfconfig server1.ini +exec server1.cfg<br><br>
|
||||||
|
quake2.exe +set dedicated 1 +set game wf +set deathmatch 1 +set port 27911 +set wfconfig server2.ini +exec server2.cfg<br>
|
||||||
|
</font>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p>In this case, server1.ini and server2.ini are modified copies of the wfserver.ini file. The server1.cfg
|
||||||
|
and server2.cfg are modified copies of the server.cfg file.</p>
|
||||||
|
|
||||||
|
<h2>WFSERVER.INI - [general] Section</h2>
|
||||||
|
<p>The WFFLAGS settings in previous versions of WF are no longer needed. Instead, each option is controlled by
|
||||||
|
a specific line in the [general] section of wfserver.ini. Here are the settings that can be controlled in the [general]
|
||||||
|
section:</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
[general]
|
||||||
|
classdef = team10.class / Defines the class definition file to use.
|
||||||
|
map_voting = 0 / allow map voting? Will use the current map list to vote from
|
||||||
|
zbot_detect = 0 / Stop those zbots!
|
||||||
|
weaponfilename = / Used to change default damage/speed of weapons and grenades
|
||||||
|
frag_logging = 0 / if 1, turns on frag logging
|
||||||
|
logfilename = std.log / Name of the frag log file
|
||||||
|
ref_password = / If it's blank, nobody can be the ref
|
||||||
|
floodertime = 5 / messages typed quicker x seconds will be considered flooding
|
||||||
|
unbalanced_limit = 0 / prevents teams with too many people from taking fag. 0 = no checking
|
||||||
|
zoid_flagcap = 0 / set for old style flag captures
|
||||||
|
auto_team_balance = 0 / Turns on automatic team balancing
|
||||||
|
anarchy = 0 / special mode for death match instead of ctf play
|
||||||
|
no_fort_respawn = 0 / disable same fort respawn? (the rest are probably not usefull)
|
||||||
|
no_decoys = 0 / decoys disabled?
|
||||||
|
no_flying = 0 / flying disabled?
|
||||||
|
decoy_pursue = 0 / no longer usefull
|
||||||
|
no_turret = 0 / turrets disabled?
|
||||||
|
no_earthquakes = 0 / earthquakes disabled? (not used)
|
||||||
|
no_player_classes = 0 / don't think this works any more
|
||||||
|
friendly_fire = 0 / does not determine damage, but targeting of weapons
|
||||||
|
no_grapple = 0 / grapple disabled?
|
||||||
|
no_homing = 0 / homing missles disabled?
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<p><b>Notes:</b></p>
|
||||||
|
<ul>
|
||||||
|
<li><b>classdef</b> - If no class definition is specified at startup, WF will load the team10.class file. WF ships
|
||||||
|
with 3 class files:
|
||||||
|
<blockquote>
|
||||||
|
<pre>
|
||||||
|
team3.class - Old WF2.1B style
|
||||||
|
team6.class - 6 classes, well armed
|
||||||
|
team10.class - True TF style classes
|
||||||
|
</pre>
|
||||||
|
</blockquote>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><b>auto_team_balance</b> - Team Balancing is a server option that seeks to balance
|
||||||
|
the damage players receive based on the current team score (captures only,
|
||||||
|
not frags). It is only active when either team has at least three captures.
|
||||||
|
It works by adding or subtracting 10% of the damage for each point
|
||||||
|
difference.</p>
|
||||||
|
|
||||||
|
<p>It is not noticeable until the point difference is at least 3 or 4. When it
|
||||||
|
gets to 8 or 9, it rocks.</p>
|
||||||
|
|
||||||
|
<p>Examples:</p>
|
||||||
|
|
||||||
|
<p>Your team is down 3 points, you will receive 100% - 30% = 70% damage<br>
|
||||||
|
Your enemy will get 130% damage</p>
|
||||||
|
|
||||||
|
<p>Your team really sucks and is down 15 points,<br>
|
||||||
|
You will receive 100% - 80% = 20% damage (there is a 20% minimum)<br>
|
||||||
|
Your enemy will get 250% damage (no maximum)</p>
|
||||||
|
|
||||||
|
<p>Your team is winning by 6 points, you will receive 100% + 60% = 160%<br>
|
||||||
|
The losers on the other team receive only 100% - 60% = 40%</p>
|
||||||
|
|
||||||
|
<p>This has undergone extensive play testing on out internal LAN. It stopped
|
||||||
|
the whining about teams.</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li><b>unbalanced_limit</b>
|
||||||
|
<p>You can now prevent unbalanced teams from being able to capture the flag by using the
|
||||||
|
unbalanced_limit setting.
|
||||||
|
The setting number determines how unbalanced the teams can be before the flag
|
||||||
|
pickups are disallowed. </p>
|
||||||
|
<p>For example, lets say you set the unbalanced_limit to 3. If the blue team has 3 or more
|
||||||
|
players greater than the red team, the blue team will not be able to pick up the red flag.
|
||||||
|
The default setting is 0, which means no limit will be imposed.</p>
|
||||||
|
<p>Note that setting this value should be dependant on the max players you allow for your
|
||||||
|
server. For example, if you run 64 players on a server, you would probably want to set the
|
||||||
|
unbalanced limit higher, say to 5. For smaller servers, you may want to set the limit to 2
|
||||||
|
or 3.</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li><b>floodertime</b> - WF has built-in flood control to limit how fast players can type messages. Without this
|
||||||
|
control, players can flood servers with messages which can cause lag. To set how long a
|
||||||
|
player must wait between messages, set the floodertime variable to some number of seconds. For example,
|
||||||
|
if you set the flood protection time to 8, players have to wait 8 seconds between
|
||||||
|
messages. Setting floodertime to 0 will disable flood
|
||||||
|
protection. Note that the flood control also works with the wfplay and wfplay_team commands to prevent
|
||||||
|
players from flooding the server with sound commands. </p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li><b>zbot_detect</b> - ZBot is a program that helps players cheat in Q2 games by auto-aiming and firing their
|
||||||
|
weapons. Some of the big advantages the ZBot has over human players is that it can
|
||||||
|
see through walls, and fire the instant they have a clear shot.</p>
|
||||||
|
|
||||||
|
<p>The way ZBot works, is that it intercepts commands from the player, and either passes
|
||||||
|
them on to the server, or interprets them itself. The ZBot-specific commands either
|
||||||
|
start with "!", or "impulse". These are used to control the
|
||||||
|
ZBot, and are not passed on to the server.</p>
|
||||||
|
|
||||||
|
<p>The zbot detection works by passing a ZBot-specific command to the client,
|
||||||
|
and then waiting to see if that command is passed back to the server. If the server
|
||||||
|
does not receive the command, it assumes that the player is a zbot user. Older
|
||||||
|
versions occaisionally incorrectly identified users with poor network connections as ZBot
|
||||||
|
users. Weapons Factory uses a newer version of the code that takes poor network
|
||||||
|
connections into account, resulting in very few false detections.</p>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>WFSERVER.INI - [motd] Section</h2>
|
||||||
|
The Message Of The Day section is used to replace the top text of the Team and Class menus. Up to
|
||||||
|
three lines can be defined, as in this example:
|
||||||
|
<pre>
|
||||||
|
[motd]
|
||||||
|
WEAPONS FACTORY SERVER
|
||||||
|
*Hosted by John Smith
|
||||||
|
http://www.johnsmith.com
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p><b>Note:</b> You should try to keep each line to 27 characters or less, otherwise it wont fit on
|
||||||
|
the menu graphic. You also have your choice of colors for the text - white or green. To
|
||||||
|
use white text you don't have to do anything special. For green text, simply put a
|
||||||
|
"*" as the first character of the line.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>WFSERVER.INI - [maplist] Section</h2>
|
||||||
|
<p>With the maplist feature, you can create a list of maps that the server will cycle through.
|
||||||
|
To enable this feature, set the "" field in the [general] section, and enter the names of the maps below the
|
||||||
|
"[maplist]" line like this:
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
[maplist]
|
||||||
|
2fortme2
|
||||||
|
2fort8wf v
|
||||||
|
blastoma2wf
|
||||||
|
cancer1wf
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p><b>Note!</b> You no longer need to use the "sv maplist" to start the map list. It will automatically start
|
||||||
|
if the map list is defined in the wfserver.ini file.</p>
|
||||||
|
|
||||||
|
<p>You can define a map that will not be in the normal rotation, but will be availabe if people vote for it.
|
||||||
|
Just put a The "v" after a mapname </p>
|
||||||
|
|
||||||
|
<p>You must ensure that EVERY map is spelled exactly. Errors in the maplist will
|
||||||
|
cause the game to crash at map change. On unix systems, mapnames are case-sensitive.
|
||||||
|
Do not add the .bsp file extension to the list entry.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>WFSERVER.INI - [banwords] Section</h2>
|
||||||
|
The banwords section lets you ban the use of inappropriate language. Just list the words that you don't
|
||||||
|
want to be used on your server like this:</p>
|
||||||
|
<pre>
|
||||||
|
[banwords]
|
||||||
|
dork
|
||||||
|
jerk
|
||||||
|
ass
|
||||||
|
foureyes
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p><b>Note:</b> - The whole typed message will be rejected if any banned words are used, even if they are parts
|
||||||
|
of another word. For example, if you ban the word "ass", then people will not be able to use the word "class". One
|
||||||
|
way to get around this problem is to put a space before the word, like " ass".</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>WFSERVER.INI - [classlimits] Section</h2>
|
||||||
|
The classlimits section lets you limit the number of people that can select a specific class for each team.
|
||||||
|
In this example, the engineer is limited to three per team:</p>
|
||||||
|
<pre>
|
||||||
|
1 = 99 / recon
|
||||||
|
2 = 99 / nurse
|
||||||
|
3 = 3 / engineer
|
||||||
|
4 = 99 / marine
|
||||||
|
5 = 99 / cyborg
|
||||||
|
6 = 99 / arsonist
|
||||||
|
7 = 99 / gunner
|
||||||
|
8 = 99 / sniper
|
||||||
|
9 = 99 / spy
|
||||||
|
10 = 99 / mercenary
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p><b>Note:</b> - Class numbers are used to limit classes rather than names because different class definitions
|
||||||
|
from MOCK authors can be used. Also notice the comments (after the "/" character) at the end of each line that
|
||||||
|
document the class name. </p>
|
||||||
|
|
||||||
|
<h2>WFSERVER.INI - [scoring] Section</h2>
|
||||||
|
The scoring section lets you change the frags awarded for each type of score. Note that the default scoring values have
|
||||||
|
not changed in version 4.2. The current default frag scores are:</p>
|
||||||
|
<pre>
|
||||||
|
Point Name Default Value Description
|
||||||
|
------------------------- ------------- ---------------------
|
||||||
|
frag_points 1 points for a frag
|
||||||
|
suicide_points -1 points for a suicide
|
||||||
|
sentry_points 1 points for killing a sentry gun
|
||||||
|
capture_bonus 15 what you get for capture
|
||||||
|
team_bonus 10 what your team gets for capture
|
||||||
|
recovery_bonus 1 what you get for recovery
|
||||||
|
flag_bonus 0 what you get for picking up enemy flag
|
||||||
|
frag_carrier_bonus 2 what you get for fragging enemy flag carrier
|
||||||
|
carrier_danger_protect_bonus 2 bonus for fragging someone who has recently hurt your flag carrier
|
||||||
|
carrier_protect_bonus 1 bonus for fragging someone while either you or your target are near your flag carrier
|
||||||
|
flag_defense_bonus 1 bonus for fragging someone while either you or your target are near your flag
|
||||||
|
return_flag_assist_bonus 1 awarded for returning a flag that causes a capture to happen almost immediately
|
||||||
|
frag_carrier_assist_bonus 2 award for fragging a flag carrier if a capture happens almost immediately </pre>
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Other WF Configuration Settings</h2>
|
||||||
|
<p>This section describes additional configuration settings that are not controlled in the wfserver.ini file.</p>
|
||||||
|
|
||||||
|
<h3>IP Banning </h3>
|
||||||
|
<p>A set of new server commands have been added to allow server admins to ban specific
|
||||||
|
users based on their IP address. The commands have the same format as id's CTF mod. They
|
||||||
|
are:</p>
|
||||||
|
<blockquote>
|
||||||
|
<pre> sv addip (ip address) - adds an ip address to the ban list
|
||||||
|
|
||||||
|
sv removeip (ip address) - removes an ip address from the ban list
|
||||||
|
|
||||||
|
sv writeip - writes the ban list to ban list file
|
||||||
|
|
||||||
|
sv listip - lists the currently banned ip addresses
|
||||||
|
|
||||||
|
sv testip (ip address) - test a given ip address against the ban list</pre>
|
||||||
|
</blockquote>
|
||||||
|
<p>Each time an ip address is added or removed from the ban list, the list is written to
|
||||||
|
the ban file located in the quake2\wf directory (called listip.cfg). Therefore, the
|
||||||
|
writeip command is not really needed. The listip.cfg file can be edited directly
|
||||||
|
outside the game.</p>
|
||||||
|
<p>A new CVAR called "FILTERBAN" can also be set to change the behavior of the
|
||||||
|
ban list. By default, filterban is set to 1 which means that any person with an ip address
|
||||||
|
in the ban list will not be allowed to play. If you set filterban to 0, it means that ONLY
|
||||||
|
people with ip address in the ban list will be allowed to play.</p>
|
||||||
|
<p>You can also ban a group of players on the same subnet. For example, if you wish to ban
|
||||||
|
all players that have ip addresses starting with 199.111.222, just set the last number in
|
||||||
|
the ip address to zero, like this:</p>
|
||||||
|
<blockquote>
|
||||||
|
<pre>sv addip 199.111.222.0</pre>
|
||||||
|
</blockquote>
|
||||||
|
<p>This one entry would ban 199.111.222.1 through 199.111.222.255.</p>
|
||||||
|
<p>At this time, subnets other than those using the last number (octet) of the ip address
|
||||||
|
are not supported. For example, you cannot ban all 199.111.*.* players.</p>
|
||||||
|
<p>Since many players log on to ISP's that use dynamic IP addressing, it is often
|
||||||
|
necessary to ban an entire network in order to prevent that user from merely logging off,
|
||||||
|
and logging back on again with a new ip - at which time he can get into your server if you
|
||||||
|
don't ban the whole network number.</p>
|
||||||
|
|
||||||
|
<h3>GameSpy Support</h3>
|
||||||
|
<p>To make your server show up in gamespy, you need to have it send periodic messages to a
|
||||||
|
Q2 master server. To do this, enter the following lines into the console, or add them to
|
||||||
|
your startup script:</p>
|
||||||
|
<blockquote>
|
||||||
|
<pre>set public 1
|
||||||
|
setmaster q2master.planetquake.com </pre>
|
||||||
|
</blockquote>
|
||||||
|
<p>NOTE: This will only work for dedicated servers, make sure you are running Weapons
|
||||||
|
Factory from your quake2/wf directory or your server will NOT show up in the GameSpy tab.
|
||||||
|
If your server is down more than a few minutes, it will be removed from the active
|
||||||
|
master server lsit, and users will not be able to see it. Please note, that users
|
||||||
|
often update their lists only occaisionally. Therefore, you should not expect your
|
||||||
|
server to become instantly popular. It may take a few days for the players to find
|
||||||
|
you.</p>
|
||||||
|
<p>Most players will use the <a
|
||||||
|
href="http://www.captured.com/weaponsfactory/download/wf.qst">WF Custom Gamespy Tab</a>.</p>
|
||||||
|
<p>Here is the <a href="http://www.planetquake.com/servers">Planet Quake Server List</a>.</p>
|
||||||
|
<p>Voyager has set up a <a href="http://my.voyager.net/shryqe/quake2/q2wf.html">Weapons
|
||||||
|
Factory server list for Gamespy</a>. Follow this <a
|
||||||
|
href="http://my.voyager.net/shryqe/quake2/">link</a> to add your WF server to the server
|
||||||
|
list page, scroll down, you need to send an email to <a href="mailto:shryqe@voyager.net" .>shryqe</a>.</p>
|
||||||
|
<p><strong>You should also put "(WF)" in your server name</strong>. This will
|
||||||
|
help older GameSpy tabs find your server.</p>
|
||||||
|
|
||||||
|
<h3>Turning off CTF</h3>
|
||||||
|
<p>It is possible to turn the Weapons Factory CTF mod into a pure deathmatch mod. This
|
||||||
|
will remove the flags, teams, and team scoring. To do this, add the following option at
|
||||||
|
startup:</p>
|
||||||
|
<blockquote>
|
||||||
|
<pre>+set ctf 0</pre>
|
||||||
|
</blockquote>
|
||||||
|
<p>Thats it!</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h2><a name="servercfg">Using Server Config Files</a> </h2>
|
||||||
|
<p>Server configuration files store all your game settings in one place, and make it
|
||||||
|
simple to run your server with consistant settings from game to game. This will be
|
||||||
|
important to your users, who may become irrritated if you experiment too often with game
|
||||||
|
settings.</p>
|
||||||
|
<p>The Weapons Factory distribution comes with a sample server configuration file called
|
||||||
|
server.cfg. This file contains a basic configuration that you can use as a template to set
|
||||||
|
up your own server config file.</p>
|
||||||
|
<p>NOTE: Do not name your actual working server config file <em>server.cfg</em>.
|
||||||
|
Choose a name that will be difficult to guess, since knowledgable users may be able
|
||||||
|
to download your config file if it is easily guessed.</p>
|
||||||
|
<p>Your config file name can be passed to the server on the command line. Here's an
|
||||||
|
example command line to give you an idea (NT version) quake2 +set
|
||||||
|
dedicated 1 +set game wf +set port 27910 +exec server.cfg +set noipx 1</p>
|
||||||
|
<p>Here's a Linux version (runs in background. To run on console, use same command
|
||||||
|
as the NT version):</p>
|
||||||
|
<p>nohup ./quake2 +set dedicated 1 +set game wf +set port 27910 +set gamename wf +exec
|
||||||
|
server.cfg +set noipx 1 > /dev/null &</p>
|
||||||
|
|
||||||
|
<h2>Editing the Config File</font></h2>
|
||||||
|
<p>Open the file in a convienient text editor, and change it to reflect your desires.
|
||||||
|
You can enter comments in the file by starting the line with 2 / characters.
|
||||||
|
</p>
|
||||||
|
<p>//This is a comment line</p>
|
||||||
|
<p>We recommend that you do not change the dmflags setting. You may get unexpected
|
||||||
|
results.</p>
|
||||||
|
<p>First, set the wfflags variable. 17442 is a good starting setting (this will also
|
||||||
|
enable frag logging and zbot protection. To disable frag logging, use 17440).</p>
|
||||||
|
<p>Next, edit the Hostname, FTP, admin, system, inet, and os variables to reflect your
|
||||||
|
servers information. These values will be visible in gamespy.</p>
|
||||||
|
<p>Do not change the deathmatch variable unless you fully understand the settings.</p>
|
||||||
|
<p>Now, edit the maxclients variable. This setting will determine the number of
|
||||||
|
players that can play at one time on your machine. Resist the temptation to set this too
|
||||||
|
high. Overdoing it will make your server "laggy" to your players.</p>
|
||||||
|
<p>Next, edit the following variables.</p>
|
||||||
|
<p><font color="#80FF80">fraglimit</font> (number of frags before the map will change -
|
||||||
|
try 150 for a start)<br>
|
||||||
|
<font color="#80FF80">capturelimit</font> (number of flag captures one team can make
|
||||||
|
before the map will change - try 8)<br>
|
||||||
|
<font color="#80FF80">timelimit</font> (Time limit before the map will change - try 30
|
||||||
|
(minutes)).</p>
|
||||||
|
<p>Leave the zombietime variable alone.</p>
|
||||||
|
<p>If you want to have rcon access available, add the following line:</p>
|
||||||
|
<p>set rcon_password <em>mypassword</em></p>
|
||||||
|
<p>Finally, add a line to load your maplist:</p>
|
||||||
|
<p>sv maplist wf/wfserver.ini 1 (the 1 will enable random map selection
|
||||||
|
if no votes were received.)</p>
|
||||||
|
<p>That should do it. Now save the file, and don't forget to use the name you saved
|
||||||
|
it as on the command line when you start the game.</p>
|
||||||
|
<p>See sections above for additional variables that can be set, or for other values for
|
||||||
|
these settings.</p>
|
||||||
|
|
||||||
|
<h2>Support</h2>
|
||||||
|
<p>Email support can be obtained from the <a href="http://www.captured.com/weaponsfactory/wf.contact.html"> contacts page</a>.</p>
|
||||||
|
<p>If you are having configuration problems be sure to include your server.cfg in your mail message.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Begin Footer -->
|
||||||
|
<table cellspacing="2" cellpadding="2">
|
||||||
|
<tr>
|
||||||
|
<td align="CENTER"><p><font size="-2">Copyright © 1998 <a href="http://www.weaponsfactory.com" target="_blank">Weapons Factory Software</a><br>
|
||||||
|
WEAPONS FACTORY is a trademark of Weapons Factory Software for its software products.</font></p></td>
|
||||||
|
</tr></table>
|
||||||
|
<!-- End Footer -->
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</BODY>
|
||||||
|
</HTML>
|
|
@ -0,0 +1,6 @@
|
||||||
|
echo ---------------------------
|
||||||
|
echo DEDICATED WF SERVER STARTUP
|
||||||
|
echo ---------------------------
|
||||||
|
|
||||||
|
mv wf/qconsole.log wf/qconsole.log.bak
|
||||||
|
nohup ./q2ded +set dedicated 1 +set game wf +set gamename wf +exec server.cfg +set noipx 1 > /dev/null &
|
13
zbotcheck.c
13
zbotcheck.c
|
@ -25,11 +25,15 @@ It will return true if the client is using a Zbot. Simple example:
|
||||||
if(ZbotCheck(ent, ucmd))
|
if(ZbotCheck(ent, ucmd))
|
||||||
gi.bprintf(PRINT_HIGH, ">>> Zbot detected: %s\n",
|
gi.bprintf(PRINT_HIGH, ">>> Zbot detected: %s\n",
|
||||||
ent->client->pers.netname);
|
ent->client->pers.netname);
|
||||||
|
//Acrid in clientconnect amd client think
|
||||||
|
added code so they cant move in client thing and clear zbot flag for players connecting
|
||||||
|
and assuming the old zbot players data
|
||||||
|
|
||||||
From here you can do as you please with the cheater. ZbotCheck will only
|
From here you can do as you please with the cheater. ZbotCheck will only
|
||||||
return true once, following returns will be false.
|
return true once, following returns will be false.
|
||||||
============================================================================*/
|
============================================================================*/
|
||||||
|
|
||||||
|
//#include "environ.h"
|
||||||
#include "g_local.h"
|
#include "g_local.h"
|
||||||
|
|
||||||
#define ZBOT_JITTERMAX 4
|
#define ZBOT_JITTERMAX 4
|
||||||
|
@ -43,8 +47,8 @@ void I_AM_A_ZBOT(edict_t *ent)
|
||||||
//stuffcmd(ent, "disconnect\n"); // kick out zbots.
|
//stuffcmd(ent, "disconnect\n"); // kick out zbots.
|
||||||
|
|
||||||
//Really mess them up
|
//Really mess them up
|
||||||
ent->movetype = MOVETYPE_NOCLIP;
|
// ent->movetype = MOVETYPE_NOCLIP;//9/99 not good either
|
||||||
ent->client->pers.feign = 1;
|
//9/99 feign bug? ent->client->pers.feign = 1; nono they can get out with unfeign and play still9/99
|
||||||
ent->client->pers.i_am_a_bot = 1;
|
ent->client->pers.i_am_a_bot = 1;
|
||||||
|
|
||||||
VectorClear (ent->avelocity);
|
VectorClear (ent->avelocity);
|
||||||
|
@ -57,6 +61,8 @@ void I_AM_A_ZBOT(edict_t *ent)
|
||||||
ent->maxs[2] = -8;
|
ent->maxs[2] = -8;
|
||||||
ent->viewheight = 0;
|
ent->viewheight = 0;
|
||||||
ent->flags |= FL_NO_KNOCKBACK;
|
ent->flags |= FL_NO_KNOCKBACK;
|
||||||
|
// ent->s.effects |=EF_COLOR_SHELL;//9/99
|
||||||
|
// ent->s.renderfx |= RF_SHELL_RED;//9/99
|
||||||
// stop running/footsteps
|
// stop running/footsteps
|
||||||
VectorClear (ent->velocity);
|
VectorClear (ent->velocity);
|
||||||
|
|
||||||
|
@ -67,7 +73,8 @@ void I_AM_A_ZBOT(edict_t *ent)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
qboolean ZbotCheck(edict_t *ent, usercmd_t *ucmd) {
|
qboolean ZbotCheck(edict_t *ent, usercmd_t *ucmd)
|
||||||
|
{
|
||||||
int tog0, tog1;
|
int tog0, tog1;
|
||||||
client_respawn_t *resp = &ent->client->resp;
|
client_respawn_t *resp = &ent->client->resp;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue