Raised This Month: $51 Target: $400
 12% 

Server Crash: Cstrike module


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
dukeswift
New Member
Join Date: Jan 2024
Old 01-06-2024 , 06:51   Server Crash: Cstrike module
Reply With Quote #1

Hello! Long time lurker first time poster...
I've been scouring the search for weeks, and I've found a few close issues, but no solution to this problem on other posts.

Before I get flagged, I've also searched this whole steam/non-steam issue and I still can't find anyone to define what that ACTUALLY means.
I have a steam account, and installed HLDS through my account.

I set up a personal dedicated server on an extra PC I have using HLDS, updating through SteamCMD, and freshly installing AMXMODX and MetaMod.

I'll preface this saying I've had this issue on both the standalone PC, and a game server hosting service.

MetaMod runs perfectly fine with the server.
I enable AMXMODX and the servers crash whenever I join.
I disable cstrike in the modules.ini, then I can join perfectly fine.

Here are my rcon commands, with cstrike module loaded. Nothing shows an error in any log files.

version:
Code:
Protocol version 48

Exe version 1.1.2.7 (cstrike)

Exe build: 11:25:48 Dec 11 2023 (9909)
status:
Code:
hostname:  myhost

version :  48/1.1.2.7 9909 secure  (10)

tcp/ip  :  myip

map     :  de_rats at: 0 x, 0 y, 0 z

players :  0 active (20 max)

 

#      name userid uniqueid frag time ping loss adr

0 users
meta version:
Code:
Metamod v1.20  2013-02-16 (5:13)

by Will Day <[email protected]>

   http://www.metamod.org/

compiled: Feb 16 2013, 17:12:42 +0100 (optimized)
meta list:
Code:
Currently loaded plugins:

      description      stat pend  file              vers      src  load  unlod

 [ 1] AMX Mod X        RUN   -    amxmodx_mm.dll    v1.8.2    ini  Start ANY  

 [ 2] Fun              RUN   -    fun_amxx.dll      v1.8.2    pl1  ANY   ANY  

 [ 3] CStrike          RUN   -    cstrike_amxx.dll  v1.8.2    pl1  ANY   ANY  

 [ 4] CSX              RUN   -    csx_amxx.dll      v1.8.2    pl1  ANY   ANY  

4 plugins, 4 running
amxx modules:
Code:
Currently loaded modules:

      name                    version     author               status     

 [ 1] Fun                     1.8.2       AMX Mod X Dev Team   running    

 [ 2] CStrike                 1.8.2       AMX Mod X Dev Team   running    

 [ 3] CSX                     1.8.2       AMX Mod X Dev Team   running    

3 modules, 3 correct
amxx plugins:
Code:
Currently loaded plugins:

       name                    version     author            file             status   

 [  1] Admin Base              1.8.2       AMXX Dev Team     admin.amxx       running  

 [  2] Admin Commands          1.8.2       AMXX Dev Team     admincmd.amxx    running  

 [  3] Admin Help              1.8.2       AMXX Dev Team     adminhelp.amxx   running  

 [  4] Slots Reservation       1.8.2       AMXX Dev Team     adminslots.amxx  running  

 [  5] Multi-Lingual System    1.8.2       AMXX Dev Team     multilingual.am  running  

 [  6] Menus Front-End         1.8.2       AMXX Dev Team     menufront.amxx   running  

 [  7] Commands Menu           1.8.2       AMXX Dev Team     cmdmenu.amxx     running  

 [  8] Players Menu            1.8.2       AMXX Dev Team     plmenu.amxx      running  

 [  9] Maps Menu               1.8.2       AMXX Dev Team     mapsmenu.amxx    running  

 [ 10] Plugin Menu             1.8.2       AMXX Dev Team     pluginmenu.amxx  running  

 [ 11] Admin Chat              1.8.2       AMXX Dev Team     adminchat.amxx   running  

 [ 12] Anti Flood              1.8.2       AMXX Dev Team     antiflood.amxx   running  

 [ 13] Scrolling Message       1.8.2       AMXX Dev Team     scrollmsg.amxx   running  

 [ 14] Info. Messages          1.8.2       AMXX Dev Team     imessage.amxx    running
