pawn Код:
#include <a_samp>
#include <foreach> // Used to loop through all connected players
new PlayerText: DoingDamage[3][MAX_PLAYERS]; // Shows when player hit someone.
new PlayerText: GettingDamaged[3][MAX_PLAYERS]; // Shows when someone hit you.
// - OnPlayerTakeDamage Variables
new bool:Declared[4][MAX_PLAYERS];
new gLastHit[6][MAX_PLAYERS];
new TakeDmgCD[9][MAX_PLAYERS];
new H[6][MAX_PLAYERS];
new Float:HPLost[2][MAX_PLAYERS][MAX_PLAYERS];
new Float:ILost[MAX_PLAYERS];
new WeaponNames[55][] =
{
{"Punch"},{"Brass Knuckles"},{"Golf Club"},{"Nite Stick"},{"Knife"},{"Baseball Bat"},{"Shovel"},{"Pool Cue"},{"Katana"},{"Chainsaw"},{"Purple Dildo"},
{"Smal White Vibrator"},{"Large White Vibrator"},{"Silver Vibrator"},{"Flowers"},{"Cane"},{"Grenade"},{"Tear Gas"},{"Molotov Cocktail"},
{""},{""},{""}, // Empty spots for ID 19-20-21 (invalid weapon id's)
{"9mm"},{"Silenced 9mm"},{"Deagle"},{"Shotgun"},{"Sawn-off"},{"Combat"},{"Micro SMG"},{"MP5"},{"AK-47"},{"M4"},{"Tec9"},
{"Rifle"},{"Sniper"},{"Rocket"},{"HS Rocket"},{"Flamethrower"},{"Minigun"},{"Satchel Charge"},{"Detonator"},
{"Spraycan"},{"Fire Extinguisher"},{"Camera"},{"Nightvision Goggles"},{"Thermal Goggles"},{"Parachute"}, {"Fake Pistol"},{""}, {"Vehicle"}, {"Helicopter Blades"},
{"Explosion"}, {""}, {"Drowned"}, {"Collision"}
};
enum PlayerVariables {
bool:Spawned,
}
new Player[MAX_PLAYERS][PlayerVariables];
forward OnScriptUpdate();
public OnGameModeInit()
{
SetTimer("OnScriptUpdate", 1000, true);
return 1;
}
public OnPlayerConnect(playerid)
{
LoadPlayerTextDraws(playerid);
Player[playerid][Spawned] = false;
return 1;
}
public OnPlayerSpawn(playerid)
{
Player[playerid][Spawned] = true;
return 1;
}
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
/*if(GetPlayerTeam(issuerid) != GetPlayerTeam(playerid))
{
PlayerPlaySound(issuerid,17802,0.0,0.0,0.0);
}*/
PlayerPlaySound(playerid, 1131, 0, 0, 0);
new Float:Health[3], Float:Damage;
GetPlayerHealth(playerid, Health[0]);
GetPlayerArmour(playerid, Health[1]);
if(Health[0] > 0) {
if(amount > Health[0]) {
Damage = amount - Health[0];
amount = amount - Damage;
}
}
Health[2] = (Health[0] + Health[1]) - amount;
if(Health[2] < 0) Health[2] = 0;
new iString[160];
if(issuerid != INVALID_PLAYER_ID)
{
//if(GetPlayerTeam(issuerid) == GetPlayerTeam(playerid)) return 1;
PlayerPlaySound(issuerid,17802,0.0,0.0,0.0);
HPLost[0][issuerid][playerid] += amount;
HPLost[1][playerid][issuerid] += amount;
if(Declared[0][issuerid] == false && gLastHit[1][issuerid] != playerid && gLastHit[2][issuerid] != playerid)
{
gLastHit[0][issuerid] = playerid;
Declared[0][issuerid] = true;
}
if(gLastHit[0][issuerid] == playerid)
{
format(iString, sizeof(iString), "~r~~h~%s ~h~/ -%.0f ~r~~h~%s ~h~(%.0f)", PlayerName(playerid), HPLost[0][issuerid][playerid], WeaponNames[weaponid], Health[2]);
PlayerTextDrawSetString(issuerid, DoingDamage[0][issuerid], iString);
TakeDmgCD[0][issuerid] = 1;
H[0][issuerid] = playerid;
}
else
{
if(Declared[1][issuerid] == false && gLastHit[2][issuerid] != playerid)
{
gLastHit[1][issuerid] = playerid;
Declared[1][issuerid] = true;
}
if(gLastHit[1][issuerid] == playerid )
{
format(iString, sizeof(iString), "~r~~h~%s ~h~/ -%.0f ~r~~h~%s ~h~(%.0f)", PlayerName(playerid), HPLost[0][issuerid][playerid], WeaponNames[weaponid], Health[2]);
PlayerTextDrawSetString(issuerid, DoingDamage[1][issuerid], iString);
TakeDmgCD[1][issuerid] = 1;
H[1][issuerid] = playerid;
}
else
{
gLastHit[2][issuerid] = playerid;
format(iString, sizeof(iString), "~r~~h~%s ~h~/ -%.0f ~r~~h~%s ~h~(%.0f)", PlayerName(playerid), HPLost[0][issuerid][playerid], WeaponNames[weaponid], Health[2]);
PlayerTextDrawSetString(issuerid, DoingDamage[2][issuerid], iString);
TakeDmgCD[2][issuerid] = 1;
H[2][issuerid] = playerid;
}
}
if(Declared[2][playerid] == false && gLastHit[4][playerid] != issuerid && gLastHit[5][playerid] != issuerid){
gLastHit[3][playerid] = issuerid;
Declared[2][playerid] = true;
}
if(gLastHit[3][playerid] == issuerid) {
format(iString, sizeof(iString), "~g~~h~%s ~h~/ -%.0f ~g~~h~%s ~h~(%.0f)", PlayerName(issuerid), HPLost[1][playerid][issuerid], WeaponNames[weaponid], Health[2]);
PlayerTextDrawSetString(playerid, GettingDamaged[0][playerid], iString);
TakeDmgCD[3][playerid] = 1;
H[3][playerid] = issuerid;
}
else
{
if(Declared[3][playerid] == false && gLastHit[5][playerid] != issuerid) {
gLastHit[4][playerid] = issuerid;
Declared[3][playerid] = true;
}
if(gLastHit[4][playerid] == issuerid) {
format(iString, sizeof(iString), "~g~~h~%s ~h~/ -%.0f ~g~~h~%s ~h~(%.0f)", PlayerName(issuerid), HPLost[1][playerid][issuerid], WeaponNames[weaponid], Health[2]);
PlayerTextDrawSetString(playerid, GettingDamaged[1][playerid], iString);
TakeDmgCD[4][playerid] = 1;
H[4][playerid] = issuerid;
}
else
{
gLastHit[5][playerid] = issuerid;
format(iString, sizeof(iString), "~g~~h~%s ~h~/ -%.0f ~g~~h~%s ~h~(%.0f)", PlayerName(issuerid), HPLost[1][playerid][issuerid], WeaponNames[weaponid], Health[2]);
PlayerTextDrawSetString(playerid, GettingDamaged[2][playerid], iString);
TakeDmgCD[5][playerid] = 1;
H[5][playerid] = issuerid;
}
}
}
else
{
if(GetPlayerState(playerid) != PLAYER_STATE_WASTED)
{
ILost[playerid] += amount;
if(gLastHit[3][playerid] < 0) {
format(iString, sizeof(iString), "~g~~h~~h~-%.0f ~g~~h~%s ~h~(%.0f)",ILost[playerid], WeaponNames[weaponid], Health[2]);
PlayerTextDrawSetString(playerid, GettingDamaged[0][playerid], iString);
TakeDmgCD[6][playerid] = 1;
}
else
{
if(gLastHit[4][playerid] < 0)
{
format(iString, sizeof(iString), "~g~~h~~h~-%.0f ~g~~h~%s ~h~(%.0f)",ILost[playerid], WeaponNames[weaponid], Health[2]);
PlayerTextDrawSetString(playerid, GettingDamaged[1][playerid], iString);
TakeDmgCD[7][playerid] = 1;
}
else
{
format(iString, sizeof(iString), "~g~~h~~h~-%.0f ~g~~h~%s ~h~(%.0f)", ILost[playerid], WeaponNames[weaponid], Health[2]);
PlayerTextDrawSetString(playerid, GettingDamaged[2][playerid], iString);
TakeDmgCD[8][playerid] = 1;
}
}
}
}
return 1;
}
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
for(new i = 0; i < 3; i++)
{
PlayerTextDrawShow(playerid, DoingDamage[i][playerid]);
PlayerTextDrawShow(playerid, GettingDamaged[i][playerid]);
}
return 1;
}
LoadPlayerTextDraws(playerid)
{
//:Damage://
DoingDamage[0][playerid] = CreatePlayerTextDraw(playerid,180.0,362.0,"_");
PlayerTextDrawFont(playerid, DoingDamage[0][playerid], 1);
PlayerTextDrawLetterSize(playerid, DoingDamage[0][playerid], 0.23000, 1.0);
PlayerTextDrawBackgroundColor(playerid, DoingDamage[0][playerid],0x00000044);
PlayerTextDrawColor(playerid, DoingDamage[0][playerid], 16727295);
PlayerTextDrawSetProportional(playerid, DoingDamage[0][playerid], 1);
PlayerTextDrawSetOutline(playerid, DoingDamage[0][playerid],1);
PlayerTextDrawSetShadow(playerid, DoingDamage[0][playerid],0);
DoingDamage[1][playerid] = CreatePlayerTextDraw(playerid,180.0,372.0,"_");
PlayerTextDrawFont(playerid, DoingDamage[1][playerid], 1);
PlayerTextDrawLetterSize(playerid, DoingDamage[1][playerid], 0.23000, 1.0);
PlayerTextDrawBackgroundColor(playerid, DoingDamage[1][playerid],0x00000044);
PlayerTextDrawColor(playerid, DoingDamage[1][playerid], 16727295);
PlayerTextDrawSetProportional(playerid, DoingDamage[1][playerid], 1);
PlayerTextDrawSetOutline(playerid, DoingDamage[1][playerid],1);
PlayerTextDrawSetShadow(playerid, DoingDamage[1][playerid],0);
DoingDamage[2][playerid] = CreatePlayerTextDraw(playerid,180.0,382.0,"_");
PlayerTextDrawFont(playerid, DoingDamage[2][playerid], 1);
PlayerTextDrawLetterSize(playerid, DoingDamage[2][playerid], 0.23000, 1.0);
PlayerTextDrawBackgroundColor(playerid, DoingDamage[2][playerid],0x00000044);
PlayerTextDrawColor(playerid, DoingDamage[2][playerid], 16727295);
PlayerTextDrawSetProportional(playerid, DoingDamage[2][playerid], 1);
PlayerTextDrawSetOutline(playerid, DoingDamage[2][playerid],1);
PlayerTextDrawSetShadow(playerid, DoingDamage[2][playerid],0);
GettingDamaged[0][playerid] = CreatePlayerTextDraw(playerid,400.0,362.0,"_");
PlayerTextDrawFont(playerid, GettingDamaged[0][playerid], 1);
PlayerTextDrawLetterSize(playerid, GettingDamaged[0][playerid], 0.23000, 1.0);
PlayerTextDrawBackgroundColor(playerid, GettingDamaged[0][playerid],0x00000044);
PlayerTextDrawColor(playerid, GettingDamaged[0][playerid], 16727295);
PlayerTextDrawSetProportional(playerid, GettingDamaged[0][playerid], 1);
PlayerTextDrawSetOutline(playerid, GettingDamaged[0][playerid],1);
PlayerTextDrawSetShadow(playerid, GettingDamaged[0][playerid],0);
GettingDamaged[1][playerid] = CreatePlayerTextDraw(playerid,400.0,372.0,"_");
PlayerTextDrawFont(playerid, GettingDamaged[1][playerid], 1);
PlayerTextDrawLetterSize(playerid, GettingDamaged[1][playerid], 0.23000, 1.0);
PlayerTextDrawBackgroundColor(playerid, GettingDamaged[1][playerid],0x00000044);
PlayerTextDrawColor(playerid, GettingDamaged[1][playerid], 16727295);
PlayerTextDrawSetProportional(playerid, GettingDamaged[1][playerid], 1);
PlayerTextDrawSetOutline(playerid, GettingDamaged[1][playerid],1);
PlayerTextDrawSetShadow(playerid, GettingDamaged[1][playerid],0);
GettingDamaged[2][playerid] = CreatePlayerTextDraw(playerid,400.0,382.0,"_");
PlayerTextDrawFont(playerid, GettingDamaged[2][playerid], 1);
PlayerTextDrawLetterSize(playerid, GettingDamaged[2][playerid], 0.23000, 1.0);
PlayerTextDrawBackgroundColor(playerid, GettingDamaged[2][playerid],0x00000044);
PlayerTextDrawColor(playerid, GettingDamaged[2][playerid], 16727295);
PlayerTextDrawSetProportional(playerid, GettingDamaged[2][playerid], 1);
PlayerTextDrawSetOutline(playerid, GettingDamaged[2][playerid],1);
PlayerTextDrawSetShadow(playerid, GettingDamaged[2][playerid],0);
//:::END::://
}
stock PlayerName(playerid)
{
new name[24];
GetPlayerName(playerid,name,sizeof name);
return name;
}
public OnScriptUpdate()
{
foreach(new i : Player)
{
if(TakeDmgCD[0][i] > 0)
{
TakeDmgCD[0][i]++;
if(TakeDmgCD[0][i] == 5)
{
Declared[0][i] = false;
gLastHit[0][i] = -1;
HPLost[0][i][H[0][i]] = 0;
PlayerTextDrawSetString(i, DoingDamage[0][i], "_");
TakeDmgCD[0][i] = 0;
}
}
if(TakeDmgCD[1][i] > 0)
{
TakeDmgCD[1][i]++;
if(TakeDmgCD[1][i] == 5)
{
Declared[1][i] = false;
gLastHit[1][i] = -2;
HPLost[0][i][H[1][i]] = 0;
PlayerTextDrawSetString(i, DoingDamage[1][i], "_");
TakeDmgCD[1][i] = 0;
}
}
if(TakeDmgCD[2][i] > 0)
{
TakeDmgCD[2][i]++;
if(TakeDmgCD[2][i] == 5)
{
HPLost[0][i][H[2][i]] = 0;
PlayerTextDrawSetString(i, DoingDamage[2][i], "_");
gLastHit[2][i] = -3;
TakeDmgCD[2][i] = 0;
}
}
if(TakeDmgCD[3][i] > 0)
{
TakeDmgCD[3][i]++;
if(TakeDmgCD[3][i] == 5)
{
Declared[2][i] = false;
gLastHit[3][i] = -1;
HPLost[1][i][H[3][i]] = 0;
PlayerTextDrawSetString(i, GettingDamaged[0][i], "_");
TakeDmgCD[3][i] = 0;
}
}
if(TakeDmgCD[4][i] > 0)
{
TakeDmgCD[4][i]++;
if(TakeDmgCD[4][i] == 5)
{
Declared[3][i] = false;
gLastHit[4][i] = -2;
HPLost[1][i][H[4][i]] = 0;
PlayerTextDrawSetString(i, GettingDamaged[1][i], "_");
TakeDmgCD[4][i] = 0;
}
}
if(TakeDmgCD[5][i] > 0)
{
TakeDmgCD[5][i]++;
if(TakeDmgCD[5][i] == 5)
{
gLastHit[5][i] = -3;
HPLost[1][i][H[5][i]] = 0;
PlayerTextDrawSetString(i, GettingDamaged[2][i], "_");
TakeDmgCD[5][i] = 0;
}
}
if(TakeDmgCD[6][i] > 0)
{
TakeDmgCD[6][i]++;
if(TakeDmgCD[6][i] == 5)
{
ILost[i] = 0;
PlayerTextDrawSetString(i, GettingDamaged[0][i], "_");
TakeDmgCD[6][i] = 0;
}
}
if(TakeDmgCD[7][i] > 0)
{
TakeDmgCD[7][i]++;
if(TakeDmgCD[7][i] == 5)
{
ILost[i] = 0;
PlayerTextDrawSetString(i, GettingDamaged[1][i], "_");
TakeDmgCD[7][i] = 0;
}
}
if(TakeDmgCD[8][i] > 0)
{
TakeDmgCD[8][i]++;
if(TakeDmgCD[8][i] == 5)
{
ILost[i] = 0;
PlayerTextDrawSetString(i, GettingDamaged[2][i], "_");
TakeDmgCD[8][i] = 0;
}
}
}
return 1;
}