mirror of
https://github.com/nzp-team/quakec.git
synced 2024-11-22 20:01:34 +00:00
SERVER: Only allow one player to hold the Wunderwaffe DG-2 at a time
This commit is contained in:
parent
b374fdcfca
commit
6d03beca80
3 changed files with 41 additions and 4 deletions
|
@ -417,9 +417,10 @@ float isPowerOn;
|
|||
|
||||
var struct mbox_struct
|
||||
{
|
||||
float weapon_id; // ID for the relevant weapon.
|
||||
float allowed; // 1 for allowed, 0 for denied.
|
||||
float rarity; // 0-100 (float) percent change for obtaining. -1 for normal.
|
||||
float weapon_id; // ID for the relevant weapon.
|
||||
float allowed; // 1 for allowed, 0 for denied.
|
||||
float rarity; // 0-100 (float) percent change for obtaining. -1 for normal.
|
||||
float already_obtained; // true if only one allowed and a client already holds it.
|
||||
} mystery_box_weapons[MAX_BOX_WEAPONS] = {};
|
||||
|
||||
float mystery_box_count;
|
||||
|
|
|
@ -135,7 +135,8 @@ float(entity user) MBOX_GetRandomBoxWeapon =
|
|||
{
|
||||
float weapon_index = rint((random() * (MAX_BOX_WEAPONS - 1)));
|
||||
float weapon_id = mystery_box_weapons[weapon_index].weapon_id;
|
||||
float weapon_allowed = mystery_box_weapons[weapon_index].allowed;
|
||||
float weapon_allowed = mystery_box_weapons[weapon_index].allowed &&
|
||||
!mystery_box_weapons[weapon_index].already_obtained;
|
||||
|
||||
if (weapon_allowed == true && !Weapon_PlayerHasWeapon(user, weapon_id, true))
|
||||
return weapon_id;
|
||||
|
@ -620,6 +621,22 @@ void() mystery_box_tp_spot =
|
|||
mystery_box_count++;
|
||||
};
|
||||
|
||||
void() MBOX_UpdatePosessionStatus =
|
||||
{
|
||||
entity player = find(world, classname, "player");
|
||||
|
||||
while(player != world) {
|
||||
for(float i = 0; i < MAX_BOX_WEAPONS; i++) {
|
||||
float weapon_id = mystery_box_weapons[i].weapon_id;
|
||||
mystery_box_weapons[i].already_obtained = false;
|
||||
if (Weapon_PlayerHasWeapon(player, weapon_id, true) && WepDef_OnlyOneAllowed(weapon_id)) {
|
||||
mystery_box_weapons[i].already_obtained = true;
|
||||
}
|
||||
}
|
||||
player = find(player, classname, "player");
|
||||
}
|
||||
}
|
||||
|
||||
void() MBOX_Touch =
|
||||
{
|
||||
entity tempe;
|
||||
|
@ -654,6 +671,7 @@ void() MBOX_Touch =
|
|||
self.owner = other;
|
||||
MBOX_PlayOpenAnimation();
|
||||
Create_Floating_Weapon();
|
||||
MBOX_UpdatePosessionStatus();
|
||||
self.spins++;
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -4253,6 +4253,24 @@ float(float wep) GetWeaponZoomAmount =
|
|||
return 0;
|
||||
}
|
||||
|
||||
//
|
||||
// WepDef_OnlyOneAllowed(weapon)
|
||||
// Returns true if server is only allowed to distribute
|
||||
// this weapon to one player at a time (e.g., from Box).
|
||||
//
|
||||
float(float weapon) WepDef_OnlyOneAllowed =
|
||||
{
|
||||
switch(weapon) {
|
||||
case W_TESLA:
|
||||
case W_DG3:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//
|
||||
// WepDef_GetWeaponIDFromName(weapon)
|
||||
// Takes a string input and returns the weapon ID
|
||||
|
|
Loading…
Reference in a new issue