static cvar_t sv_cullentities_stats = {0, "sv_cullentities_stats", "0"};
static cvar_t sv_entpatch = {0, "sv_entpatch", "1"};
-extern cvar_t sys_ticrate;
-
cvar_t sv_gameplayfix_grenadebouncedownslopes = {0, "sv_gameplayfix_grenadebouncedownslopes", "1"};
cvar_t sv_gameplayfix_noairborncorpse = {0, "sv_gameplayfix_noairborncorpse", "1"};
cvar_t sv_gameplayfix_stepdown = {0, "sv_gameplayfix_stepdown", "1"};
if (volume < 0 || volume > 255)
{
- Con_Printf ("SV_StartSound: volume = %i", volume);
+ Con_Printf ("SV_StartSound: volume = %i\n", volume);
return;
}
if (attenuation < 0 || attenuation > 4)
{
- Con_Printf ("SV_StartSound: attenuation = %f", attenuation);
+ Con_Printf ("SV_StartSound: attenuation = %f\n", attenuation);
return;
}
if (channel < 0 || channel > 7)
{
- Con_Printf ("SV_StartSound: channel = %i", channel);
+ Con_Printf ("SV_StartSound: channel = %i\n", channel);
return;
}
*/
int sv_writeentitiestoclient_pvsbytes;
-qbyte sv_writeentitiestoclient_pvs[MAX_MAP_LEAFS/8];
+unsigned char sv_writeentitiestoclient_pvs[MAX_MAP_LEAFS/8];
static int numsendentities;
static entity_state_t sendentities[MAX_EDICTS];
flags = 0;
i = (int)(PRVM_GETEDICTFIELDVALUE(ent, eval_glow_size)->_float * 0.25f);
- glowsize = (qbyte)bound(0, i, 255);
+ glowsize = (unsigned char)bound(0, i, 255);
if (PRVM_GETEDICTFIELDVALUE(ent, eval_glow_trail)->_float)
flags |= RENDER_GLOWTRAIL;
light[2] = (unsigned short)bound(0, f, 65535);
f = PRVM_GETEDICTFIELDVALUE(ent, eval_light_lev)->_float;
light[3] = (unsigned short)bound(0, f, 65535);
- lightstyle = (qbyte)PRVM_GETEDICTFIELDVALUE(ent, eval_style)->_float;
- lightpflags = (qbyte)PRVM_GETEDICTFIELDVALUE(ent, eval_pflags)->_float;
+ lightstyle = (unsigned char)PRVM_GETEDICTFIELDVALUE(ent, eval_style)->_float;
+ lightpflags = (unsigned char)PRVM_GETEDICTFIELDVALUE(ent, eval_pflags)->_float;
if (gamemode == GAME_TENEBRAE)
{
cs.nodrawtoclient = PRVM_GETEDICTFIELDVALUE(ent, eval_nodrawtoclient)->edict;
cs.drawonlytoclient = PRVM_GETEDICTFIELDVALUE(ent, eval_drawonlytoclient)->edict;
cs.tagentity = PRVM_GETEDICTFIELDVALUE(ent, eval_tag_entity)->edict;
- cs.tagindex = (qbyte)PRVM_GETEDICTFIELDVALUE(ent, eval_tag_index)->_float;
+ cs.tagindex = (unsigned char)PRVM_GETEDICTFIELDVALUE(ent, eval_tag_index)->_float;
cs.glowsize = glowsize;
// don't need to init cs.colormod because the defaultstate did that for us
if (f)
{
i = (int)f;
- cs.alpha = (qbyte)bound(0, i, 255);
+ cs.alpha = (unsigned char)bound(0, i, 255);
}
// halflife
f = (PRVM_GETEDICTFIELDVALUE(ent, eval_renderamt)->_float);
if (f)
{
i = (int)f;
- cs.alpha = (qbyte)bound(0, i, 255);
+ cs.alpha = (unsigned char)bound(0, i, 255);
}
cs.scale = 16;
if (f)
{
i = (int)f;
- cs.scale = (qbyte)bound(0, i, 255);
+ cs.scale = (unsigned char)bound(0, i, 255);
}
cs.glowcolor = 254;
int items;
prvm_eval_t *val;
vec3_t punchvector;
- qbyte viewzoom;
- int weaponmodelindex;
+ unsigned char viewzoom;
+ const char *s;
//
// send a damage message
if ((val = PRVM_GETEDICTFIELDVALUE(ent, eval_punchvector)))
VectorCopy(val->vector, punchvector);
- weaponmodelindex = SV_ModelIndex(PRVM_GetString(ent->fields.server->weaponmodel), 1);
+ // FIXME: cache weapon model name and index in client struct to save time
+ // (this search can be almost 1% of cpu time!)
+ s = PRVM_GetString(ent->fields.server->weaponmodel);
+ if (strcmp(s, client->weaponmodel))
+ {
+ strlcpy(client->weaponmodel, s, sizeof(client->weaponmodel));
+ client->weaponmodelindex = SV_ModelIndex(s, 1);
+ }
viewzoom = 255;
if ((val = PRVM_GETEDICTFIELDVALUE(ent, eval_viewzoom)))
stats[STAT_ITEMS] = items;
stats[STAT_WEAPONFRAME] = ent->fields.server->weaponframe;
stats[STAT_ARMOR] = ent->fields.server->armorvalue;
- stats[STAT_WEAPON] = weaponmodelindex;
+ stats[STAT_WEAPON] = client->weaponmodelindex;
stats[STAT_HEALTH] = ent->fields.server->health;
stats[STAT_AMMO] = ent->fields.server->currentammo;
stats[STAT_SHELLS] = ent->fields.server->ammo_shells;
SV_SendClientDatagram
=======================
*/
-static qbyte sv_sendclientdatagram_buf[NET_MAXMESSAGE]; // FIXME?
+static unsigned char sv_sendclientdatagram_buf[NET_MAXMESSAGE]; // FIXME?
qboolean SV_SendClientDatagram (client_t *client)
{
int rate, maxrate, maxsize, maxsize2;
void SV_SendNop (client_t *client)
{
sizebuf_t msg;
- qbyte buf[4];
+ unsigned char buf[4];
msg.data = buf;
msg.maxsize = sizeof(buf);
*/
void SV_SendReconnect (void)
{
- qbyte data[128];
+#if 1
+ MSG_WriteByte(&sv.reliable_datagram, svc_stufftext);
+ MSG_WriteString(&sv.reliable_datagram, "reconnect\n");
+#else
+ unsigned char data[128];
sizebuf_t msg;
msg.data = data;
if (cls.state != ca_dedicated)
Cmd_ExecuteString ("reconnect\n", src_command);
+#endif
}
for (i = 0, ent = prog->edicts;i < prog->max_edicts;i++, ent++)
{
- ent->priv.vp = (qbyte*) prog->edictprivate + i * prog->edictprivate_size;
- ent->fields.server = (void *)((qbyte *)prog->edictsfields + i * prog->edict_size);
+ ent->priv.vp = (unsigned char*) prog->edictprivate + i * prog->edictprivate_size;
+ ent->fields.server = (void *)((unsigned char *)prog->edictsfields + i * prog->edict_size);
// link every entity except world
if (!ent->priv.server->free)
SV_LinkEdict(ent, false);
}
else
{
- // make sure cvars have been checked before opening the ports
- NetConn_ServerFrame();
+ // open server port
NetConn_OpenServerPorts(true);
}
/*for (i = 0;i < prog->max_edicts;i++)
{
ent = prog->edicts + i;
- ent->priv.vp = (qbyte*) prog->edictprivate + i * prog->edictprivate_size;
- ent->fields.server = (void *)((qbyte *)prog->edictsfields + i * prog->edict_size);
+ ent->priv.vp = (unsigned char*) prog->edictprivate + i * prog->edictprivate_size;
+ ent->fields.server = (void *)((unsigned char *)prog->edictsfields + i * prog->edict_size);
}*/
// fix up client->edict pointers for returning clients right away...
// load replacement entity file if found
entities = NULL;
if (sv_entpatch.integer)
- entities = (char *)FS_LoadFile(va("maps/%s.ent", sv.name), tempmempool, true);
+ entities = (char *)FS_LoadFile(va("maps/%s.ent", sv.name), tempmempool, true, NULL);
if (entities)
{
Con_Printf("Loaded maps/%s.ent\n", sv.name);