Everything seems to run fine, until I join the server, and then it crashes.

Is the latest cstrike_amxx.dll corrupted? From a previous post, it seems 1.76d cstrike_amxx.dll works fine.

Any help is appreciated, and I apologize in advance if I've done something against posting guidelines, I'm a noob here.
dukeswift is offline
CryWolf
Veteran Member
Join Date: Jul 2008
Location: Romania
Old 01-07-2024 , 06:30   Re: Server Crash: Cstrike module
Reply With Quote #2

Try AMX Mod X 1.9.0, im sure 1.8.2 isn't as stable on latest builds from a long time, one of all reason is the hamdata.ini in 1.8.2 is with old offsets.
__________________
I dont walk trough this world with fear in my heart.
www.dark-arena.com L4D, CS1.6, CZ Servers
CryWolf is offline
Send a message via MSN to CryWolf Send a message via Yahoo to CryWolf
claudiuhks
Yam Inside®™℠
Join Date: Jan 2010
Location: Living Randomly
Old 01-08-2024 , 08:50   Re: Server Crash: Cstrike module
Reply With Quote #3

Try downloading the latest https://www.amxmodx.org/amxxdrop/1.10/ AMX Mod X build.
Then update the game data files: https://github.com/alliedmodders/amxmodx/issues/1086

However, the CStrike module will not fully work but it will not crash.
Hamsandwich as well, will not fully work, unless you manually update the Ham data.

PHP Code:
\steamapps\common\Half-Life\cstrike\addons\amxmodx\data\gamedata\modules.games\game.cstrike.txt 
PHP Code:
/**
 * Do not edit this file.  Any changes will be overwritten by the gamedata
 * updater or by upgrading your AMX Mod X install.
 *
 * To override data in this file, create a subdirectory named "custom" and
 * place your own gamedata file(s) inside of it.  Such files will be parsed
 * after AMXX's own.
 *
 * For more information, see http://wiki.alliedmods.net/Gamedata_Updating_(AMX_Mod_X)
 */

