| Anonymous | Login | Signup for a new account | 2025-11-11 09:27 UTC |
| My View | View Issues | Change Log | Roadmap | Zandronum Issue Support Ranking | Rules | My Account |
| View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||||||
| ID | Project | Category | View Status | Date Submitted | Last Update | ||||||||
| 0002039 | Zandronum | [All Projects] Suggestion | public | 2014-12-29 21:22 | 2015-01-10 17:09 | ||||||||
| Reporter | Monsterovich | ||||||||||||
| Assigned To | |||||||||||||
| Priority | normal | Severity | feature | Reproducibility | sometimes | ||||||||
| Status | new | Resolution | open | ||||||||||
| Platform | OS | OS Version | |||||||||||
| Product Version | |||||||||||||
| Target Version | Fixed in Version | ||||||||||||
| Summary | 0002039: LMS CVar improvements | ||||||||||||
| Description | What my patch does: - Removed lms_allow@WEAPONNAMEFROMDOOM2@ (because it doesn't work with custom weapons and cannot disallow them) - Replaced integer cvar lms_allowedweapons with string that contains names of allowed weapons (default is:"Chainsaw,Fist,Pistol,Shotgun,SuperShotgun,Chaingun,RocketLauncher,PlasmaRifle") if it's empty then all weapons are disallowed - Added new cvar lms_onlyallowedweapons that controls lms_allowedweapons (false - all weapons are allowed, true - only weapons from the list are allowed) Also, I removed other liminations: - Added sv_lmsstarthealth (default is 200) - Added sv_lmsstartinventory (default is: "GreenArmor,PowerStrength" in doom or "SilverArmor" in heretic) | ||||||||||||
| Attached Files | Общие подкаталоги: src_old/asm_ia32 и src/asm_ia32
Общие подкаталоги: src_old/asm_x86_64 и src/asm_x86_64
Общие подкаталоги: src_old/g_doom и src/g_doom
Общие подкаталоги: src_old/g_heretic и src/g_heretic
Общие подкаталоги: src_old/g_hexen и src/g_hexen
Общие подкаталоги: src_old/gl и src/gl
Общие подкаталоги: src_old/g_raven и src/g_raven
Общие подкаталоги: src_old/g_shared и src/g_shared
Общие подкаталоги: src_old/g_strife и src/g_strife
Общие подкаталоги: src_old/huffman и src/huffman
diff -c src_old/lastmanstanding.cpp src/lastmanstanding.cpp
*** src_old/lastmanstanding.cpp 2014-10-05 22:47:04.000000000 +0300
--- src/lastmanstanding.cpp 2014-11-16 22:49:22.100425257 +0200
***************
*** 94,99 ****
--- 94,104 ----
}
//*****************************************************************************
+ // CVARS
+
+ CVAR( Bool, sv_lmsonlyallowedweapons, false, CVAR_ARCHIVE)
+
+ //*****************************************************************************
//
void LASTMANSTANDING_Tick( void )
{
***************
*** 674,735 ****
bool LASTMANSTANDING_IsWeaponDisallowed( const PClass *pType )
{
// [BB] Not in LMS mode, everything is allowed.
! if (( lastmanstanding == false ) && ( teamlms == false ))
return false;
! if ((( lmsallowedweapons & LMS_AWF_CHAINSAW ) == false ) &&
! ( pType == PClass::FindClass( "Chainsaw" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_PISTOL ) == false ) &&
! ( pType == PClass::FindClass( "Pistol" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_SHOTGUN ) == false ) &&
! ( pType == PClass::FindClass( "Shotgun" )))
! {
! return true;
! }
! if (( pType == PClass::FindClass( "SuperShotgun" )) &&
! ((( lmsallowedweapons & LMS_AWF_SSG ) == false ) ||
! (( gameinfo.flags & GI_MAPxx ) == false )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_CHAINGUN ) == false ) &&
! ( pType == PClass::FindClass( "Chaingun" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_MINIGUN ) == false ) &&
! ( pType == PClass::FindClass( "Minigun" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_ROCKETLAUNCHER ) == false ) &&
! ( pType == PClass::FindClass( "RocketLauncher" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_GRENADELAUNCHER ) == false ) &&
! ( pType == PClass::FindClass( "GrenadeLauncher" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_PLASMA ) == false ) &&
! ( pType == PClass::FindClass( "PlasmaRifle" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_RAILGUN ) == false ) &&
! ( pType == PClass::FindClass( "Railgun" )))
{
! return true;
}
! return false;
}
//*****************************************************************************
--- 679,698 ----
bool LASTMANSTANDING_IsWeaponDisallowed( const PClass *pType )
{
// [BB] Not in LMS mode, everything is allowed.
! if (( lastmanstanding == false ) && ( teamlms == false ) && !sv_lmsonlyallowedweapons)
return false;
! char *weapon = strtok((char*)FString(lmsallowedweapons).GetChars(), ",");
!
! while (weapon)
{
! if (pType == PClass::FindClass(weapon))
! return false;
!
! weapon = strtok(NULL, ",");
}
! return true;
}
//*****************************************************************************
***************
*** 830,854 ****
}
}
! CUSTOM_CVAR( Int, lmsallowedweapons, LMS_AWF_ALLALLOWED, CVAR_SERVERINFO )
{
if (( NETWORK_GetState( ) == NETSTATE_SERVER ) && ( gamestate != GS_STARTUP ))
{
- SERVER_Printf( PRINT_HIGH, "%s changed to: %d\n", self.GetName( ), (LONG)self );
if ( lastmanstanding || teamlms )
SERVERCOMMANDS_SetLMSAllowedWeapons( );
}
}
- CVAR( Flag, lms_allowpistol, lmsallowedweapons, LMS_AWF_PISTOL );
- CVAR( Flag, lms_allowshotgun, lmsallowedweapons, LMS_AWF_SHOTGUN );
- CVAR( Flag, lms_allowssg, lmsallowedweapons, LMS_AWF_SSG );
- CVAR( Flag, lms_allowchaingun, lmsallowedweapons, LMS_AWF_CHAINGUN );
- CVAR( Flag, lms_allowminigun, lmsallowedweapons, LMS_AWF_MINIGUN );
- CVAR( Flag, lms_allowrocketlauncher, lmsallowedweapons, LMS_AWF_ROCKETLAUNCHER );
- CVAR( Flag, lms_allowgrenadelauncher, lmsallowedweapons, LMS_AWF_GRENADELAUNCHER );
- CVAR( Flag, lms_allowplasma, lmsallowedweapons, LMS_AWF_PLASMA );
- CVAR( Flag, lms_allowrailgun, lmsallowedweapons, LMS_AWF_RAILGUN );
- CVAR( Flag, lms_allowchainsaw, lmsallowedweapons, LMS_AWF_CHAINSAW );
CUSTOM_CVAR( Int, lmsspectatorsettings, LMS_SPF_VIEW, CVAR_SERVERINFO )
{
--- 793,806 ----
}
}
! CUSTOM_CVAR( String, lmsallowedweapons, LMS_ALLOWED_WEAPONS, CVAR_SERVERINFO )
{
if (( NETWORK_GetState( ) == NETSTATE_SERVER ) && ( gamestate != GS_STARTUP ))
{
if ( lastmanstanding || teamlms )
SERVERCOMMANDS_SetLMSAllowedWeapons( );
}
}
CUSTOM_CVAR( Int, lmsspectatorsettings, LMS_SPF_VIEW, CVAR_SERVERINFO )
{
diff -c src_old/lastmanstanding.h src/lastmanstanding.h
*** src_old/lastmanstanding.h 2014-10-05 22:47:04.000000000 +0300
--- src/lastmanstanding.h 2014-11-16 17:20:15.155587829 +0200
***************
*** 65,88 ****
} LMSSTATE_e;
- #define LMS_AWF_PISTOL 0x00000001
- #define LMS_AWF_SHOTGUN 0x00000002
- #define LMS_AWF_SSG 0x00000004
- #define LMS_AWF_CHAINGUN 0x00000008
- #define LMS_AWF_MINIGUN 0x00000010
- #define LMS_AWF_ROCKETLAUNCHER 0x00000020
- #define LMS_AWF_GRENADELAUNCHER 0x00000040
- #define LMS_AWF_PLASMA 0x00000080
- #define LMS_AWF_RAILGUN 0x00000100
- #define LMS_AWF_CHAINSAW 0x00000200
-
- #define LMS_AWF_ALLALLOWED ( LMS_AWF_PISTOL|LMS_AWF_SHOTGUN|LMS_AWF_SSG|LMS_AWF_CHAINGUN| \
- LMS_AWF_MINIGUN|LMS_AWF_ROCKETLAUNCHER|LMS_AWF_GRENADELAUNCHER|LMS_AWF_PLASMA| \
- LMS_AWF_RAILGUN|LMS_AWF_CHAINSAW )
-
#define LMS_SPF_CHAT 0x00000001
#define LMS_SPF_VIEW 0x00000002
//*****************************************************************************
// PROTOTYPES
--- 65,76 ----
} LMSSTATE_e;
#define LMS_SPF_CHAT 0x00000001
#define LMS_SPF_VIEW 0x00000002
+ #define LMS_ALLOWED_WEAPONS "Chainsaw,Fist,Pistol,Shotgun,SuperShotgun,Chaingun,RocketLauncher,PlasmaRifle"
+ #define LMS_START_INVENTORY (gameinfo.gametype == GAME_Heretic) ? "SilverArmor" : "GreenArmor,PowerStrength"
+
//*****************************************************************************
// PROTOTYPES
***************
*** 117,123 ****
// EXTERNAL CONSOLE VARIABLES
EXTERN_CVAR( Int, sv_lmscountdowntime )
! EXTERN_CVAR( Int, lmsallowedweapons );
EXTERN_CVAR( Int, lmsspectatorsettings );
EXTERN_CVAR( Int, winlimit )
--- 105,111 ----
// EXTERNAL CONSOLE VARIABLES
EXTERN_CVAR( Int, sv_lmscountdowntime )
! EXTERN_CVAR( String, lmsallowedweapons );
EXTERN_CVAR( Int, lmsspectatorsettings );
EXTERN_CVAR( Int, winlimit )
Общие подкаталоги: src_old/Linux и src/Linux
Общие подкаталоги: src_old/network и src/network
Общие подкаталоги: src_old/oplsynth и src/oplsynth
diff -c src_old/p_user.cpp src/p_user.cpp
*** src_old/p_user.cpp 2014-10-05 22:47:04.000000000 +0300
--- src/p_user.cpp 2014-11-16 22:12:08.568330537 +0200
***************
*** 80,85 ****
--- 80,93 ----
// Note: ZDoom's limit is chosen such that the sky is rendered properly.
CVAR (Bool, cl_oldfreelooklimit, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
+ // LMS
+ CUSTOM_CVAR( Int, sv_lmsstarthealth, 200, CVAR_ARCHIVE )
+ {
+ if (self <= 0)
+ self = 100;
+ }
+ CVAR( String, sv_lmsstartinventory, LMS_START_INVENTORY, CVAR_ARCHIVE )
+
static FRandom pr_skullpop ("SkullPop");
***************
*** 1429,1434 ****
--- 1437,1443 ----
}
// Also give the player berserk.
+ /*
player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "Berserk" ) );
pBerserk = static_cast<APowerStrength *>( player->mo->FindInventory( PClass::FindClass( "PowerStrength" )));
if ( pBerserk )
***************
*** 1440,1448 ****
if ( NETWORK_GetState( ) == NETSTATE_SERVER )
SERVERCOMMANDS_GivePowerup( static_cast<ULONG>(player - players), pBerserk );
}
- player->health = deh.MegasphereHealth;
- player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "GreenArmor" ) );
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
--- 1449,1466 ----
if ( NETWORK_GetState( ) == NETSTATE_SERVER )
SERVERCOMMANDS_GivePowerup( static_cast<ULONG>(player - players), pBerserk );
}
+ */
+
+ player->health = sv_lmsstarthealth;
+
+ char *item = strtok((char*)FString(sv_lmsstartinventory).GetChars(), ",");
+
+ while (item)
+ {
+ player->mo->GiveInventoryTypeRespectingReplacements(PClass::FindClass(item));
+ item = strtok(NULL, ",");
+ }
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
***************
*** 1554,1561 ****
}
}
! player->health = deh.MegasphereHealth;
! player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "SilverShield" ) );
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
--- 1572,1587 ----
}
}
! player->health = sv_lmsstarthealth;
!
! char *item = strtok((char*)FString(sv_lmsstartinventory).GetChars(), ",");
!
! while (item)
! {
! player->mo->GiveInventoryTypeRespectingReplacements(PClass::FindClass(item));
! item = strtok(NULL, ",");
! }
!
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
Общие подкаталоги: src_old/sdl и src/sdl
Общие подкаталоги: src_old/sfmt и src/sfmt
Общие подкаталоги: src_old/sound и src/sound
diff -c src_old/sv_commands.cpp src/sv_commands.cpp
*** src_old/sv_commands.cpp 2014-10-05 22:47:04.000000000 +0300
--- src/sv_commands.cpp 2014-11-16 12:52:15.710905932 +0200
***************
*** 3515,3521 ****
SERVER_CheckClientBuffer( ulIdx, 5, true );
NETWORK_WriteHeader( &SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, SVC_SETLMSALLOWEDWEAPONS );
! NETWORK_WriteLong( &SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, lmsallowedweapons );
}
}
--- 3515,3521 ----
SERVER_CheckClientBuffer( ulIdx, 5, true );
NETWORK_WriteHeader( &SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, SVC_SETLMSALLOWEDWEAPONS );
! NETWORK_WriteString(&SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, lmsallowedweapons);
}
}
Только в src/: svnrevision.h
Общие подкаталоги: src_old/textures и src/textures
Общие подкаталоги: src_old/thingdef и src/thingdef
Общие подкаталоги: src_old/timidity и src/timidity
Общие подкаталоги: src_old/win32 и src/win32
Общие подкаталоги: src_old/xlat и src/xlat
Общие подкаталоги: src_old/asm_ia32 и src/asm_ia32
Общие подкаталоги: src_old/asm_x86_64 и src/asm_x86_64
Общие подкаталоги: src_old/g_doom и src/g_doom
Общие подкаталоги: src_old/g_heretic и src/g_heretic
Общие подкаталоги: src_old/g_hexen и src/g_hexen
Общие подкаталоги: src_old/gl и src/gl
Общие подкаталоги: src_old/g_raven и src/g_raven
Общие подкаталоги: src_old/g_shared и src/g_shared
Общие подкаталоги: src_old/g_strife и src/g_strife
Общие подкаталоги: src_old/huffman и src/huffman
diff -c src_old/lastmanstanding.cpp src/lastmanstanding.cpp
*** src_old/lastmanstanding.cpp 2014-10-05 22:47:04.000000000 +0300
--- src/lastmanstanding.cpp 2015-01-10 18:26:13.962794054 +0200
***************
*** 94,99 ****
--- 94,104 ----
}
//*****************************************************************************
+ // CVARS
+
+ CVAR( Bool, sv_lmsonlyallowedweapons, false, CVAR_ARCHIVE)
+
+ //*****************************************************************************
//
void LASTMANSTANDING_Tick( void )
{
***************
*** 674,735 ****
bool LASTMANSTANDING_IsWeaponDisallowed( const PClass *pType )
{
// [BB] Not in LMS mode, everything is allowed.
! if (( lastmanstanding == false ) && ( teamlms == false ))
return false;
! if ((( lmsallowedweapons & LMS_AWF_CHAINSAW ) == false ) &&
! ( pType == PClass::FindClass( "Chainsaw" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_PISTOL ) == false ) &&
! ( pType == PClass::FindClass( "Pistol" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_SHOTGUN ) == false ) &&
! ( pType == PClass::FindClass( "Shotgun" )))
! {
! return true;
! }
! if (( pType == PClass::FindClass( "SuperShotgun" )) &&
! ((( lmsallowedweapons & LMS_AWF_SSG ) == false ) ||
! (( gameinfo.flags & GI_MAPxx ) == false )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_CHAINGUN ) == false ) &&
! ( pType == PClass::FindClass( "Chaingun" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_MINIGUN ) == false ) &&
! ( pType == PClass::FindClass( "Minigun" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_ROCKETLAUNCHER ) == false ) &&
! ( pType == PClass::FindClass( "RocketLauncher" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_GRENADELAUNCHER ) == false ) &&
! ( pType == PClass::FindClass( "GrenadeLauncher" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_PLASMA ) == false ) &&
! ( pType == PClass::FindClass( "PlasmaRifle" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_RAILGUN ) == false ) &&
! ( pType == PClass::FindClass( "Railgun" )))
{
! return true;
}
! return false;
}
//*****************************************************************************
--- 679,699 ----
bool LASTMANSTANDING_IsWeaponDisallowed( const PClass *pType )
{
// [BB] Not in LMS mode, everything is allowed.
! if (( lastmanstanding == false ) && ( teamlms == false ) && !sv_lmsonlyallowedweapons)
return false;
! FString weapons(lmsallowedweapons);
! char *weapon = strtok((char*)weapons.GetChars(), ",");
!
! while (weapon)
{
! if (pType == PClass::FindClass(weapon))
! return false;
!
! weapon = strtok(NULL, ",");
}
! return true;
}
//*****************************************************************************
***************
*** 830,854 ****
}
}
! CUSTOM_CVAR( Int, lmsallowedweapons, LMS_AWF_ALLALLOWED, CVAR_SERVERINFO )
{
if (( NETWORK_GetState( ) == NETSTATE_SERVER ) && ( gamestate != GS_STARTUP ))
{
- SERVER_Printf( PRINT_HIGH, "%s changed to: %d\n", self.GetName( ), (LONG)self );
if ( lastmanstanding || teamlms )
SERVERCOMMANDS_SetLMSAllowedWeapons( );
}
}
- CVAR( Flag, lms_allowpistol, lmsallowedweapons, LMS_AWF_PISTOL );
- CVAR( Flag, lms_allowshotgun, lmsallowedweapons, LMS_AWF_SHOTGUN );
- CVAR( Flag, lms_allowssg, lmsallowedweapons, LMS_AWF_SSG );
- CVAR( Flag, lms_allowchaingun, lmsallowedweapons, LMS_AWF_CHAINGUN );
- CVAR( Flag, lms_allowminigun, lmsallowedweapons, LMS_AWF_MINIGUN );
- CVAR( Flag, lms_allowrocketlauncher, lmsallowedweapons, LMS_AWF_ROCKETLAUNCHER );
- CVAR( Flag, lms_allowgrenadelauncher, lmsallowedweapons, LMS_AWF_GRENADELAUNCHER );
- CVAR( Flag, lms_allowplasma, lmsallowedweapons, LMS_AWF_PLASMA );
- CVAR( Flag, lms_allowrailgun, lmsallowedweapons, LMS_AWF_RAILGUN );
- CVAR( Flag, lms_allowchainsaw, lmsallowedweapons, LMS_AWF_CHAINSAW );
CUSTOM_CVAR( Int, lmsspectatorsettings, LMS_SPF_VIEW, CVAR_SERVERINFO )
{
--- 794,807 ----
}
}
! CUSTOM_CVAR( String, lmsallowedweapons, LMS_ALLOWED_WEAPONS, CVAR_SERVERINFO )
{
if (( NETWORK_GetState( ) == NETSTATE_SERVER ) && ( gamestate != GS_STARTUP ))
{
if ( lastmanstanding || teamlms )
SERVERCOMMANDS_SetLMSAllowedWeapons( );
}
}
CUSTOM_CVAR( Int, lmsspectatorsettings, LMS_SPF_VIEW, CVAR_SERVERINFO )
{
diff -c src_old/lastmanstanding.h src/lastmanstanding.h
*** src_old/lastmanstanding.h 2014-10-05 22:47:04.000000000 +0300
--- src/lastmanstanding.h 2014-11-16 17:20:15.155587829 +0200
***************
*** 65,88 ****
} LMSSTATE_e;
- #define LMS_AWF_PISTOL 0x00000001
- #define LMS_AWF_SHOTGUN 0x00000002
- #define LMS_AWF_SSG 0x00000004
- #define LMS_AWF_CHAINGUN 0x00000008
- #define LMS_AWF_MINIGUN 0x00000010
- #define LMS_AWF_ROCKETLAUNCHER 0x00000020
- #define LMS_AWF_GRENADELAUNCHER 0x00000040
- #define LMS_AWF_PLASMA 0x00000080
- #define LMS_AWF_RAILGUN 0x00000100
- #define LMS_AWF_CHAINSAW 0x00000200
-
- #define LMS_AWF_ALLALLOWED ( LMS_AWF_PISTOL|LMS_AWF_SHOTGUN|LMS_AWF_SSG|LMS_AWF_CHAINGUN| \
- LMS_AWF_MINIGUN|LMS_AWF_ROCKETLAUNCHER|LMS_AWF_GRENADELAUNCHER|LMS_AWF_PLASMA| \
- LMS_AWF_RAILGUN|LMS_AWF_CHAINSAW )
-
#define LMS_SPF_CHAT 0x00000001
#define LMS_SPF_VIEW 0x00000002
//*****************************************************************************
// PROTOTYPES
--- 65,76 ----
} LMSSTATE_e;
#define LMS_SPF_CHAT 0x00000001
#define LMS_SPF_VIEW 0x00000002
+ #define LMS_ALLOWED_WEAPONS "Chainsaw,Fist,Pistol,Shotgun,SuperShotgun,Chaingun,RocketLauncher,PlasmaRifle"
+ #define LMS_START_INVENTORY (gameinfo.gametype == GAME_Heretic) ? "SilverArmor" : "GreenArmor,PowerStrength"
+
//*****************************************************************************
// PROTOTYPES
***************
*** 117,123 ****
// EXTERNAL CONSOLE VARIABLES
EXTERN_CVAR( Int, sv_lmscountdowntime )
! EXTERN_CVAR( Int, lmsallowedweapons );
EXTERN_CVAR( Int, lmsspectatorsettings );
EXTERN_CVAR( Int, winlimit )
--- 105,111 ----
// EXTERNAL CONSOLE VARIABLES
EXTERN_CVAR( Int, sv_lmscountdowntime )
! EXTERN_CVAR( String, lmsallowedweapons );
EXTERN_CVAR( Int, lmsspectatorsettings );
EXTERN_CVAR( Int, winlimit )
Общие подкаталоги: src_old/Linux и src/Linux
Общие подкаталоги: src_old/network и src/network
Общие подкаталоги: src_old/oplsynth и src/oplsynth
diff -c src_old/p_user.cpp src/p_user.cpp
*** src_old/p_user.cpp 2014-10-05 22:47:04.000000000 +0300
--- src/p_user.cpp 2015-01-10 18:31:51.562808371 +0200
***************
*** 80,85 ****
--- 80,93 ----
// Note: ZDoom's limit is chosen such that the sky is rendered properly.
CVAR (Bool, cl_oldfreelooklimit, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
+ // LMS
+ CUSTOM_CVAR( Int, sv_lmsstarthealth, 200, CVAR_ARCHIVE )
+ {
+ if (self <= 0)
+ self = 100;
+ }
+ CVAR( String, sv_lmsstartinventory, LMS_START_INVENTORY, CVAR_ARCHIVE )
+
static FRandom pr_skullpop ("SkullPop");
***************
*** 1428,1448 ****
}
}
! // Also give the player berserk.
! player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "Berserk" ) );
! pBerserk = static_cast<APowerStrength *>( player->mo->FindInventory( PClass::FindClass( "PowerStrength" )));
! if ( pBerserk )
! {
! pBerserk->EffectTics = 768;
! // [BB] This is a workaround to set the EffectTics property of the powerup on the clients.
! // Note: The server already tells the clients that they got PowerStrength, because
! // Berserk uses A_GiveInventory("PowerStrength").
! if ( NETWORK_GetState( ) == NETSTATE_SERVER )
! SERVERCOMMANDS_GivePowerup( static_cast<ULONG>(player - players), pBerserk );
}
- player->health = deh.MegasphereHealth;
- player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "GreenArmor" ) );
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
--- 1436,1452 ----
}
}
! player->health = sv_lmsstarthealth;
!
! FString items(sv_lmsstartinventory);
! char *item = strtok((char*)items.GetChars(), ",");
!
! while (item)
! {
! player->mo->GiveInventoryTypeRespectingReplacements(PClass::FindClass(item));
! item = strtok(NULL, ",");
}
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
***************
*** 1554,1561 ****
}
}
! player->health = deh.MegasphereHealth;
! player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "SilverShield" ) );
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
--- 1558,1574 ----
}
}
! player->health = sv_lmsstarthealth;
!
! FString items(sv_lmsstartinventory);
! char *item = strtok((char*)items.GetChars(), ",");
!
! while (item)
! {
! player->mo->GiveInventoryTypeRespectingReplacements(PClass::FindClass(item));
! item = strtok(NULL, ",");
! }
!
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
Общие подкаталоги: src_old/sdl и src/sdl
Общие подкаталоги: src_old/sfmt и src/sfmt
Общие подкаталоги: src_old/sound и src/sound
diff -c src_old/sv_commands.cpp src/sv_commands.cpp
*** src_old/sv_commands.cpp 2014-10-05 22:47:04.000000000 +0300
--- src/sv_commands.cpp 2014-11-16 12:52:15.710905932 +0200
***************
*** 3515,3521 ****
SERVER_CheckClientBuffer( ulIdx, 5, true );
NETWORK_WriteHeader( &SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, SVC_SETLMSALLOWEDWEAPONS );
! NETWORK_WriteLong( &SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, lmsallowedweapons );
}
}
--- 3515,3521 ----
SERVER_CheckClientBuffer( ulIdx, 5, true );
NETWORK_WriteHeader( &SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, SVC_SETLMSALLOWEDWEAPONS );
! NETWORK_WriteString(&SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, lmsallowedweapons);
}
}
diff -c src_old/sv_main.cpp src/sv_main.cpp
*** src_old/sv_main.cpp 2014-10-05 22:47:04.000000000 +0300
--- src/sv_main.cpp 2014-11-17 16:40:05.801303394 +0200
***************
*** 1911,1916 ****
--- 1911,1917 ----
}
// Make sure the network game version matches.
+ Printf("Netversion: %d\n", lClientNetworkGameVersion);
if ( NETGAMEVERSION != lClientNetworkGameVersion )
{
SERVER_ClientError( lClient, NETWORK_ERRORCODE_WRONGPROTOCOLVERSION );
Только в src/: svnrevision.h
Общие подкаталоги: src_old/textures и src/textures
Общие подкаталоги: src_old/thingdef и src/thingdef
Общие подкаталоги: src_old/timidity и src/timidity
Общие подкаталоги: src_old/win32 и src/win32
Общие подкаталоги: src_old/xlat и src/xlat
Общие подкаталоги: src_old/asm_ia32 и src/asm_ia32
Общие подкаталоги: src_old/asm_x86_64 и src/asm_x86_64
Общие подкаталоги: src_old/g_doom и src/g_doom
Общие подкаталоги: src_old/g_heretic и src/g_heretic
Общие подкаталоги: src_old/g_hexen и src/g_hexen
Общие подкаталоги: src_old/gl и src/gl
Общие подкаталоги: src_old/g_raven и src/g_raven
Общие подкаталоги: src_old/g_shared и src/g_shared
Общие подкаталоги: src_old/g_strife и src/g_strife
Общие подкаталоги: src_old/huffman и src/huffman
diff -c src_old/lastmanstanding.cpp src/lastmanstanding.cpp
*** src_old/lastmanstanding.cpp 2014-10-05 22:47:04.000000000 +0300
--- src/lastmanstanding.cpp 2015-01-10 18:26:13.962794054 +0200
***************
*** 94,99 ****
--- 94,104 ----
}
//*****************************************************************************
+ // CVARS
+
+ CVAR( Bool, sv_lmsonlyallowedweapons, false, CVAR_ARCHIVE)
+
+ //*****************************************************************************
//
void LASTMANSTANDING_Tick( void )
{
***************
*** 674,735 ****
bool LASTMANSTANDING_IsWeaponDisallowed( const PClass *pType )
{
// [BB] Not in LMS mode, everything is allowed.
! if (( lastmanstanding == false ) && ( teamlms == false ))
return false;
! if ((( lmsallowedweapons & LMS_AWF_CHAINSAW ) == false ) &&
! ( pType == PClass::FindClass( "Chainsaw" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_PISTOL ) == false ) &&
! ( pType == PClass::FindClass( "Pistol" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_SHOTGUN ) == false ) &&
! ( pType == PClass::FindClass( "Shotgun" )))
! {
! return true;
! }
! if (( pType == PClass::FindClass( "SuperShotgun" )) &&
! ((( lmsallowedweapons & LMS_AWF_SSG ) == false ) ||
! (( gameinfo.flags & GI_MAPxx ) == false )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_CHAINGUN ) == false ) &&
! ( pType == PClass::FindClass( "Chaingun" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_MINIGUN ) == false ) &&
! ( pType == PClass::FindClass( "Minigun" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_ROCKETLAUNCHER ) == false ) &&
! ( pType == PClass::FindClass( "RocketLauncher" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_GRENADELAUNCHER ) == false ) &&
! ( pType == PClass::FindClass( "GrenadeLauncher" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_PLASMA ) == false ) &&
! ( pType == PClass::FindClass( "PlasmaRifle" )))
! {
! return true;
! }
! if ((( lmsallowedweapons & LMS_AWF_RAILGUN ) == false ) &&
! ( pType == PClass::FindClass( "Railgun" )))
{
! return true;
}
! return false;
}
//*****************************************************************************
--- 679,699 ----
bool LASTMANSTANDING_IsWeaponDisallowed( const PClass *pType )
{
// [BB] Not in LMS mode, everything is allowed.
! if (( lastmanstanding == false ) && ( teamlms == false ) && !sv_lmsonlyallowedweapons)
return false;
! FString weapons(lmsallowedweapons);
! char *weapon = strtok((char*)weapons.GetChars(), ",");
!
! while (weapon)
{
! if (pType == PClass::FindClass(weapon))
! return false;
!
! weapon = strtok(NULL, ",");
}
! return true;
}
//*****************************************************************************
***************
*** 830,854 ****
}
}
! CUSTOM_CVAR( Int, lmsallowedweapons, LMS_AWF_ALLALLOWED, CVAR_SERVERINFO )
{
if (( NETWORK_GetState( ) == NETSTATE_SERVER ) && ( gamestate != GS_STARTUP ))
{
- SERVER_Printf( PRINT_HIGH, "%s changed to: %d\n", self.GetName( ), (LONG)self );
if ( lastmanstanding || teamlms )
SERVERCOMMANDS_SetLMSAllowedWeapons( );
}
}
- CVAR( Flag, lms_allowpistol, lmsallowedweapons, LMS_AWF_PISTOL );
- CVAR( Flag, lms_allowshotgun, lmsallowedweapons, LMS_AWF_SHOTGUN );
- CVAR( Flag, lms_allowssg, lmsallowedweapons, LMS_AWF_SSG );
- CVAR( Flag, lms_allowchaingun, lmsallowedweapons, LMS_AWF_CHAINGUN );
- CVAR( Flag, lms_allowminigun, lmsallowedweapons, LMS_AWF_MINIGUN );
- CVAR( Flag, lms_allowrocketlauncher, lmsallowedweapons, LMS_AWF_ROCKETLAUNCHER );
- CVAR( Flag, lms_allowgrenadelauncher, lmsallowedweapons, LMS_AWF_GRENADELAUNCHER );
- CVAR( Flag, lms_allowplasma, lmsallowedweapons, LMS_AWF_PLASMA );
- CVAR( Flag, lms_allowrailgun, lmsallowedweapons, LMS_AWF_RAILGUN );
- CVAR( Flag, lms_allowchainsaw, lmsallowedweapons, LMS_AWF_CHAINSAW );
CUSTOM_CVAR( Int, lmsspectatorsettings, LMS_SPF_VIEW, CVAR_SERVERINFO )
{
--- 794,807 ----
}
}
! CUSTOM_CVAR( String, lmsallowedweapons, LMS_ALLOWED_WEAPONS, CVAR_SERVERINFO )
{
if (( NETWORK_GetState( ) == NETSTATE_SERVER ) && ( gamestate != GS_STARTUP ))
{
if ( lastmanstanding || teamlms )
SERVERCOMMANDS_SetLMSAllowedWeapons( );
}
}
CUSTOM_CVAR( Int, lmsspectatorsettings, LMS_SPF_VIEW, CVAR_SERVERINFO )
{
diff -c src_old/lastmanstanding.h src/lastmanstanding.h
*** src_old/lastmanstanding.h 2014-10-05 22:47:04.000000000 +0300
--- src/lastmanstanding.h 2014-11-16 17:20:15.155587829 +0200
***************
*** 65,88 ****
} LMSSTATE_e;
- #define LMS_AWF_PISTOL 0x00000001
- #define LMS_AWF_SHOTGUN 0x00000002
- #define LMS_AWF_SSG 0x00000004
- #define LMS_AWF_CHAINGUN 0x00000008
- #define LMS_AWF_MINIGUN 0x00000010
- #define LMS_AWF_ROCKETLAUNCHER 0x00000020
- #define LMS_AWF_GRENADELAUNCHER 0x00000040
- #define LMS_AWF_PLASMA 0x00000080
- #define LMS_AWF_RAILGUN 0x00000100
- #define LMS_AWF_CHAINSAW 0x00000200
-
- #define LMS_AWF_ALLALLOWED ( LMS_AWF_PISTOL|LMS_AWF_SHOTGUN|LMS_AWF_SSG|LMS_AWF_CHAINGUN| \
- LMS_AWF_MINIGUN|LMS_AWF_ROCKETLAUNCHER|LMS_AWF_GRENADELAUNCHER|LMS_AWF_PLASMA| \
- LMS_AWF_RAILGUN|LMS_AWF_CHAINSAW )
-
#define LMS_SPF_CHAT 0x00000001
#define LMS_SPF_VIEW 0x00000002
//*****************************************************************************
// PROTOTYPES
--- 65,76 ----
} LMSSTATE_e;
#define LMS_SPF_CHAT 0x00000001
#define LMS_SPF_VIEW 0x00000002
+ #define LMS_ALLOWED_WEAPONS "Chainsaw,Fist,Pistol,Shotgun,SuperShotgun,Chaingun,RocketLauncher,PlasmaRifle"
+ #define LMS_START_INVENTORY (gameinfo.gametype == GAME_Heretic) ? "SilverArmor" : "GreenArmor,PowerStrength"
+
//*****************************************************************************
// PROTOTYPES
***************
*** 117,123 ****
// EXTERNAL CONSOLE VARIABLES
EXTERN_CVAR( Int, sv_lmscountdowntime )
! EXTERN_CVAR( Int, lmsallowedweapons );
EXTERN_CVAR( Int, lmsspectatorsettings );
EXTERN_CVAR( Int, winlimit )
--- 105,111 ----
// EXTERNAL CONSOLE VARIABLES
EXTERN_CVAR( Int, sv_lmscountdowntime )
! EXTERN_CVAR( String, lmsallowedweapons );
EXTERN_CVAR( Int, lmsspectatorsettings );
EXTERN_CVAR( Int, winlimit )
Общие подкаталоги: src_old/Linux и src/Linux
Общие подкаталоги: src_old/network и src/network
Общие подкаталоги: src_old/oplsynth и src/oplsynth
diff -c src_old/p_user.cpp src/p_user.cpp
*** src_old/p_user.cpp 2014-10-05 22:47:04.000000000 +0300
--- src/p_user.cpp 2015-01-10 18:31:51.562808371 +0200
***************
*** 80,85 ****
--- 80,93 ----
// Note: ZDoom's limit is chosen such that the sky is rendered properly.
CVAR (Bool, cl_oldfreelooklimit, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
+ // LMS
+ CUSTOM_CVAR( Int, sv_lmsstarthealth, 200, CVAR_ARCHIVE )
+ {
+ if (self <= 0)
+ self = 100;
+ }
+ CVAR( String, sv_lmsstartinventory, LMS_START_INVENTORY, CVAR_ARCHIVE )
+
static FRandom pr_skullpop ("SkullPop");
***************
*** 1428,1448 ****
}
}
! // Also give the player berserk.
! player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "Berserk" ) );
! pBerserk = static_cast<APowerStrength *>( player->mo->FindInventory( PClass::FindClass( "PowerStrength" )));
! if ( pBerserk )
! {
! pBerserk->EffectTics = 768;
! // [BB] This is a workaround to set the EffectTics property of the powerup on the clients.
! // Note: The server already tells the clients that they got PowerStrength, because
! // Berserk uses A_GiveInventory("PowerStrength").
! if ( NETWORK_GetState( ) == NETSTATE_SERVER )
! SERVERCOMMANDS_GivePowerup( static_cast<ULONG>(player - players), pBerserk );
}
- player->health = deh.MegasphereHealth;
- player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "GreenArmor" ) );
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
--- 1436,1452 ----
}
}
! player->health = sv_lmsstarthealth;
!
! FString items(sv_lmsstartinventory);
! char *item = strtok((char*)items.GetChars(), ",");
!
! while (item)
! {
! player->mo->GiveInventoryTypeRespectingReplacements(PClass::FindClass(item));
! item = strtok(NULL, ",");
}
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
***************
*** 1554,1561 ****
}
}
! player->health = deh.MegasphereHealth;
! player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "SilverShield" ) );
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
--- 1558,1574 ----
}
}
! player->health = sv_lmsstarthealth;
!
! FString items(sv_lmsstartinventory);
! char *item = strtok((char*)items.GetChars(), ",");
!
! while (item)
! {
! player->mo->GiveInventoryTypeRespectingReplacements(PClass::FindClass(item));
! item = strtok(NULL, ",");
! }
!
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
Общие подкаталоги: src_old/sdl и src/sdl
Общие подкаталоги: src_old/sfmt и src/sfmt
Общие подкаталоги: src_old/sound и src/sound
diff -c src_old/sv_commands.cpp src/sv_commands.cpp
*** src_old/sv_commands.cpp 2014-10-05 22:47:04.000000000 +0300
--- src/sv_commands.cpp 2014-11-16 12:52:15.710905932 +0200
***************
*** 3515,3521 ****
SERVER_CheckClientBuffer( ulIdx, 5, true );
NETWORK_WriteHeader( &SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, SVC_SETLMSALLOWEDWEAPONS );
! NETWORK_WriteLong( &SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, lmsallowedweapons );
}
}
--- 3515,3521 ----
SERVER_CheckClientBuffer( ulIdx, 5, true );
NETWORK_WriteHeader( &SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, SVC_SETLMSALLOWEDWEAPONS );
! NETWORK_WriteString(&SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, lmsallowedweapons);
}
}
Только в src/: svnrevision.h
Общие подкаталоги: src_old/textures и src/textures
Общие подкаталоги: src_old/thingdef и src/thingdef
Общие подкаталоги: src_old/timidity и src/timidity
Общие подкаталоги: src_old/win32 и src/win32
Общие подкаталоги: src_old/xlat и src/xlat
Общие подкаталоги: src_old/asm_ia32 и src/asm_ia32
Общие подкаталоги: src_old/asm_x86_64 и src/asm_x86_64
Общие подкаталоги: src_old/g_doom и src/g_doom
Общие подкаталоги: src_old/g_heretic и src/g_heretic
Общие подкаталоги: src_old/g_hexen и src/g_hexen
Общие подкаталоги: src_old/gl и src/gl
Общие подкаталоги: src_old/g_raven и src/g_raven
Общие подкаталоги: src_old/g_shared и src/g_shared
Общие подкаталоги: src_old/g_strife и src/g_strife
Общие подкаталоги: src_old/huffman и src/huffman
diff -u src_old/lastmanstanding.cpp src/lastmanstanding.cpp
--- src_old/lastmanstanding.cpp 2014-10-05 22:47:04.000000000 +0300
+++ src/lastmanstanding.cpp 2015-01-10 18:26:13.962794054 +0200
@@ -94,6 +94,11 @@
}
//*****************************************************************************
+// CVARS
+
+CVAR( Bool, sv_lmsonlyallowedweapons, false, CVAR_ARCHIVE)
+
+//*****************************************************************************
//
void LASTMANSTANDING_Tick( void )
{
@@ -674,62 +679,21 @@
bool LASTMANSTANDING_IsWeaponDisallowed( const PClass *pType )
{
// [BB] Not in LMS mode, everything is allowed.
- if (( lastmanstanding == false ) && ( teamlms == false ))
+ if (( lastmanstanding == false ) && ( teamlms == false ) && !sv_lmsonlyallowedweapons)
return false;
- if ((( lmsallowedweapons & LMS_AWF_CHAINSAW ) == false ) &&
- ( pType == PClass::FindClass( "Chainsaw" )))
- {
- return true;
- }
- if ((( lmsallowedweapons & LMS_AWF_PISTOL ) == false ) &&
- ( pType == PClass::FindClass( "Pistol" )))
- {
- return true;
- }
- if ((( lmsallowedweapons & LMS_AWF_SHOTGUN ) == false ) &&
- ( pType == PClass::FindClass( "Shotgun" )))
- {
- return true;
- }
- if (( pType == PClass::FindClass( "SuperShotgun" )) &&
- ((( lmsallowedweapons & LMS_AWF_SSG ) == false ) ||
- (( gameinfo.flags & GI_MAPxx ) == false )))
- {
- return true;
- }
- if ((( lmsallowedweapons & LMS_AWF_CHAINGUN ) == false ) &&
- ( pType == PClass::FindClass( "Chaingun" )))
- {
- return true;
- }
- if ((( lmsallowedweapons & LMS_AWF_MINIGUN ) == false ) &&
- ( pType == PClass::FindClass( "Minigun" )))
- {
- return true;
- }
- if ((( lmsallowedweapons & LMS_AWF_ROCKETLAUNCHER ) == false ) &&
- ( pType == PClass::FindClass( "RocketLauncher" )))
- {
- return true;
- }
- if ((( lmsallowedweapons & LMS_AWF_GRENADELAUNCHER ) == false ) &&
- ( pType == PClass::FindClass( "GrenadeLauncher" )))
- {
- return true;
- }
- if ((( lmsallowedweapons & LMS_AWF_PLASMA ) == false ) &&
- ( pType == PClass::FindClass( "PlasmaRifle" )))
- {
- return true;
- }
- if ((( lmsallowedweapons & LMS_AWF_RAILGUN ) == false ) &&
- ( pType == PClass::FindClass( "Railgun" )))
+ FString weapons(lmsallowedweapons);
+ char *weapon = strtok((char*)weapons.GetChars(), ",");
+
+ while (weapon)
{
- return true;
+ if (pType == PClass::FindClass(weapon))
+ return false;
+
+ weapon = strtok(NULL, ",");
}
- return false;
+ return true;
}
//*****************************************************************************
@@ -830,25 +794,14 @@
}
}
-CUSTOM_CVAR( Int, lmsallowedweapons, LMS_AWF_ALLALLOWED, CVAR_SERVERINFO )
+CUSTOM_CVAR( String, lmsallowedweapons, LMS_ALLOWED_WEAPONS, CVAR_SERVERINFO )
{
if (( NETWORK_GetState( ) == NETSTATE_SERVER ) && ( gamestate != GS_STARTUP ))
{
- SERVER_Printf( PRINT_HIGH, "%s changed to: %d\n", self.GetName( ), (LONG)self );
if ( lastmanstanding || teamlms )
SERVERCOMMANDS_SetLMSAllowedWeapons( );
}
}
-CVAR( Flag, lms_allowpistol, lmsallowedweapons, LMS_AWF_PISTOL );
-CVAR( Flag, lms_allowshotgun, lmsallowedweapons, LMS_AWF_SHOTGUN );
-CVAR( Flag, lms_allowssg, lmsallowedweapons, LMS_AWF_SSG );
-CVAR( Flag, lms_allowchaingun, lmsallowedweapons, LMS_AWF_CHAINGUN );
-CVAR( Flag, lms_allowminigun, lmsallowedweapons, LMS_AWF_MINIGUN );
-CVAR( Flag, lms_allowrocketlauncher, lmsallowedweapons, LMS_AWF_ROCKETLAUNCHER );
-CVAR( Flag, lms_allowgrenadelauncher, lmsallowedweapons, LMS_AWF_GRENADELAUNCHER );
-CVAR( Flag, lms_allowplasma, lmsallowedweapons, LMS_AWF_PLASMA );
-CVAR( Flag, lms_allowrailgun, lmsallowedweapons, LMS_AWF_RAILGUN );
-CVAR( Flag, lms_allowchainsaw, lmsallowedweapons, LMS_AWF_CHAINSAW );
CUSTOM_CVAR( Int, lmsspectatorsettings, LMS_SPF_VIEW, CVAR_SERVERINFO )
{
diff -u src_old/lastmanstanding.h src/lastmanstanding.h
--- src_old/lastmanstanding.h 2014-10-05 22:47:04.000000000 +0300
+++ src/lastmanstanding.h 2014-11-16 17:20:15.155587829 +0200
@@ -65,24 +65,12 @@
} LMSSTATE_e;
-#define LMS_AWF_PISTOL 0x00000001
-#define LMS_AWF_SHOTGUN 0x00000002
-#define LMS_AWF_SSG 0x00000004
-#define LMS_AWF_CHAINGUN 0x00000008
-#define LMS_AWF_MINIGUN 0x00000010
-#define LMS_AWF_ROCKETLAUNCHER 0x00000020
-#define LMS_AWF_GRENADELAUNCHER 0x00000040
-#define LMS_AWF_PLASMA 0x00000080
-#define LMS_AWF_RAILGUN 0x00000100
-#define LMS_AWF_CHAINSAW 0x00000200
-
-#define LMS_AWF_ALLALLOWED ( LMS_AWF_PISTOL|LMS_AWF_SHOTGUN|LMS_AWF_SSG|LMS_AWF_CHAINGUN| \
- LMS_AWF_MINIGUN|LMS_AWF_ROCKETLAUNCHER|LMS_AWF_GRENADELAUNCHER|LMS_AWF_PLASMA| \
- LMS_AWF_RAILGUN|LMS_AWF_CHAINSAW )
-
#define LMS_SPF_CHAT 0x00000001
#define LMS_SPF_VIEW 0x00000002
+#define LMS_ALLOWED_WEAPONS "Chainsaw,Fist,Pistol,Shotgun,SuperShotgun,Chaingun,RocketLauncher,PlasmaRifle"
+#define LMS_START_INVENTORY (gameinfo.gametype == GAME_Heretic) ? "SilverArmor" : "GreenArmor,PowerStrength"
+
//*****************************************************************************
// PROTOTYPES
@@ -117,7 +105,7 @@
// EXTERNAL CONSOLE VARIABLES
EXTERN_CVAR( Int, sv_lmscountdowntime )
-EXTERN_CVAR( Int, lmsallowedweapons );
+EXTERN_CVAR( String, lmsallowedweapons );
EXTERN_CVAR( Int, lmsspectatorsettings );
EXTERN_CVAR( Int, winlimit )
Общие подкаталоги: src_old/Linux и src/Linux
Общие подкаталоги: src_old/network и src/network
Общие подкаталоги: src_old/oplsynth и src/oplsynth
diff -u src_old/p_user.cpp src/p_user.cpp
--- src_old/p_user.cpp 2014-10-05 22:47:04.000000000 +0300
+++ src/p_user.cpp 2015-01-10 18:31:51.562808371 +0200
@@ -80,6 +80,14 @@
// Note: ZDoom's limit is chosen such that the sky is rendered properly.
CVAR (Bool, cl_oldfreelooklimit, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
+// LMS
+CUSTOM_CVAR( Int, sv_lmsstarthealth, 200, CVAR_ARCHIVE )
+{
+ if (self <= 0)
+ self = 100;
+}
+CVAR( String, sv_lmsstartinventory, LMS_START_INVENTORY, CVAR_ARCHIVE )
+
static FRandom pr_skullpop ("SkullPop");
@@ -1428,21 +1436,17 @@
}
}
- // Also give the player berserk.
- player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "Berserk" ) );
- pBerserk = static_cast<APowerStrength *>( player->mo->FindInventory( PClass::FindClass( "PowerStrength" )));
- if ( pBerserk )
- {
- pBerserk->EffectTics = 768;
- // [BB] This is a workaround to set the EffectTics property of the powerup on the clients.
- // Note: The server already tells the clients that they got PowerStrength, because
- // Berserk uses A_GiveInventory("PowerStrength").
- if ( NETWORK_GetState( ) == NETSTATE_SERVER )
- SERVERCOMMANDS_GivePowerup( static_cast<ULONG>(player - players), pBerserk );
+ player->health = sv_lmsstarthealth;
+
+ FString items(sv_lmsstartinventory);
+ char *item = strtok((char*)items.GetChars(), ",");
+
+ while (item)
+ {
+ player->mo->GiveInventoryTypeRespectingReplacements(PClass::FindClass(item));
+ item = strtok(NULL, ",");
}
- player->health = deh.MegasphereHealth;
- player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "GreenArmor" ) );
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
@@ -1554,8 +1558,17 @@
}
}
- player->health = deh.MegasphereHealth;
- player->mo->GiveInventoryTypeRespectingReplacements( PClass::FindClass( "SilverShield" ) );
+ player->health = sv_lmsstarthealth;
+
+ FString items(sv_lmsstartinventory);
+ char *item = strtok((char*)items.GetChars(), ",");
+
+ while (item)
+ {
+ player->mo->GiveInventoryTypeRespectingReplacements(PClass::FindClass(item));
+ item = strtok(NULL, ",");
+ }
+
player->health -= player->userinfo.lHandicap;
// Don't allow player to be DOA.
Общие подкаталоги: src_old/sdl и src/sdl
Общие подкаталоги: src_old/sfmt и src/sfmt
Общие подкаталоги: src_old/sound и src/sound
diff -u src_old/sv_commands.cpp src/sv_commands.cpp
--- src_old/sv_commands.cpp 2014-10-05 22:47:04.000000000 +0300
+++ src/sv_commands.cpp 2014-11-16 12:52:15.710905932 +0200
@@ -3515,7 +3515,7 @@
SERVER_CheckClientBuffer( ulIdx, 5, true );
NETWORK_WriteHeader( &SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, SVC_SETLMSALLOWEDWEAPONS );
- NETWORK_WriteLong( &SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, lmsallowedweapons );
+ NETWORK_WriteString(&SERVER_GetClient( ulIdx )->PacketBuffer.ByteStream, lmsallowedweapons);
}
}
Только в src/: svnrevision.h
Общие подкаталоги: src_old/textures и src/textures
Общие подкаталоги: src_old/thingdef и src/thingdef
Общие подкаталоги: src_old/timidity и src/timidity
Общие подкаталоги: src_old/win32 и src/win32
Общие подкаталоги: src_old/xlat и src/xlat
| ||||||||||||
Notes |
|
|
Dusk (developer) 2014-12-29 21:50 edited on: 2014-12-29 21:52 |
I like the premise of the patch for the most part, though..char *weapon = strtok((char*)FString(lmsallowedweapons).GetChars(), ","); First you cast lmsallowedweapons to FString via constructor, then to const char* via GetChars(), then to char* via a C-style const cast?! And then you proceed to pass this to strtok which mutates its value..? Using FString::IndexOf should produce a much cleaner version here. At least you should copy the value of lmsallowedweapons to a temporary buffer to make strtok safer to use. |
|
Edward-san (developer) 2015-01-10 17:01 |
When you're making a new diff, please use unified diff ( '-u' option ). |
|
Monsterovich (reporter) 2015-01-10 17:09 |
Ahh, sorry. Fixed. |
| Only registered users can voice their support. Click here to register, or here to log in. | |
| Supporters: | Monsterovich Klofkac |
| Opponents: | No one explicitly opposes this issue yet. |
Issue History |
|||
| Date Modified | Username | Field | Change |
| 2014-12-29 21:22 | Monsterovich | New Issue | |
| 2014-12-29 21:22 | Monsterovich | File Added: lms.diff | |
| 2014-12-29 21:50 | Dusk | Note Added: 0011135 | |
| 2014-12-29 21:52 | Dusk | Note Edited: 0011135 | View Revisions |
| 2015-01-10 16:39 | Monsterovich | File Added: lms2.diff | |
| 2015-01-10 16:42 | Monsterovich | File Added: lms2fix.diff | |
| 2015-01-10 17:01 | Edward-san | Note Added: 0011358 | |
| 2015-01-10 17:09 | Monsterovich | File Added: lms3.diff | |
| 2015-01-10 17:09 | Monsterovich | Note Added: 0011359 | |
Copyright © 2012-2025, Torr Samaho & Zandronum Team.
Doom and Doom II are the property of id Software.
| Copyright © 2000 - 2025 MantisBT Team |



ZDoom
Doom Wiki
id Software
Doomworld
Odamex
Doomseeker
Internet Doom Explorer
The Sentinel's Playground Servers