r1ch.net forums
* Home Help Search Login Register
r1ch.net  |  r1ch.net stuff  |  R1Q2  |  Topic: Q2Admin 1.17.44 Released - CRITICAL UPDATE
Pages: 1 2 [3] 4  All
Print
Author Topic: Q2Admin 1.17.44 Released - CRITICAL UPDATE  (Read 94003 times)
mdvz0r
Member

Posts: 3


« Reply #30 on: March 20, 2006, 09:25:04 am »

Q2Admin hasn't been tested on x64 so use at your own risk, I strongly suspect it won't work without some changes.
You're right, it doesn't even compile.
When trying to compile it gives me this error:
Quote
ld: g_main.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
g_main.o: could not read symbols: Bad value
make: *** [q2admin.so] Error 1

When compiling with -fPIC it worked... but loads of warnings..
Logged
Bossman
Member

Posts: 486


« Reply #31 on: March 20, 2006, 04:44:49 pm »

q2admin.so?? Thats for Linux servers right? Not saying it will work just see that there with error 1 was wondering.
Logged
QwazyWabbit
Member

Posts: 402


« Reply #32 on: March 21, 2006, 12:25:13 am »

You're right, it doesn't even compile.
When trying to compile it gives me this error:
When compiling with -fPIC it worked... but loads of warnings..

PIC? Isn't that an embedded processor? Sounds like the compiler thinks it's cross-compiling. This is wrong.
Size of integers in 32 vs. 64 will lead to problems with the code since many times the coders assumed integers would always be 32 bits. I have not looked at the code for portability to 64 bits but there will undoubtedly be many ways the code can fail. Good luck. Smiley
« Last Edit: March 21, 2006, 12:27:24 am by QwazyWabbit » Logged
R1CH
Administrator
Member

Posts: 2625



« Reply #33 on: March 21, 2006, 01:41:03 am »

-fPIC causes position independent code, ie relocatable, as many .so should be.
Logged
mdvz0r
Member

Posts: 3


« Reply #34 on: March 21, 2006, 02:30:55 am »

So far so good, it's running, and without any errors. Hope it stays that way.
Logged
Dirk
Guest
« Reply #35 on: April 29, 2006, 02:08:21 pm »

Anyone else having troubles with quake2-icculus client and q2admin servers?
Logged
QwazyWabbit
Member

Posts: 402


« Reply #36 on: May 06, 2006, 11:30:15 am »

Bug spotted in Q2admin zb_zbot.c, line 299:

         if (proxyinfo[client].msec_count = 500)

should be:

         if (proxyinfo[client].msec_count == 500)
Logged
Bossman
Member

Posts: 486


« Reply #37 on: May 29, 2006, 07:18:26 am »

The one I got has differant code there I think it must be from q2ace version for q2admin cause there is lot of referance stuff to q2ace in it also. Is this good or bad??? look at your messages Qwazy..

  Here is that file BTW....

* zb_zbot.zip (13.6 KB - downloaded 297 times.)
« Last Edit: May 29, 2006, 08:10:14 am by Bossman » Logged
QwazyWabbit
Member

Posts: 402


« Reply #38 on: May 29, 2006, 09:26:34 am »

Bossman,

The line I showed was from R1ch's release of the 1.17.44  source from the link at the top of this topic. I always immediately put my sources into VSS for tracking purposes (I use VS/VC++ 6.0 Enterprise Edition as my build tool) but to be absolutely sure I downloaded the zip again and compared my file with the one in the zip. The only difference was the line at 299 with the compare to 500. The complete function, as I have it, is shown below.

As for your version, I do not know where it comes from nor how you can reconcile your version to R1ch's version. My interest at the time I downloaded 1.17.44 was to change from BWAdmin to Q2Admin to be up to date with current development. I don't even remember how I ran across this error, I think it was during a compile at /W4 and the compiler issued warning C4706. The conclusion I came to was that it should have been == instead of =, a very common mistake/typo in C when writing 'if' statements. I have not investigated whether it shouldn't actually be >=.

Code:
void ClientThink (edict_t *ent, usercmd_t *ucmd)
{
int client;
char *msg = 0;
INITPERFORMANCE_2(1);
INITPERFORMANCE_2(2);

if(!dllloaded) return;

if(q2adminrunmode == 0)
{
dllglobals->ClientThink(ent, ucmd);
copyDllInfo();
return;
}

client = getEntOffset(ent);
client -= 1;

STARTPERFORMANCE(1);

//*** UPDATE START ***
proxyinfo[client].frames_count++;

if (lframenum > proxyinfo[client].msec_start)
{
if (proxyinfo[client].show_fps)
{
if (proxyinfo[client].msec_count == 500)
{
gi.cprintf(ent, PRINT_HIGH, "%3.2f fps\n", (float)proxyinfo[client].frames_count * 2);
}
}

if (proxyinfo[client].msec_count > msec_max)
{
if (msec_kick_on_bad)
{
proxyinfo[client].msec_bad++;
if (proxyinfo[client].msec_bad >= msec_kick_on_bad)
{
//kick
  gi.bprintf(PRINT_HIGH, PRV_KICK_MSG, proxyinfo[client].name);
    addCmdQueue(client, QCMD_DISCONNECT, 1, 0, "Speed hack.");
}
}
else
{
if (proxyinfo[client].enteredgame + 5 < ltime)
{
proxyinfo[client].speedfreeze = ltime;
proxyinfo[client].speedfreeze += 3;
}
}
}

proxyinfo[client].msec_start = lframenum;
proxyinfo[client].msec_start += msec_int * 10;
proxyinfo[client].msec_last = proxyinfo[client].msec_count;
proxyinfo[client].msec_count = 0;
proxyinfo[client].frames_count = 0;
}

proxyinfo[client].msec_count += ucmd->msec;

if (proxyinfo[client].speedfreeze)
{
if (proxyinfo[client].speedfreeze > ltime)
{
ucmd->msec = 0;
}
else
{
if (speedbot_check_type & 2)
{
gi.bprintf(PRINT_HIGH, "%s has been frozen for exceeding the speed limit.\n", proxyinfo[client].name);
}
proxyinfo[client].speedfreeze = 0;
}

}
//*** UPDATE END ***

if(ucmd->impulse)
{
if(client >= maxclients->value) return;

if(displayimpulses)
{
if(ucmd->impulse >= 169 && ucmd->impulse <= 175)
{
msg = impulsemessages[ucmd->impulse - 169];
gi.bprintf (PRINT_HIGH, "%s generated an impulse %s\n", proxyinfo[client].name, msg);
}
else
{
msg = "generated an impulse";
gi.bprintf (PRINT_HIGH, "%s generated an impulse %d\n", proxyinfo[client].name, ucmd->impulse);
}
}

if(ucmd->impulse >= 169 && ucmd->impulse <= 175)
{
proxyinfo[client].impulse = ucmd->impulse;
addCmdQueue(client, QCMD_LOGTOFILE2, 0, 0, 0);
}
else
{
proxyinfo[client].impulse = ucmd->impulse;
addCmdQueue(client, QCMD_LOGTOFILE3, 0, 0, 0);
}

if(disconnectuserimpulse && checkImpulse(ucmd->impulse))
{
proxyinfo[client].impulsesgenerated++;

if(proxyinfo[client].impulsesgenerated >= maximpulses)
{
addCmdQueue(client, QCMD_DISCONNECT, 1, 0, msg);
}
}
}

if(swap_attack_use)
{
byte temp = (ucmd->buttons & BUTTON_ATTACK);

if(ucmd->buttons & BUTTON_USE)
{
ucmd->buttons |= BUTTON_ATTACK;
}
else
{
ucmd->buttons &= ~BUTTON_ATTACK;
}

if(temp)
{
ucmd->buttons |= BUTTON_USE;
}
else
{
ucmd->buttons &= ~BUTTON_USE;
}
}

if(!(proxyinfo[client].clientcommand & BANCHECK))
{
if(zbc_enable && !(proxyinfo[client].clientcommand & CCMD_ZBOTDETECTED))
{
if(zbc_ZbotCheck(client, ucmd))
{
proxyinfo[client].clientcommand |= (CCMD_ZBOTDETECTED | CCMD_ZPROXYCHECK2);
removeClientCommand(client, QCMD_ZPROXYCHECK1);
addCmdQueue(client, QCMD_ZPROXYCHECK2, 1, IW_ZBCHECK, 0);
addCmdQueue(client, QCMD_RESTART, 1, IW_ZBCHECK, 0);
}
}

STARTPERFORMANCE(2);
dllglobals->ClientThink(ent, ucmd);
STOPPERFORMANCE_2(2, "mod->ClientThink", 0, NULL);

copyDllInfo();
}

STOPPERFORMANCE_2(1, "q2admin->ClientThink", 0, NULL);
}
Logged
Bossman
Member

Posts: 486


« Reply #39 on: May 29, 2006, 11:53:46 am »

  Only thing R1CH changed was .dll and .so files not the other .c files that go with the original Q2admin at least I never seen any but he can answer that.  But checking into this some more I see that this has been changed a lot of times stuff been added since the original 117 and it appears that someone needs to check this out more because I am sure there is lot of us that have the differant versions of .c files used with q2admin since its beginning I got quit a few versions of q2admin with all the differant updated .c files differant sizes and dates with same names. So the question here is which ones do we use with this dll or so file??
Logged
WORM.
Member

Posts: 71


« Reply #40 on: May 29, 2006, 02:47:17 pm »

nt

 rolleyes
Logged
Weasel
Member

Posts: 85



« Reply #41 on: May 30, 2006, 05:31:54 pm »

I am going to do my 1 good deed for the year.

When you compile a shared library in linux you compile all the .c files and it makes a .so file

When you compile it under windows you compile all the .c files and it makes a .dll

the .so and .dll are the end result of compiling depending on where you compile it at.

You can't change a .so or .dll file directly you have to edit the .c files and recompile unless one is going to do a binary patch which is very difficult.


Are you really that ignorant?
« Last Edit: May 30, 2006, 05:45:02 pm by Weasel » Logged
SBD
Guest
« Reply #42 on: December 10, 2006, 07:38:38 am »

Hello, sorry to bring such an old thread up just hoping osmeone else is out there;

I've recently setup a server for a few UK people but am having trouble getting q2admin to work.

After I copy across gamex86.dll into my release dir and move all the files across from the original zip from planet quake. These have all been put into quake2/ and ctf/ when a client connects the server crashes and throws up;

SZ_GetSpace: overflow without allowoverflow set

This is my Q2admin.txt
Quote
;
; This is the config file for the q2admin dll.
; (c) 1998 Shane Powell
;
; The q2admin.txt is first read from the quake2 directory and then from the mod
; directory.
;


;
; Enable/disable main zbot detection.
;
zbotdetect  "Yes"

;
; Quake2 Client Admin password.
; To enable uncomment and change the password to something else.
;
;adminpassword "secret"

;
; Only for use in windows.
; This tells the q2admin dll that it is running in the quake2 directory (or the release
; directory for v3.20+).  When set to 'No' the dll is being loaded from the mod directory
; like the linux / solaris versions. For win32 the old mod dll must be called
; 'gamex86.real.dll' for this to work.
;
quake2dirsupport "Yes"

;
; MOTD file to display at client connect (and also happens on level changed as well)
; For the console versions of the command, if you don't supply
; a filename, the MOTD is cleared. If you do the MOTD is loaded.
; NOTE: by default the MOTD is read from the quake2 directory.
; If you want to use a mod motd you must supply the directory
; name. e.g. sv !setmotd "ctf/mymotd.txt"
;
setmotd ""


;
; Once a zbot is detected, how long to wait before actioning it.
; -1 will generate a random timeout between 5 seconds to 5 seconds + randomwaitreporttime seconds.
;
zbotdetectactivetimeout "0"

;
; When zbotdetectactivetimeout is -1 this value is used to genterate a random time between
; 5 seconds to 5 seconds + randomwaitreporttime seconds.
; e.g. 55 means 5 seconds to 60 seconds
;
randomwaitreporttime "55"

;
; ZBOT backup detector timeout in seconds. 5 is the min but 60 seconds is good for the internet.
; You shouldn't need to touch this value at all. Mainly used for internal development testing.
;
clientsidetimeout "30"

;
; Disconnect a zbot user when detected.
;
disconnectuser "Yes"


;
; Display user is a zbot to the rest of the server
;
displayzbotuser "Yes"

;
; Number of times to display the user is using a zbot?
;
numofdisplays "5"

;
; Message to display that the using is using a zbot.
; NOTE: must have 1 and only 1 '%s' in the line
; %s will print the users name
;
zbotuserdisplay "%s is using a client side proxy!!!"

;
; Custom server console command to run on zbot bot detect.
; (run after the log file update)
;
customservercmd ""


;
; Custom client console command to run on zbot bot detect.
; (run after the client messages and before the disconnect)
;
customclientcmd ""


;
; Display when impulses are generated / used
; This is a future-proof thing that will display messages when impulses are used.  The reason is if
; the zbot person has a zbot hack to get around the "normal" detect this will display when he is
; sending commands.  Sort of like a back-up method of detecting zbot users.  The only problem is that
; normal clients can generate impulses as well and I don't know if this is for commanding the zbot
; or something that a normal q2 mod uses.  Only 1 q2 mod that I know off uses impulses tho so chances
; are that it's a abot user.
;
; zbot impulses:
; - Impulse 169 : toggle menu
; - Impulse 170 : move up (menu)
; - Impulse 171 : move down (menu)
; - Impulse 172 : increase item (menu)
; - Impulse 173 : decrease item (menu)
; - Impulse 174 : toggles bot on/off
; - Impulse 175 : toggles scanner display
;
; Note: I display a message when ANY impulse is used just to be safe...
;
displayimpulses "Yes"


;
; Disconnect user if generating a impulse.
;
disconnectuserimpulse "No"


;
; What impulses do we want to kick people on??  disconnectuserimpulse must be set to
; 'Yes' for this to take action.  Commenting this command out will select all impulses.
;
impulsestokickon "169, 170, 171, 172, 173, 174, 175"


;
; Max number of impulses to detect before kicking.
;
maximpulses "1"


;
; Custom client console command that is run when clients
; connect.
;
customclientcmdconnect ""


;
; Custom server console command that is run when clients
; connect.  '%c's are replaced by the client number.
; e.g. "sv !stuff cl %c file clientconnect.txt"
;
customservercmdconnect ""

;
; Display name changes so everybody knows someones changed there name...
;
displaynamechange "Yes"

;
; Enable play_team command (may not work %100 with each mod, depends on how the mod teams are implemented).
; Plays a wav file on each person that is in your team.
;
play_team_enable "No"

;
; Enable play_all command.
; Plays a wav file for each person in the game.
;
play_all_enable "No"

;
; Enable play_person command.
; Plays a wav file for 1 person in the game.
;
play_person_enable "No"

;
; Enable say_person command.
; Send a message to 1 person in the game.
;
say_person_enable "No"


;
; Enable say_group_enable command.
; Send a message to a group of people in the game.
;
say_group_enable "No"


;
; Enable the extended say commands.
;
extendedsay_enable "No"


;
; Sets 'set Bot "No Bots" s' on the server. If your getting
; "Info string length exceeded" on the server console, change
; this value to "No".
;
serverinfoenable "Yes"

;
; The default ban message for logging and displaying when someone
; is banned.
;
defaultbanmsg "You are banned from this server!!!"

;
; The default chat ban message for logging and displaying when someone
; has typed in a banned word.
;
defaultchatbanmsg "Message banned."

;
; Enable ip banning.  For bans that use both IP and Name, it then just uses the name.
;
ipbanning_enable "No"

;
; Enable nick banning.  For bans that use both IP and Name, it then just uses the IP.
;
nickbanning_enable "No"


;
; Enable chat banning.
;
chatbanning_enable "No"

;
; Sets the maximum cl_maxfps that a client may have.  See readme.txt for how this works and
; IF you should use it.  Uncomment to enable.
;
;maxfps "31"

;
; Sets the minimum cl_maxfps that a client may have. 
;
;minfps "10"

;
; Sets the maximum rate that a client may have.  See readme.txt for how this works and
; IF you should use it.  Uncomment to enable.
;
;maxrate "16000"

;
; Sets the minimum rate that a client may have.  See readme.txt for how this works and
; IF you should use it.  Uncomment to enable.
;
;minrate "1000"

;
; ban on client connect (YES) or ban on client begin (NO).  When banning on client
; connect the banned player will not use up a client position at all BUT no ban
; message is displayed.  Ban on client begin will use a player position for the length
; of the client map load then be kicked.  But client will get a BAN message before
; getting kicked.
;
banonconnect "Yes"


;
; Name changing flood protection so that a name change macro does not flood the server and
; other clients.
; namechangefloodprotect "<number of messages> <in x seconds> <silence in seconds>"
; if <silence in seconds> is 0 then the person is kicked.
; to disable change to:
; namechangefloodprotect "disable"
;
namechangefloodprotect "5 2 10"

;
; Name change flood protection message.
;
namechangefloodprotectmsg "%s change names too many times!"

;
; Kick uses for changing to banned names.  If No the name is not allowed to change.
;
kickonnamechange "No"


;
; Chat flood protection so that a chat macro does not flood the server and
; other clients.
; chatfloodprotect "<number of messages> <in x seconds> <silence in seconds>"
; if <silence in seconds> is 0 then the person is kicked.
;
; e.g. chatfloodprotect "5 2 10"
;
; to disable change to:
; chatfloodprotect "disable"
;
chatfloodprotect "disable"

;
; Name change flood protection message.
;
chatfloodprotectmsg "%s is making to much noise!"


;
; Converts the mod gamemap commands to map commands for when it changes levels.  This forces the
; mod dll to unload / reload.
;
gamemaptomap "No"


;
; Enable the disable of spawn map entities. (q2adminspawn.txt)
;
spawnentities_enable "No"


;
; Enable q2admin vote features (q2adminvote.txt).
;
vote_enable "No"

;
; The client vote command name.
;
clientvotecommand "vote"

;
; Vote timeout in seconds.
;
clientvotetimeout "60"

;
; Count non vote's in the percent calculation.
;
votecountnovotes "Yes"

;
; Percent required for the vote to pass. (1 - 99)
;
votepasspercent "50"

;
; Minimum number of people in the game before allowed to vote on a command.
;
voteminclients "0"

;
; Maximum number of votes allowed in <voteclientmaxvotetimeout> time for one player.
;
; 0 = disabled, i.e. unlimited.
;
voteclientmaxvotes "0"

;
;   Time in seconds allowed for <voteclientmaxvotes> to be cast for one player.
;
; 0 = for whole level.
;
voteclientmaxvotetimeout "0"

;
; The vote remind message time, i.e. every clientremindtimeout seconds the
; clients are reminded to vote or the stat's of the vote is displayed.
;
clientremindtimeout "10"

;
; Linux ONLY:
;
; Load the linux game so in lazy mod.  The default is NOW which can cause some mod's
; not to load.  The mod's the don't load is because of a problem with the mod itself
; not q2admin. This switch is meant to be a workaround only... 
; Mod's which don't load under the default switch can crash. (with or without q2admin)
;
soloadlazy "No"


;
; Three variables that control zbotcheck code (zbot movement checking code by
; WhiteFang)
;
zbc_enable "Yes"
zbc_jittermax "4"
zbc_jittertime "10"
zbc_jittermove " 500"


;
; Controls the detection of BW-Proxy and Nitro2/Xania proxies.
;
; 0 - No Detection.  This means they will be detected as zbots.
; 1 - Normal Detection.  This is the most secure method but with some mods
;     this may not work.
; 2 - Insecure Detection.  This will allow the proxies to connect but
;     it may also allow some types of modified zbot to connect as well.
;     Also settings either proxy_bwproxy or proxy_nitro2 to '2' will
;     automatically set the other one to '2' as well.
;
proxy_bwproxy "1"
proxy_nitro2 "1"


;
; Controls if clients are allowed to use the console to generate chat messages without the
; use of a command. 
;
consolechat_disable "No"


;
; Internal q2admin run mode.  Used for debuging / testing.  Please leave at 100 for normal use.
;
; 0    - Pass through layer only.
; 1-99 - Unused for now.
; 100  - Fully featured q2admin.
;
q2adminrunmode "100"


;
; Maximum clients that q2admin can process per frame.
; This is a debugging/internal  value that should not be
; changed unless told to.
;
maxclientsperframe "100"


;
; q2admin processes messages every x frames.  This is a internal
; testing value and it is not a good idea to change it.
;
framesperprocess "0"


;
; Detects if the client has a hacked timescale quake2.exe
;
timescaledetect "Yes"

;
;   Message that is displayed if the user is detected with a
; hacked timescale exe.
;
timescaleuserdisplay "%s is using a speed cheat quake2!!!"

;
; Skin changing flood protection so that a skin change macro does not flood the server and
; other clients.
; skinchangefloodprotect "<number of skin changes> <in x seconds> <silence in seconds>"
; if <silence in seconds> is 0 then the person is kicked.
; to disable change to:
; skinchangefloodprotect "disable"
;
skinchangefloodprotect "5 2 10"

;
; Skin change flood protection message.
;
skinchangefloodprotectmsg "%s changes skins too many times!"


;
; Enable the disable client commands. (q2admindisable.txt)
;

disablecmds_enable "No"


;
; Enable the cl_pitchspeed change detect
;
cl_pitchspeed_enable "No"

;
; What to do with cl_pitchspeed detect changes?
;
cl_pitchspeed_kick "No"

;
; Display when someone changes the cl_pitchspeed.
;
cl_pitchspeed_display "Yes"


;
; The kick display message.
;
cl_pitchspeed_kickmsg "cl_pitchspeed changes not allowed on this server."


;
; Force client to reconnect to inital connection, bepasses any proxies that may be runnning.
; Please put in the ip address/name and port (if needed) of the server.
;
; e.g. reconnect_address "quake2.games.org.nz:27920"
; or
; e.g. reconnect_address "192.168.1.10"
;
; No address means the feature is disabled.
;
reconnect_address ""


;
; Client must reconnect in X time from the inital connect.  Time in seconds.
;
reconnect_time "20"


;
; This controls how strict the reconnect feature is.
; 0 - very strict (most secure but is the most likely to cause multiple reconnections)
; 1 - less strict (not so secure, this should allow NAT router / internet software proxy
;                  to connect more easily)
;
reconnect_checklevel "0"


;
; Enables the internal disabling of spawning entities.  For this feature to
; work entity_classname_offset must be set also to the correct value for the
; mod that you are running.  "spawnentities_enable" must also be set to "Yes"
; for this figure to work.
;
spawnentities_internal_enable "No"

;
; The byte offset to the classname pointer in the entity structure.
; This is required for the internal disable spawn entities feature.
;
; If this figure is wrong q2admin may crash and the internal disable
; entities feature will not work or the entity create/delete logging
; feature to work.
;
; Email killerbee to check what the offset is for the mod that you are
; running.
;
entity_classname_offset "280"


;
; Filters out any non-printable characters from any text being said/printed.
; It only allows characters in the range of 0x20 to 0x7E.
; This may upset some mods printing.
;
filternonprintabletext "No"


;
; Swaps the use of +attack and +use.  This can be useful as if the players have
; to use +use to fire instead of +attack then it renders the auto-aim proxy
; unsable.
;
swap_attack_use "No"


;
; The server lockdown message that connecting users see.
;
lockoutmsg "This server is currently locked"

Can anyone help?
cheers
SBD
Logged
shovel
Member

Posts: 84



« Reply #43 on: December 11, 2006, 08:14:03 am »

I dont think the q2admin is your problem. What is the commmand line that you are using to start your server?  What are you using for a .EXE?  Are there any errors on the dedicated console?  How about your server.cfg? We need more info to be able to help you.
Logged
GiJO
Member

Posts: 11


« Reply #44 on: January 02, 2007, 12:02:51 pm »

Hi Guys,

Great to see Quake2 is still popular. I'm quite new to r1q2, seems great from what i've read and would love to get q2admin working as well. Just wondering how i go about doing it as i can't find a download for the full version anywhere, the gamespy site doesn't have a link to download from and the one r1ch posted seems to be for linux or source code. I'm running a windows platform.

Any help would be appreciated.

Thanks in advance
Andy
Logged
Pages: 1 2 [3] 4  All
Print
r1ch.net  |  r1ch.net stuff  |  R1Q2  |  Topic: Q2Admin 1.17.44 Released - CRITICAL UPDATE
Jump to:  

Powered by SMF 1.1.19 | SMF © 2013, Simple Machines