"Games"
{
    
"#default"
    
{
        
"Signatures"
        
{
            
"CanPlayerBuy"          /// bool CBasePlayer::CanPlayerBuy(bool display);
            
{
                
"library"           "server"
                
/// "windows"       "\x51\x53\x55\x56\x57\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\xFF" /// HLDS 2020
                
"windows"           "\x55\x8B\x2A\x51\x56\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\xFF\x2A\x2A\x85\x2A\x75\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x56\xE8\x2A\x2A\x2A\x2A\x5E\x8B\x2A\x5D\xC2" /// HLDS 2023
                
"linux"             "@_ZN11CBasePlayer12CanPlayerBuyEb"
                "mac"               "@_ZN11CBasePlayer12CanPlayerBuyEb"
            
}

            
"CanBuyThis"            /// bool CanBuyThis(CBasePlayer *pPlayer, int weaponId);
            
{
                
"library"           "server"
                
/// "windows"       "\x53\x8B\x2A\x2A\x2A\x2A\x2A\x56\x8B\x2A\x2A\x2A\x57\x8B" /// HLDS 2020
                
"windows"           "\x55\x8B\x2A\x53\x8B\x2A\x2A\x2A\x2A\x2A\x56\x8B\x2A\x2A\x8B\x2A\x57\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x84\x2A\x74\x2A\x83\x2A\x2A\x0F\x2A\x2A\x2A\x2A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x84\x2A\x74\x2A\x83\x2A\x2A\x0F" /// HLDS 2023
                
"linux"             "@_Z10CanBuyThisP11CBasePlayeri"
                "mac"               "@_Z10CanBuyThisP11CBasePlayeri"
            
}

            
"AddAccount"            /// void CBasePlayer::AddAccount(int amount, bool bTrackChange);
            
{
                
"library"           "server"
                "windows"           "\x8B\x2A\x2A\x2A\x56\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x03"
                "linux"             "@_ZN11CBasePlayer10AddAccountEib"
                "mac"               "@_ZN11CBasePlayer10AddAccountEib"
            
}

            
"GiveNamedItem"         /// void CBasePlayer::GiveNamedItem(const char *pszName);
            
{
                
"library"           "server"
                
/// "windows"       "\x8B\x2A\x2A\x2A\x56\x57\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x2B" /// HLDS 2020
                
"windows"           "\x55\x8B\x2A\xA1\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x56\x57\x2B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x52\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x83\x2A\x2A\x85\x2A\x74\x2A\x56\xFF\x2A\x2A\x2A\x2A\x2A\x83\x2A\x2A\x85\x2A\x74\x2A\x8B\x2A\x2A\x56\xF3\x2A\x2A\x2A\x2A\x66\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x89" /// HLDS 2023
                
"linux"             "@_ZN11CBasePlayer13GiveNamedItemEPKc"
                "mac"               "@_ZN11CBasePlayer13GiveNamedItemEPKc"
            
}

            
"GiveDefaultItems"      /// void CBasePlayer::GiveDefaultItems(void);
            
{
                
"library"           "server"
                
/// "windows"       "\x56\x57\x6A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\xC6" /// HLDS 2020
                
"windows"           "\x56\x6A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\xC6\x2A\x2A\x2A\x2A\x2A\x2A\x83\x2A\x2A\x75\x2A\x68\x2A\x2A\x2A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x68\x2A\x2A\x2A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x80\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x8B\x2A\x6A\x2A\x68\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x75\x2A\x6A\x2A\xFF\x2A\x53\xC3" /// HLDS 2023
                
"linux"             "@_ZN11CBasePlayer16GiveDefaultItemsEv"
                "mac"               "@_ZN11CBasePlayer16GiveDefaultItemsEv"
            
}

            
"GiveShield"            /// void CBasePlayer::GiveShield(bool bRetire);
            
{
                
"library"           "server"
                "windows"           "\x56\x8B\x2A\x57\x33\x2A\x8B\x2A\x2A\x2A\x2A\x2A\xB0"
                "linux"             "@_ZN11CBasePlayer10GiveShieldEb"
                "mac"               "@_ZN11CBasePlayer10GiveShieldEb"
            
}

            
"CreateNamedEntity"     /// edict_t* CREATE_NAMED_ENTITY(int classname);
            
{
                
"library"           "server"
                "windows"           "\x56\x57\x8B\x2A\x2A\x2A\x57\xFF\x2A\x2A\x2A\x2A\x2A\x8B"
                "linux"             "@_Z19CREATE_NAMED_ENTITYj"
                "mac"               "@_Z19CREATE_NAMED_ENTITYj"
            
}

            
"FindEntityByString"    /// CBaseEntity *UTIL_FindEntityByString(CBaseEntity *pStartEntity, const char *szKeyword, const char *szValue);
            
{
                
"library"           "server"
                "windows"           "\x51\x8B\x2A\x2A\x2A\x53\x55\x56\x85\x2A\x57"
                "linux"             "@_Z23UTIL_FindEntityByStringP11CBaseEntityPKcS2_"
                "mac"               "@_Z23UTIL_FindEntityByStringP11CBaseEntityPKcS2_"
            
}

            
"AddEntityHashValue"    /// void AddEntityHashValue(struct entvars_s *pev, const char *value, hash_types_e fieldType);
            
{
                
"library"           "server"
                "windows"           "\x8B\x2A\x2A\x2A\x83\x2A\x2A\x85\x2A\x53\x55\x56\x57\x0F"
                "linux"             "@_Z18AddEntityHashValueP9entvars_sPKc12hash_types_e"
                "mac"               "@_Z18AddEntityHashValueP9entvars_sPKc12hash_types_e"
            
}

            
"RemoveEntityHashValue" /// void RemoveEntityHashValue(struct entvars_s *pev, const char *value, hash_types_e fieldType);
            
{
                
"library"           "server"
                "windows"           "\x8B\x2A\x2A\x2A\x53\x8B\x2A\x55\x8A\x2A\x33"
                "linux"             "@_Z21RemoveEntityHashValueP9entvars_sPKc12hash_types_e"
                "mac"               "@_Z21RemoveEntityHashValueP9entvars_sPKc12hash_types_e"
            
}

            
"GetWeaponInfo"         /// WeaponInfoStruct *GetWeaponInfo(int id);
            
{
                
"library"           "server"
                "windows"           "\x8B\x2A\x2A\x2A\x2A\x2A\x33\x2A\x85\x2A\x56\x74\x2A\x8B"
                "linux"             "@_Z13GetWeaponInfoi"
                "mac"               "@_Z13GetWeaponInfoi"
            
}

            
"GetAmmoIndex"          /// int CBasePlayer::GetAmmoIndex(const char *psz);
            
{
                
"library"           "server"
                "windows"           "\x56\x57\x8B\x2A\x2A\x2A\x85\x2A\x74\x2A\xBE"
                "linux"             "@_ZN11CBasePlayer12GetAmmoIndexEPKc"
                "mac"               "@_ZN11CBasePlayer12GetAmmoIndexEPKc"
            
}

            
"BuyGunAmmo"            /// bool BuyGunAmmo(CBasePlayer *player, CBasePlayerItem *weapon, bool bBlinkMoney);
            
{
                
"library"           "server"
                
/// "windows"       "\x56\x57\x8B\x2A\x2A\x2A\x6A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x84\x2A\x0F" /// HLDS 2020
                
"windows"           "\x55\x8B\x2A\x56\x57\x8B\x2A\x2A\x8B\x2A\x6A\x2A\xE8\x2A\x2A\x2A\x2A\x84\x2A\x0F\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x8B\x2A\xFF\x2A\x2A\x2A\x2A\x2A\x83\x2A\x2A\x0F\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x2A\x6B\x2A\x2A\x3B\x2A\x2A\x2A\x2A\x2A\x0F\x2A\x2A\x2A\x2A\x2A\x8D\x2A\x2A\x83\x2A\x2A\x0F\x2A\x2A\x2A\x2A\x2A\xFF" /// HLDS 2023
                
"linux"             "@_Z10BuyGunAmmoR11CBasePlayerR15CBasePlayerItemb"
                "mac"               "@_Z10BuyGunAmmoR11CBasePlayerR15CBasePlayerItemb"
            
}
        }
    }

    
"#default"
    
{
        
"Signatures"
        
{
            
"UseBotArgs"    /// bool UseBotArgs
            
{
                
"library"   "server"
                "windows"   "\x8B\x2A\x2A\x2A\x56\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x03"
                "linux"     "@UseBotArgs"
                "mac"       "@UseBotArgs"
            
}

            
"BotArgs"       /// const char *BotArgs[4]
            
{
                
"library"   "server"
                "windows"   "\x8B\x2A\x2A\x2A\x56\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x03"
                "linux"     "@BotArgs"
                "mac"       "@BotArgs"
            
}
        }

        
"Offsets"
        
{
            
"UseBotArgs"    /// bool UseBotArgs
            
{
                
"windows"   "2"
            
}

            
"BotArgs"       /// const char *BotArgs[4]
            
{
                
"windows"   "22"
            
}
        }
    }

    
"#default"
    
{
        
"ItemInfos"
        
{
            
"BuyAliases"
            
{
                
///
                /// Weapon
                ///

                
"p228"
                
{
                    
"itemid"    "1" /// CSW/I_P228
                    
"classid"   "2" /// CS_WEAPONCLASS_PISTOL
                    
"altname"   "228compact"
                
}
                
"scout"
                
{
                    
"itemid"    "3" /// CSW/I_SCOUT
                    
"classid"   "8" /// CS_WEAPONCLASS_SNIPERRIFLE
                
}
                
"xm1014"
                
{
                    
"itemid"    "5" /// CSW/I_XM1014
                    
"classid"   "5" /// CS_WEAPONCLASS_SHOTGUN
                    
"altname"   "autoshotgun"
                
}
                
"mac10"
                
{
                    
"itemid"    "7" /// CSW/I_MAC10
                    
"classid"   "4" /// CS_WEAPONCLASS_SUBMACHINEGUN
                
}
                
"aug"
                
{
                    
"itemid"    "8" /// CSW/I_AUG
                    
"classid"   "7" /// CS_WEAPONCLASS_RIFLE
                    
"altname"   "bullpup"
                
}
                
"elites"
                
{
                    
"itemid"    "10" /// CSW/I_ELITE
                    
"classid"   "2" /// CS_WEAPONCLASS_PISTOL
                
}
                
"fn57"
                
{
                    
"itemid"    "11" /// CSW/I_FIVESEVEN
                    
"classid"   "2" /// CS_WEAPONCLASS_PISTOL
                    
"altname"   "fiveseven"
                
}
                
"ump45"
                
{
                    
"itemid"    "12" /// CSW/I_UMP45
                    
"classid"   "4" /// CS_WEAPONCLASS_SUBMACHINEGUN
                
}
                
"sg550"
                
{
                    
"itemid"    "13" /// CSW/I_SG550
                    
"classid"   "8" /// CS_WEAPONCLASS_SNIPERRIFLE
                    
"altname"   "krieg550"
                
}
                
"galil"
                
{
                    
"itemid"    "14" /// CSW/I_GALIL
                    
"classid"   "7" /// CS_WEAPONCLASS_RIFLE
                    
"altname"   "defender"
                
}
                
"famas"
                
{
                    
"itemid"    "15" /// CSW/I_FAMAS
                    
"classid"   "7" /// CS_WEAPONCLASS_RIFLE
                    
"altname"   "clarion"
                
}
                
"usp"
                
{
                    
"itemid"    "16" /// CSW/I_USP
                    
"classid"   "2" /// CS_WEAPONCLASS_PISTOL
                    
"altname"   "km45"
                
}
                
"glock"
                
{
                    
"itemid"    "17" /// CSW/I_GLOCK18
                    
"classid"   "2" /// CS_WEAPONCLASS_PISTOL
                    
"altname"   "9x19mm"
                
}
                
"awp"
                
{
                    
"itemid"    "18" /// CSW/I_AWP
                    
"classid"   "8" /// CS_WEAPONCLASS_SNIPERRIFLE
                    
"altname"   "magnum"
                
}
                
"mp5"
                
{
                    
"itemid"    "19" /// CSW/I_MP5NAVY
                    
"classid"   "4" /// CS_WEAPONCLASS_SUBMACHINEGUN
                    
"altname"   "smg"
                
}
                
"m249"
                
{
                    
"itemid"    "20" /// CSW/I_M249
                    
"classid"   "6" /// CS_WEAPONCLASS_MACHINEGUN
                
}
                
"m3"
                
{
                    
"itemid"    "21" /// CSW/I_M3
                    
"classid"   "5" /// CS_WEAPONCLASS_SHOTGUN
                    
"altname"   "12gauge"
                
}
                
"m4a1"
                
{
                    
"itemid"    "22" /// CSW/I_M4A1
                    
"classid"   "7" /// CS_WEAPONCLASS_RIFLE
                
}
                
"tmp"
                
{
                    
"itemid"    "23" /// CSW/I_TMP
                    
"classid"   "4" /// CS_WEAPONCLASS_SUBMACHINEGUN
                    
"altname"   "mp"
                
}
                
"g3sg1"
                
{
                    
"itemid"    "24" /// CSW/I_G3SG1
                    
"classid"   "8" /// CS_WEAPONCLASS_SNIPERRIFLE
                    
"altname"   "d3au1"
                
}
                
"deagle"
                
{
                    
"itemid"    "26" /// CSW/I_DEAGLE
                    
"classid"   "2" /// CS_WEAPONCLASS_PISTOL
                    
"altname"   "nighthawk"
                
}
                
"sg552"
                
{
                    
"itemid"    "27" /// CSW/I_SG552
                    
"classid"   "7" /// CS_WEAPONCLASS_RIFLE
                    
"altname"   "krieg552"
                
}
                
"ak47"
                
{
                    
"itemid"    "28" /// CSW/I_AK47
                    
"classid"   "7" /// CS_WEAPONCLASS_RIFLE
                    
"altname"   "cv47"
                
}
                
"p90"
                
{
                    
"itemid"    "30" /// CSW/I_P90
                    
"classid"   "4" /// CS_WEAPONCLASS_SUBMACHINEGUN
                    
"altname"   "c90"
                
}

                
///
                /// Equipment
                ///

                
"hegren"
                
{
                    
"itemid"    "4" /// CSW/I_HEGRENADE
                    
"classid"   "3" /// CS_WEAPONCLASS_GRENADE
                    
"price"     "300"
                
}
                
"sgren"
                
{
                    
"itemid"    "9" /// CSW/I_SMOKEGRENADE
                    
"classid"   "3" /// CS_WEAPONCLASS_GRENADE
                    
"price"     "300"
                
}
                
"flash"
                
{
                    
"itemid"    "25" /// CSW/I_FLASHBANG
                    
"classid"   "3" /// CS_WEAPONCLASS_GRENADE
                    
"price"     "200"
                
}
                
"vest"
                
{
                    
"itemid"    "31" /// CSW/I_VEST
                    
"classname" "item_kevlar"
                    "price"     "650"
                
}
                
"vesthelm"
                
{
                    
"itemid"    "32" /// CSW/I_VESTHELM
                    
"classname" "item_assaultsuit"
                    "price"     "1000"
                
}
                
"defuser"
                
{
                    
"itemid"    "33" /// CSI_DEFUSER
                    
"classname" "item_thighpack"
                    "price"     "200"
                
}
                
"nvgs"
                
{
                    
"itemid"    "34" /// CSI_NVGS
                    
"price"     "1250"
                
}
                
"shield"
                
{
                    
"itemid"    "35" /// CSI_SHIELD
                    
"classid"   "2" /// CS_WEAPONCLASS_PISTOL
                    
"classname" "weapon_shield"
                
}

                
///
                /// Ammunition
                ///

                
"primammo"
                
{
                    
"itemid"    "36" /// CSI_PRIAMMO
                    
"altname"   "buyammo1"
                
}
                
"secammo"
                
{
                    
"itemid"    "37" /// CSI_SECAMMO
                    
"altname"   "buyammo2"
                
}
            }
        }
    }

I was able to extract a few new signatures/ offsets, but not all of them. Perhaps in the future everything will get fixed.
Also, you can use ReHLDS+ReAPI+ReGameDLL. If you really want the entire CStrike module to properly work.
By doing so, you will use public swds.dll and mp.dll modules which are not released by Steam/ VALVe.

Should also work with AMXX 1.8.2 and without the "Re" stuff but you will need to use the 2020 version of HLDS, by using

PHP Code:
app_update 90 -beta steam_legacy 
By using the steam_legacy 2020 thing, you won't need to manually update anything.
__________________

Last edited by claudiuhks; 01-08-2024 at 09:04.
claudiuhks is offline
Send a message via MSN to claudiuhks Send a message via Yahoo to claudiuhks Send a message via Skype™ to claudiuhks
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 07:05.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode