Fix it all up and add 4.25 zbotcheck

This commit is contained in:
mv 2024-09-02 14:12:54 +03:00
parent c480e687aa
commit 75156a00b6
29 changed files with 11163 additions and 29 deletions

View File

@ -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..."

23
README.UNIX Executable file
View File

@ -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

7847
a.txt Executable file

File diff suppressed because it is too large Load Diff

View File

@ -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);
} }

BIN
gamei386.so Executable file

Binary file not shown.

BIN
gamesparc.so Executable file

Binary file not shown.

BIN
gamex86.dll Executable file

Binary file not shown.

View File

@ -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))
{ {

2098
p_trail.c Executable file

File diff suppressed because it is too large Load Diff

22
readme42.txt Executable file
View File

@ -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.

33
server.cfg Executable file
View File

@ -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

72
team10.class Executable file
View File

@ -0,0 +1,72 @@
Φ³ ³·Έ΄
Τεαν±°
Ϋ<EFBFBD>εγοξέ
ζεναμε ψςεγίς ψςεγίβ °
± ² ³ ΄ ³Ά ° ° ° ° °
Ά ΅ ³
±°° ΅·΅ ²°°  ²Ά²±΄Ή  ·Ά
²°° ΅° ° ³΅ ±°° °
ΫΞυςσεέ
ζεναμε ψξυςίς ψξυςίβ ²
± ² ²΅ ΄ ±± ° ° ° ° °
± ±² °
±²΅ ³·΅ ²°°  ΆΆ  ±²
²°° ±°° ° ³΅ ±°° °
ΫΕξηιξεεςέ
ναμε ψεξηίς ψεξηίβ °
± ² ²· ³ ΄ ° ° ±³ ° °
± ±³ ±΄
±°° ²΅° ²°°  ³²ΈΈ³²  ±²
²°° ±°° ²° ²΅ ±°° ²°
ΫΝαςιξεέ
ναμε ψναςίς ψναςίβ ²
± ² ° ° ° ±Έ · Ά ° °
± ΄ Έ
±·΅ ±Έ΅ ²°°  ²Ά³±ΆΈ  ±΄
° ΅° ΄° ²΅ ±°° ²°
ΫΓωβοςηέ
γωβοςη ψγωβίς ψγωβίβ °
± ² ° ±΄ ±Ά Έ ³± ° ° °
±Ά ² Ά
²²΅ ²±΅ ²°°  ±³³±²°  ±΄
° ΅° ±°° ³΅ ±°° ΅°
ΫΑςσοξιστέ
γωβοςη ψαςσίς ψαςσίβ ²
± ² ²° ° ° ²± ²² ° ΄³ ²³
± Ή ²°
±·΅ ³²΅ ²°°  Έ±Ή²  ±²
±°° ΅° ΄° ²΅ ΅° ²΅
ΫΗυξξεςέ
ζεναμε ψηυξίς ψηυξίβ ΄
± ² ° ΄ ±Ή ΅ ³² ° ° °
± ±Ά °
²΅° ³°° ²°°  ΄°ΉΆ  ±΄
³°° ΅° ° ²΅ ±°° °
ΫΣξιπεςέ
ναμε ψσξιίς ψσξιίβ ΄
± ² ° ° ²Ή ° ° ° Ή °
± ±· °
±΅° ±Έ΅ ²°°  ²Ά²±΄΄  ·Ά
° ΅° ° ²΅ ° ΅°
ΫΣπωέ
ναμε ψσπωίς ψσπωίβ Ά
± ² ° ΄ ³³ ³΄ ° ° ° °
± ±° ±
±°° ±Έ΅ ²°°  ΅²  ·Ά
²°° ΅° ° ²΅ ±°° °
ΫΝεςγεξαςωέ
ναμε ψνεςίς ψνεςίβ Έ
± ² ³Ά ³΅ ³΄ ³· ° ° ° °
± ±΅ Ά
²°° ²°° ²°°  °  ±³
²°° Ά° ²° ²΅ ΅° ΅°

23
team3.class Executable file
View File

@ -0,0 +1,23 @@
Φ³ ³·Έ΄
Τεαν³
Ϋ<EFBFBD>εγοξέ
ζεναμε ψςεγίς ψςεγίβ °
± ² ³ ° ° ° ° Ά Ή °
± ΅ Ά
²°° ΅·΅ ²°°  ²Ά²±΄΅  ·Έ
²°° ±°° ΅° ΅° ²°° ΅°
ΫΝαςιξεέ
ναμε ψναςίς ψναςίβ °
± ² ³ ΄ ° ° · ° ° °
΄ ³ Έ
²°° ±Έ΅ ²°°  ²Ά²±΄΅  ±΄
²°° ±°° ΅° ΅° ²°° ΅°
ΫΓωβοςηέ
γωβοςη ψγωβίς ψγωβίβ °
± ² ³ ° ΅ ° · Έ ° °
Ή ² ·
²°° ²±΅ ²°°  ²Ά²±΄΄  ΄·
²°° ±°° ΅° ΅° ²°° ΅°

44
team6.class Executable file
View File

@ -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>オー

View File

@ -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;

View File

@ -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;

View File

@ -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?

64
wf.css Executable file
View File

@ -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;
}

BIN
wf.qst Executable file

Binary file not shown.

View File

@ -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));

View File

@ -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);
} }

View File

@ -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;

View File

@ -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);

181
wferaser42.html Executable file
View File

@ -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&amp;Biosentry:</P>
<P>Supply&amp;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>&nbsp;</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>

6
wflinux Executable file
View File

@ -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 &

123
wfserver.ini Executable file
View File

@ -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

584
wfserver42.html Executable file
View File

@ -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 &quot;rec.games.computer.quake.servers&quot;. 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 &quot;wf&quot; 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.&nbsp; Type the following command to uncompress the binaries into the
WF directory:&nbsp;&nbsp; zcat wfserver42.tar.gz | tar xvf -</li>
<li>Now, copy the Client files into the WF directory. Uncompress the archive by typing:&nbsp; unzip wfclient42.zip</li>
<li>Now that the files are uncompressed, change the ownership of the files to the root user.&nbsp; Change to the WF directory, and type:
&nbsp; 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.&nbsp; Check your server often.&nbsp; Play there.&nbsp; Listen to your
users.&nbsp; Resist the urge to be a tyrant.</li>
<li>A fast network connection.&nbsp; ISDN or telephone modems won't cut the mustard.
&nbsp; Cable modems can, in some circumstances, work well.&nbsp; 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.&nbsp; But you won't
get good results on a 486 either.&nbsp; Linux servers tend to need less horsepower than NT
servers, but both need an adequate machine.&nbsp; A pentium 200+ should be able to run a
16 player game pretty well with enough memory.&nbsp; 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.&nbsp; 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.&nbsp; The ZBot-specific commands either
start with &quot;!&quot;, or &quot;impulse&quot;.&nbsp; 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.&nbsp; If the server
does not receive the command, it assumes that the player is a zbot user.&nbsp; Older
versions occaisionally incorrectly identified users with poor network connections as ZBot
users.&nbsp; 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
&quot;*&quot; 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 &quot;v&quot; after a mapname </p>
<p>You must ensure that EVERY map is spelled exactly.&nbsp; Errors in the maplist will
cause the game to crash at map change.&nbsp; On unix systems, mapnames are case-sensitive.
&nbsp; 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.&nbsp; The listip.cfg file can be edited directly
outside the game.</p>
<p>A new CVAR called &quot;FILTERBAN&quot; 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.
&nbsp; 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.&nbsp; Please note, that users
often update their lists only occaisionally.&nbsp; Therefore, you should not expect your
server to become instantly popular.&nbsp; 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 &quot;(WF)&quot; 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.&nbsp; 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:&nbsp; Do not name your actual working server config file <em>server.cfg</em>.
&nbsp; 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.&nbsp; Here's an
example command line to give you an idea (NT version)&nbsp;&nbsp;&nbsp; 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.&nbsp; 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 &gt; /dev/null &amp;</p>
<h2>Editing the Config File</font></h2>
<p>Open the file in a convienient text editor, and change it to reflect your desires.
&nbsp; You can enter comments in the file by starting the line with 2 / characters.
&nbsp;&nbsp; </p>
<p>//This is a comment line</p>
<p>We recommend that you do not change the dmflags setting.&nbsp; You may get unexpected
results.</p>
<p>First, set the wfflags variable.&nbsp; 17442 is a good starting setting (this will also
enable frag logging and zbot protection.&nbsp; To disable frag logging, use 17440).</p>
<p>Next, edit the Hostname, FTP, admin, system, inet, and os variables to reflect your
servers information.&nbsp; 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.&nbsp; 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.&nbsp; Overdoing it will make your server &quot;laggy&quot; 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&nbsp;&nbsp;&nbsp; (the 1 will enable random map selection
if no votes were received.)</p>
<p>That should do it.&nbsp; 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 &copy; 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>

6
wfsolaris Executable file
View File

@ -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 &

View File

@ -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;