diff --git a/src/GameQ/Protocols/Barotrauma.php b/src/GameQ/Protocols/Barotrauma.php new file mode 100644 index 00000000..643428a2 --- /dev/null +++ b/src/GameQ/Protocols/Barotrauma.php @@ -0,0 +1,49 @@ +. + */ + +namespace GameQ\Protocols; + +/** + * Barotrauma Protocol Class + * + * @package GameQ\Protocols + * @author Jesse Lukas + */ +class Barotrauma extends Source +{ + /** + * String name of this protocol class + * + * @type string + */ + protected $name = 'barotrauma'; + + /** + * Longer string name of this protocol class + * + * @type string + */ + protected $name_long = "Barotrauma"; + + /** + * query_port = client_port + 1 + * + * @type int + */ + protected $port_diff = 1; +} diff --git a/src/GameQ/Protocols/Blackmesa.php b/src/GameQ/Protocols/Blackmesa.php new file mode 100644 index 00000000..efaafdfb --- /dev/null +++ b/src/GameQ/Protocols/Blackmesa.php @@ -0,0 +1,42 @@ +. + */ + +namespace GameQ\Protocols; + +/** + * Blackmesa Protocol Class + * + * @package GameQ\Protocols + * @author Jesse Lukas + */ +class Blackmesa extends Source +{ + /** + * String name of this protocol class + * + * @type string + */ + protected $name = 'blackmesa'; + + /** + * Longer string name of this protocol class + * + * @type string + */ + protected $name_long = "Black Mesa"; +} diff --git a/src/GameQ/Protocols/Citadel.php b/src/GameQ/Protocols/Citadel.php new file mode 100644 index 00000000..3d1074b1 --- /dev/null +++ b/src/GameQ/Protocols/Citadel.php @@ -0,0 +1,42 @@ +. + */ + +namespace GameQ\Protocols; + +/** + * Citadel Protocol Class + * + * @package GameQ\Protocols + * @author Jesse Lukas + */ +class Citadel extends Source +{ + /** + * String name of this protocol class + * + * @type string + */ + protected $name = 'citadel'; + + /** + * Longer string name of this protocol class + * + * @type string + */ + protected $name_long = "Citadel"; +} diff --git a/src/GameQ/Protocols/Fof.php b/src/GameQ/Protocols/Fof.php new file mode 100644 index 00000000..a35c4c0a --- /dev/null +++ b/src/GameQ/Protocols/Fof.php @@ -0,0 +1,43 @@ +. + */ + +namespace GameQ\Protocols; + +/** + * Class Fistful of Frags + * + * @package GameQ\Protocols + * @author Austin Bischoff + * @author Jesse Lukas +*/ +class Fof extends Source +{ + /** + * String name of this protocol class + * + * @type string + */ + protected $name = 'fof'; + + /** + * Longer string name of this protocol class + * + * @type string + */ + protected $name_long = "Fistful of Frags"; +} diff --git a/src/GameQ/Protocols/Hl1.php b/src/GameQ/Protocols/Hl1.php new file mode 100644 index 00000000..e17667b6 --- /dev/null +++ b/src/GameQ/Protocols/Hl1.php @@ -0,0 +1,43 @@ +. + */ + +namespace GameQ\Protocols; + +/** + * Class Hl1 + * + * @package GameQ\Protocols + * @author Austin Bischoff + * @author Jesse Lukas + */ +class Hl1 extends Source +{ + /** + * String name of this protocol class + * + * @type string + */ + protected $name = 'hl1'; + + /** + * Longer string name of this protocol class + * + * @type string + */ + protected $name_long = "Half Life"; +} diff --git a/src/GameQ/Protocols/Modiverse.php b/src/GameQ/Protocols/Modiverse.php new file mode 100644 index 00000000..64b41ed5 --- /dev/null +++ b/src/GameQ/Protocols/Modiverse.php @@ -0,0 +1,43 @@ +. + */ + +namespace GameQ\Protocols; + +/** + * Class Modiverse + * + * @package GameQ\Protocols + * @author Austin Bischoff + * @author Jesse Lukas + */ +class Modiverse extends Source +{ + /** + * String name of this protocol class + * + * @type string + */ + protected $name = 'modiverse'; + + /** + * Longer string name of this protocol class + * + * @type string + */ + protected $name_long = "Modiverse"; +} diff --git a/src/GameQ/Protocols/Nmrih.php b/src/GameQ/Protocols/Nmrih.php new file mode 100644 index 00000000..acae3b6e --- /dev/null +++ b/src/GameQ/Protocols/Nmrih.php @@ -0,0 +1,43 @@ +. + */ + +namespace GameQ\Protocols; + +/** + * Class No More Room in Hell + * + * @package GameQ\Protocols + * @author Austin Bischoff + * @author Jesse Lukas + */ +class Nmrih extends Source +{ + /** + * No More Room in Hell protocol class + * + * @type string + */ + protected $name = 'nmrih'; + + /** + * Longer string name of this protocol class + * + * @type string + */ + protected $name_long = "No More Room in Hell"; +} diff --git a/src/GameQ/Protocols/Of.php b/src/GameQ/Protocols/Of.php new file mode 100644 index 00000000..bce7612d --- /dev/null +++ b/src/GameQ/Protocols/Of.php @@ -0,0 +1,43 @@ +. + */ + +namespace GameQ\Protocols; + +/** + * Class Open Fortress + * + * @package GameQ\Protocols + * @author Austin Bischoff + * @author Jesse Lukas + */ +class Of extends Source +{ + /** + * Open Fortress protocol class + * + * @type string + */ + protected $name = 'of'; + + /** + * Longer string name of this protocol class + * + * @type string + */ + protected $name_long = "Open Fortress"; +} diff --git a/src/GameQ/Protocols/Sco.php b/src/GameQ/Protocols/Sco.php new file mode 100644 index 00000000..a920fbd8 --- /dev/null +++ b/src/GameQ/Protocols/Sco.php @@ -0,0 +1,50 @@ +. + */ + +namespace GameQ\Protocols; + +/** + * Class Sven Co-op + * + * @package GameQ\Protocols + * @author Austin Bischoff + * @author Jesse Lukas + */ +class Sco extends Source +{ + /** + * Sven Co-op protocol class + * + * @type string + */ + protected $name = 'sco'; + + /** + * Longer string name of this protocol class + * + * @type string + */ + protected $name_long = "Sven Co-op"; + + /** + * query_port = client_port + 1 + * + * @type int + */ + protected $port_diff = 1; +} diff --git a/src/GameQ/Protocols/Stormworks.php b/src/GameQ/Protocols/Stormworks.php new file mode 100644 index 00000000..735b5776 --- /dev/null +++ b/src/GameQ/Protocols/Stormworks.php @@ -0,0 +1,50 @@ +. + */ + +namespace GameQ\Protocols; + +/** + * Class Stormworks + * + * @package GameQ\Protocols + * @author Austin Bischoff + * @author Jesse Lukas + */ +class Stormworks extends Source +{ + /** + * Stormworks protocol class + * + * @type string + */ + protected $name = 'stormworks'; + + /** + * Longer string name of this protocol class + * + * @type string + */ + protected $name_long = "Stormworks"; + + /** + * query_port = client_port + 1 + * + * @type int + */ + protected $port_diff = 1; +} diff --git a/tests/Protocols/Barotrauma.php b/tests/Protocols/Barotrauma.php new file mode 100644 index 00000000..3a4b8488 --- /dev/null +++ b/tests/Protocols/Barotrauma.php @@ -0,0 +1,49 @@ +. + */ + +namespace GameQ\Tests\Protocols; + +/** + * Test Class for Barotrauma + * + * @package GameQ\Tests\Protocols + */ +class Barotrauma extends Base +{ + /** + * Test responses for Barotrauma + * + * @dataProvider loadData + * + * @param $responses + * @param $result + */ + public function testResponses($responses, $result) + { + // Pull the first key off the array this is the server ip:port + $server = key($result); + + $testResult = $this->queryTest( + $server, + 'barotrauma', + $responses + ); + + $this->assertEquals($result[$server], $testResult); + } +} diff --git a/tests/Protocols/Blackmesa.php b/tests/Protocols/Blackmesa.php new file mode 100644 index 00000000..3d9cb29d --- /dev/null +++ b/tests/Protocols/Blackmesa.php @@ -0,0 +1,49 @@ +. + */ + +namespace GameQ\Tests\Protocols; + +/** + * Test Class for Blackmesa + * + * @package GameQ\Tests\Protocols + */ +class Blackmesa extends Base +{ + /** + * Test responses for Blackmesa + * + * @dataProvider loadData + * + * @param $responses + * @param $result + */ + public function testResponses($responses, $result) + { + // Pull the first key off the array this is the server ip:port + $server = key($result); + + $testResult = $this->queryTest( + $server, + 'blackmesa', + $responses + ); + + $this->assertEquals($result[$server], $testResult); + } +} diff --git a/tests/Protocols/Citadel.php b/tests/Protocols/Citadel.php new file mode 100644 index 00000000..6303d1ec --- /dev/null +++ b/tests/Protocols/Citadel.php @@ -0,0 +1,49 @@ +. + */ + +namespace GameQ\Tests\Protocols; + +/** + * Test Class for Citadel + * + * @package GameQ\Tests\Protocols + */ +class Citadel extends Base +{ + /** + * Test responses for Citadel + * + * @dataProvider loadData + * + * @param $responses + * @param $result + */ + public function testResponses($responses, $result) + { + // Pull the first key off the array this is the server ip:port + $server = key($result); + + $testResult = $this->queryTest( + $server, + 'citadel', + $responses + ); + + $this->assertEquals($result[$server], $testResult); + } +} diff --git a/tests/Protocols/Fof.php b/tests/Protocols/Fof.php new file mode 100644 index 00000000..82c0620f --- /dev/null +++ b/tests/Protocols/Fof.php @@ -0,0 +1,49 @@ +. + */ + +namespace GameQ\Tests\Protocols; + +/** + * Test Class for Fistful of Frags + * + * @package GameQ\Tests\Protocols + */ +class Fof extends Base +{ + /** + * Test responses for Fistful of Frags + * + * @dataProvider loadData + * + * @param $responses + * @param $result + */ + public function testResponses($responses, $result) + { + // Pull the first key off the array this is the server ip:port + $server = key($result); + + $testResult = $this->queryTest( + $server, + 'fof', + $responses + ); + + $this->assertEquals($result[$server], $testResult); + } +} diff --git a/tests/Protocols/Hl1.php b/tests/Protocols/Hl1.php new file mode 100644 index 00000000..da5448a7 --- /dev/null +++ b/tests/Protocols/Hl1.php @@ -0,0 +1,49 @@ +. + */ + +namespace GameQ\Tests\Protocols; + +/** + * Test Class for Half Life + * + * @package GameQ\Tests\Protocols + */ +class Hl1 extends Base +{ + /** + * Test responses for Half Life + * + * @dataProvider loadData + * + * @param $responses + * @param $result + */ + public function testResponses($responses, $result) + { + // Pull the first key off the array this is the server ip:port + $server = key($result); + + $testResult = $this->queryTest( + $server, + 'hl1', + $responses + ); + + $this->assertEquals($result[$server], $testResult); + } +} diff --git a/tests/Protocols/Modiverse.php b/tests/Protocols/Modiverse.php new file mode 100644 index 00000000..76dd943a --- /dev/null +++ b/tests/Protocols/Modiverse.php @@ -0,0 +1,49 @@ +. + */ + +namespace GameQ\Tests\Protocols; + +/** + * Test Class for Modiverse + * + * @package GameQ\Tests\Protocols + */ +class Modiverse extends Base +{ + /** + * Test responses for Modiverse + * + * @dataProvider loadData + * + * @param $responses + * @param $result + */ + public function testResponses($responses, $result) + { + // Pull the first key off the array this is the server ip:port + $server = key($result); + + $testResult = $this->queryTest( + $server, + 'modiverse', + $responses + ); + + $this->assertEquals($result[$server], $testResult); + } +} diff --git a/tests/Protocols/Nmrih.php b/tests/Protocols/Nmrih.php new file mode 100644 index 00000000..c6284519 --- /dev/null +++ b/tests/Protocols/Nmrih.php @@ -0,0 +1,49 @@ +. + */ + +namespace GameQ\Tests\Protocols; + +/** + * Test Class for No More Room in Hell + * + * @package GameQ\Tests\Protocols + */ +class Nmrih extends Base +{ + /** + * Test responses for No More Room in Hell + * + * @dataProvider loadData + * + * @param $responses + * @param $result + */ + public function testResponses($responses, $result) + { + // Pull the first key off the array this is the server ip:port + $server = key($result); + + $testResult = $this->queryTest( + $server, + 'nmrih', + $responses + ); + + $this->assertEquals($result[$server], $testResult); + } +} diff --git a/tests/Protocols/Of.php b/tests/Protocols/Of.php new file mode 100644 index 00000000..77897360 --- /dev/null +++ b/tests/Protocols/Of.php @@ -0,0 +1,49 @@ +. + */ + +namespace GameQ\Tests\Protocols; + +/** + * Test Class for Open Fortress + * + * @package GameQ\Tests\Protocols + */ +class Of extends Base +{ + /** + * Test responses for Open Fortress + * + * @dataProvider loadData + * + * @param $responses + * @param $result + */ + public function testResponses($responses, $result) + { + // Pull the first key off the array this is the server ip:port + $server = key($result); + + $testResult = $this->queryTest( + $server, + 'of', + $responses + ); + + $this->assertEquals($result[$server], $testResult); + } +} diff --git a/tests/Protocols/Providers/Barotrauma/1_response.txt b/tests/Protocols/Providers/Barotrauma/1_response.txt new file mode 100644 index 00000000..18dcb14e Binary files /dev/null and b/tests/Protocols/Providers/Barotrauma/1_response.txt differ diff --git a/tests/Protocols/Providers/Barotrauma/1_result.json b/tests/Protocols/Providers/Barotrauma/1_result.json new file mode 100644 index 00000000..0fc2f6ba --- /dev/null +++ b/tests/Protocols/Providers/Barotrauma/1_result.json @@ -0,0 +1 @@ +{"23.88.96.146:27016":{"allowrespawn":"True","allowspectating":"True","contentpackage":"Vanilla","contentpackagehash":"C39B7D9499A0EEC7F3FA6B61722A0327","contentpackageid":"0","dedicated":"d","friendlyfireenabled":"True","game_descr":"Barotrauma","game_dir":"Barotrauma","game_id":602960,"gamemode":"sandbox","gamestarted":"False","gq_address":"23.88.96.146","gq_joinlink":"steam:\/\/connect\/23.88.96.146:27016\/","gq_name":"Barotrauma","gq_online":true,"gq_port_client":27016,"gq_port_query":27017,"gq_protocol":"source","gq_transport":"udp","gq_type":"barotrauma","haspassword":"False","hostname":"G-One.org","karmaenabled":"True","keywords":"","map":"Azimuth","max_players":10,"message":"","modeselectionmode":"Manual","num_bots":0,"num_players":0,"num_rules":19,"os":"l","password":0,"playercount":"0","playstyle":"Casual","port":27016,"protocol":17,"secure":0,"steam_id":90162910864219136,"steamappid":0,"subselectionmode":"Manual","traitors":"No","usingwhitelist":"False","version":"0.18.15.0","voicechatenabled":"True"}} \ No newline at end of file diff --git a/tests/Protocols/Providers/Blackmesa/1_response.txt b/tests/Protocols/Providers/Blackmesa/1_response.txt new file mode 100644 index 00000000..146c65c7 Binary files /dev/null and b/tests/Protocols/Providers/Blackmesa/1_response.txt differ diff --git a/tests/Protocols/Providers/Blackmesa/1_result.json b/tests/Protocols/Providers/Blackmesa/1_result.json new file mode 100644 index 00000000..93d8903b --- /dev/null +++ b/tests/Protocols/Providers/Blackmesa/1_result.json @@ -0,0 +1 @@ +{"164.132.202.2:27026":{"bm_lagcompensation_default_maxspeed":"300","bm_lagcompensation_max_usercmds":"5","bm_lagcompensation_playerdist":"0","bm_lagcompensation_speedmult":"1.5","deathmatch":"1","decalfrequency":"10","dedicated":"d","game_descr":"Black Mesa","game_dir":"bms","game_id":362890,"gq_address":"164.132.202.2","gq_joinlink":"steam:\/\/connect\/164.132.202.2:27026\/","gq_name":"Black Mesa","gq_online":true,"gq_port_client":27026,"gq_port_query":27026,"gq_protocol":"source","gq_transport":"udp","gq_type":"blackmesa","hostname":"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001 [EU] www.fastpath.fr | 24\/7 #BMS","item_ammo_box_lifetime":"30","keywords":"128tick,fastpath.fr,gravity,increased_maxplayers,rank,stats,","map":"dm_rail","max_players":32,"metamod_version":"1.12.0-dev+1159V","mp_allowNPCs":"1","mp_autocrosshair":"1","mp_coop":"0","mp_fadetoblack":"0","mp_falldamage":"0","mp_flashlight":"0","mp_footsteps":"1","mp_forcerespawn":"1","mp_fraglimit":"0","mp_friendlyfire":"0","mp_round_intermission_time":"10","mp_teamlist":"hgrunt;scientist;","mp_teamplay":"0","mp_teamplay_ff_penalty":"1","mp_timelimit":"3600","mp_warmup_intermission_time":"5","mp_warmup_time":"30","mp_weapon_zoom_time":"0","mp_weaponstay":"0","nextlevel":"","num_bots":6,"num_players":19,"num_rules":275,"os":"l","password":0,"player_respawn_protection_time":"3","players":[{"id":0,"name":"Swedistani Pighammed ","score":53,"time":463382.0625},{"id":0,"name":"lileinsteinjr ","score":55,"time":463382.0625},{"id":0,"name":"doky doky ","score":58,"time":463382.0625},{"id":0,"name":"aejo ","score":48,"time":463382.0625},{"id":0,"name":"Shorwe ","score":40,"time":463382.0625},{"id":0,"name":"syncdawn ","score":49,"time":463382.0625},{"id":0,"name":"","score":0,"time":30738.369140625},{"id":0,"name":"","score":0,"time":30727.447265625},{"id":0,"name":"","score":0,"time":30721.291015625},{"id":0,"name":"","score":0,"time":30718.275390625},{"id":0,"name":"","score":0,"time":30716.072265625},{"id":0,"name":"","score":0,"time":30715.087890625},{"id":0,"name":"","score":0,"time":30672.244140625},{"id":0,"name":"DAV.","score":65,"time":1500.1717529296875},{"id":0,"name":"Asydenco","score":61,"time":1228.734375},{"id":0,"name":"DimitrescusLover","score":53,"time":997.6719360351562},{"id":0,"name":"SummeHermelin0","score":36,"time":929.4530029296875},{"id":0,"name":"metin0972","score":13,"time":370.5624694824219},{"id":0,"name":"windsurfingsbest","score":3,"time":172.3749237060547}],"port":27026,"protocol":17,"r_AirboatViewDampenDamp":"1.0","r_AirboatViewDampenFreq":"7.0","r_AirboatViewZHeight":"0.0","r_JeepViewDampenDamp":"1.0","r_JeepViewDampenFreq":"7.0","r_JeepViewZHeight":"10.0","r_VehicleViewDampen":"1","secure":1,"sk_ammo_357_max":"18","sk_ammo_9mm_max":"150","sk_ammo_bolt_max":"10","sk_ammo_buckshot_max":"64","sk_ammo_energy_max":"100","sk_ammo_grenade_frag_max":"10","sk_ammo_grenade_mp5_max":"3","sk_ammo_grenade_rpg_max":"6","sk_ammo_grenade_satchel_max":"5","sk_ammo_grenade_tripmine_max":"6","sk_ammo_hornet_max":"8","sk_ammo_snark_max":"15","sk_detenator_apache_rpg_health":"1","sk_detenator_apache_rpg_intial_speed":"250","sk_detenator_apache_rpg_max_speed":"2000","sk_detenator_apache_rpg_npc_dmg":"30","sk_detenator_apache_rpg_npc_dmg_radius":"75","sk_detenator_apache_rpg_track_acceleration":"400","sk_detenator_apache_rpg_track_drag":"0.8","sk_detenator_apache_rpg_track_max_distance":"4048","sk_detenator_bolt_airspeed":"2000","sk_detenator_bolt_dot_bounce":"-0.5","sk_detenator_bolt_gravity":"40","sk_detenator_bolt_plr_dmg":"115","sk_detenator_bolt_plr_xplode_direct_hit_dmg":"75","sk_detenator_bolt_plr_xplode_dmg":"50","sk_detenator_bolt_plr_xplode_radius":"128","sk_detenator_energy_max_speed":"3200","sk_detenator_energy_plr_commit_radius":"400","sk_detenator_energy_plr_dmg":"3","sk_detenator_energy_plr_dmg_radius":"128","sk_detenator_energy_track_acceleration":"650","sk_detenator_energy_track_drag":"0.2","sk_detenator_energy_track_max_distance":"1024","sk_detenator_frag_elasticity":"0.45","sk_detenator_frag_friction":"0.2","sk_detenator_frag_fuse_time":"3","sk_detenator_frag_gravity":"400","sk_detenator_frag_npc_dmg":"60","sk_detenator_frag_npc_dmg_radius":"200","sk_detenator_frag_plr_dmg":"100","sk_detenator_frag_plr_dmg_radius":"250","sk_detenator_frag_throw_forward_speed_primary":"750.0","sk_detenator_frag_throw_forward_speed_secondary":"500.0","sk_detenator_frag_throw_up_speed_primary":"225.0","sk_detenator_frag_throw_up_speed_secondary":"100.0","sk_detenator_hornet_autoaim_scale":"10","sk_detenator_hornet_drunk_degrees":"3","sk_detenator_hornet_drunk_frequency":"0.2","sk_detenator_hornet_fuse_time":"5","sk_detenator_hornet_health":"1","sk_detenator_hornet_intial_speed":"200","sk_detenator_hornet_max_speed":"800","sk_detenator_hornet_npc_dmg":"9","sk_detenator_hornet_npc_dmg_radius":"25","sk_detenator_hornet_plr_dmg":"10","sk_detenator_hornet_plr_dmg_radius":"30","sk_detenator_hornet_track_acceleration":"300","sk_detenator_hornet_track_drag":"0.4","sk_detenator_hornet_track_lock_distance":"20","sk_detenator_hornet_track_lock_dot":"0.2","sk_detenator_hornet_track_max_distance":"512","sk_detenator_mp5_airspeed":"1000","sk_detenator_mp5_gravity":"400","sk_detenator_mp5_plr_dmg":"115","sk_detenator_mp5_plr_dmg_radius":"250","sk_detenator_nuke_dmg":"10","sk_detenator_nuke_dmg_radius":"1024","sk_detenator_nuke_health":"1","sk_detenator_nuke_intial_speed":"100","sk_detenator_nuke_lifetime":"4","sk_detenator_nuke_max_speed":"800","sk_detenator_nuke_sprite_radius":"60","sk_detenator_nuke_track_acceleration":"100","sk_detenator_nuke_track_drag":"0","sk_detenator_rpg_commit_radius":"0","sk_detenator_rpg_health":"1","sk_detenator_rpg_intial_speed":"192","sk_detenator_rpg_max_speed":"1344","sk_detenator_rpg_npc_dmg":"30","sk_detenator_rpg_npc_dmg_radius":"75","sk_detenator_rpg_plr_dmg":"175","sk_detenator_rpg_plr_dmg_radius":"300","sk_detenator_rpg_suicide_radius":"32","sk_detenator_rpg_track_acceleration":"960","sk_detenator_rpg_track_drag":"0.375","sk_detenator_rpg_track_max_distance":"65536","sk_detenator_rpg_track_min_dot":"-1","sk_detenator_satchel_airspeed":"420","sk_detenator_satchel_elasticity":"0.45","sk_detenator_satchel_friction":"0.2","sk_detenator_satchel_gravity":"400","sk_detenator_satchel_plr_dmg":"150","sk_detenator_satchel_plr_dmg_radius":"300","sk_detenator_spit_airspeed":"1000","sk_detenator_spit_gravity":"400","sk_detenator_spit_plr_dmg":"4","sk_detenator_spit_plr_dmg_radius":"96","sk_detenator_tow_intial_speed":"1500","sk_detenator_tow_max_speed":"3000","sk_detenator_tow_npc_dmg":"150","sk_detenator_tow_npc_dmg_radius":"375","sk_detenator_tow_plr_dmg":"150","sk_detenator_tow_plr_dmg_radius":"375","sk_detenator_tow_track_acceleration":"300","sk_detenator_tripmine_health":"1","sk_detenator_tripmine_npc_dmg":"150","sk_detenator_tripmine_npc_dmg_radius":"300","sk_detenator_tripmine_plr_dmg":"150","sk_detenator_tripmine_plr_dmg_radius":"300","sk_dmg_sentry":"4","sk_dmg_sniper_penetrate_npc":"0","sk_dmg_sniper_penetrate_plr":"0","sk_electrocluster_chunk_collision_radius":"8.0","sk_electrocluster_chunk_explosion_damage":"8.0","sk_electrocluster_chunk_explosion_radius":"32.0","sk_electrocluster_chunk_projectile_force_impulse":"512.0","sk_electrocluster_chunk_projectile_lifetime_minimum":"4","sk_electrocluster_chunk_projectile_lifetime_randomization":"3","sk_electrocluster_intermediate_cluster_impact_homing_direction_post_factor":"0.375","sk_electrocluster_intermediate_cluster_impact_reflected_direction_factor":"0.375","sk_electrocluster_intermediate_cluster_size":"4","sk_electrocluster_intermediate_collision_radius":"12.0","sk_electrocluster_intermediate_explosion_damage":"16.0","sk_electrocluster_intermediate_explosion_radius":"32.0","sk_electrocluster_intermediate_projectile_force_impulse":"512.0","sk_electrocluster_intermediate_projectile_impact_randomization":"0.325","sk_electrocluster_parent_cluster_impact_homing_direction_post_factor":"0.375","sk_electrocluster_parent_cluster_impact_reflected_direction_factor":"0.375","sk_electrocluster_parent_cluster_size":"5","sk_electrocluster_parent_collision_radius":"16.0","sk_electrocluster_parent_explosion_damage":"20.0","sk_electrocluster_parent_explosion_radius":"64.0","sk_electrocluster_parent_projectile_impact_randomization":"0.5","sk_electrocluster_parent_projectile_speed_limit":"4096.0","sk_electrocluster_parent_projectile_speed_power":"4.0","sk_electrocluster_parent_projectile_speed_scale":"128.0","sk_grenade_mortar_gravity":"400","sk_grenade_mortar_max_speed":"2000","sk_grenade_mortar_track_acceleration":"400","sk_grenade_mortar_track_drag":"0.8","sk_item_respawn_delay":"15","sk_item_weapon_snark_hive_health":"10","sk_item_weapon_snark_hive_pickup":"4","sk_max_50cal":"0","sk_max_sentry":"50","sk_max_sniper_round":"30","sk_npc_dmg_50cal":"6","sk_npc_dmg_sniper_round":"20","sk_plr_dmg_50cal":"6","sk_plr_dmg_sniper_round":"20","sk_thunderball_collision_radius":"64.0","sk_thunderball_delta_speed_multiplier":"2.5","sk_thunderball_discharge_intervals":"15.0","sk_thunderball_explosion_damage":"25.0","sk_thunderball_explosion_radius":"128.0","sk_thunderball_fully_discharge_time":"15.0","sk_thunderball_lighting_damage":"3.0","sk_thunderball_lighting_enemy_priority_chance":"0.65","sk_thunderball_lighting_radius":"384.0","sk_weapon_gluon_dmg_scale":"1.0","sk_weapon_gluon_plr_ammo_per_tick":"2","sk_weapon_gluon_plr_ammo_tick":"0.2","sk_weapon_gluon_plr_dmg_per_tick":"23","sk_weapon_gluon_plr_dmg_tick":"0.1","sk_weapon_gluon_plr_spread":"1.5 1.5","sk_weapon_hivehand_plr_regen_attack_delay":"0.5","sk_weapon_hivehand_plr_regen_tick":"0.2","sk_weapon_hivehand_plr_secondary_phase":"8","sk_weapon_hivehand_plr_secondary_radius":"0.025","sk_weapon_satchel_max_active":"10","sk_weapon_snark_jumprange":"256","sk_weapon_snark_jumpspeed":"320","sk_weapon_snark_lifetime":"14.5","sk_weapon_snark_npc_dmg_bite":"4","sk_weapon_snark_npc_dmg_pop":"1","sk_weapon_snark_plr_dmg_bite":"8","sk_weapon_snark_plr_dmg_pop":"1","sk_weapon_tau_beam_charged_dmg":"120","sk_weapon_tau_beam_dmg_radius":"64","sk_weapon_tau_beam_penetration_bias":"0.9","sk_weapon_tau_beam_penetration_depth":"48","sk_weapon_tau_beam_spread_max":"128","sk_weapon_tau_beam_spread_min":"32","sk_weapon_tau_beam_undercharged_dmg":"20","sk_weapon_tau_charge_max_velocity":"650","sk_weapon_tau_full_charge_required_ammo":"12.0","sk_weapon_tau_full_charge_time":"1.5","sk_weapon_tau_idle_spin_speed":"1700","sk_weapon_tau_max_coil_speed":"1200","sk_weapon_tau_min_charge_time":"0.3","sk_weapon_tau_overcharge_bais":"0.9","sk_weapon_tau_overcharge_damage":"25","sk_weapon_tau_overcharge_radius":"200","sk_weapon_tau_overcharge_time":"7.5","sk_weapon_tau_primary_attack_delay":"0.3","sk_weapon_tripmine_max_active":"10","sm_nextmap":"dm_stack","sourcemod_version":"1.11.0.6902","steam_id":85568392924873718,"steamappid":0,"sv_accelerate":"10","sv_accelerate_cap":"25.0","sv_airaccelerate":"10","sv_alltalk":"0","sv_bounce":"0","sv_cheats":"0","sv_contact":"www.fastpath.fr","sv_falldamagescale":"1","sv_footsteps":"1","sv_friction":"4","sv_gravity":"800","sv_maxspeed":"320","sv_maxusrcmdprocessticks":"24","sv_noclipaccelerate":"5","sv_noclipspeed":"5","sv_password":"0","sv_pausable":"0","sv_rollangle":"0","sv_rollspeed":"200","sv_show_enemy_hp":"0","sv_specaccelerate":"5","sv_specnoclip":"1","sv_specspeed":"3","sv_speed_crouch_crop":"0.333333333333","sv_speed_mp":"320","sv_speed_run":"190","sv_speed_sprint":"320","sv_speed_usedampen_allow":"1","sv_speed_walk":"90","sv_steamgroup":"5513290","sv_stepsize":"18","sv_stopspeed":"100","sv_tags":"128tick,fastpath.fr,gravity,increased_maxplayers,rank,stats","sv_voiceenable":"1","sv_vote_quorum_ratio":"0.6","sv_wateraccelerate":"10","sv_waterfriction":"1","tv_enable":"0","tv_password":"1","tv_relaypassword":"1","version":"100001"}} \ No newline at end of file diff --git a/tests/Protocols/Providers/Citadel/1_response.txt b/tests/Protocols/Providers/Citadel/1_response.txt new file mode 100644 index 00000000..5aae5300 Binary files /dev/null and b/tests/Protocols/Providers/Citadel/1_response.txt differ diff --git a/tests/Protocols/Providers/Citadel/1_result.json b/tests/Protocols/Providers/Citadel/1_result.json new file mode 100644 index 00000000..2dccae86 --- /dev/null +++ b/tests/Protocols/Providers/Citadel/1_result.json @@ -0,0 +1 @@ +{"23.88.96.146:28015":{"dedicated":"d","game_descr":"PVP","game_dir":"Citadel","game_id":487120,"gq_address":"23.88.96.146","gq_joinlink":"steam:\/\/connect\/23.88.96.146:28015\/","gq_name":"Citadel","gq_online":true,"gq_port_client":28015,"gq_port_query":28015,"gq_protocol":"source","gq_transport":"udp","gq_type":"citadel","hostname":"CitadelServer","keywords":"VER=1.0.33216.1 RGN= PWD=1 BIS=0","map":"Ignus","max_players":20,"num_bots":0,"num_players":0,"os":"l","password":0,"port":7777,"protocol":17,"secure":1,"steam_id":90162911722531844,"steamappid":0,"version":"1.0.0.0"}} \ No newline at end of file diff --git a/tests/Protocols/Providers/Fof/1_response.txt b/tests/Protocols/Providers/Fof/1_response.txt new file mode 100644 index 00000000..b5a7132e Binary files /dev/null and b/tests/Protocols/Providers/Fof/1_response.txt differ diff --git a/tests/Protocols/Providers/Fof/1_result.json b/tests/Protocols/Providers/Fof/1_result.json new file mode 100644 index 00000000..6d184f89 --- /dev/null +++ b/tests/Protocols/Providers/Fof/1_result.json @@ -0,0 +1 @@ +{"164.132.202.2:27024":{"coop":"0","deathmatch":"1","decalfrequency":"10","dedicated":"d","fof_player_prog":"0","fof_sv_health_max":"100","fof_sv_item_respawn_time":"60","fof_sv_pricemult_bow":"1.0","fof_sv_pricemult_carbine":"1.0","fof_sv_pricemult_dynamite":"1.0","fof_sv_pricemult_henry":"1.0","fof_sv_pricemult_lefthanded":"1.0","fof_sv_pricemult_righthanded":"1.0","fof_sv_pricemult_sharps":"1.0","fof_sv_pricemult_walker":"1.0","fof_sv_recoilamount":"0.8","fof_sv_speedpenalty":"0.7","fof_sv_team_collisions":"0","fof_sv_viewspring":"25","fof_sv_weapon_drop":"0","game_descr":"4 Teams Shootout","game_dir":"fof","game_id":265630,"gq_address":"164.132.202.2","gq_joinlink":"steam:\/\/connect\/164.132.202.2:27024\/","gq_name":"Fistful of Frags","gq_online":true,"gq_port_client":27024,"gq_port_query":27024,"gq_protocol":"source","gq_transport":"udp","gq_type":"fof","hostname":"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001 [EU] www.fastpath.fr | 24\/7 #FOF","keywords":"128tick,fastpath.fr,rank,stats","map":"fof_revenge","max_players":20,"metamod_version":"1.12.0-dev+1159V","mp_allowNPCs":"1","mp_autocrosshair":"1","mp_autoteambalance":"1","mp_disable_respawn_times":"0","mp_fadetoblack":"0","mp_falldamage":"0","mp_flashlight":"0","mp_footsteps":"1","mp_forceautoteam":"0","mp_forcerespawn":"1","mp_fraglimit":"0","mp_friendlyfire":"0","mp_holiday_nogifts":"0","mp_match_end_at_timelimit":"0","mp_maxrounds":"0","mp_respawnwavetime":"10.0","mp_scrambleteams_auto":"1","mp_scrambleteams_auto_windifference":"2","mp_stalemate_enable":"0","mp_stalemate_meleeonly":"0","mp_teamlist":"hgrunt;scientist","mp_teamplay":"1","mp_timelimit":"20","mp_tournament":"0","mp_weaponstay":"0","mp_winlimit":"0","nextlevel":"","num_bots":2,"num_players":17,"num_rules":93,"os":"l","password":0,"players":[{"id":0,"name":"Rebel_Y","score":0,"time":474909.4375},{"id":0,"name":"☭Постмодерн☭ ","score":1,"time":474909.4375},{"id":0,"name":"","score":0,"time":9363.271484375},{"id":0,"name":"","score":0,"time":8886.421875},{"id":0,"name":"","score":0,"time":6532.2587890625},{"id":0,"name":"","score":0,"time":5628.1884765625},{"id":0,"name":"","score":0,"time":4357.10888671875},{"id":0,"name":"prno1k","score":20,"time":1593.4639892578125},{"id":0,"name":"WOODENCRUTCH","score":11,"time":1588.18408203125},{"id":0,"name":"","score":0,"time":1544.12890625},{"id":0,"name":"","score":0,"time":1430.279052734375},{"id":0,"name":"drugsman","score":22,"time":1423.048828125},{"id":0,"name":"Mr.Zhan","score":22,"time":1314.0888671875},{"id":0,"name":"Dutchman543","score":15,"time":1202.0240478515625},{"id":0,"name":"First AIDS Kid","score":6,"time":890.77392578125},{"id":0,"name":"physical destroyer","score":11,"time":604.9948120117188},{"id":0,"name":"САША 2 ПАЛКИ","score":15,"time":586.7098999023438}],"port":27024,"protocol":17,"r_AirboatViewDampenDamp":"1.0","r_AirboatViewDampenFreq":"7.0","r_AirboatViewZHeight":"0.0","r_JeepViewDampenDamp":"1.0","r_JeepViewDampenFreq":"7.0","r_JeepViewZHeight":"10.0","r_VehicleViewDampen":"1","secure":1,"sm_nextmap":"fof_robertlee","sourcemod_version":"1.11.0.6902","steam_id":85568392924873716,"steamappid":0,"sv_accelerate":"4.5","sv_airaccelerate":"8.5","sv_alltalk":"0","sv_bounce":"0","sv_cheats":"0","sv_contact":"www.fastpath.fr","sv_footsteps":"1","sv_friction":"4","sv_gravity":"600","sv_hl2mp_weapon_respawn_time":"90","sv_maxspeed":"320","sv_maxusrcmdprocessticks":"24","sv_noclipaccelerate":"5","sv_noclipspeed":"5","sv_password":"0","sv_pausable":"0","sv_report_client_settings":"0","sv_rollangle":"0","sv_rollspeed":"200","sv_specaccelerate":"5","sv_specnoclip":"1","sv_specspeed":"3","sv_steamgroup":"5513290","sv_stepsize":"18","sv_stopspeed":"100","sv_tags":"128tick,fastpath.fr,rank,stats","sv_voiceenable":"1","sv_vote_quorum_ratio":"0.6","sv_wateraccelerate":"10","sv_waterfriction":"1","tf_arena_max_streak":"3","tf_arena_preround_time":"10","tf_arena_round_time":"0","tf_arena_use_queue":"1","tv_enable":"0","tv_password":"1","tv_relaypassword":"1","version":"555"}} \ No newline at end of file diff --git a/tests/Protocols/Providers/Hl1/1_response.txt b/tests/Protocols/Providers/Hl1/1_response.txt new file mode 100644 index 00000000..69e334bb Binary files /dev/null and b/tests/Protocols/Providers/Hl1/1_response.txt differ diff --git a/tests/Protocols/Providers/Hl1/1_result.json b/tests/Protocols/Providers/Hl1/1_result.json new file mode 100644 index 00000000..f5a5dd3f --- /dev/null +++ b/tests/Protocols/Providers/Hl1/1_result.json @@ -0,0 +1 @@ +{"46.174.52.4:27222":{"address":"127.0.0.1:27222","aghl.ru":"0.2.9+9315e11","allow_spectators":"1","amx_client_languages":"0","amx_language":"en","amx_timeleft":"15:28","amxmodx_version":"1.9.0.5262","coop":"0","deathmatch":"1","decalfrequency":"60","dedicated":"d","dp_version":"0.9.582","edgefriction":"2","game_descr":"VK.COM\/BLOODYGAME","game_dir":"valve","game_id":70,"gq_address":"46.174.52.4","gq_joinlink":"steam:\/\/connect\/46.174.52.4:27222\/","gq_name":"Half Life","gq_online":true,"gq_port_client":27222,"gq_port_query":27222,"gq_protocol":"source","gq_transport":"udp","gq_type":"hl1","hostname":"-=Bloody Game - [Half-Life] [1000FPS]=-","ismod":1,"jk_botti_version":"1.43","ljpm_version":"0.1","map":"bounce","max_players":32,"max_queries_sec":"1","max_queries_sec_global":"1","max_queries_window":"1","metamod_version":"1.3.0.86","mod_cldll":0,"mod_size":0,"mod_type":1,"mod_urldl":"","mod_urlinfo":"","mod_version":1,"mp_allowmonsters":"0","mp_autocrosshair":"1","mp_bunnyhop":"1","mp_chattime":"8","mp_consistency":"1","mp_falldamage":"1","mp_flashlight":"1","mp_footsteps":"1","mp_forcerespawn":"1","mp_fraglimit":"0","mp_fragsleft":"0","mp_friendlyfire":"1","mp_logfile":"1","mp_selfgauss":"1","mp_teamlist":"hgrunt;scientist","mp_teamplay":"0","mp_timeleft":"927","mp_timelimit":"20","mp_weaponstay":"0","mp_welcomecam":"1","num_bots":26,"num_players":26,"num_rules":61,"os":"l","password":0,"pausable":"0","players":[{"id":0,"name":"Rider","score":6,"time":8640.626953125},{"id":0,"name":"Bossy","score":12,"time":8640.626953125},{"id":0,"name":"Cy*Kosis","score":4,"time":8640.626953125},{"id":0,"name":"(C)FragFag","score":11,"time":8640.626953125},{"id":0,"name":"Lunatic","score":7,"time":8640.626953125},{"id":0,"name":"DayteVIPpliz","score":9,"time":8640.626953125},{"id":0,"name":"repo9m_slava","score":2,"time":8640.626953125},{"id":0,"name":"Badass[ACE]","score":4,"time":8640.626953125},{"id":0,"name":"MintFlavored","score":2,"time":8640.626953125},{"id":0,"name":"ChopDoog","score":6,"time":8640.626953125},{"id":0,"name":"Ryan","score":8,"time":8640.626953125},{"id":0,"name":"[XDM]Headless","score":12,"time":8640.626953125},{"id":0,"name":"SLAVAUKRAINE","score":4,"time":8640.626953125},{"id":0,"name":"HughdeMan","score":15,"time":8640.626953125},{"id":0,"name":"AngelsGuru","score":5,"time":8640.626953125},{"id":0,"name":"PlayerR0x","score":8,"time":8640.626953125},{"id":0,"name":"MPA3b","score":6,"time":8640.626953125},{"id":0,"name":"misteReo","score":5,"time":8640.626953125},{"id":0,"name":"Tallity","score":9,"time":8640.626953125},{"id":0,"name":"Digimon-man","score":9,"time":8640.626953125},{"id":0,"name":"Zelensky","score":10,"time":8640.626953125},{"id":0,"name":"TimeJumpper","score":8,"time":8640.626953125},{"id":0,"name":"ADMIN-LOX","score":10,"time":8640.626953125},{"id":0,"name":"HLGuru[TeaMSEVS]","score":8,"time":8640.626953125},{"id":0,"name":"WTFAdmin","score":6,"time":8640.626953125},{"id":0,"name":"SMERTb_BPArAM","score":13,"time":8640.626953125}],"port":27222,"protocol":48,"secure":1,"steam_id":90071992547409920,"steamappid":70,"sv_accelerate":"10","sv_aim":"0","sv_airaccelerate":"10","sv_allowupload":"1","sv_bounce":"1","sv_cheats":"0","sv_clienttrace":"3.5","sv_contact":"","sv_friction":"4","sv_gravity":"800","sv_logblocks":"0","sv_maxrate":"25000","sv_maxspeed":"350","sv_minrate":"8000","sv_password":"0","sv_proxies":"1","sv_stepsize":"18","sv_stopspeed":"100","sv_uploadmax":"0.5","sv_voiceenable":"1","sv_wateraccelerate":"10","sv_waterfriction":"1","version":"1.1.2.2\/Stdio","wpmglicense":"Roman Sokolov"}} \ No newline at end of file diff --git a/tests/Protocols/Providers/Modiverse/1_response.txt b/tests/Protocols/Providers/Modiverse/1_response.txt new file mode 100644 index 00000000..2d53f38e Binary files /dev/null and b/tests/Protocols/Providers/Modiverse/1_response.txt differ diff --git a/tests/Protocols/Providers/Modiverse/1_result.json b/tests/Protocols/Providers/Modiverse/1_result.json new file mode 100644 index 00000000..5134a4dd --- /dev/null +++ b/tests/Protocols/Providers/Modiverse/1_result.json @@ -0,0 +1 @@ +{"23.88.96.146:27016":{"CONMETHOD":"P2P","I_b":"true","OWNINGID":"90162918914379784","OWNINGNAME":"G-One.org Server","P2PADDR":"90162918914379784","P2PPORT":"7777","SESSIONFLAGS":"683","U_s":"0","dedicated":"d","game_descr":"KillerJim Mod","game_dir":"KJMod","game_id":1281150,"gq_address":"23.88.96.146","gq_joinlink":"steam:\/\/connect\/23.88.96.146:27016\/","gq_name":"Modiverse","gq_online":true,"gq_port_client":27016,"gq_port_query":27016,"gq_protocol":"source","gq_transport":"udp","gq_type":"modiverse","hostname":"G-One.org Server","keywords":"BUILDID:0,OWNINGID:90162918914379784,OWNINGNAME:G-One.org Server,SESSIONFLAGS:683,I_b:true,U_s:0","map":"Paradise","max_players":128,"num_bots":0,"num_players":0,"num_rules":8,"os":"l","password":0,"port":7777,"protocol":17,"secure":1,"steam_id":90162918914379784,"steamappid":0,"version":"1.0.0.0"}} \ No newline at end of file diff --git a/tests/Protocols/Providers/Nmrih/1_response.txt b/tests/Protocols/Providers/Nmrih/1_response.txt new file mode 100644 index 00000000..49c5b7fc Binary files /dev/null and b/tests/Protocols/Providers/Nmrih/1_response.txt differ diff --git a/tests/Protocols/Providers/Nmrih/1_result.json b/tests/Protocols/Providers/Nmrih/1_result.json new file mode 100644 index 00000000..e08dd66c --- /dev/null +++ b/tests/Protocols/Providers/Nmrih/1_result.json @@ -0,0 +1 @@ +{"176.9.10.34:27055":{"coop":"0","countrynick_version":"1.1.1","deathmatch":"1","decalfrequency":"10","dedicated":"d","game_descr":"No More Room in Hell","game_dir":"nmrih","game_id":224260,"gq_address":"176.9.10.34","gq_joinlink":"steam:\/\/connect\/176.9.10.34:27055\/","gq_name":"No More Room in Hell","gq_online":true,"gq_port_client":27055,"gq_port_query":27055,"gq_protocol":"source","gq_transport":"udp","gq_type":"nmrih","hostname":" ==> [GGA] GermanGamerAllianz - Escape","keywords":"objective,classic,ff:off,","map":"nmo_junction","max_players":8,"metamod_version":"1.11.0-dev+1140V","mp_allowNPCs":"1","mp_autocrosshair":"1","mp_autoteambalance":"1","mp_disable_respawn_times":"0","mp_fadetoblack":"0","mp_falldamage":"0","mp_flashlight":"0","mp_footsteps":"1","mp_forceautoteam":"0","mp_forcerespawn":"1","mp_fraglimit":"0","mp_friendlyfire":"0","mp_holiday_nogifts":"0","mp_limitteams":"2","mp_match_end_at_timelimit":"0","mp_maxrounds":"0","mp_respawnwavetime":"10.0","mp_scrambleteams_auto":"1","mp_scrambleteams_auto_windifference":"2","mp_stalemate_enable":"0","mp_stalemate_meleeonly":"0","mp_teamlist":"hgrunt;scientist","mp_teamplay":"0","mp_timelimit":"20","mp_tournament":"0","mp_weaponstay":"0","mp_winlimit":"1","nextlevel":"","num_bots":0,"num_players":4,"num_rules":83,"os":"l","password":0,"players":[{"id":0,"name":"[ESP]MRFIRULAIS","score":43,"time":548.0643310546875},{"id":0,"name":"[RUS]aztarsano","score":21,"time":528.9498291015625},{"id":0,"name":"[ESP]el uri (tu pai)","score":1,"time":523},{"id":0,"name":"","score":0,"time":3.765009880065918}],"port":27055,"protocol":17,"r_AirboatViewDampenDamp":"1.0","r_AirboatViewDampenFreq":"7.0","r_AirboatViewZHeight":"0.0","r_JeepViewDampenDamp":"1.0","r_JeepViewDampenFreq":"7.0","r_JeepViewZHeight":"10.0","r_VehicleViewDampen":"1","secure":0,"sm_gamevoting_version":"1.5b","sm_nextmap":"nmo_lakeside","sourcemod_version":"1.10.0.6492","steam_id":90162896035094529,"steamappid":0,"sv_accelerate":"10","sv_airaccelerate":"10","sv_allow_custom_balance":"0","sv_alltalk":"1","sv_bounce":"0","sv_cheats":"0","sv_contact":"www.GermanGamerAllianz.de","sv_difficulty":"classic","sv_footsteps":"1","sv_friction":"4","sv_gravity":"800","sv_maphack":"1","sv_maphack_filename":"","sv_maxspeed":"320","sv_maxusrcmdprocessticks":"24","sv_noclipaccelerate":"5","sv_noclipspeed":"5","sv_password":"0","sv_pausable":"0","sv_resupplytime":"60","sv_rollangle":"0","sv_rollspeed":"200","sv_specaccelerate":"5","sv_specnoclip":"1","sv_specspeed":"3","sv_steamgroup":"1846466","sv_stepsize":"18","sv_stopspeed":"100","sv_tags":"","sv_voiceenable":"1","sv_vote_quorum_ratio":"0.60","sv_wateraccelerate":"10","sv_waterfriction":"1","tf_arena_max_streak":"3","tf_arena_preround_time":"10","tf_arena_round_time":"0","tf_arena_use_queue":"1","tv_enable":"0","tv_password":"0","tv_relaypassword":"0","version":"1.1.2.3"}} \ No newline at end of file diff --git a/tests/Protocols/Providers/Of/1_response.txt b/tests/Protocols/Providers/Of/1_response.txt new file mode 100644 index 00000000..0d1a81ee Binary files /dev/null and b/tests/Protocols/Providers/Of/1_response.txt differ diff --git a/tests/Protocols/Providers/Of/1_result.json b/tests/Protocols/Providers/Of/1_result.json new file mode 100644 index 00000000..14d4f0d1 --- /dev/null +++ b/tests/Protocols/Providers/Of/1_result.json @@ -0,0 +1 @@ +{"74.91.127.161:27015":{"academy_callteacher_version":"0.2.4","coop":"0","custom_chat_colors_toggle_version":"2.0.0","custom_chat_colors_version":"3.1.0","cv_bumpercar_backstop":"1","cv_bumpercar_blockplayerdmg":"1","cv_bumpercar_headscale":"1.0","cv_bumpercar_initpct":"0","cv_bumpercar_percent":"-1","cv_bumpercar_respawn":"1","cv_bumpercar_spawntoggle":"0","cv_bumpercar_suicide":"1","cv_bumpercar_teamonly":"0","cv_bumpercar_version":"0x0C","cv_profile_version":"0x01a","deathmatch":"1","decalfrequency":"60","dedicated":"d","discord_calladmin_version":"1.1a","discord_sourcebans_version":"1.0","discord_sourcecomms_version":"1.1","discord_version":"1.0","donationmgr_version":"1.1.1","empty_restarter_version":"1.2","enhanced_items_version":"1.1.0","forlix_floodcheck_version":"1.73a","game_descr":"Team Fortress","game_dir":"tf","game_id":440,"gq_address":"74.91.127.161","gq_joinlink":"steam:\/\/connect\/74.91.127.161:27015\/","gq_name":"Open Fortress","gq_online":true,"gq_port_client":27015,"gq_port_query":27015,"gq_protocol":"source","gq_transport":"udp","gq_type":"of","hostname":"jumpacademy.tf | Dedicated Server I | US East","hyperscout_version":"0.1.1","jse_api_version":"0.1.2","jse_autosave_backup_interval":"300.0","jse_autosave_spawnpopup":"5","jse_autosave_version":"0.1.5","jse_compat_jumpassist_version":"0.1.5","jse_core_cap_interval":"5","jse_core_regen_ammo":"1","jse_core_regen_caber":"1","jse_core_regen_hp":"1","jse_core_regen_hype":"1","jse_core_regen_shield":"2.5","jse_core_version":"0.3.5","jse_foresight_version":"0.2.6","jse_jb_version":"1.0.0-rc5","jse_mapinfo_version":"0.1.5","jse_marker_version":"0.2.3","jse_scoreboard_version":"0.1.4","jse_showkeys_version":"0.1.8","jse_teleport_goto_player_class":"1","jse_teleport_goto_player_progressed":"1","jse_teleport_goto_progressed":"1","jse_teleport_version":"0.3.8","jse_tracker_interval":"1.5","jse_tracker_persist":"0","jse_tracker_proximity":"1000.0","jse_tracker_tele_settle_time":"1.0","jse_tracker_version":"0.4.1","jump_academy_common_version":"0.4.32","keywords":"academy,alltalk,bots,cp,fastdl,jump,jumpacademy,jumpbot,nocrits,respawntimes,rocket,syncr","logflush_ver":"1.01","map":"jump_academy2_rc8","max_players":22,"metamod_version":"1.11.0-dev+1148V","mp_allowNPCs":"1","mp_autocrosshair":"1","mp_autoteambalance":"0","mp_disable_respawn_times":"0","mp_fadetoblack":"0","mp_falldamage":"1","mp_flashlight":"1","mp_footsteps":"1","mp_forceautoteam":"0","mp_forcerespawn":"0","mp_fraglimit":"0","mp_friendlyfire":"0","mp_highlander":"0","mp_holiday_nogifts":"0","mp_match_end_at_timelimit":"0","mp_maxrounds":"0","mp_respawnwavetime":"0","mp_scrambleteams_auto":"0","mp_scrambleteams_auto_windifference":"2","mp_stalemate_enable":"0","mp_stalemate_meleeonly":"0","mp_teamlist":"hgrunt;scientist","mp_teamplay":"0","mp_timelimit":"240","mp_tournament":"0","mp_tournament_readymode":"0","mp_tournament_readymode_countdown":"10","mp_tournament_readymode_min":"2","mp_tournament_readymode_team_size":"0","mp_tournament_stopwatch":"1","mp_weaponstay":"0","mp_windifference":"0","mp_windifference_min":"0","mp_winlimit":"0","nextlevel":"","num_bots":1,"num_players":22,"num_rules":336,"os":"l","password":0,"player_analytics_version":"1.3.1","players":[{"id":0,"name":"JumpBOT","score":148,"time":33085.26953125},{"id":0,"name":"chong.","score":0,"time":3404.735595703125},{"id":0,"name":"de·gen·er·ate.","score":118,"time":2672.1591796875},{"id":0,"name":"armyman jo the shmo","score":0,"time":2449.97802734375},{"id":0,"name":"hyperspark","score":2,"time":2144.8408203125},{"id":0,"name":"Cashier","score":0,"time":2034.5859375},{"id":0,"name":"Shin_Mikey","score":0,"time":1961.05615234375},{"id":0,"name":"lmao","score":0,"time":1631.1973876953125},{"id":0,"name":"zozo","score":0,"time":1520.3822021484375},{"id":0,"name":"hot dog","score":0,"time":1380.429931640625},{"id":0,"name":"Uncle™ Sarge","score":184,"time":1355.9498291015625},{"id":0,"name":"airirusu","score":36,"time":1156.5311279296875},{"id":0,"name":"ScardimTheBoring","score":104,"time":796.656982421875},{"id":0,"name":"Evindica","score":2,"time":784.5077514648438},{"id":0,"name":"gaf_k1n","score":50,"time":644.8294067382812},{"id":0,"name":"Micheal Morbius","score":18,"time":593.777099609375},{"id":0,"name":"mr.mellon","score":18,"time":578.454345703125},{"id":0,"name":"天使のような","score":112,"time":406.72796630859375},{"id":0,"name":"mutated bread","score":2,"time":251.47491455078125},{"id":0,"name":"Imagine","score":70,"time":224.50494384765625},{"id":0,"name":"R\/Heroin","score":0,"time":214.49972534179688},{"id":0,"name":"rookie_cookie","score":0,"time":74.58822631835938}],"port":27015,"projectilecollision_teamonly":"1","protocol":17,"r_AirboatViewDampenDamp":"1.0","r_AirboatViewDampenFreq":"7.0","r_AirboatViewZHeight":"0.0","r_JeepViewDampenDamp":"1.0","r_JeepViewDampenFreq":"7.0","r_JeepViewZHeight":"10.0","r_VehicleViewDampen":"1","sb_version":"1.7.0","sbchecker_version":"1.7.0","sbpp_report_version":"1.7.0","scp_version":"2.1.0","secure":1,"showtriggers_version":"1.1","sm_admin_see_all_commands":"1.1","sm_adv_version":"0.16","sm_advancedpm_version":"1.2.1a","sm_advertisements_version":"0.8.0","sm_afkm_version":"4.3.0a","sm_ag_version":"1.5.1","sm_aia_version":"1.3.6","sm_aimnames_version":"0.8","sm_allchat_version":"1.1.1","sm_annotate_version":"1.5","sm_anticolorabuse_version":"1.0.0","sm_bhats_version":"2.0","sm_bhop_version":"1.0.0a","sm_bossspawns_bounds":"0.1, 5.0","sm_bossspawns_chattag":"{gold}[BossSpawns]","sm_bossspawns_hitboxes":"1","sm_bossspawns_spawnsounds":"1","sm_bossspawns_status":"1","sm_bossspawns_verbose":"1","sm_bossspawns_version":"1.1.0","sm_calladmin_mysql_version":"0.1.8","sm_calladmin_usermanager_version":"0.1.8","sm_calladmin_version":"0.1.8","sm_cannounce_version":"1.8a","sm_chatfilter_version":"0.4","sm_cheat_version":"1.2","sm_cidr_version":"1.1.6","sm_classtarget_version":"1.3","sm_conc_version":"1.3.3","sm_customvotes_version":"1.19.2U","sm_entcontrol_version":"0.0.1.8a","sm_fakeandforce_version":"2.0","sm_forcetimelimit_version":"1.1.203a","sm_funcommandsx_version":"2.4a","sm_geolanguage_version":"1.3.0","sm_giveitem_version":"1.0.2","sm_helpmenu_version":"0.3a","sm_hide_version":"0.2.8","sm_hive365radio_version":"4.0.5a","sm_ion_version":"1.2.1a","sm_killstreak_amount":"10","sm_ks_version":"1.8","sm_lazer_version":"1.3.2a","sm_lenny_version":"1.1.0","sm_necromash_version":"1.0","sm_nextmap":"jump_academy2_rc8","sm_notele_version":"1.00","sm_octree_version":"0.1.4","sm_outline_version":"1.2.0","sm_panzerrockets_version":"0.2.1","sm_plungerjumper_version":"0.1.7","sm_projectilecollision_version":"1.0.11","sm_projectilesize_healthkits":"1","sm_projectilesize_maxsize":"500","sm_projectilesize_minsize":"0.01","sm_projectilesize_version":"1","sm_sb_version":"1.2.2","sm_setclass_chat":"1","sm_setclass_log":"1","sm_setclass_version":"1.2.2","sm_setspeed_version":"1.4.0","sm_soundcloud_version":"1.7.2","sm_sourcesleuth_version":"1.7.0","sm_spawnbuilding":"1.0.3","sm_spec_version":"2.1.2","sm_speclist_version":"1.1.2a","sm_speedo_version":"0.3.3","sm_speedshotassist_version":"0.2.0","sm_spray_version":"1.2.3a","sm_ssh_version":"1.2.3a","sm_tf2_rof_version":"1.2","sm_tidychat_version":"0.5","sourcecomms_version":"1.7.0","sourcemod_version":"1.11.0.6906","steam_id":90162905185619977,"steamappid":440,"stripper_version":"1.2.2","sv_accelerate":"10","sv_airaccelerate":"10","sv_alltalk":"1","sv_bounce":"0","sv_cheats":"0","sv_contact":"admin@jumpacademy.tf","sv_footsteps":"1","sv_friction":"4","sv_gravity":"800","sv_maxspeed":"320","sv_maxusrcmdprocessticks":"24","sv_noclipaccelerate":"5","sv_noclipspeed":"5","sv_password":"0","sv_pausable":"0","sv_registration_message":"No account specified","sv_registration_successful":"0","sv_rollangle":"0","sv_rollspeed":"200","sv_sb_enabled":"1","sv_sb_logging":"1","sv_sb_prop_limit":"100","sv_specaccelerate":"5","sv_specnoclip":"1","sv_specspeed":"3","sv_steamgroup":"","sv_stepsize":"18","sv_stopspeed":"100","sv_tags":"academy,alltalk,bots,cp,fastdl,jump,jumpacademy,jumpbot,nocrits,respawntimes,rocket,syncr","sv_voiceenable":"1","sv_vote_quorum_ratio":"0.6","sv_wateraccelerate":"10","sv_waterfriction":"1","syncr_version":"0.8.9","tauntspeed_version":"1.0.0","tf2attributes_version":"1.3.3@nosoop-1.7.0","tf2items_giveweapon_version":"3.14159","tf2items_manager":"1","tf2items_manager_version":"1.4.1","tf2items_version":"1.6.4","tf_allow_player_name_change":"1","tf_allow_player_use":"1","tf_arena_change_limit":"1","tf_arena_first_blood":"1","tf_arena_force_class":"0","tf_arena_max_streak":"3","tf_arena_override_cap_enable_time":"-1","tf_arena_preround_time":"10","tf_arena_round_time":"0","tf_arena_use_queue":"1","tf_beta_content":"0","tf_birthday":"0","tf_bot_count":"1","tf_classlimit":"0","tf_ctf_bonus_time":"10","tf_damage_disablespread":"1","tf_force_holidays_off":"0","tf_gamemode_arena":"0","tf_gamemode_cp":"1","tf_gamemode_ctf":"0","tf_gamemode_misc":"0","tf_gamemode_mvm":"0","tf_gamemode_passtime":"0","tf_gamemode_payload":"0","tf_gamemode_pd":"0","tf_gamemode_rd":"0","tf_gamemode_sd":"0","tf_gamemode_tc":"0","tf_gravetalk":"1","tf_halloween_allow_truce_during_boss_event":"0","tf_max_charge_speed":"750","tf_medieval":"0","tf_medieval_autorp":"1","tf_mm_servermode":"0","tf_mm_strict":"0","tf_mm_trusted":"0","tf_mvm_death_penalty":"0","tf_mvm_min_players_to_start":"3","tf_overtime_nag":"0","tf_passtime_ball_damping_scale":"0.01f","tf_passtime_ball_drag_coefficient":"0.01f","tf_passtime_ball_inertia_scale":"1.0f","tf_passtime_ball_mass":"1.0f","tf_passtime_ball_model":"models\/passtime\/ball\/passtime_ball.mdl","tf_passtime_ball_reset_time":"15","tf_passtime_ball_rotdamping_scale":"1.0f","tf_passtime_ball_seek_range":"128","tf_passtime_ball_seek_speed_factor":"3f","tf_passtime_ball_sphere_collision":"1","tf_passtime_ball_sphere_radius":"7.2f","tf_passtime_ball_takedamage":"1","tf_passtime_ball_takedamage_force":"800.0f","tf_passtime_experiment_autopass":"0","tf_passtime_experiment_instapass":"0","tf_passtime_experiment_instapass_charge":"0","tf_passtime_experiment_telepass":"0","tf_passtime_flinch_boost":"0","tf_passtime_mode_homing_lock_sec":"1.5f","tf_passtime_mode_homing_speed":"1000.0f","tf_passtime_overtime_idle_sec":"5","tf_passtime_pack_hp_per_sec":"2.0f","tf_passtime_pack_range":"512","tf_passtime_pack_speed":"1","tf_passtime_player_reticles_enemies":"1","tf_passtime_player_reticles_friends":"2","tf_passtime_powerball_airtimebonus":"40","tf_passtime_powerball_decay_delay":"10","tf_passtime_powerball_decayamount":"1","tf_passtime_powerball_decaysec":"4.5f","tf_passtime_powerball_decaysec_neutral":"1.5f","tf_passtime_powerball_maxairtimebonus":"100","tf_passtime_powerball_passpoints":"25","tf_passtime_powerball_threshold":"80","tf_passtime_save_stats":"0","tf_passtime_score_crit_sec":"5.0f","tf_passtime_scores_per_round":"5","tf_passtime_speedboost_on_get_ball_time":"2.0f","tf_passtime_steal_on_melee":"1","tf_passtime_teammate_steal_time":"45","tf_passtime_throwarc_demoman":"0.15f","tf_passtime_throwarc_engineer":"0.2f","tf_passtime_throwarc_heavy":"0.175f","tf_passtime_throwarc_medic":"0.0f","tf_passtime_throwarc_pyro":"0.1f","tf_passtime_throwarc_scout":"0.1f","tf_passtime_throwarc_sniper":"0.0f","tf_passtime_throwarc_soldier":"0.1f","tf_passtime_throwarc_spy":"0.0f","tf_passtime_throwspeed_demoman":"850.0f","tf_passtime_throwspeed_engineer":"850.0f","tf_passtime_throwspeed_heavy":"850.0f","tf_passtime_throwspeed_medic":"900.0f","tf_passtime_throwspeed_pyro":"750.0f","tf_passtime_throwspeed_scout":"700.0f","tf_passtime_throwspeed_sniper":"900.0f","tf_passtime_throwspeed_soldier":"800.0f","tf_passtime_throwspeed_spy":"900.0f","tf_passtime_throwspeed_velocity_scale":"0.33f","tf_playergib":"1","tf_powerup_mode":"0","tf_server_identity_disable_quickplay":"0","tf_spawn_glows_duration":"10","tf_spec_xray":"1","tf_spells_enabled":"0","tf_tauntem_version":"2.0a","tf_use_fixed_weaponspreads":"1","tf_weapon_criticals":"0","tf_weapon_criticals_melee":"1","thirdperson_version":"2.1.0","tv_enable":"0","tv_password":"1","tv_relaypassword":"0","ufov_version":"1.2.0a","version":"7431962","webshortcutsredux_version":"1.1","wranglemultiple_version":"1.00","x_version":"0.3.0"}} \ No newline at end of file diff --git a/tests/Protocols/Providers/Sco/1_response.txt b/tests/Protocols/Providers/Sco/1_response.txt new file mode 100644 index 00000000..5e900452 Binary files /dev/null and b/tests/Protocols/Providers/Sco/1_response.txt differ diff --git a/tests/Protocols/Providers/Sco/1_result.json b/tests/Protocols/Providers/Sco/1_result.json new file mode 100644 index 00000000..3bc7e004 --- /dev/null +++ b/tests/Protocols/Providers/Sco/1_result.json @@ -0,0 +1 @@ +{"176.9.61.5:27027":{"adminsfile":"admins.txt","allow_spectators":"1.0","coop":"0","deathmatch":"1","dedicated":"d","edgefriction":"2","game_descr":"Sven Co-op 5.25","game_dir":"svencoop","game_id":225840,"gamebuild":"7016","gamename":"Sven Co-op","gameversion":"5.25","gameversionnum":"5.25","gq_address":"176.9.61.5","gq_joinlink":"steam:\/\/connect\/176.9.61.5:27027\/","gq_name":"Sven Co-op","gq_online":true,"gq_port_client":27027,"gq_port_query":27028,"gq_protocol":"source","gq_transport":"udp","gq_type":"sco","hostname":"pixelgamer.eu | SC [VIP] [Custom] [Fun] | Fast DL","map":"kh3","mapvotecfgfile":"mapvote.cfg","max_players":16,"max_queries_sec":"1","max_queries_sec_global":"1","max_queries_window":"1","mp_banana":"1","mp_consistency":"0","mp_footsteps":"1","mp_logfile":"1","mp_nextmap_cycle":"halloween_hospital","mp_notimelimit":"0.0","num_bots":0,"num_players":0,"num_rules":45,"os":"w","password":1,"pausable":"0","port":27028,"protocol":17,"secure":1,"skillcfgfile":"skill.cfg","steam_id":90162375546999811,"steamappid":0,"sv_accelerate":"10","sv_admin_icon":"gfx\/icons\/admin.tga","sv_aim":"0","sv_airaccelerate":"10","sv_allowupload":"1","sv_alltalk":"0","sv_bounce":"1","sv_cheats":"2","sv_clienttrace":"1","sv_contact":"","sv_friction":"4","sv_gravity":"800","sv_logblocks":"0","sv_maxrate":"100000","sv_maxspeed":"270","sv_minrate":"0","sv_password":"1","sv_proxies":"1","sv_stepsize":"18","sv_stopspeed":"100","sv_uploadmax":"0.5","sv_voiceenable":"1","sv_wateraccelerate":"10","sv_waterfriction":"1","version":"5.0.1.7"}} \ No newline at end of file diff --git a/tests/Protocols/Providers/Stormworks/1_response.txt b/tests/Protocols/Providers/Stormworks/1_response.txt new file mode 100644 index 00000000..2eb9771e Binary files /dev/null and b/tests/Protocols/Providers/Stormworks/1_response.txt differ diff --git a/tests/Protocols/Providers/Stormworks/1_result.json b/tests/Protocols/Providers/Stormworks/1_result.json new file mode 100644 index 00000000..ccd353c3 --- /dev/null +++ b/tests/Protocols/Providers/Stormworks/1_result.json @@ -0,0 +1 @@ +{"23.88.96.146:28015":{"dedicated":"d","game_descr":"Stormworks","game_dir":"Stormworks","game_id":573090,"gq_address":"23.88.96.146","gq_joinlink":"steam:\/\/connect\/23.88.96.146:28015\/","gq_name":"Stormworks","gq_online":true,"gq_port_client":28015,"gq_port_query":28016,"gq_protocol":"source","gq_transport":"udp","gq_type":"stormworks","hostname":"Stormworks-Server","keywords":"v1.5.9-0-64","map":"Career","max_players":32,"num_bots":0,"num_players":0,"os":"w","password":0,"port":28015,"protocol":17,"secure":0,"steam_id":90162922181099528,"steamappid":0,"version":"1.0.0.0"}} \ No newline at end of file diff --git a/tests/Protocols/Sco.php b/tests/Protocols/Sco.php new file mode 100644 index 00000000..da44c874 --- /dev/null +++ b/tests/Protocols/Sco.php @@ -0,0 +1,49 @@ +. + */ + +namespace GameQ\Tests\Protocols; + +/** + * Test Class for Sven Co-op + * + * @package GameQ\Tests\Protocols + */ +class Sco extends Base +{ + /** + * Test responses for Sven Co-op + * + * @dataProvider loadData + * + * @param $responses + * @param $result + */ + public function testResponses($responses, $result) + { + // Pull the first key off the array this is the server ip:port + $server = key($result); + + $testResult = $this->queryTest( + $server, + 'sco', + $responses + ); + + $this->assertEquals($result[$server], $testResult); + } +} diff --git a/tests/Protocols/Stormworks.php b/tests/Protocols/Stormworks.php new file mode 100644 index 00000000..25e1eae6 --- /dev/null +++ b/tests/Protocols/Stormworks.php @@ -0,0 +1,49 @@ +. + */ + +namespace GameQ\Tests\Protocols; + +/** + * Test Class for Stormworks + * + * @package GameQ\Tests\Protocols + */ +class Stormworks extends Base +{ + /** + * Test responses for Stormworks + * + * @dataProvider loadData + * + * @param $responses + * @param $result + */ + public function testResponses($responses, $result) + { + // Pull the first key off the array this is the server ip:port + $server = key($result); + + $testResult = $this->queryTest( + $server, + 'stormworks', + $responses + ); + + $this->assertEquals($result[$server], $testResult); + } +}