Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define MAX_DROP_AMOUNT -1
- #define MAX_DROP_LIFETIME 30
- #define MAX_PSLOTS 13
- #define INVALID_PICKUP -1
- #define PICKUP_TYPE 23
- #define MAX_PICKUPS_WDROPPING (300)
- enum e_Weapon_dropping {
- ewd_pid,
- ewd_cTime,
- ewd_weapon,
- ewd_ammo,
- };
- new g_WeaponDropping[MAX_PICKUPS_WDROPPING][e_Weapon_dropping];
- static const t_WeaponsPickups[] = { // constants table
- -1, // no fists
- 331, // - Brass Knuckles
- 333, // Golf Club
- 334, // Night Stick
- 335, // Knife
- 336, // baseball bat
- 337, // shovel
- 338, // pool cue
- 339, // katama
- 341, // chainsaw
- 321, // regular dildo
- 322, // white dildo
- 323, // Medium, white vibrator
- 324, // smaill, silver vibrator
- 325, // flowers
- 326, // cane
- 342, // grendade
- 343, // tear gas
- 344, // molotov
- -1, // RPG rocket - we can't pick up those, do we oO
- -1, // Heat-Seeking Rocket
- -1, // Hydra rocket
- 346, // colt 45
- 347, // colt 45 + silencer
- 348, // deagle
- 349, // shotgun
- 350, // sawn-off
- 351, // spaz
- 352, // micro-uzi
- 353, // mp5
- 355, // ak47
- 356, // m4
- 372, // tec9
- 357, // country rifle
- 358, // sniper rifle
- -1, // rocket launcher
- -1, // heat-seeking rocket launcher
- -1, // flamethrower
- -1, // minigun
- -1, // sachtel charges
- -1, // detonator
- 365, // spray can
- 366, // fire extinguisher
- 367, // camera
- -1, // night-vision goggles
- -1, // heat-vision goggles
- 371 // parachute
- };
- public OnPlayerPickUpDynamicPickup(playerid, pickupid) {
- for(new i; i<MAX_PICKUPS_WDROPPING; i++) {
- if(g_WeaponDropping[i][ewd_pid]==pickupid) {
- GivePlayerWeapon(playerid, g_WeaponDropping[i][ewd_weapon], g_WeaponDropping[i][ewd_ammo]);
- DestroyDynamicPickup(g_WeaponDropping[i][ewd_pid]);
- g_WeaponDropping[i][ewd_pid]=-1;
- g_WeaponDropping[i][ewd_weapon]=0;
- g_WeaponDropping[i][ewd_ammo]=0;
- g_WeaponDropping[i][ewd_cTime]=0;
- return 1;
- }
- }
- return 0;
- }
- stock DropPlayerWeapon(player) {
- new
- Float:PP[3],
- pWeaponSlots[MAX_PSLOTS+1][2],
- pCount=0;
- GetPlayerPos(player, PP[0],PP[1],PP[2]);
- for(new i=1; i<MAX_PSLOTS; i++) {
- GetPlayerWeaponData(player, i, pWeaponSlots[i][0], pWeaponSlots[i][1]);
- if(pWeaponSlots[i][0]>1 && pWeaponSlots[i][1]>1) pCount++;
- else pWeaponSlots[i][0]=0, pWeaponSlots[i][1]=0;
- }
- new fTmp=pCount,
- Float:rotation=0.0;
- for(new i; i<fTmp; i++) {
- rotation=360.0-float(pCount--)*(360.0/float(fTmp));
- new id;
- for(new j; j<MAX_PICKUPS_WDROPPING; j++) {
- if(g_WeaponDropping[j][ewd_pid]<0) {
- id=j;
- break;
- }
- }
- g_WeaponDropping[id][ewd_pid]=CreateDynamicPickup(t_WeaponsPickups[pWeaponSlots[i][0]], PICKUP_TYPE, PP[0]+floatsin(rotation)*(fTmp/2+1.0), PP[1]+floatcos(rotation)*(fTmp/2+1.0), PP[2]);
- g_WeaponDropping[id][ewd_cTime]=gettime();
- g_WeaponDropping[id][ewd_weapon]=pWeaponSlots[i][0];
- g_WeaponDropping[id][ewd_ammo]=pWeaponSlots[i][1];
- }
- }
- forward CheckinWeaponPickup(); // SetTimer("CheckinWeaponPickup", 5000, true);
- public CheckinWeaponPickup() {
- new delta;
- for(new i; i<MAX_PICKUPS_WDROPPING; i+=random(4)) {
- if(g_WeaponDropping[i][ewd_pid]<0) continue;
- else {
- delta=gettime()-g_WeaponDropping[i][ewd_cTime];
- if(delta>MAX_DROP_LIFETIME) {
- DestroyDynamicPickup(g_WeaponDropping[i][ewd_pid]);
- g_WeaponDropping[i][ewd_pid]=-1;
- g_WeaponDropping[i][ewd_weapon]=0;
- g_WeaponDropping[i][ewd_ammo]=0;
- g_WeaponDropping[i][ewd_cTime]=0;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment