mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-11 07:37:56 -05:00
Mule Kick: move weapon slot update into separate function
Mule Kick: update weapon slots right before taking additional weapon Mule Kick: update weapon slots if player does not have Mule Kick Mule Kick: don't update weapon slots if player is spectating
This commit is contained in:
@ -2637,18 +2637,27 @@ additionalprimaryweapon_indicator()
|
|||||||
vars = [];
|
vars = [];
|
||||||
vars["prev_weapon_name"] = "";
|
vars["prev_weapon_name"] = "";
|
||||||
|
|
||||||
self.weapon_slots = [];
|
|
||||||
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = undefined;
|
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
|
if (self.sessionstate == "spectator")
|
||||||
|
{
|
||||||
|
if (vars["prev_weapon_name"] != "")
|
||||||
|
{
|
||||||
|
self setClientDvar("additionalPrimaryWeaponName", "");
|
||||||
|
vars["prev_weapon_name"] = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
self additionalprimaryweapon_update_weapon_slots();
|
||||||
|
|
||||||
if (!self hasPerk("specialty_additionalprimaryweapon"))
|
if (!self hasPerk("specialty_additionalprimaryweapon"))
|
||||||
{
|
{
|
||||||
if (vars["prev_weapon_name"] != "")
|
if (vars["prev_weapon_name"] != "")
|
||||||
{
|
{
|
||||||
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = undefined;
|
|
||||||
self setClientDvar("additionalPrimaryWeaponName", "");
|
self setClientDvar("additionalPrimaryWeaponName", "");
|
||||||
vars["prev_weapon_name"] = "";
|
vars["prev_weapon_name"] = "";
|
||||||
}
|
}
|
||||||
@ -2656,66 +2665,12 @@ additionalprimaryweapon_indicator()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
vars["primary_weapons_that_can_be_taken"] = [];
|
vars["weapon"] = self.weapon_to_take_by_losing_specialty_additionalprimaryweapon;
|
||||||
vars["primaryweapons"] = self getweaponslistprimaries();
|
|
||||||
|
|
||||||
for (i = 0; i < vars["primaryweapons"].size; i++)
|
if (!isDefined(vars["weapon"]))
|
||||||
{
|
|
||||||
if (maps\mp\zombies\_zm_weapons::is_weapon_included(vars["primaryweapons"][i]) || maps\mp\zombies\_zm_weapons::is_weapon_upgraded(vars["primaryweapons"][i]))
|
|
||||||
{
|
|
||||||
vars["primary_weapons_that_can_be_taken"][vars["primary_weapons_that_can_be_taken"].size] = vars["primaryweapons"][i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < self.weapon_slots.size; i++)
|
|
||||||
{
|
|
||||||
if (!self hasWeapon(self.weapon_slots[i]))
|
|
||||||
{
|
|
||||||
self.weapon_slots[i] = undefined;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// remove any trailing undefined slots
|
|
||||||
for (i = self.weapon_slots.size - 1; i >= 0; i--)
|
|
||||||
{
|
|
||||||
if (isDefined(self.weapon_slots[i]))
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
arrayRemoveIndex(self.weapon_slots[i], i);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < vars["primary_weapons_that_can_be_taken"].size; i++)
|
|
||||||
{
|
|
||||||
vars["weapon"] = vars["primary_weapons_that_can_be_taken"][i];
|
|
||||||
|
|
||||||
if (!isInArray(self.weapon_slots, vars["weapon"]))
|
|
||||||
{
|
|
||||||
vars["added"] = 0;
|
|
||||||
|
|
||||||
for (j = 0; j < self.weapon_slots.size; j++)
|
|
||||||
{
|
|
||||||
if (!isDefined(self.weapon_slots[j]))
|
|
||||||
{
|
|
||||||
vars["added"] = 1;
|
|
||||||
self.weapon_slots[j] = vars["weapon"];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!vars["added"])
|
|
||||||
{
|
|
||||||
self.weapon_slots[self.weapon_slots.size] = vars["weapon"];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (vars["primary_weapons_that_can_be_taken"].size < 3)
|
|
||||||
{
|
{
|
||||||
if (vars["prev_weapon_name"] != "")
|
if (vars["prev_weapon_name"] != "")
|
||||||
{
|
{
|
||||||
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = undefined;
|
|
||||||
self setClientDvar("additionalPrimaryWeaponName", "");
|
self setClientDvar("additionalPrimaryWeaponName", "");
|
||||||
vars["prev_weapon_name"] = "";
|
vars["prev_weapon_name"] = "";
|
||||||
}
|
}
|
||||||
@ -2723,18 +2678,99 @@ additionalprimaryweapon_indicator()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
vars["weapon"] = self.weapon_slots[self.weapon_slots.size - 1];
|
|
||||||
vars["weapon_name"] = getweapondisplayname(vars["weapon"]);
|
vars["weapon_name"] = getweapondisplayname(vars["weapon"]);
|
||||||
|
|
||||||
if (vars["prev_weapon_name"] != vars["weapon_name"])
|
if (vars["prev_weapon_name"] != vars["weapon_name"])
|
||||||
{
|
{
|
||||||
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = vars["weapon"];
|
|
||||||
self setClientDvar("additionalPrimaryWeaponName", vars["weapon_name"]);
|
self setClientDvar("additionalPrimaryWeaponName", vars["weapon_name"]);
|
||||||
vars["prev_weapon_name"] = vars["weapon_name"];
|
vars["prev_weapon_name"] = vars["weapon_name"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
additionalprimaryweapon_update_weapon_slots()
|
||||||
|
{
|
||||||
|
if (!isDefined(self.weapon_slots))
|
||||||
|
{
|
||||||
|
self.weapon_slots = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
vars = [];
|
||||||
|
vars["primaries_that_can_be_taken"] = [];
|
||||||
|
vars["primaries"] = self getweaponslistprimaries();
|
||||||
|
|
||||||
|
for (i = 0; i < vars["primaries"].size; i++)
|
||||||
|
{
|
||||||
|
if (maps\mp\zombies\_zm_weapons::is_weapon_included(vars["primaries"][i]) || maps\mp\zombies\_zm_weapons::is_weapon_upgraded(vars["primaries"][i]))
|
||||||
|
{
|
||||||
|
vars["primaries_that_can_be_taken"][vars["primaries_that_can_be_taken"].size] = vars["primaries"][i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < self.weapon_slots.size; i++)
|
||||||
|
{
|
||||||
|
if (!self hasWeapon(self.weapon_slots[i]))
|
||||||
|
{
|
||||||
|
self.weapon_slots[i] = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove any trailing undefined slots
|
||||||
|
for (i = self.weapon_slots.size - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
if (isDefined(self.weapon_slots[i]))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
arrayRemoveIndex(self.weapon_slots[i], i);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < vars["primaries_that_can_be_taken"].size; i++)
|
||||||
|
{
|
||||||
|
vars["weapon"] = vars["primaries_that_can_be_taken"][i];
|
||||||
|
|
||||||
|
if (!isInArray(self.weapon_slots, vars["weapon"]))
|
||||||
|
{
|
||||||
|
vars["added"] = 0;
|
||||||
|
|
||||||
|
for (j = 0; j < self.weapon_slots.size; j++)
|
||||||
|
{
|
||||||
|
if (!isDefined(self.weapon_slots[j]))
|
||||||
|
{
|
||||||
|
vars["added"] = 1;
|
||||||
|
self.weapon_slots[j] = vars["weapon"];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!vars["added"])
|
||||||
|
{
|
||||||
|
self.weapon_slots[self.weapon_slots.size] = vars["weapon"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vars["num_weapons"] = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < self.weapon_slots.size; i++)
|
||||||
|
{
|
||||||
|
if (isDefined(self.weapon_slots[i]))
|
||||||
|
{
|
||||||
|
vars["num_weapons"]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vars["num_weapons"] >= 3)
|
||||||
|
{
|
||||||
|
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = self.weapon_slots[self.weapon_slots.size - 1];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self.weapon_to_take_by_losing_specialty_additionalprimaryweapon = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
additionalprimaryweapon_stowed_weapon_refill()
|
additionalprimaryweapon_stowed_weapon_refill()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon("disconnect");
|
||||||
|
@ -1217,6 +1217,8 @@ take_additionalprimaryweapon()
|
|||||||
if (isdefined(self._retain_perks) && self._retain_perks || isdefined(self._retain_perks_array) && (isdefined(self._retain_perks_array["specialty_additionalprimaryweapon"]) && self._retain_perks_array["specialty_additionalprimaryweapon"]))
|
if (isdefined(self._retain_perks) && self._retain_perks || isdefined(self._retain_perks_array) && (isdefined(self._retain_perks_array["specialty_additionalprimaryweapon"]) && self._retain_perks_array["specialty_additionalprimaryweapon"]))
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
|
self scripts\zm\_zm_reimagined::additionalprimaryweapon_update_weapon_slots();
|
||||||
|
|
||||||
weapon_to_take = self.weapon_to_take_by_losing_specialty_additionalprimaryweapon;
|
weapon_to_take = self.weapon_to_take_by_losing_specialty_additionalprimaryweapon;
|
||||||
|
|
||||||
if (!isDefined(weapon_to_take) || !self hasWeapon(weapon_to_take))
|
if (!isDefined(weapon_to_take) || !self hasWeapon(weapon_to_take))
|
||||||
|
Reference in New Issue
Block a user