Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.50 KB | None | 0 0
  1. // **-**
  2.  
  3. #include <a_samp>
  4.  
  5. #define WEAPON_FLASHBANG 27
  6.  
  7. #define OBJ_SLOT_FLASHBANG 0
  8. #define OBJ_SLOT_FLASHBANG2 2
  9.  
  10. #define KEY_AIM (128)
  11.  
  12. #define RELEASED(%0) (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
  13.  
  14. static s_AnimationLibraries[][] = { //Emmet_
  15.         "AIRPORT",    "ATTRACTORS",   "BAR",             "BASEBALL",
  16.         "BD_FIRE",    "BEACH",        "BENCHPRESS",      "BF_INJECTION",
  17.         "BIKED",      "BIKEH",        "BIKELEAP",        "BIKES",
  18.         "BIKEV",      "BIKE_DBZ",     "BMX",             "BOMBER",
  19.         "BOX",        "BSKTBALL",     "BUDDY",           "BUS",
  20.         "CAMERA",     "CAR",          "CARRY",           "CAR_CHAT",
  21.         "CASINO",     "CHAINSAW",     "CHOPPA",          "CLOTHES",
  22.         "COACH",      "COLT45",       "COP_AMBIENT",     "COP_DVBYZ",
  23.         "CRACK",      "CRIB",         "DAM_JUMP",        "DANCING",
  24.         "DEALER",     "DILDO",        "DODGE",           "DOZER",
  25.         "DRIVEBYS",   "FAT",          "FIGHT_B",         "FIGHT_C",
  26.         "FIGHT_D",    "FIGHT_E",      "FINALE",          "FINALE2",
  27.         "FLAME",      "FLOWERS",      "FOOD",            "FREEWEIGHTS",
  28.         "GANGS",      "GHANDS",       "GHETTO_DB",       "GOGGLES",
  29.         "GRAFFITI",   "GRAVEYARD",    "GRENADE",         "GYMNASIUM",
  30.         "HAIRCUTS",   "HEIST9",       "INT_HOUSE",       "INT_OFFICE",
  31.         "INT_SHOP",   "JST_BUISNESS", "KART",            "KISSING",
  32.         "KNIFE",      "LAPDAN1",      "LAPDAN2",         "LAPDAN3",
  33.         "LOWRIDER",   "MD_CHASE",     "MD_END",          "MEDIC",
  34.         "MISC",       "MTB",          "MUSCULAR",        "NEVADA",
  35.         "ON_LOOKERS", "OTB",          "PARACHUTE",       "PARK",
  36.         "PAULNMAC",   "PED",          "PLAYER_DVBYS",    "PLAYIDLES",
  37.         "POLICE",     "POOL",         "POOR",            "PYTHON",
  38.         "QUAD",       "QUAD_DBZ",     "RAPPING",         "RIFLE",
  39.         "RIOT",       "ROB_BANK",     "ROCKET",          "RUSTLER",
  40.         "RYDER",      "SCRATCHING",   "SHAMAL",          "SHOP",
  41.         "SHOTGUN",    "SILENCED",     "SKATE",           "SMOKING",
  42.         "SNIPER",     "SPRAYCAN",     "STRIP",           "SUNBATHE",
  43.         "SWAT",       "SWEET",        "SWIM",            "SWORD",
  44.         "TANK",       "TATTOOS",      "TEC",             "TRAIN",
  45.         "TRUCK",      "UZI",          "VAN",             "VENDING",
  46.         "VORTEX",     "WAYFARER",     "WEAPONS",         "WUZI",
  47.         "WOP",        "GFUNK",        "RUNNINGMAN"
  48. };
  49.  
  50. stock static PreloadPlayerAnimations(playerid)
  51. {
  52.     for(new i, j = sizeofs_AnimationLibraries; i < j; i ++)
  53.         ApplyAnimation(playerid, s_AnimationLibraries[i], "null", 0.0, 0, 0, 0, 0, 0);    
  54. }
  55.  
  56. new
  57.     PlayerText:flashbangTD[MAX_PLAYERS],
  58.     bool:hasFlashbang[MAX_PLAYERS],
  59.     bool:hasFlashbangObject[MAX_PLAYERS],
  60.     bool:flashbangHolding[MAX_PLAYERS],
  61.     bool:isFlashed[MAX_PLAYERS],
  62.     alphaFlashColor[MAX_PLAYERS],
  63.     flashTimer[MAX_PLAYERS];
  64.    
  65. public OnPlayerConnect(playerid)
  66. {
  67.     flashbangTD[playerid] = CreatePlayerTextDraw(playerid, -20.000000, 2.000000, "|");
  68.  
  69.     PlayerTextDrawUseBox(playerid, flashbangTD[playerid], 1);
  70.     PlayerTextDrawBoxColor(playerid, flashbangTD[playerid], 0xFFFFFFFF);
  71.  
  72.     PlayerTextDrawTextSize(playerid, flashbangTD[playerid], 660.000000, 22.000000);
  73.     PlayerTextDrawLetterSize(playerid, flashbangTD[playerid], 1.000000, 52.200000);
  74.     PlayerTextDrawAlignment(playerid, flashbangTD[playerid], 0);
  75.  
  76.     PlayerTextDrawBackgroundColor(playerid, flashbangTD[playerid], 0xFFFFFFFF);
  77.     PlayerTextDrawFont(playerid, flashbangTD[playerid], 3);
  78.  
  79.  
  80.     PlayerTextDrawColor(playerid, flashbangTD[playerid], 0xFFFFFFFF);
  81.  
  82.     PlayerTextDrawSetOutline(playerid, flashbangTD[playerid], 1);
  83.     PlayerTextDrawSetProportional(playerid, flashbangTD[playerid], 1);
  84.     PlayerTextDrawSetShadow(playerid, flashbangTD[playerid], 1);
  85.    
  86.     hasFlashbang[playerid] = hasFlashbangObject[playerid] = flashbangHolding[playerid] = isFlashed[playerid] = false;
  87.     return 1;
  88. }
  89.  
  90. public OnPlayerDisconnect(playerid, reason)
  91. {
  92.     if(hasFlashbang[playerid])
  93.     {
  94.         //RemovePlayerWeapon
  95.         DeattachFlashbang(playerid);
  96.     }
  97.    
  98.     if(isFlashed[playerid])
  99.         KillTimer(flashTimer[playerid]);
  100.     return 1;
  101. }
  102.  
  103. #define MAX_DISTANCE 45
  104.  
  105. public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
  106. {
  107.     if(weaponid == WEAPON_FLASHBANG && hasFlashbang[playerid])
  108.     {
  109.         for(new i, j = GetPlayerPoolSize(); i <= j; i++) //foreach(new i : Player)
  110.         {
  111.             if(isFlashed[i])
  112.                 continue;
  113.  
  114.             if(IsPlayerInRangeOfPoint(i, MAX_DISTANCE, fX, fY, fZ))
  115.             {
  116.                 new
  117.                     Float:floatDist = GetPlayerDistanceFromPoint(i, fX, fY, fZ),
  118.                     intDist = floatround(floatDist),
  119.                     alpha = 0xFFFFFF00 + ((MAX_DISTANCE - intDist) * 0x05);
  120.  
  121.                 PlayerTextDrawBoxColor(i, flashbangTD[i], alpha);
  122.                 PlayerTextDrawShow(i, flashbangTD[i]);
  123.  
  124.                 isFlashed[i] = true;
  125.                 alphaFlashColor[i] = alpha;
  126.                
  127.                 if(floatDist <= 10.0)
  128.                     SetTimerEx("StartFlashEffect", 5000, false, "d", i);
  129.                 else
  130.                     flashTimer[i] = SetTimerEx("ToggleFlashEffect", 250, true, "d", i);
  131.             }          
  132.         }
  133.         new
  134.             keys, ud, lr;
  135.            
  136.         GetPlayerKeys(playerid, keys, ud, lr);
  137.         if(keys & KEY_AIM)
  138.         {
  139.             flashbangHolding[playerid] = true;
  140.             ApplyAnimation(playerid, "SWORD", "sword_block", 50.0, 0, 1, 1, 1, 1);
  141.         }
  142.     }
  143.     return 1;
  144. }
  145.  
  146. StartFlashEffect(playerid); public StartFlashEffect(playerid)
  147. {
  148.     flashTimer[playerid] = SetTimerEx("ToggleFlashEffect", 250, true, "d", playerid);
  149. }
  150.  
  151. ToggleFlashEffect(playerid); public ToggleFlashEffect(playerid)
  152. {
  153.     if(alphaFlashColor[playerid] != 0xFFFFFF00)
  154.     {
  155.         alphaFlashColor[playerid] -= 0x05;
  156.  
  157.         PlayerTextDrawHide(playerid, flashbangTD[playerid]);
  158.         PlayerTextDrawBoxColor(playerid, flashbangTD[playerid], alphaFlashColor[playerid]);
  159.         PlayerTextDrawShow(playerid, flashbangTD[playerid]);
  160.     }
  161.     else
  162.     {
  163.         KillTimer(flashTimer[playerid]);
  164.        
  165.         PlayerTextDrawHide(playerid, flashbangTD[playerid]);
  166.         isFlashed[playerid] = false;
  167.     }
  168. }
  169.  
  170. AttachFlashbang(playerid)
  171. {
  172.     SetPlayerAttachedObject(playerid, OBJ_SLOT_FLASHBANG, 351, 6, -0.009999, -0.013999, -0.028000, -0.500000, 2.500000, 1.999999, 1.009000, 1.357999, 1.328000, 0xFF90C3D4, 0xFF90C3D4);
  173.     SetPlayerAttachedObject(playerid, OBJ_SLOT_FLASHBANG2, 19185, 6, 0.567999, -0.023000, 0.119000, 61.200027, -98.299964, -4.800003, 4.824007, 5.051000, 8.638992, 0xFF0000FF, 0xFF0000FF);
  174.  
  175.     hasFlashbangObject[playerid] = true;
  176.     hasFlashbang[playerid] = true;
  177. }
  178.  
  179. DeattachFlashbang(playerid)
  180. {
  181.     RemovePlayerAttachedObject(playerid, OBJ_SLOT_FLASHBANG);
  182.     RemovePlayerAttachedObject(playerid, OBJ_SLOT_FLASHBANG2);
  183.    
  184.     hasFlashbangObject[playerid] = false;
  185.     hasFlashbang[playerid] = false;
  186. }
  187.  
  188. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  189. {
  190.     if((newkeys & KEY_YES) && (oldkeys & KEY_WALK))
  191.     {
  192.         if(!hasFlashbang[playerid])
  193.         {
  194.             SetPlayerAmmo(playerid, WEAPON_FLASHBANG, 0);
  195.             GivePlayerWeapon(playerid, WEAPON_FLASHBANG, 1);
  196.             AttachFlashbang(playerid);
  197.  
  198.         }
  199.         else
  200.         {
  201.             //RemovePlayerWeapon
  202.             DeattachFlashbang(playerid);
  203.         }
  204.     }
  205.     if(hasFlashbang[playerid] && flashbangHolding[playerid])
  206.     {
  207.         if(RELEASED(KEY_AIM))
  208.         {
  209.             SetTimerEx("FlashbangReload", 1000, false, "d", playerid);
  210.             flashbangHolding[playerid] = false;
  211.  
  212.             ApplyAnimation(playerid, "CARRY", "crry_prtial", 1.0, 0, 0, 0, 0, 0);
  213.         }
  214.     }
  215.     return 1;
  216. }
  217.  
  218. FlashbangReload(playerid); public FlashbangReload(playerid)
  219. {
  220.     if(hasFlashbang[playerid])
  221.     {
  222.         GivePlayerWeapon(playerid, WEAPON_FLASHBANG, 1);
  223.         ApplyAnimation(playerid, "SILENCED", "Silence_reload", 3.0, 0, 0, 0, 0, 0, 1);
  224.     }
  225. }
  226.        
  227. public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
  228. {
  229.     new
  230.         Float:health;
  231.        
  232.     GetPlayerHealth(playerid, health);
  233.     if(issuerid != INVALID_PLAYER_ID && hasFlashbang[issuerid] && weaponid == WEAPON_FLASHBANG)
  234.         SetPlayerHealth(playerid, health + amount);
  235.     return 1;
  236. }
  237.  
  238. public OnPlayerUpdate(playerid)
  239. {
  240.     new
  241.         weapon = GetPlayerWeapon(playerid);
  242.        
  243.     if(hasFlashbang[playerid])
  244.     {
  245.         if(hasFlashbangObject[playerid])
  246.         {
  247.             if(weapon != WEAPON_FLASHBANG && weapon != 0)
  248.                 DeattachFlashbang(playerid);
  249.         }
  250.         else
  251.             if(weapon == WEAPON_FLASHBANG || weapon == 0)
  252.                 AttachFlashbang(playerid);
  253.     }
  254.     return 1;
  255. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement