.:: Bots United ::.

.:: Bots United ::. (http://forums.bots-united.com/index.php)
-   General Bot Coding (http://forums.bots-united.com/forumdisplay.php?f=24)
-   -   Correct walk speed? (http://forums.bots-united.com/showthread.php?t=1265)

Cpl. Shrike 06-04-2004 16:23

Re: Correct walk speed?
 
I don't know that from the top of my head.
I'll post the messages later today.

Cpl. Shrike 06-04-2004 20:58

Re: Correct walk speed?
 
Code:

  void pfnSetClientMaxspeed(const edict_t *pEdict, float fNewMaxspeed)
  {
          int client_index;
          if (debug_engine) { fp=fopen("HPB_bot.txt","a");
          fprintf(fp,"pfnSetClientMaxspeed: edict=%x speed=%f\n",pEdict,fNewMaxspeed); fclose(fp); }
 
          for (client_index = 1; client_index < MAX_CLIENTS; client_index++)
          {
                  if (clients[client_index].is_used)
                  clients[client_index].max_speed = fNewMaxspeed;
          }
          (*g_engfuncs.pfnSetClientMaxspeed)(pEdict, fNewMaxspeed);
  }

This is what im using for TOD and DOD.
Although TOD is spamming the system continiosly with the pfnSetClientMaxspeed, DOD only sends it when the clients speed changes.
In dod the speed also depends what gun and if the gun is deployed.
In that case there are more speeds to recorded for each class and gun. crouching etc etc.

=================
edit.

I recorded only the main speeds like when a client crouches.
It may varie a little but when the speed is below a certain level.
The game dll knows it's slow enuf to stop footstep sounds.
Or when the speed is low enuf the game knows it can't move because it is like zoomed or deployed.
However im not sure fo CS code. (as i don't code for cs)

Terran 06-04-2004 21:25

Re: Correct walk speed?
 
There is a CVAR named cl_movespeedkey which influences the speed while you walk. It defaults to 0.520 which might be a faktor to the normal speed.

Pierre-Marie Baty 06-04-2004 21:57

Re: Correct walk speed?
 
@Stefan: never forget your bot is a SERVER-SIDE bot ! Hence you can completely drop off the hooking for Health, Battery, WeapPickup messages and such, because you have direct access to them whenever you want in pEdict->v.health, pEdict->v.armorvalue and pEdict->v.weapons respectively !

In CS 1.6, the max speed is available in pEdict->v.maxspeed
In CS 1.5, the max speed was sent to the clients through a pfnSetClientMaxSpeed() call.

Hence the fix is to always look in pEdict->v.maxspeed, and use pfnSetClientMaxSpeed() like this:
Code:

void SetClientMaxspeed (const edict_t *pEdict, float fNewMaxspeed)
{
  // this function tells the client whose player entity is pointed to by pEdict to update its
  // maximal running speed to fNewMaxspeed. I don't really get why this function is necessary,
  // since the entvars of an entity already feature a "maxspeed" variable, which must be
  // trackable in the network pack. There are a lot of weirdosities like this one in the Half-
  // Life engine.
 
  // is this client a bot ?
  if (players[ENTINDEX ((edict_t *) pEdict) - 1].is_racc_bot)
          ((edict_t *) pEdict)->v.maxspeed = fNewMaxspeed; // update its max speed (CS 1.5 doesn't)
 
#ifdef METAMOD
  RETURN_META (MRES_IGNORED);
#else
  (*g_engfuncs.pfnSetClientMaxSpeed) (pEdict, fNewMaxspeed);
#endif
}


stefanhendriks 07-04-2004 11:25

Re: Correct walk speed?
 
omg. You are right. I always forget that when coding for CS 1.6. I got so used to hooking and such, i forgot its now the other way around. I checked my code and saw that i do not use direct accessing when running RB for CS 1.6. I will fix them immidiatly and then hope it works :) i'll let ya know.

stefanhendriks 07-04-2004 11:47

Re: Correct walk speed?
 
yeeeeeeeeeeeeeeeeeehaw, fixed! This is l33t. THanks guys!


ow, did i already mentioned it worked? :P ;)

Whistler 08-04-2004 04:45

Re: Correct walk speed?
 
Quote:

if (players[ENTINDEX ((edict_t *) pEdict) - 1].is_racc_bot)
I don't think this is necessary; you can use this for all players (whether it's a bot or not) without problems

Pierre-Marie Baty 08-04-2004 09:49

Re: Correct walk speed?
 
Good point indeed Whistler ! :)

Whistler 19-04-2004 06:44

Re: Correct walk speed?
 
I've found this in Q1 engine code:
Code:

        if (in_speed.state & 1)
                speed = cl_movespeedkey.value;
        else
                speed = 1;

...and about the cl_movespeedkey thing:

Code:

cvar_t        cl_movespeedkey = {"cl_movespeedkey","2.0"};
Note: the shift key in Quake1 is speed UP (not speed down) which is different from HL.

In CS the default value of cl_movespeedkey CVAR is usually 0.52, but the plain HL is 0.3. For each MOD you can type "cl_movespeedkey" in the console and you'll get the value. Note you can't use CVAR_GET_FLOAT("cl_movespeedkey") in the bot code because this CVAR is client-side.

Pierre-Marie Baty 19-04-2004 12:17

Re: Correct walk speed?
 
aha, so that would mean:
Code:

if (pEdict->v.button & IN_RUN)
move_speed = pEdict->v.maxspeed * CVAR_GET_FLOAT ("cl_movespeedkey");

am I right ?

*edit* I'm dumb as f*ck sometimes, I didn't read Whistler's post until the end. DOH! Okay so that would need a #define for each MOD the bot supports, or perhaps a bot config file setting then. Gwaaah.


All times are GMT +2. The time now is 13:02.

Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.