From f83ba88310179c4167e1e23273ba8c438e668972 Mon Sep 17 00:00:00 2001 From: Lucas Eriksson Date: Sun, 3 Feb 2019 21:43:56 +0100 Subject: [PATCH 1/6] mallmadness: Update script module selection --- scripts/main.nut | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/scripts/main.nut b/scripts/main.nut index 148c492..ffb9869 100644 --- a/scripts/main.nut +++ b/scripts/main.nut @@ -42,21 +42,22 @@ function random( min = 0, max = RAND_MAX ) { dofile("./scripts/scripts.nut") -scripts_load("base/freeroam.nut") -scripts_load("module/interiors.nut") -scripts_load("module/vehicle_spawner.nut") +//scripts_load("base/freeroam.nut") +scripts_load("base/mallmadness.nut") +//scripts_load("module/interiors.nut") +//scripts_load("module/vehicle_spawner.nut") scripts_load("module/emote.nut") -scripts_load("module/teleporter.nut") +//scripts_load("module/teleporter.nut") scripts_load("module/spectate.nut") -scripts_load("module/stadium.nut") +//scripts_load("module/stadium.nut") //scripts_load("module/auto_class.nut") //FIXME: Clashes with spectate scripts_load("module/chat.nut") -scripts_load("module/goto.nut") -scripts_load("module/stunting.nut") -scripts_load("module/skin.nut") -scripts_load("module/color.nut") -scripts_load("module/ramp.nut") -scripts_load("module/taxi_stunting.nut") +//scripts_load("module/goto.nut") +//scripts_load("module/stunting.nut") +//scripts_load("module/skin.nut") +//scripts_load("module/color.nut") +//scripts_load("module/ramp.nut") +//scripts_load("module/taxi_stunting.nut") scripts_load("module/admin.nut") //scripts_load("module/debug.nut") print("Scripts loaded") From c57ac48d94960cd468cb0652511ad737418f1018 Mon Sep 17 00:00:00 2001 From: Lucas Eriksson Date: Sun, 3 Feb 2019 21:57:49 +0100 Subject: [PATCH 2/6] mallmadness: Add the actual mallmadness .nut --- scripts/base/mallmadness.nut | 100 +++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 scripts/base/mallmadness.nut diff --git a/scripts/base/mallmadness.nut b/scripts/base/mallmadness.nut new file mode 100644 index 0000000..74405bd --- /dev/null +++ b/scripts/base/mallmadness.nut @@ -0,0 +1,100 @@ +// + +weaponModelIDs <- [293, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 291, 271, 272, 273, 274, 275, 277, + 278, 279, 281, 282, 283, 284, 280, 276, 285, 286, + 287, 288, 289, 290]; + +weaponPickupAmmo <- [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 3, 3, 3, 2, 10, 8, 8, + 12, 12, 30, 30, 30, 30, 30, 30, 14, 12, + 4, 50, 60, 60]; + +spawns <- [Vector(459.92, 1005.26, 19.1811), + Vector(456.142, 1090.34, 18.6455), + Vector(453.955, 1102.85, 19.2268), + Vector(362.586, 1060.88, 19.1874), + Vector(464.045, 1202.4, 19.0113), + Vector(428.258, 1224.51, 25.3848), + Vector(373.796, 1244.51, 25.6426), + Vector(356.106, 1111.4, 25.3876), + Vector(414.485, 1138.62, 22.7296), + Vector(431.755, 1078.82, 19.0915)]; + +alive <- array(100, null); +droppedWeapons <- {}; + +function onScriptLoad() { + + SetGameModeName("Mall Madness"); + + AddClass(1, RGB(100,149,237), 64, Vector(-421.729, -485.533, 11.0655), 0, + 6,1, 19,20, 23,90); + AddClass(2, RGB(100,149,237), 65, Vector(-421.729, -485.533, 11.0655), 0, + 3,1, 19,20, 24,90); + AddClass(3, RGB(100,149,237), 66, Vector(-421.729, -485.533, 11.0655), 0, + 8,1, 20,15, 23,90); + AddClass(4, RGB(100,149,237), 37, Vector(-421.729, -485.533, 11.0655), 0, + 9,1, 19,20, 22,90); + + SetVehiclesForcedRespawnHeight( 10000 ); + + SetFrameLimiter(true); +} + +function onPlayerJoin( player ) { + MessagePlayer( "[#FF0000]Welcome to this VC-MP Mall Madness Server. ", player ); + PrivMessage( player, "Have a look at /rules and /help before playing." ); +} + +function onPlayerPart( player, reason ) { + alive[player.ID] = null; +} + +function onPlayerCommand( player, cmd, text ) { + cmd = cmd.tolower(); + if (cmd == "rules") { + Message( "No disturbing other's play. Kids only." ); + } else if (cmd == "help") { + MessagePlayer("[#8080A0]/rules /help", player); + } +} + +function onPlayerSpawn( player ) { + local pos = spawns[rand() % spawns.len()]; + TeleportPlayer(player, pos, 0); + alive[player.ID] = true; +} + +function onPlayerHealthChange( player, lastHP, newHP ) { + if ( newHP < 1 && alive[player.ID]) { + alive[player.ID] = false; + local pos = player.Pos; + local xOffset = 0; + local zOffset = 0; + local pickup = null; + for (local i = 0; i <= 8; ++i) { + if ( player.GetWeaponAtSlot(i) ) { + pickup = CreatePickup(weaponModelIDs[ player.GetWeaponAtSlot(i) ], + player.World, weaponPickupAmmo[ player.GetWeaponAtSlot(i) ], + pos.x+xOffset, pos.y, pos.z+zOffset, 253, true); + ++zOffset; + if (!(zOffset %= 2)) { + ++xOffset; + } + if ( pickup ) { + droppedWeapons.rawset( pickup.ID, pickup); + } + } + } + } +} + +function onPickupClaimPicked( player, pickup ) { + if ( alive[player.ID] ) { + droppedWeapons.rawdelete( pickup.ID ); + pickup.Remove(); + return 1; + } + return 0; +} From 013d50ea3f3081eec58c6edb7aa2d9dc264a45c5 Mon Sep 17 00:00:00 2001 From: Lucas Eriksson Date: Tue, 5 Feb 2019 21:33:46 +0100 Subject: [PATCH 3/6] mallmadness: Some refactoring --- scripts/base/mallmadness.nut | 67 ------------------------------- scripts/main.nut | 4 +- scripts/module/random_spawn.nut | 15 +++++++ scripts/module/weapon_pickups.nut | 49 ++++++++++++++++++++++ 4 files changed, 67 insertions(+), 68 deletions(-) create mode 100644 scripts/module/random_spawn.nut create mode 100644 scripts/module/weapon_pickups.nut diff --git a/scripts/base/mallmadness.nut b/scripts/base/mallmadness.nut index 74405bd..7c4fab0 100644 --- a/scripts/base/mallmadness.nut +++ b/scripts/base/mallmadness.nut @@ -1,29 +1,5 @@ // -weaponModelIDs <- [293, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 291, 271, 272, 273, 274, 275, 277, - 278, 279, 281, 282, 283, 284, 280, 276, 285, 286, - 287, 288, 289, 290]; - -weaponPickupAmmo <- [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 3, 3, 3, 2, 10, 8, 8, - 12, 12, 30, 30, 30, 30, 30, 30, 14, 12, - 4, 50, 60, 60]; - -spawns <- [Vector(459.92, 1005.26, 19.1811), - Vector(456.142, 1090.34, 18.6455), - Vector(453.955, 1102.85, 19.2268), - Vector(362.586, 1060.88, 19.1874), - Vector(464.045, 1202.4, 19.0113), - Vector(428.258, 1224.51, 25.3848), - Vector(373.796, 1244.51, 25.6426), - Vector(356.106, 1111.4, 25.3876), - Vector(414.485, 1138.62, 22.7296), - Vector(431.755, 1078.82, 19.0915)]; - -alive <- array(100, null); -droppedWeapons <- {}; - function onScriptLoad() { SetGameModeName("Mall Madness"); @@ -47,10 +23,6 @@ function onPlayerJoin( player ) { PrivMessage( player, "Have a look at /rules and /help before playing." ); } -function onPlayerPart( player, reason ) { - alive[player.ID] = null; -} - function onPlayerCommand( player, cmd, text ) { cmd = cmd.tolower(); if (cmd == "rules") { @@ -59,42 +31,3 @@ function onPlayerCommand( player, cmd, text ) { MessagePlayer("[#8080A0]/rules /help", player); } } - -function onPlayerSpawn( player ) { - local pos = spawns[rand() % spawns.len()]; - TeleportPlayer(player, pos, 0); - alive[player.ID] = true; -} - -function onPlayerHealthChange( player, lastHP, newHP ) { - if ( newHP < 1 && alive[player.ID]) { - alive[player.ID] = false; - local pos = player.Pos; - local xOffset = 0; - local zOffset = 0; - local pickup = null; - for (local i = 0; i <= 8; ++i) { - if ( player.GetWeaponAtSlot(i) ) { - pickup = CreatePickup(weaponModelIDs[ player.GetWeaponAtSlot(i) ], - player.World, weaponPickupAmmo[ player.GetWeaponAtSlot(i) ], - pos.x+xOffset, pos.y, pos.z+zOffset, 253, true); - ++zOffset; - if (!(zOffset %= 2)) { - ++xOffset; - } - if ( pickup ) { - droppedWeapons.rawset( pickup.ID, pickup); - } - } - } - } -} - -function onPickupClaimPicked( player, pickup ) { - if ( alive[player.ID] ) { - droppedWeapons.rawdelete( pickup.ID ); - pickup.Remove(); - return 1; - } - return 0; -} diff --git a/scripts/main.nut b/scripts/main.nut index ffb9869..21021a0 100644 --- a/scripts/main.nut +++ b/scripts/main.nut @@ -48,10 +48,12 @@ scripts_load("base/mallmadness.nut") //scripts_load("module/vehicle_spawner.nut") scripts_load("module/emote.nut") //scripts_load("module/teleporter.nut") -scripts_load("module/spectate.nut") +//scripts_load("module/spectate.nut") //scripts_load("module/stadium.nut") //scripts_load("module/auto_class.nut") //FIXME: Clashes with spectate scripts_load("module/chat.nut") +scripts_load("module/random_spawn.nut") +scripts_load("module/weapon_pickups.nut") //scripts_load("module/goto.nut") //scripts_load("module/stunting.nut") //scripts_load("module/skin.nut") diff --git a/scripts/module/random_spawn.nut b/scripts/module/random_spawn.nut new file mode 100644 index 0000000..501d993 --- /dev/null +++ b/scripts/module/random_spawn.nut @@ -0,0 +1,15 @@ +spawns <- [Vector(459.92, 1005.26, 19.1811), + Vector(456.142, 1090.34, 18.6455), + Vector(453.955, 1102.85, 19.2268), + Vector(362.586, 1060.88, 19.1874), + Vector(464.045, 1202.4, 19.0113), + Vector(428.258, 1224.51, 25.3848), + Vector(373.796, 1244.51, 25.6426), + Vector(356.106, 1111.4, 25.3876), + Vector(414.485, 1138.62, 22.7296), + Vector(431.755, 1078.82, 19.0915)]; + +function onPlayerSpawn( player ) { + local pos = spawns[rand() % spawns.len()]; + TeleportPlayer(player, pos, 0); +} diff --git a/scripts/module/weapon_pickups.nut b/scripts/module/weapon_pickups.nut new file mode 100644 index 0000000..31fc0d8 --- /dev/null +++ b/scripts/module/weapon_pickups.nut @@ -0,0 +1,49 @@ +// No, these should not be in strict numerical order. +weaponModelIDs <- [293, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 291, 271, 272, 273, 274, 275, 277, + 278, 279, 281, 282, 283, 284, 280, 276, 285, 286, + 287, 288, 289, 290]; + +alive <- array(100, null); +droppedWeapons <- {}; + +function onPlayerSpawn( player ) { + alive[player.ID] = true; +} + +function onPlayerPart( player, reason ) { + alive[player.ID] = null; +} + +function onPlayerHealthChange( player, lastHP, newHP ) { + if ( newHP < 0.1 && alive[player.ID]) { + alive[player.ID] = false; + local pos = player.Pos; + local xOffset = 0; + local zOffset = 0; + local pickup = null; + for (local i = 0; i <= 8; ++i) { + if ( player.GetWeaponAtSlot(i) ) { + pickup = CreatePickup(weaponModelIDs[ player.GetWeaponAtSlot(i) ], + player.World, player.GetAmmoAtSlot(i), + pos.x+xOffset, pos.y, pos.z+zOffset, 255, true); + ++zOffset; + if (!(zOffset %= 2)) { + ++xOffset; + } + if ( pickup ) { + droppedWeapons.rawset( pickup.ID, pickup); + } + } + } + } +} + +function onPickupClaimPicked( player, pickup ) { + if ( alive[player.ID] ) { + droppedWeapons.rawdelete( pickup.ID ); + pickup.Remove(); + return 1; + } + return 0; +} From a3de91a773a5b677e152f0282a869dcc1f35f08c Mon Sep 17 00:00:00 2001 From: Lucas Eriksson Date: Tue, 5 Feb 2019 21:41:27 +0100 Subject: [PATCH 4/6] weapondrop: Place pickups in a ring --- scripts/module/weapon_pickups.nut | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/scripts/module/weapon_pickups.nut b/scripts/module/weapon_pickups.nut index 31fc0d8..5e153a5 100644 --- a/scripts/module/weapon_pickups.nut +++ b/scripts/module/weapon_pickups.nut @@ -19,18 +19,19 @@ function onPlayerHealthChange( player, lastHP, newHP ) { if ( newHP < 0.1 && alive[player.ID]) { alive[player.ID] = false; local pos = player.Pos; - local xOffset = 0; - local zOffset = 0; + local x; + local y; + local alpha; + local radius = 1.0; local pickup = null; for (local i = 0; i <= 8; ++i) { if ( player.GetWeaponAtSlot(i) ) { + alpha = (i / 8.0 * 2.0 * PI) + player.Angle; + x = pos.x + sin(alpha) * radius; + y = pos.y + cos(alpha) * radius; pickup = CreatePickup(weaponModelIDs[ player.GetWeaponAtSlot(i) ], player.World, player.GetAmmoAtSlot(i), - pos.x+xOffset, pos.y, pos.z+zOffset, 255, true); - ++zOffset; - if (!(zOffset %= 2)) { - ++xOffset; - } + x, y, pos.z, 255, true); if ( pickup ) { droppedWeapons.rawset( pickup.ID, pickup); } From f95b70719d9938afd6a350f09670227be75d8c4b Mon Sep 17 00:00:00 2001 From: Lucas Eriksson Date: Wed, 6 Feb 2019 14:11:38 +0100 Subject: [PATCH 5/6] mallmadness: Adjust class pool and selection camera --- scripts/base/mallmadness.nut | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/scripts/base/mallmadness.nut b/scripts/base/mallmadness.nut index 7c4fab0..d29fbb9 100644 --- a/scripts/base/mallmadness.nut +++ b/scripts/base/mallmadness.nut @@ -1,21 +1,27 @@ // -function onScriptLoad() { - - SetGameModeName("Mall Madness"); +skinIDs <- [ 9, 10, 11, 15, 16, + 26, 30, 31, 32, 33, + 34, 42, 44, 45, 50, + 71, 72, 139 ]; - AddClass(1, RGB(100,149,237), 64, Vector(-421.729, -485.533, 11.0655), 0, - 6,1, 19,20, 23,90); - AddClass(2, RGB(100,149,237), 65, Vector(-421.729, -485.533, 11.0655), 0, - 3,1, 19,20, 24,90); - AddClass(3, RGB(100,149,237), 66, Vector(-421.729, -485.533, 11.0655), 0, - 8,1, 20,15, 23,90); - AddClass(4, RGB(100,149,237), 37, Vector(-421.729, -485.533, 11.0655), 0, - 9,1, 19,20, 22,90); +function createClasses() { + local team = 0; + foreach (id in skinIDs) { + AddClass(team++, RGB(100,149,237), id, Vector(460, 1150, 35), 0, + (team % 6) + 3, 1, 21, 20, 23, 90); + } +} +function onScriptLoad() { + SetGameModeName("Mall Madness"); + createClasses(); SetVehiclesForcedRespawnHeight( 10000 ); - SetFrameLimiter(true); + + SetSpawnPlayerPos(460, 1150, 35); + SetSpawnCameraPos(460, 1155, 38); + SetSpawnCameraLook(460, 1150, 35); } function onPlayerJoin( player ) { From 5d34f450bd43bc09509744f6c5e3ff7cb9e02140 Mon Sep 17 00:00:00 2001 From: Lucas Eriksson Date: Fri, 8 Feb 2019 13:16:02 +0100 Subject: [PATCH 6/6] randomspawn: Add spawn jitter --- scripts/module/random_spawn.nut | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/module/random_spawn.nut b/scripts/module/random_spawn.nut index 501d993..1fa2742 100644 --- a/scripts/module/random_spawn.nut +++ b/scripts/module/random_spawn.nut @@ -11,5 +11,7 @@ spawns <- [Vector(459.92, 1005.26, 19.1811), function onPlayerSpawn( player ) { local pos = spawns[rand() % spawns.len()]; - TeleportPlayer(player, pos, 0); + local offsetY = ((rand() % 40) - 20) / 10; + local offsetX = ((rand() % 40) - 20) / 10; + TeleportPlayer(player, Vector(pos.x+offsetX, pos.y+offsetY, pos.z), 0); }