Prolific
27.04.2016, 19:48
Приветствую, друзья. Написал полезный инклуд, которой кэширует некоторую информацию об игроке, для последующего быстрого доступа к ней.
cache_GetPlayerVehicleID(playerid)
Возвращает ИД транспорта, в котором сидит игрок
cache_IsPlayerInVehicle(playerid, vehicleid)
Возвращает 1/0 в зависимости от того сидит игрок в vehicleid или нет
cache_IsPlayerInAnyVehicle(playerid)
Возвращает 1/0 в зависимости от того сидит ли игрок в каком либо транспорте
cache_GetPlayerVehicleSeat(playerid)
Возвращает ид места игрока в транспорте, либо -1, если игрок не в транспорте
cache_GetPlayerState(playerid)
Возвращает текущее положение игрока
cache_GetPlayerInterior(playerid)
Возвращает интерьер игрока
cache_GetPlayerVirtualWorld(playerid)
Возвращает виртуальный мир игрока
cache_GetPlayerColor(playerid)
Возвращает цвет игрока
cache_GetPlayerName(playerid)
Возвращает имя игрока (размер MAX_PLAYER_NAME+1)
cache_GetPlayerScore(playerid)
Возвращает очки игрока
cache_GetPlayerSkin(playerid)
Возвращает скин игрока
cache_GetPlayerIp(playerid)
Возвращает ип игрока (размер 15+1)
cache_GetPlayerHealth(playerid)
Возвращает ХП игрока (float)
cache_GetPlayerArmour(playerid)
Возвращает броню игрока (float)
#include <a_samp>
enum enum_player_sost
{
player_veh,
player_seat,
player_state,
player_int,
player_vw,
player_color,
player_name[MAX_PLAYER_NAME+1],
player_score,
player_skin,
player_tmp_skin,
player_ip[15+1],
Float:player_health,
Float:player_armour
}
new cache_player_func[MAX_PLAYERS][enum_player_sost];
#define cache_GetPlayerVehicleID(%0) cache_player_func[%0][player_veh]
#define cache_IsPlayerInVehicle(%0,%1) ((%1 == cache_player_func[%0][player_veh]) ? (1) : (0))
#define cache_IsPlayerInAnyVehicle(%0) ((cache_player_func[%0][player_veh]) ? (1) : (0))
#define cache_GetPlayerVehicleSeat(%0) cache_player_func[%0][player_seat]
#define cache_GetPlayerState(%0) cache_player_func[%0][player_state]
#define cache_GetPlayerInterior(%0) cache_player_func[%0][player_int]
#define cache_GetPlayerVirtualWorld(%0) cache_player_func[%0][player_vw]
#define cache_GetPlayerColor(%0) cache_player_func[%0][player_color]
#define cache_GetPlayerName(%0) cache_player_func[%0][player_name]
#define cache_GetPlayerScore(%0) cache_player_func[%0][player_score]
#define cache_GetPlayerSkin(%0) cache_player_func[%0][player_skin]
#define cache_GetPlayerIp(%0) cache_player_func[%0][player_ip]
#define cache_GetPlayerHealth(%0) cache_player_func[%0][player_health]
#define cache_GetPlayerArmour(%0) cache_player_func[%0][player_armour]
//Перехваты коллбэков
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, cache_player_func[playerid][player_name], 20+1);
GetPlayerIp(playerid, cache_player_func[playerid][player_ip], 15+1);
SetPlayerColor(playerid, 0xFFFFFF00);
SetPlayerHealth(playerid, 100.0);
SetPlayerArmour(playerid, 0.0);
SetPlayerSkin(playerid, 0);
cache_player_func[playerid][player_tmp_skin] = -1;
cache_player_func[playerid][player_veh] = 0;
cache_player_func[playerid][player_seat] = -1;
cache_player_func[playerid][player_state] = 0;
cache_player_func[playerid][player_int] = 0;
cache_player_func[playerid][player_vw] = 0;
cache_player_func[playerid][player_score] = 0;
#if defined cache_OnPlayerConnect
return cache_OnPlayerConnect(playerid);
#endif
}
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect cache_OnPlayerConnect
#if defined cache_OnPlayerConnect
forward cache_OnPlayerConnect(playerid);
#endif
public OnPlayerStateChange(playerid, newstate, oldstate)
{
cache_player_func[playerid][player_state] = newstate;
if(newstate == PLAYER_STATE_DRIVER)
{
cache_player_func[playerid][player_veh] = GetPlayerVehicleID(playerid);
cache_player_func[playerid][player_seat] = 0;
}
else if(newstate == PLAYER_STATE_PASSENGER)
{
cache_player_func[playerid][player_veh] = GetPlayerVehicleID(playerid);
cache_player_func[playerid][player_seat] = GetPlayerVehicleSeat(playerid);
}
else if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
{
cache_player_func[playerid][player_veh] = 0;
cache_player_func[playerid][player_seat] = -1;
}
#if defined cache_OnPlayerStateChange
return cache_OnPlayerStateChange(playerid, newstate, oldstate);
#endif
}
#if defined _ALS_OnPlayerStateChange
#undef OnPlayerStateChange
#else
#define _ALS_OnPlayerStateChange
#endif
#define OnPlayerStateChange cache_OnPlayerStateChange
#if defined cache_OnPlayerStateChange
forward cache_OnPlayerStateChange(playerid, newstate, oldstate);
#endif
public OnPlayerSpawn(playerid)
{
if(cache_player_func[playerid][player_tmp_skin] > -1)
{
SetPlayerSkin(playerid, cache_player_func[playerid][player_tmp_skin]);
cache_player_func[playerid][player_tmp_skin] = -1;
}
#if defined cache_OnPlayerSpawn
return cache_OnPlayerSpawn(playerid);
#endif
}
#if defined _ALS_OnPlayerSpawn
#undef OnPlayerSpawn
#else
#define _ALS_OnPlayerSpawn
#endif
#define OnPlayerSpawn cache_OnPlayerSpawn
#if defined cache_OnPlayerSpawn
forward cache_OnPlayerSpawn(playerid);
#endif
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
cache_player_func[playerid][player_int] = newinteriorid;
#if defined cache_OnPlayerInteriorChange
return cache_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
#endif
}
#if defined _ALS_OnPlayerInteriorChange
#undef OnPlayerInteriorChange
#else
#define _ALS_OnPlayerInteriorChange
#endif
#define OnPlayerInteriorChange cache_OnPlayerInteriorChange
#if defined cache_OnPlayerInteriorChange
forward cache_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
#endif
//Перехват функций
stock cache_SetPlayerVirtualWorld(playerid, worldid)
{
cache_player_func[playerid][player_vw] = worldid;
return SetPlayerVirtualWorld(playerid, worldid);
}
#if defined _ALS_SetPlayerVirtualWorld
#undef SetPlayerVirtualWorld
#else
#define _ALS_SetPlayerVirtualWorld
#endif
#define SetPlayerVirtualWorld cache_SetPlayerVirtualWorld
stock cache_SetPlayerColor(playerid, color)
{
cache_player_func[playerid][player_color] = color;
return SetPlayerColor(playerid, color);
}
#if defined _ALS_SetPlayerColor
#undef SetPlayerColor
#else
#define _ALS_SetPlayerColor
#endif
#define SetPlayerColor cache_SetPlayerColor
stock cache_SetPlayerName(playerid, const name[])
{
strins(cache_player_func[playerid][player_name], name, 0);
return SetPlayerName(playerid, name);
}
#if defined _ALS_SetPlayerName
#undef SetPlayerName
#else
#define _ALS_SetPlayerName
#endif
#define SetPlayerName cache_SetPlayerName
stock cache_SetPlayerScore(playerid, score)
{
cache_player_func[playerid][player_score] = score;
return SetPlayerScore(playerid, score);
}
#if defined _ALS_SetPlayerScore
#undef SetPlayerScore
#else
#define _ALS_SetPlayerScore
#endif
#define SetPlayerScore cache_SetPlayerScore
stock cache_SetPlayerSkin(playerid, skinid)
{
cache_player_func[playerid][player_skin] = skinid;
return SetPlayerSkin(playerid, skinid);
}
#if defined _ALS_SetPlayerSkin
#undef SetPlayerSkin
#else
#define _ALS_SetPlayerSkin
#endif
#define SetPlayerSkin cache_SetPlayerSkin
stock cache_SetSpawnInfo(playerid, team, skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo)
{
cache_player_func[playerid][player_tmp_skin] = skin;
return SetSpawnInfo(playerid, team, skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
}
#if defined _ALS_SetSpawnInfo
#undef SetSpawnInfo
#else
#define _ALS_SetSpawnInfo
#endif
#define SetSpawnInfo cache_SetSpawnInfo
stock cache_SetPlayerHealth(playerid, Float:health)
{
cache_player_func[playerid][player_health] = health;
return SetPlayerHealth(playerid, health);
}
#if defined _ALS_SetPlayerHealth
#undef SetPlayerHealth
#else
#define _ALS_SetPlayerHealth
#endif
#define SetPlayerHealth cache_SetPlayerHealth
stock cache_SetPlayerArmour(playerid, Float:armour)
{
cache_player_func[playerid][player_armour] = armour;
return SetPlayerArmour(playerid, armour);
}
#if defined _ALS_SetPlayerArmour
#undef SetPlayerArmour
#else
#define _ALS_SetPlayerArmour
#endif
#define SetPlayerArmour cache_SetPlayerArmour
!!!Возможен выход за пределы массива!!!
Автор: Prolific, постите где угодно с указанием автора.
cache_GetPlayerVehicleID(playerid)
Возвращает ИД транспорта, в котором сидит игрок
cache_IsPlayerInVehicle(playerid, vehicleid)
Возвращает 1/0 в зависимости от того сидит игрок в vehicleid или нет
cache_IsPlayerInAnyVehicle(playerid)
Возвращает 1/0 в зависимости от того сидит ли игрок в каком либо транспорте
cache_GetPlayerVehicleSeat(playerid)
Возвращает ид места игрока в транспорте, либо -1, если игрок не в транспорте
cache_GetPlayerState(playerid)
Возвращает текущее положение игрока
cache_GetPlayerInterior(playerid)
Возвращает интерьер игрока
cache_GetPlayerVirtualWorld(playerid)
Возвращает виртуальный мир игрока
cache_GetPlayerColor(playerid)
Возвращает цвет игрока
cache_GetPlayerName(playerid)
Возвращает имя игрока (размер MAX_PLAYER_NAME+1)
cache_GetPlayerScore(playerid)
Возвращает очки игрока
cache_GetPlayerSkin(playerid)
Возвращает скин игрока
cache_GetPlayerIp(playerid)
Возвращает ип игрока (размер 15+1)
cache_GetPlayerHealth(playerid)
Возвращает ХП игрока (float)
cache_GetPlayerArmour(playerid)
Возвращает броню игрока (float)
#include <a_samp>
enum enum_player_sost
{
player_veh,
player_seat,
player_state,
player_int,
player_vw,
player_color,
player_name[MAX_PLAYER_NAME+1],
player_score,
player_skin,
player_tmp_skin,
player_ip[15+1],
Float:player_health,
Float:player_armour
}
new cache_player_func[MAX_PLAYERS][enum_player_sost];
#define cache_GetPlayerVehicleID(%0) cache_player_func[%0][player_veh]
#define cache_IsPlayerInVehicle(%0,%1) ((%1 == cache_player_func[%0][player_veh]) ? (1) : (0))
#define cache_IsPlayerInAnyVehicle(%0) ((cache_player_func[%0][player_veh]) ? (1) : (0))
#define cache_GetPlayerVehicleSeat(%0) cache_player_func[%0][player_seat]
#define cache_GetPlayerState(%0) cache_player_func[%0][player_state]
#define cache_GetPlayerInterior(%0) cache_player_func[%0][player_int]
#define cache_GetPlayerVirtualWorld(%0) cache_player_func[%0][player_vw]
#define cache_GetPlayerColor(%0) cache_player_func[%0][player_color]
#define cache_GetPlayerName(%0) cache_player_func[%0][player_name]
#define cache_GetPlayerScore(%0) cache_player_func[%0][player_score]
#define cache_GetPlayerSkin(%0) cache_player_func[%0][player_skin]
#define cache_GetPlayerIp(%0) cache_player_func[%0][player_ip]
#define cache_GetPlayerHealth(%0) cache_player_func[%0][player_health]
#define cache_GetPlayerArmour(%0) cache_player_func[%0][player_armour]
//Перехваты коллбэков
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, cache_player_func[playerid][player_name], 20+1);
GetPlayerIp(playerid, cache_player_func[playerid][player_ip], 15+1);
SetPlayerColor(playerid, 0xFFFFFF00);
SetPlayerHealth(playerid, 100.0);
SetPlayerArmour(playerid, 0.0);
SetPlayerSkin(playerid, 0);
cache_player_func[playerid][player_tmp_skin] = -1;
cache_player_func[playerid][player_veh] = 0;
cache_player_func[playerid][player_seat] = -1;
cache_player_func[playerid][player_state] = 0;
cache_player_func[playerid][player_int] = 0;
cache_player_func[playerid][player_vw] = 0;
cache_player_func[playerid][player_score] = 0;
#if defined cache_OnPlayerConnect
return cache_OnPlayerConnect(playerid);
#endif
}
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect cache_OnPlayerConnect
#if defined cache_OnPlayerConnect
forward cache_OnPlayerConnect(playerid);
#endif
public OnPlayerStateChange(playerid, newstate, oldstate)
{
cache_player_func[playerid][player_state] = newstate;
if(newstate == PLAYER_STATE_DRIVER)
{
cache_player_func[playerid][player_veh] = GetPlayerVehicleID(playerid);
cache_player_func[playerid][player_seat] = 0;
}
else if(newstate == PLAYER_STATE_PASSENGER)
{
cache_player_func[playerid][player_veh] = GetPlayerVehicleID(playerid);
cache_player_func[playerid][player_seat] = GetPlayerVehicleSeat(playerid);
}
else if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
{
cache_player_func[playerid][player_veh] = 0;
cache_player_func[playerid][player_seat] = -1;
}
#if defined cache_OnPlayerStateChange
return cache_OnPlayerStateChange(playerid, newstate, oldstate);
#endif
}
#if defined _ALS_OnPlayerStateChange
#undef OnPlayerStateChange
#else
#define _ALS_OnPlayerStateChange
#endif
#define OnPlayerStateChange cache_OnPlayerStateChange
#if defined cache_OnPlayerStateChange
forward cache_OnPlayerStateChange(playerid, newstate, oldstate);
#endif
public OnPlayerSpawn(playerid)
{
if(cache_player_func[playerid][player_tmp_skin] > -1)
{
SetPlayerSkin(playerid, cache_player_func[playerid][player_tmp_skin]);
cache_player_func[playerid][player_tmp_skin] = -1;
}
#if defined cache_OnPlayerSpawn
return cache_OnPlayerSpawn(playerid);
#endif
}
#if defined _ALS_OnPlayerSpawn
#undef OnPlayerSpawn
#else
#define _ALS_OnPlayerSpawn
#endif
#define OnPlayerSpawn cache_OnPlayerSpawn
#if defined cache_OnPlayerSpawn
forward cache_OnPlayerSpawn(playerid);
#endif
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
cache_player_func[playerid][player_int] = newinteriorid;
#if defined cache_OnPlayerInteriorChange
return cache_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
#endif
}
#if defined _ALS_OnPlayerInteriorChange
#undef OnPlayerInteriorChange
#else
#define _ALS_OnPlayerInteriorChange
#endif
#define OnPlayerInteriorChange cache_OnPlayerInteriorChange
#if defined cache_OnPlayerInteriorChange
forward cache_OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
#endif
//Перехват функций
stock cache_SetPlayerVirtualWorld(playerid, worldid)
{
cache_player_func[playerid][player_vw] = worldid;
return SetPlayerVirtualWorld(playerid, worldid);
}
#if defined _ALS_SetPlayerVirtualWorld
#undef SetPlayerVirtualWorld
#else
#define _ALS_SetPlayerVirtualWorld
#endif
#define SetPlayerVirtualWorld cache_SetPlayerVirtualWorld
stock cache_SetPlayerColor(playerid, color)
{
cache_player_func[playerid][player_color] = color;
return SetPlayerColor(playerid, color);
}
#if defined _ALS_SetPlayerColor
#undef SetPlayerColor
#else
#define _ALS_SetPlayerColor
#endif
#define SetPlayerColor cache_SetPlayerColor
stock cache_SetPlayerName(playerid, const name[])
{
strins(cache_player_func[playerid][player_name], name, 0);
return SetPlayerName(playerid, name);
}
#if defined _ALS_SetPlayerName
#undef SetPlayerName
#else
#define _ALS_SetPlayerName
#endif
#define SetPlayerName cache_SetPlayerName
stock cache_SetPlayerScore(playerid, score)
{
cache_player_func[playerid][player_score] = score;
return SetPlayerScore(playerid, score);
}
#if defined _ALS_SetPlayerScore
#undef SetPlayerScore
#else
#define _ALS_SetPlayerScore
#endif
#define SetPlayerScore cache_SetPlayerScore
stock cache_SetPlayerSkin(playerid, skinid)
{
cache_player_func[playerid][player_skin] = skinid;
return SetPlayerSkin(playerid, skinid);
}
#if defined _ALS_SetPlayerSkin
#undef SetPlayerSkin
#else
#define _ALS_SetPlayerSkin
#endif
#define SetPlayerSkin cache_SetPlayerSkin
stock cache_SetSpawnInfo(playerid, team, skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo)
{
cache_player_func[playerid][player_tmp_skin] = skin;
return SetSpawnInfo(playerid, team, skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
}
#if defined _ALS_SetSpawnInfo
#undef SetSpawnInfo
#else
#define _ALS_SetSpawnInfo
#endif
#define SetSpawnInfo cache_SetSpawnInfo
stock cache_SetPlayerHealth(playerid, Float:health)
{
cache_player_func[playerid][player_health] = health;
return SetPlayerHealth(playerid, health);
}
#if defined _ALS_SetPlayerHealth
#undef SetPlayerHealth
#else
#define _ALS_SetPlayerHealth
#endif
#define SetPlayerHealth cache_SetPlayerHealth
stock cache_SetPlayerArmour(playerid, Float:armour)
{
cache_player_func[playerid][player_armour] = armour;
return SetPlayerArmour(playerid, armour);
}
#if defined _ALS_SetPlayerArmour
#undef SetPlayerArmour
#else
#define _ALS_SetPlayerArmour
#endif
#define SetPlayerArmour cache_SetPlayerArmour
!!!Возможен выход за пределы массива!!!
Автор: Prolific, постите где угодно с указанием автора.