| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537 |
- #include <YSI_Coding\y_hooks>
- forward OnPlayerWounded(playerid);
- forward OnPlayerSpawnToHospital(playerid);
- forward OnPlayerWrongAnimation(playerid);
- static Injuries[MAX_PLAYERS];
- static DeadAnimation[MAX_PLAYERS];
- static DeathTimer[MAX_PLAYERS];
- static Text3D:DeadTD[MAX_PLAYERS];
- static bool:ValidDeadTD[MAX_PLAYERS];
- timer DeadAnimationCheck[150](playerid)
- {
- if(IsPlayerWounded(playerid))
- {
- if(!IsPlayerInAnyVehicle(playerid))
- {
- if(GetPlayerAnimationIndex(playerid) != DeadAnimation[playerid])
- {
- if(DeadAnimation[playerid] != 1701) OnPlayerWrongAnimation(playerid);
- else if(GetPlayerAnimationIndex(playerid) != 1701 && GetPlayerAnimationIndex(playerid) != 1151) OnPlayerWrongAnimation(playerid);
- }
- }
- else if(GetPlayerAnimationIndex(playerid) != 1019) OnPlayerWrongAnimation(playerid);
- defer DeadAnimationCheck(playerid);
- }
- }
- public OnPlayerWounded(playerid)
- {
- Injuries[playerid] = 1;
- DeathTimer[playerid] = gettime();
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid, x, y, z);
- if(ValidDeadTD[playerid] == false)
- {
- ValidDeadTD[playerid] = true;
- DeadTD[playerid] = Create3DTextLabel(va_return("(( This player is brutally wounded,\n/injuries %d for more information ))", playerid), 0xFF6666FF, x, y, z, 20, 0, 1);
- Attach3DTextLabelToPlayer(DeadTD[playerid], playerid, 0.0, 0.0, 0.4);
- }
- SetPlayerHealth(playerid, 1);
- switch(random(6))
- {
- case 0: DeadAnimation[playerid] = 1701;
- case 1: DeadAnimation[playerid] = 385;
- case 2: DeadAnimation[playerid] = 387;
- case 3: DeadAnimation[playerid] = 388;
- case 4: DeadAnimation[playerid] = 390;
- case 5: DeadAnimation[playerid] = 392;
- }
- if(IsPlayerInAnyVehicle(playerid))
- {
- if(GetPlayerVehicleSeat(playerid) == 0)
- {
- new engine, lights, alarm, doors, bonnet, boot, objective;
- GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
- SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
- }
- }
- defer DeadAnimationCheck(playerid);
- SendClientMessage(playerid, 0xff9999ff, "** You were brutally wounded, you must wait 60 seconds before using /acceptdeath.");
- return 1;
- }
- public OnPlayerSpawnToHospital(playerid)
- {
- Corpse_Create(playerid);
- if(ValidDeadTD[playerid] == true)
- {
- Delete3DTextLabel(DeadTD[playerid]);
- ValidDeadTD[playerid] = false;
- }
- Injuries[playerid] = 0;
- DeathTimer[playerid] = 0;
- DeadAnimation[playerid] = 0;
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, 0);
- SetPlayerPos(playerid, 2032.1594, -1406.6229, 17.2038);
- SetPlayerFacingAngle(playerid, 153.6930);
- SetCameraBehindPlayer(playerid);
- ResetPlayerWeapons(playerid);
- SetPlayerHealth(playerid, 100);
- SetPlayerArmour(playerid, 0);
- SendClientMessage(playerid, 0xff9999ff, "** You have paid $350 to cover your medical expenses.");
- return 1;
- }
- public OnPlayerWrongAnimation(playerid)
- {
- if(!IsPlayerInAnyVehicle(playerid))
- {
- switch(DeadAnimation[playerid])
- {
- case 1701:
- {
- if(Injuries[playerid] < 4) ApplyAnimation(playerid, "WUZI", "CS_Dead_Guy", 4.1, 1, 1, 1, 1, 0, 1);
- else ApplyAnimation(playerid, "ped", "FLOOR_hit_f", 4.1, 0, 1, 1, 1, 0, 1);
- }
- case 385: ApplyAnimation(playerid, "CRACK", "CRCKDETH1", 4.1, 0, 1, 1, 1, 0, 1);
- case 387: ApplyAnimation(playerid, "CRACK", "CRCKDETH3", 4.1, 0, 1, 1, 1, 0, 1);
- case 388: ApplyAnimation(playerid, "CRACK", "CRCKDETH4", 4.1, 0, 1, 1, 1, 0, 1);
- case 390: ApplyAnimation(playerid, "CRACK", "CRCKIDLE2", 4.1, 0, 1, 1, 1, 0, 1);
- case 392: ApplyAnimation(playerid, "CRACK", "CRCKIDLE4", 4.1, 0, 1, 1, 1, 0, 1);
- }
- }
- else ApplyAnimation(playerid, "ped", "CAR_dead_RHS", 4.1, 0, 1, 1, 1, 0, 1);
- return 1;
- }
- hook OnPlayerConnect(playerid)
- {
- Injuries[playerid] = 0;
- DeathTimer[playerid] = 0;
- DeadAnimation[playerid] = 0;
- ValidDeadTD[playerid] = false;
- }
- hook OnPlayerDeath(playerid, killerid, reason)
- {
- if(!IsPlayerWounded(playerid)) Injuries[playerid] = 1;
- }
- hook OnPlayerFirstSpawn(playerid)
- {
- SetPlayerTeam(playerid, DEFAULT_TEAM);
- }
- hook OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
- {
- new Float:health, Float:armour;
- GetPlayerHealth(playerid, health);
- GetPlayerArmour(playerid, armour);
- if(!IsPlayerWounded(playerid))
- {
- switch(weaponid)
- {
- case WEAPON_FIST:
- {
- amount = 4;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- case WEAPON_BRASSKNUCKLE..WEAPON_NITESTICK, WEAPON_BAT..WEAPON_POOLSTICK, WEAPON_CANE:
- {
- amount = 9;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- case WEAPON_KNIFE, WEAPON_KATANA:
- {
- amount = 14;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- case WEAPON_COLT45, WEAPON_SILENCED:
- {
- switch(bodypart)
- {
- case BODY_PART_TORSO:
- {
- amount = 25;
- if(health > amount && armour == 0) SetPlayerHealth(playerid, health - amount);
- else if(armour == 0) CallRemoteFunction("OnPlayerWounded", "i", playerid);
- if(armour > amount) SetPlayerArmour(playerid, armour - amount);
- else SetPlayerArmour(playerid, 0);
- }
- case BODY_PART_HEAD:
- {
- amount = 40;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- case BODY_PART_GROIN..BODY_PART_LEFT_LEG:
- {
- amount = 18;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- }
- }
- case WEAPON_DEAGLE:
- {
- switch(bodypart)
- {
- case BODY_PART_TORSO, BODY_PART_HEAD:
- {
- amount = 40;
- if(health > amount && armour == 0) SetPlayerHealth(playerid, health - amount);
- else if(armour == 0) CallRemoteFunction("OnPlayerWounded", "i", playerid);
- if(armour > amount) SetPlayerArmour(playerid, armour - amount);
- else SetPlayerArmour(playerid, 0);
- }
- case BODY_PART_GROIN..BODY_PART_LEFT_LEG:
- {
- amount = 20;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- }
- }
- case WEAPON_SHOTGUN:
- {
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid, x, y, z);
- new Float:distance = GetPlayerDistanceFromPoint(issuerid, x, y, z);
- if(distance < 8)
- {
- switch(bodypart)
- {
- case BODY_PART_TORSO:
- {
- amount = 60;
- if(health > amount && armour == 0) SetPlayerHealth(playerid, health - amount);
- else if(armour == 0) CallRemoteFunction("OnPlayerWounded", "i", playerid);
- if(armour > amount) SetPlayerArmour(playerid, armour - amount);
- else SetPlayerArmour(playerid, 0);
- }
- case BODY_PART_HEAD:
- {
- amount = 100;
- CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- case BODY_PART_GROIN..BODY_PART_LEFT_LEG:
- {
- amount = 25;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- }
- }
- else if(distance < 16)
- {
- switch(bodypart)
- {
- case BODY_PART_TORSO:
- {
- amount = 40;
- if(health > amount && armour == 0) SetPlayerHealth(playerid, health - amount);
- else if(armour == 0) CallRemoteFunction("OnPlayerWounded", "i", playerid);
- if(armour > amount) SetPlayerArmour(playerid, armour - amount);
- else SetPlayerArmour(playerid, 0);
- }
- case BODY_PART_HEAD:
- {
- amount = 60;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- case BODY_PART_GROIN..BODY_PART_LEFT_LEG:
- {
- amount = 18;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- }
- }
- else
- {
- switch(bodypart)
- {
- case BODY_PART_TORSO:
- {
- amount = 22;
- if(health > amount && armour == 0) SetPlayerHealth(playerid, health - amount);
- else if(armour == 0) CallRemoteFunction("OnPlayerWounded", "i", playerid);
- if(armour > amount) SetPlayerArmour(playerid, armour - amount);
- else SetPlayerArmour(playerid, 0);
- }
- case BODY_PART_HEAD:
- {
- amount = 32;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- case BODY_PART_GROIN..BODY_PART_LEFT_LEG:
- {
- amount = 12;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- }
- }
- }
- case WEAPON_UZI, WEAPON_MP5, WEAPON_TEC9:
- {
- switch(bodypart)
- {
- case BODY_PART_TORSO:
- {
- amount = 16;
- if(health > amount && armour == 0) SetPlayerHealth(playerid, health - amount);
- else if(armour == 0) CallRemoteFunction("OnPlayerWounded", "i", playerid);
- if(armour > amount) SetPlayerArmour(playerid, armour - amount);
- else SetPlayerArmour(playerid, 0);
- }
- case BODY_PART_HEAD:
- {
- amount = 28;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- case BODY_PART_GROIN..BODY_PART_LEFT_LEG:
- {
- amount = 9;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- }
- }
- case WEAPON_AK47:
- {
- switch(bodypart)
- {
- case BODY_PART_TORSO:
- {
- amount = 24;
- if(health > amount && armour == 0) SetPlayerHealth(playerid, health - amount);
- else if(armour == 0) CallRemoteFunction("OnPlayerWounded", "i", playerid);
- if(armour > amount) SetPlayerArmour(playerid, armour - amount);
- else SetPlayerArmour(playerid, 0);
- }
- case BODY_PART_HEAD:
- {
- amount = 32;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- case BODY_PART_GROIN..BODY_PART_LEFT_LEG:
- {
- amount = 12;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- }
- }
- case WEAPON_M4:
- {
- switch(bodypart)
- {
- case BODY_PART_TORSO:
- {
- amount = 20;
- if(health > amount && armour == 0) SetPlayerHealth(playerid, health - amount);
- else if(armour == 0) CallRemoteFunction("OnPlayerWounded", "i", playerid);
- if(armour > amount) SetPlayerArmour(playerid, armour - amount);
- else SetPlayerArmour(playerid, 0);
- }
- case BODY_PART_HEAD:
- {
- amount = 31;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- case BODY_PART_GROIN..BODY_PART_LEFT_LEG:
- {
- amount = 10;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- }
- }
- case WEAPON_RIFLE, WEAPON_SNIPER:
- {
- switch(bodypart)
- {
- case BODY_PART_TORSO:
- {
- amount = 60;
- if(health > amount && armour == 0) SetPlayerHealth(playerid, health - amount);
- else if(armour == 0) CallRemoteFunction("OnPlayerWounded", "i", playerid);
- if(armour > amount) SetPlayerArmour(playerid, armour - amount);
- else SetPlayerArmour(playerid, 0);
- }
- case BODY_PART_HEAD:
- {
- amount = 100;
- CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- case BODY_PART_GROIN..BODY_PART_LEFT_LEG:
- {
- amount = 34;
- if(health > amount) SetPlayerHealth(playerid, health - amount);
- else CallRemoteFunction("OnPlayerWounded", "i", playerid);
- }
- }
- }
- }
- }
- return 1;
- }
- hook OnPlayerShotPlayer(playerid, hitid)
- {
- if(0 < Injuries[hitid] < 4)
- {
- Injuries[hitid]++;
- if(Injuries[hitid] >= 4)
- {
- SendClientMessage(hitid, 0xff6666ff, "** You're now dead, you will be able to use /acceptdeath in short time.");
- if(ValidDeadTD[hitid] == true) Update3DTextLabelText(DeadTD[hitid], 0xFF6666FF, "(( This player is dead ))");
- if(DeadAnimation[hitid] == 1701) ApplyAnimation(hitid, "ped", "FLOOR_hit_f", 4.1, 0, 1, 1, 1, 0, 1);
- }
- }
- }
- hook OnPlayerDisconnect(playerid, reason)
- {
- if(ValidDeadTD[playerid] == true)
- {
- Delete3DTextLabel(DeadTD[playerid]);
- ValidDeadTD[playerid] = false;
- }
- }
- hook OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- if(IsPlayerWounded(playerid))
- {
- ClearAnimations(playerid, 1);
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid, x, y, z);
- SetPlayerPos(playerid, x, y, z);
- }
- }
- hook OnPlayerExitVehicle(playerid, vehicleid)
- {
- if(IsPlayerWounded(playerid))
- {
- new seat = GetPlayerVehicleSeat(playerid);
- ClearAnimations(playerid, 1);
- PutPlayerInVehicle(playerid, vehicleid, seat);
- }
- }
- RevivePlayer(playerid)
- {
- if(ValidDeadTD[playerid] == true)
- {
- Delete3DTextLabel(DeadTD[playerid]);
- ValidDeadTD[playerid] = false;
- }
- if(IsPlayerWounded(playerid))
- {
- ResetPlayerInjuries(playerid);
- Injuries[playerid] = 0;
- DeathTimer[playerid] = 0;
- DeadAnimation[playerid] = 0;
- if(IsPlayerInAnyVehicle(playerid))
- {
- new seat = GetPlayerVehicleSeat(playerid);
- new vehicle = GetPlayerVehicleID(playerid);
- ClearAnimations(playerid, 1);
- PutPlayerInVehicle(playerid, vehicle, seat);
- }
- else ClearAnimations(playerid, 1);
- }
- return 1;
- }
- IsPlayerWounded(playerid)
- {
- if(Injuries[playerid] > 0)
- {
- return true;
- }
- return false;
- }
- CMD:acceptdeath(playerid, params[])
- {
- if(!IsPlayerWounded(playerid)) return SendErrorMessage(playerid, "You are not wounded.");
- new time = gettime() - DeathTimer[playerid];
- if(time < 5) return SendErrorMessageF(playerid, "You can only use this command in %d seconds.", 5 - time);
- CallRemoteFunction("OnPlayerSpawnToHospital", "i", playerid);
- return 1;
- }
|