Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // **-**
- #include <a_samp>
- #define WEAPON_FLASHBANG 27
- #define OBJ_SLOT_FLASHBANG 0
- #define OBJ_SLOT_FLASHBANG2 2
- #define KEY_AIM (128)
- #define RELEASED(%0) (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
- static s_AnimationLibraries[][] = { //Emmet_
- "AIRPORT", "ATTRACTORS", "BAR", "BASEBALL",
- "BD_FIRE", "BEACH", "BENCHPRESS", "BF_INJECTION",
- "BIKED", "BIKEH", "BIKELEAP", "BIKES",
- "BIKEV", "BIKE_DBZ", "BMX", "BOMBER",
- "BOX", "BSKTBALL", "BUDDY", "BUS",
- "CAMERA", "CAR", "CARRY", "CAR_CHAT",
- "CASINO", "CHAINSAW", "CHOPPA", "CLOTHES",
- "COACH", "COLT45", "COP_AMBIENT", "COP_DVBYZ",
- "CRACK", "CRIB", "DAM_JUMP", "DANCING",
- "DEALER", "DILDO", "DODGE", "DOZER",
- "DRIVEBYS", "FAT", "FIGHT_B", "FIGHT_C",
- "FIGHT_D", "FIGHT_E", "FINALE", "FINALE2",
- "FLAME", "FLOWERS", "FOOD", "FREEWEIGHTS",
- "GANGS", "GHANDS", "GHETTO_DB", "GOGGLES",
- "GRAFFITI", "GRAVEYARD", "GRENADE", "GYMNASIUM",
- "HAIRCUTS", "HEIST9", "INT_HOUSE", "INT_OFFICE",
- "INT_SHOP", "JST_BUISNESS", "KART", "KISSING",
- "KNIFE", "LAPDAN1", "LAPDAN2", "LAPDAN3",
- "LOWRIDER", "MD_CHASE", "MD_END", "MEDIC",
- "MISC", "MTB", "MUSCULAR", "NEVADA",
- "ON_LOOKERS", "OTB", "PARACHUTE", "PARK",
- "PAULNMAC", "PED", "PLAYER_DVBYS", "PLAYIDLES",
- "POLICE", "POOL", "POOR", "PYTHON",
- "QUAD", "QUAD_DBZ", "RAPPING", "RIFLE",
- "RIOT", "ROB_BANK", "ROCKET", "RUSTLER",
- "RYDER", "SCRATCHING", "SHAMAL", "SHOP",
- "SHOTGUN", "SILENCED", "SKATE", "SMOKING",
- "SNIPER", "SPRAYCAN", "STRIP", "SUNBATHE",
- "SWAT", "SWEET", "SWIM", "SWORD",
- "TANK", "TATTOOS", "TEC", "TRAIN",
- "TRUCK", "UZI", "VAN", "VENDING",
- "VORTEX", "WAYFARER", "WEAPONS", "WUZI",
- "WOP", "GFUNK", "RUNNINGMAN"
- };
- stock static PreloadPlayerAnimations(playerid)
- {
- for(new i, j = sizeofs_AnimationLibraries; i < j; i ++)
- ApplyAnimation(playerid, s_AnimationLibraries[i], "null", 0.0, 0, 0, 0, 0, 0);
- }
- new
- PlayerText:flashbangTD[MAX_PLAYERS],
- bool:hasFlashbang[MAX_PLAYERS],
- bool:hasFlashbangObject[MAX_PLAYERS],
- bool:flashbangHolding[MAX_PLAYERS],
- bool:isFlashed[MAX_PLAYERS],
- alphaFlashColor[MAX_PLAYERS],
- flashTimer[MAX_PLAYERS];
- public OnPlayerConnect(playerid)
- {
- flashbangTD[playerid] = CreatePlayerTextDraw(playerid, -20.000000, 2.000000, "|");
- PlayerTextDrawUseBox(playerid, flashbangTD[playerid], 1);
- PlayerTextDrawBoxColor(playerid, flashbangTD[playerid], 0xFFFFFFFF);
- PlayerTextDrawTextSize(playerid, flashbangTD[playerid], 660.000000, 22.000000);
- PlayerTextDrawLetterSize(playerid, flashbangTD[playerid], 1.000000, 52.200000);
- PlayerTextDrawAlignment(playerid, flashbangTD[playerid], 0);
- PlayerTextDrawBackgroundColor(playerid, flashbangTD[playerid], 0xFFFFFFFF);
- PlayerTextDrawFont(playerid, flashbangTD[playerid], 3);
- PlayerTextDrawColor(playerid, flashbangTD[playerid], 0xFFFFFFFF);
- PlayerTextDrawSetOutline(playerid, flashbangTD[playerid], 1);
- PlayerTextDrawSetProportional(playerid, flashbangTD[playerid], 1);
- PlayerTextDrawSetShadow(playerid, flashbangTD[playerid], 1);
- hasFlashbang[playerid] = hasFlashbangObject[playerid] = flashbangHolding[playerid] = isFlashed[playerid] = false;
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(hasFlashbang[playerid])
- {
- //RemovePlayerWeapon
- DeattachFlashbang(playerid);
- }
- if(isFlashed[playerid])
- KillTimer(flashTimer[playerid]);
- return 1;
- }
- #define MAX_DISTANCE 45
- public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
- {
- if(weaponid == WEAPON_FLASHBANG && hasFlashbang[playerid])
- {
- for(new i, j = GetPlayerPoolSize(); i <= j; i++) //foreach(new i : Player)
- {
- if(isFlashed[i])
- continue;
- if(IsPlayerInRangeOfPoint(i, MAX_DISTANCE, fX, fY, fZ))
- {
- new
- Float:floatDist = GetPlayerDistanceFromPoint(i, fX, fY, fZ),
- intDist = floatround(floatDist),
- alpha = 0xFFFFFF00 + ((MAX_DISTANCE - intDist) * 0x05);
- PlayerTextDrawBoxColor(i, flashbangTD[i], alpha);
- PlayerTextDrawShow(i, flashbangTD[i]);
- isFlashed[i] = true;
- alphaFlashColor[i] = alpha;
- if(floatDist <= 10.0)
- SetTimerEx("StartFlashEffect", 5000, false, "d", i);
- else
- flashTimer[i] = SetTimerEx("ToggleFlashEffect", 250, true, "d", i);
- }
- }
- new
- keys, ud, lr;
- GetPlayerKeys(playerid, keys, ud, lr);
- if(keys & KEY_AIM)
- {
- flashbangHolding[playerid] = true;
- ApplyAnimation(playerid, "SWORD", "sword_block", 50.0, 0, 1, 1, 1, 1);
- }
- }
- return 1;
- }
- StartFlashEffect(playerid); public StartFlashEffect(playerid)
- {
- flashTimer[playerid] = SetTimerEx("ToggleFlashEffect", 250, true, "d", playerid);
- }
- ToggleFlashEffect(playerid); public ToggleFlashEffect(playerid)
- {
- if(alphaFlashColor[playerid] != 0xFFFFFF00)
- {
- alphaFlashColor[playerid] -= 0x05;
- PlayerTextDrawHide(playerid, flashbangTD[playerid]);
- PlayerTextDrawBoxColor(playerid, flashbangTD[playerid], alphaFlashColor[playerid]);
- PlayerTextDrawShow(playerid, flashbangTD[playerid]);
- }
- else
- {
- KillTimer(flashTimer[playerid]);
- PlayerTextDrawHide(playerid, flashbangTD[playerid]);
- isFlashed[playerid] = false;
- }
- }
- AttachFlashbang(playerid)
- {
- 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);
- 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);
- hasFlashbangObject[playerid] = true;
- hasFlashbang[playerid] = true;
- }
- DeattachFlashbang(playerid)
- {
- RemovePlayerAttachedObject(playerid, OBJ_SLOT_FLASHBANG);
- RemovePlayerAttachedObject(playerid, OBJ_SLOT_FLASHBANG2);
- hasFlashbangObject[playerid] = false;
- hasFlashbang[playerid] = false;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if((newkeys & KEY_YES) && (oldkeys & KEY_WALK))
- {
- if(!hasFlashbang[playerid])
- {
- SetPlayerAmmo(playerid, WEAPON_FLASHBANG, 0);
- GivePlayerWeapon(playerid, WEAPON_FLASHBANG, 1);
- AttachFlashbang(playerid);
- }
- else
- {
- //RemovePlayerWeapon
- DeattachFlashbang(playerid);
- }
- }
- if(hasFlashbang[playerid] && flashbangHolding[playerid])
- {
- if(RELEASED(KEY_AIM))
- {
- SetTimerEx("FlashbangReload", 1000, false, "d", playerid);
- flashbangHolding[playerid] = false;
- ApplyAnimation(playerid, "CARRY", "crry_prtial", 1.0, 0, 0, 0, 0, 0);
- }
- }
- return 1;
- }
- FlashbangReload(playerid); public FlashbangReload(playerid)
- {
- if(hasFlashbang[playerid])
- {
- GivePlayerWeapon(playerid, WEAPON_FLASHBANG, 1);
- ApplyAnimation(playerid, "SILENCED", "Silence_reload", 3.0, 0, 0, 0, 0, 0, 1);
- }
- }
- public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
- {
- new
- Float:health;
- GetPlayerHealth(playerid, health);
- if(issuerid != INVALID_PLAYER_ID && hasFlashbang[issuerid] && weaponid == WEAPON_FLASHBANG)
- SetPlayerHealth(playerid, health + amount);
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- new
- weapon = GetPlayerWeapon(playerid);
- if(hasFlashbang[playerid])
- {
- if(hasFlashbangObject[playerid])
- {
- if(weapon != WEAPON_FLASHBANG && weapon != 0)
- DeattachFlashbang(playerid);
- }
- else
- if(weapon == WEAPON_FLASHBANG || weapon == 0)
- AttachFlashbang(playerid);
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement