PHP Code:
public void eventPlayerHurt(Event event, const char[] name, bool dontBroadcast)
{
int victim = GetClientOfUserId(GetEventInt(event, "userid"));
int attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
if (victim == attacker)
return;
if (!IsValidAlive(attacker))
return;
if (!IsValidClient(victim))
return;
if (!itemEnabled[attacker])
return;
char weaponName[16];
float victimLocation[3], targetLocation[3];
GetEventString(event, "weapon", weaponName, sizeof(weaponName));
if (!StrEqual(weaponName, "awp"))
return;
GetClientAbsOrigin(victim, victimLocation);
int target = GetRandomClient(victim);
if (IsValidAlive(target)) {
GetClientAbsOrigin(target, targetLocation);
float distanceBetween = GetVectorDistance ( victimLocation, targetLocation );
if ( ( distanceBetween < CHAIN_LIGHTNING_DISTANCE ) )
{
victimLocation[2] += 50.0;
targetLocation[2] += 50.0;
PrintToChat(attacker, "X1: Y1: Z1: X2: Y2: Z2:", victimLocation[0],victimLocation[1],victimLocation[2],targetLocation[0],targetLocation[1],targetLocation[2]);
TE_SetupBeamPoints(victimLocation, targetLocation, traceLightning, 0, 0, 0, 5.3, 4.0, 4.0, 1, 1.1, {0, 100, 125, 190}, 1);
TE_SendToAll();
TE_SetupBeamPoints(victimLocation, targetLocation, traceLightning, 0, 0, 0, 5.3, 6.0, 8.0, 1, 0.0, {0, 0, 255, 190}, 6);
TE_SendToAll();
}
}
}
public int GetRandomClient(int client)
{
int[] iClients = new int[MaxClients];
int iClientsNum, i;
float location[3], targetOrigin[3], distanceBetween;
GetClientAbsOrigin(client, location);
for (i = 1; i <= MaxClients; i++)
{
if (IsValidAlive(i) && GetClientTeam(i) == GetClientTeam(client))
{
GetClientAbsOrigin( i, targetOrigin );
distanceBetween = GetVectorDistance ( targetOrigin, location );
if ( ( distanceBetween < CHAIN_LIGHTNING_DISTANCE ) )
{
iClients[iClientsNum++] = i;
}
}
}
if (iClientsNum > 0)
{
return iClients[GetRandomInt(0, iClientsNum-1)];
}
return 0;
}
It hits same target, whooops sorry guys. i != client. Will put everywhere this check, it seems that I'm coursed with this specific check.