#include maps\mp\zombies\_zm_weapon_locker; #include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; #include maps\mp\zombies\_zm_magicbox; #include maps\mp\zombies\_zm_weapons; #include maps\mp\zombies\_zm_stats; #include maps\mp\zombies\_zm_unitrigger; #include maps\mp\zombies\_zm_audio; triggerweaponslockerisvalidweaponpromptupdate(player, weaponname) { self thread show_current_weapon(player); retrievingweapon = player wl_has_stored_weapondata(); if (!retrievingweapon) { weaponname = player get_nonalternate_weapon(weaponname); if (!triggerweaponslockerisvalidweapon(weaponname)) self sethintstring(&"ZOMBIE_WEAPON_LOCKER_DENY"); else self sethintstring(&"ZOMBIE_WEAPON_LOCKER_STORE"); } else { weapondata = player wl_get_stored_weapondata(); if (isdefined(level.remap_weapon_locker_weapons)) weapondata = remap_weapon(weapondata, level.remap_weapon_locker_weapons); weapontogive = weapondata["name"]; primaries = player getweaponslistprimaries(); maxweapons = get_player_weapon_limit(player); weaponname = player get_nonalternate_weapon(weaponname); if (isdefined(primaries) && primaries.size >= maxweapons || weapontogive == weaponname) { if (!triggerweaponslockerisvalidweapon(weaponname)) { self sethintstring(&"ZOMBIE_WEAPON_LOCKER_DENY"); return; } } self sethintstring(&"ZOMBIE_WEAPON_LOCKER_GRAB"); } } show_current_weapon(player) { stub = self.stub; if (!isDefined(stub.weaponlockerhud)) { stub.weaponlockerhud = []; } num = player getentitynumber(); displayname = &"MPUI_NONE"; if (player wl_has_stored_weapondata()) { weapondata = player wl_get_stored_weapondata(); if (isdefined(level.remap_weapon_locker_weapons)) weapondata = remap_weapon(weapondata, level.remap_weapon_locker_weapons); displayname = getweapondisplayname(weapondata["name"]); } if (isDefined(stub.weaponlockerhud[num])) { stub.weaponlockerhud[num] settext(displayname); return; } hud = newclienthudelem(player); hud.alignx = "center"; hud.aligny = "middle"; hud.horzalign = "center"; hud.vertalign = "bottom"; hud.y = -100; hud.foreground = 1; hud.hidewheninmenu = 1; hud.font = "default"; hud.fontscale = 1; hud.alpha = 1; hud.color = (1, 1, 1); hud.label = &"ZOMBIE_HUD_PLACED_WEAPON"; hud settext(displayname); stub.weaponlockerhud[num] = hud; while (isDefined(self)) { if (!player isTouching(self) || !is_player_valid(player) || player isSprinting() || player isThrowingGrenade()) { hud.alpha = 0; wait 0.05; continue; } hud.alpha = 1; wait 0.05; } stub.weaponlockerhud[num] destroy(); stub.weaponlockerhud[num] = undefined; } wl_set_stored_weapondata(weapondata) { name = weapondata["name"]; dw_name = weaponDualWieldWeaponName(name); alt_name = weaponAltWeaponName(name); clip_missing = weaponClipSize(name) - weapondata["clip"]; if (clip_missing > weapondata["stock"]) { clip_missing = weapondata["stock"]; } weapondata["clip"] += clip_missing; weapondata["stock"] -= clip_missing; if (dw_name != "none") { clip_dualwield_missing = weaponClipSize(dw_name) - weapondata["lh_clip"]; if (clip_dualwield_missing > weapondata["stock"]) { clip_dualwield_missing = weapondata["stock"]; } weapondata["lh_clip"] += clip_dualwield_missing; weapondata["stock"] -= clip_dualwield_missing; } if (alt_name != "none") { clip_alt_missing = weaponClipSize(alt_name) - weapondata["alt_clip"]; if (clip_alt_missing > weapondata["alt_stock"]) { clip_alt_missing = weapondata["alt_stock"]; } weapondata["alt_clip"] += clip_alt_missing; weapondata["alt_stock"] -= clip_alt_missing; } if (level.weapon_locker_online) self set_stored_weapondata(weapondata, level.weapon_locker_map); else self.stored_weapon_data = weapondata; }