more multiplayer fixes

git-svn-id: https://svn.eduke32.com/eduke32@1673 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2010-07-22 20:29:09 +00:00
parent 1102b74a35
commit 8a3dd08b14
9 changed files with 587 additions and 541 deletions

View file

@ -7673,7 +7673,7 @@ ACTOR_STATIC void G_MoveEffectors(void) //STATNUM 3
mylight.horiz = SH; mylight.horiz = SH;
mylight.minshade = sprite[i].xoffset; mylight.minshade = sprite[i].xoffset;
mylight.maxshade = sprite[i].yoffset; mylight.maxshade = sprite[i].yoffset;
mylight.tilenum = sprite[i].owner; mylight.tilenum = actor[i].picnum;
if (CS & 2) if (CS & 2)
{ {

View file

@ -492,7 +492,7 @@ extern char tempbuf[2048], packbuf[PACKBUF_SIZE], menutextbuf[128];
extern int32_t g_spriteGravity; extern int32_t g_spriteGravity;
extern int32_t g_impactDamage,g_actorRespawnTime,g_itemRespawnTime; extern int32_t g_impactDamage,g_actorRespawnTime,g_itemRespawnTime;
extern int32_t g_startArmorAmount; extern int32_t g_startArmorAmount, g_maxPlayerHealth;
#define MOVFIFOSIZ 256 #define MOVFIFOSIZ 256
@ -1088,6 +1088,7 @@ enum DukePacket_t
PACKET_VERSION, PACKET_VERSION,
PACKET_AUTH, PACKET_AUTH,
PACKET_PLAYER_READY, PACKET_PLAYER_READY,
PACKET_MAP_STREAM,
// any packet with an ID higher than PACKET_BROADCAST is rebroadcast by server // any packet with an ID higher than PACKET_BROADCAST is rebroadcast by server
// so hacked clients can't create fake server packets and get the server to // so hacked clients can't create fake server packets and get the server to

File diff suppressed because it is too large Load diff

View file

@ -500,6 +500,8 @@ const char *keyw[] =
"qstrncat", // 348 "qstrncat", // 348
"ifactorsound", // 349 "ifactorsound", // 349
"stopactorsound", // 350 "stopactorsound", // 350
"ifclient", // 351
"ifserver", // 352
"<null>" "<null>"
}; };
@ -4906,6 +4908,8 @@ repeatcase:
return 0; return 0;
} }
case CON_IFCLIENT:
case CON_IFSERVER:
case CON_IFONWATER: case CON_IFONWATER:
case CON_IFINWATER: case CON_IFINWATER:
case CON_IFACTORNOTSTAYPUT: case CON_IFACTORNOTSTAYPUT:
@ -5768,7 +5772,7 @@ repeatcase:
j = 0; j = 0;
ud.const_visibility = params[j++]; ud.const_visibility = params[j++];
g_impactDamage = params[j++]; g_impactDamage = params[j++];
g_player[0].ps->max_player_health = g_player[0].ps->max_shield_amount = params[j++]; g_maxPlayerHealth = g_player[0].ps->max_player_health = g_player[0].ps->max_shield_amount = params[j++];
g_startArmorAmount = params[j++]; g_startArmorAmount = params[j++];
g_actorRespawnTime = params[j++]; g_actorRespawnTime = params[j++];
g_itemRespawnTime = params[j++]; g_itemRespawnTime = params[j++];

View file

@ -911,6 +911,8 @@ enum ScriptKeywords_t
CON_QSTRNCAT, // 348 CON_QSTRNCAT, // 348
CON_IFACTORSOUND, // 349 CON_IFACTORSOUND, // 349
CON_STOPACTORSOUND, // 350 CON_STOPACTORSOUND, // 350
CON_IFCLIENT, // 351
CON_IFSERVER, // 352
CON_END CON_END
}; };
#endif #endif

View file

