07.08.2011, 23:24
Made one quick, you may modify and tweak it. ![Wink](images/smilies/wink.png)
![Wink](images/smilies/wink.png)
pawn Код:
new
bool:g_Infected[MAX_PLAYERS],
bool:g_IsZombie[MAX_PLAYERS],
InfectedTimer[MAX_PLAYERS]
;
public OnPlayerSpawn(playerid)
{
KillTimer( InfectedTimer[playerid] );
g_Infected[playerid = false;
return true;
}
public OnPlayerDisconnect(playerid, reason)
{
KillTimer( InfectedTimer[playerid] );
g_Infected[playerid = false;
return true;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if( newkeys & KEY_FIRE && GetPlayerWeapon(playerid) == 0 )
{
if(g_IsZombie[playerid])
{
new Float:P[3];
GetPlayerPos(playerid, P[0], P[1], P[2]);
GetXYInFrontOfPlayer(playerid, P[0], P[1], 1);
for(new i=0; i<MAX_PLAYERS; i++)
{
if( IsPlayerConnected(i) && !IsPlayerNPC(i) )
{
if(i != playerid && !g_IsZombie[i] && !g_Infected[i] && IsPlayerInRangeOfPoint(i, 1, P[0], P[1], P[2]))
{
g_Infected[i] = true;
SendClientMessage(i, 0xFF0000FF, "You are attacked & infected by a Zombie! You are losing your health!");
SendClientMessage(i, 0xFF0000FF, "You need to use a Pill to before you die..");
InfectedTimer[i] = SetTimerEx("ReducePlayerHealth", 5000, true, "df", i, 5.0);
return true;
}
}
}
}
}
return true;
}
CMD:zombie(playerid, cmdtext[] )
{
if(g_IsZombie[playerid])
{
g_IsZombie[playerid] = false;
SendClientMessage(playerid, 0x00FF00FF, "You're no longer a Zombie.");
} else {
g_IsZombie[playerid] = true;
SendClientMessage(playerid, 0x00FF00FF, "You're a Zombie!");
}
return true;
}
stock ReducePlayerHealth(playerid, Float:amount)
{
if(amount > 100.0) return false;
new Float:HP; GetPlayerHealth(playerid, HP);
if(HP <= amount) SetPlayerHealth(playerid, 0.0);
SetPlayerHealth(playerid, HP-amount);
return true;
}
GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
{ // Created by ******
new Float:a; GetPlayerPos(playerid, x, y, a); GetPlayerFacingAngle(playerid, a);
if (GetPlayerVehicleID(playerid)) { GetVehicleZAngle(GetPlayerVehicleID(playerid), a); }
x += (distance * floatsin(-a, degrees));
y += (distance * floatcos(-a, degrees));
}