23.05.2010, 18:00
I'm having a problem with the script below. Everything runs smoothly. But when you die. It just spawns you. It doesn't spec the killer. Could I get some help? I've pretty much tried everything I know.
Код:
#include <a_samp>
#define PLAYERS 390 // Number of your player slots
#define PlayerLoop(%1) for(new %1=0; %1<PLAYERS,IsPlayerConnected(%1);%1++)
//======================================================================Settings
//#define RespawnOption // Comment this if you don't want to give players the option to skip speccing their killer
#define SpawnTime 5 // Time player spectates his kill, in seconds
//#define SpawnCamera // Comment out if you want player to instantly spawn if no one killed him
//Camera positions for when player just dies
#define CamX 0.0
#define CamY 0.0
#define CamZ 0.0
#define CamLX 0.0
#define CamLY 0.0
#define CamLZ 0.0
new PlayerSpec[PLAYERS] = -1;
public OnPlayerConnect(playerid)
{
PlayerSpec[playerid] = -1;
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
PlayerLoop(i)
{
if(PlayerSpec[playerid] == i)
{
ExitSpec(i);
}
}
return 1;
}
public OnPlayerSpawn(playerid)
{
PlayerSpec[playerid] = -1;
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid == INVALID_PLAYER_ID)
{
#if defined SpawnCamera
SetPlayerCameraLookAt(playerid, CamLX, CamLY, CamLZ);
SetPlayerCameraPos(playerid, CamX, CamY, CamZ);
#else
SpawnPlayer(playerid);
#endif
}
else
{
TogglePlayerSpectating(playerid, true);
if(IsPlayerInAnyVehicle(killerid))PlayerSpectateVehicle(playerid, GetPlayerVehicleID(killerid));
else PlayerSpectatePlayer(playerid, killerid);
PlayerSpec[playerid] = killerid;
PlayerLoop(i)
{
if(playerid == PlayerSpec[i])
{
TogglePlayerSpectating(i, true);
if(IsPlayerInAnyVehicle(killerid))PlayerSpectateVehicle(i, GetPlayerVehicleID(killerid));
else PlayerSpectatePlayer(i, killerid);
PlayerSpec[i] = killerid;
SetTimerEx("ExitSpec", SpawnTime*1000, false, "d", i);
}
}
SetTimerEx("ExitSpec", SpawnTime, false, "d", playerid);
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
#if defined RespawnOption
if(newkeys == KEY_SPRINT)
{
ExitSpec(playerid);
}
#endif
return 1;
}
forward ExitSpec(id);
public ExitSpec(id)
{
TogglePlayerSpectating(id, false);
SpawnPlayer(id);
}