@ -617,43 +617,35 @@ GAMEEXEC_STATIC void VM_Move(void)
} }
{ {
vec3_t tmpvect; vec3_t tmpvect = { (daxvel*(sintable[(angdif+512)&2047]))>>14,
(daxvel*(sintable[angdif&2047]))>>14, vm.g_sp->zvel };
tmpvect.x = (daxvel*(sintable[(angdif+512)&2047]))>>14;
tmpvect.y = (daxvel*(sintable[angdif&2047]))>>14;
tmpvect.z = vm.g_sp->zvel;
actor[vm.g_i].movflag = A_MoveSprite(vm.g_i,&tmpvect,CLIPMASK0); actor[vm.g_i].movflag = A_MoveSprite(vm.g_i,&tmpvect,CLIPMASK0);
} }
} }
if (a) if (!a) return;
{
if (sector[vm.g_sp->sectnum].ceilingstat&1) if (sector[vm.g_sp->sectnum].ceilingstat&1)
vm.g_sp->shade += (sector[vm.g_sp->sectnum].ceilingshade-vm.g_sp->shade)>>1; vm.g_sp->shade += (sector[vm.g_sp->sectnum].ceilingshade-vm.g_sp->shade)>>1;
else vm.g_sp->shade += (sector[vm.g_sp->sectnum].floorshade-vm.g_sp->shade)>>1; else vm.g_sp->shade += (sector[vm.g_sp->sectnum].floorshade-vm.g_sp->shade)>>1;
// wtf?
/*
if (sector[vm.g_sp->sectnum].floorpicnum == MIRROR) if (sector[vm.g_sp->sectnum].floorpicnum == MIRROR)
deletesprite(vm.g_i); deletesprite(vm.g_i);
} */
} }
GAMEEXEC_STATIC GAMEEXEC_INLINE void __fastcall VM_DoConditional(register int32_t condition) GAMEEXEC_STATIC GAMEEXEC_INLINE void __fastcall VM_DoConditional(register int32_t condition)
{ {
if (condition) if (condition || ((insptr = (intptr_t *)*(insptr+1)) && (((*insptr)&0xFFF) == CON_ELSE)))
{ {
// skip 'else' pointer.. and... // skip 'else' pointer.. and...
insptr += 2; insptr += 2;
VM_Execute(1); VM_Execute(1);
return; return;
} }
insptr = (intptr_t *) *(insptr+1);
if (((*insptr)&0xFFF) == CON_ELSE)
{
// else...
// skip 'else' and...
insptr += 2;
VM_Execute(1);
}
} }
GAMEEXEC_STATIC int32_t VM_Execute(int32_t once) GAMEEXEC_STATIC int32_t VM_Execute(int32_t once)
@ -3055,7 +3047,15 @@ nullquote:
continue; continue;
case CON_IFMULTIPLAYER: case CON_IFMULTIPLAYER:
VM_DoConditional((g_netServer || ud.multimode > 1)); VM_DoConditional((g_netServer || g_netClient || ud.multimode > 1));
continue;
case CON_IFCLIENT:
VM_DoConditional(g_netClient != NULL);
continue;
case CON_IFSERVER:
VM_DoConditional(g_netServer != NULL);
continue; continue;
case CON_OPERATE: case CON_OPERATE:

View file

@ -142,7 +142,7 @@ int16_t BlimpSpawnSprites[15] =
FREEZEAMMO__STATIC FREEZEAMMO__STATIC
}; };
int32_t g_impactDamage; int32_t g_impactDamage, g_maxPlayerHealth;
int32_t g_scriptDebug; int32_t g_scriptDebug;
//GLOBAL.C - replace the end "my's" with this //GLOBAL.C - replace the end "my's" with this

View file

@ -380,7 +380,7 @@ void MV_ServiceVoc(void)
//Commented out so that the buffer is always cleared. //Commented out so that the buffer is always cleared.
//This is so the guys at Echo Speech can mix into the //This is so the guys at Echo Speech can mix into the
//buffer even when no sounds are playing. //buffer even when no sounds are playing.
//if ( !MV_BufferEmpty[ MV_MixPage ] ) if (!MV_BufferEmpty[MV_MixPage])
{ {
ClearBuffer_DW(MV_MixBuffer[ MV_MixPage ], MV_Silence, MV_BufferSize >> 2); ClearBuffer_DW(MV_MixBuffer[ MV_MixPage ], MV_Silence, MV_BufferSize >> 2);
MV_BufferEmpty[ MV_MixPage ] = TRUE; MV_BufferEmpty[ MV_MixPage ] = TRUE;

View file

@ -1915,7 +1915,7 @@ int32_t G_EnterLevel(int32_t g)
S_PlayMusic(&MapInfo[(uint8_t)g_musicIndex].musicfn[0],g_musicIndex); S_PlayMusic(&MapInfo[(uint8_t)g_musicIndex].musicfn[0],g_musicIndex);
} }
if ((g&MODE_GAME) || (g&MODE_EOL)) if (g & (MODE_GAME|MODE_EOL))
{ {
TRAVERSE_CONNECT(i) TRAVERSE_CONNECT(i)
g_player[i].ps->gm = MODE_GAME; g_player[i].ps->gm = MODE_GAME;
@ -1930,10 +1930,8 @@ int32_t G_EnterLevel(int32_t g)
if ((ud.recstat == 1) && (g&MODE_RESTART) != MODE_RESTART) if ((ud.recstat == 1) && (g&MODE_RESTART) != MODE_RESTART)
G_OpenDemoWrite(); G_OpenDemoWrite();
if (VOLUMEONE) if (VOLUMEONE && ud.level_number == 0 && ud.recstat != 2)
{ P_DoQuote(40,g_player[myconnectindex].ps);
if (ud.level_number == 0 && ud.recstat != 2) P_DoQuote(40,g_player[myconnectindex].ps);
}
TRAVERSE_CONNECT(i) TRAVERSE_CONNECT(i)
switch (DynamicTileMap[sector[sprite[g_player[i].ps->i].sectnum].floorpicnum]) switch (DynamicTileMap[sector[sprite[g_player[i].ps->i].sectnum].floorpicnum])