Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "zcommon.acs"
- #library "quakebpak"
- #include "commonFuncs.h"
- #define WEPCOUNT 13
- #define AMMOCOUNT 4
- int WEAPONS[WEPCOUNT] =
- {
- "Chainsaw",
- "Pistol",
- "Shotgun",
- "SuperShotgun",
- "Chaingun",
- "Minigun",
- "RocketLauncher",
- "GrenadeLauncher",
- "PlasmaRifle",
- "Railgun",
- "BFG9000",
- "BFG10k",
- };
- int WEPNAME[WEPCOUNT] =
- {
- "chainsaw",
- "pistol",
- "shotgun",
- "super shotgun",
- "chaingun",
- "minigun",
- "rocket launcher",
- "grenade launcher",
- "plasma rifle",
- "railgun",
- "BFG9000",
- "BFG10k",
- };
- int WEPAMMO[WEPCOUNT] =
- {
- "",
- "Clip",
- "Shell",
- "Shell",
- "Clip",
- "Clip",
- "RocketAmmo",
- "RocketAmmo",
- "Cell",
- "Cell",
- "Cell",
- "Cell",
- };
- int WEPAMMO2[WEPCOUNT] = {""};
- int AMMO[AMMOCOUNT] =
- {
- "Clip",
- "Shell",
- "RocketAmmo",
- "Cell",
- };
- int AMMONAME[AMMOCOUNT] =
- {
- "bullet",
- "shell",
- "rocket",
- "cell",
- };
- int pickupSlots[32] = {0};
- int prevAmmos[AMMOCOUNT] = {0}; // meant for clientside use
- function int weaponOut(void)
- {
- int i, w;
- for (i = 0; i < WEPCOUNT; i++)
- {
- w = WEAPONS[i];
- if (CheckWeapon(w))
- {
- return i;
- }
- }
- return "";
- }
- script 393 (int mode)
- {
- int pln = PlayerNumber();
- int i, j, k;
- int myX, myY, myZ;
- int packWepNum = -1;
- int packWep, packWepAmmo, packWepAmmo2, packWepAmmoCount, packWepAmmo2Count,
- packTID;
- int packCheck = 96 + pln;
- switch (mode)
- {
- case 0: // Drop
- packTID = unusedTID(60000, 70000);
- myX = GetActorX(0); myY = GetActorY(0); myZ = GetActorZ(0);
- Spawn("DropPack", myX, myY, myZ + 8.0, packTID);
- for (i = 0; i < AMMOCOUNT; i++)
- {
- j = CheckInventory(AMMO[i]);
- GiveActorAmmo(packTID, AMMO[i], j);
- }
- packWepNum = weaponOut();
- if (packWepNum != -1)
- {
- packWep = WEAPONS[packWepNum];
- packWepAmmo = WEPAMMO[packWepNum];
- packWepAmmo2 = WEPAMMO2[packWepNum];
- packWepAmmoCount = CheckInventory(packWepAmmo);
- packWepAmmo2Count= CheckInventory(packWepAmmo2);
- GiveActorInventory(packTID, packWep, 1);
- j = CheckActorInventory(packTID, packWepAmmo) - packWepAmmoCount;
- k = CheckActorInventory(packTID, packWepAmmo2) - packWepAmmo2Count;
- TakeActorInventory(packTID, packWepAmmo, j);
- TakeActorInventory(packTID, packWepAmmo2, k);
- }
- break;
- case 1: // Pickup
- packTID = ActivatorTID();
- SetActivatorToTarget(0);
- if (GetActorProperty(0, APROP_Health) <= 0) { break; }
- SetActivator(packTID);
- for (i = 0; i < WEPCOUNT; i++)
- {
- if (CheckInventory(WEAPONS[i]))
- {
- packWepNum = i;
- packWep = WEAPONS[i];
- packWepAmmo = WEPAMMO[i];
- packWepAmmo2= WEPAMMO2[i];
- packWepAmmoCount = CheckInventory(packWepAmmo);
- break;
- }
- }
- SetActivatorToTarget(0);
- if (packWepNum != -1)
- {
- j = CheckInventory(packWepAmmo);
- k = CheckInventory(packWepAmmo2);
- GiveInventory(packWep, 1);
- TakeInventory(packWepAmmo, CheckInventory(packWepAmmo)-j);
- TakeInventory(packWepAmmo2, CheckInventory(packWepAmmo2)-k);
- }
- for (i = 0; i < AMMOCOUNT; i++)
- {
- j = CheckActorInventory(packTID, AMMO[i]);
- ACS_ExecuteAlways(394, 0, packCheck, i, j);
- GiveAmmo(AMMO[i], j);
- }
- GiveInventory("PickingUpDropPack", packCheck);
- Delay(1);
- ActivatorSound("misc/w_pkup", 127);
- FadeRange(255,255,0, 0.125, 255,255,0, 0.0, 1.0/4);
- ACS_ExecuteAlways(395, 0, packCheck, packWepNum, 0);
- Delay(1);
- TakeInventory("PickingUpDropPack", packCheck);
- SetActivator(packTID);
- SetResultValue(1);
- break;
- }
- }
- script 394 (int check, int a1, int a2) clientside
- {
- if (CheckInventory("PickingUpDropPack") != check) { terminate; }
- prevAmmos[a1] = a2;
- }
- script 395 (int check, int packWepNum) clientside
- {
- int pln = PlayerNumber();
- int logStr = "You got";
- int i, j;
- if (PlayerIsBot(pln)) { terminate; }
- if (CheckInventory("PickingUpDropPack") != check) { terminate; }
- if (packWepNum != -1)
- {
- logStr = StrParam(s:logStr, s:" a ", s:WEPNAME[packWepNum]);
- }
- for (i = 0; i < AMMOCOUNT; i++)
- {
- j = prevAmmos[i];
- if (j == 0) { continue; }
- if ((packWepNum != -1) || (i > 0)) { logStr = StrParam(s:logStr, s:", "); }
- logStr = StrParam(s:logStr, d:j, s:" ", s:AMMONAME[i], s:cond(j == 1, "", "s"));
- }
- Log(s:logStr);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement