Не знаю, поможет тебе это или нет, но на просторах инета есть плагин(модуль) для таймера, суть плагина в том, что если человек ставит на карте(например бхоп) рекорд, то потом его призрак(бот) проходит эту же карту до тех пор, пока не поставят новый.
Cвоеобразная демка на сурсмоде.
Я думаю если ты найдешь этот плагин, то почерпнешь в нем необходимые знания для написания своей "машины времени" :DДобавлено (08.06.2014, 02:57:59)
---------------------------------------------
Короче этого плагина(модуля) я не нашел, поэтому написал свою хреньку, на звание лучшего метода мой код не претендует, так что не кидайтесь тапками!
Код
#include <sdktools>
new Handle:TimeMach[MAXPLAYERS+1] = {INVALID_HANDLE, ...};
new bool:Start[MAXPLAYERS+1] = {false, ...};
new bool:R_W[MAXPLAYERS+1] = {false, ...};
new bool:CD[MAXPLAYERS+1] = {false, ...};
public OnPluginStart()
{
for(new client = 1; client < MaxClients; client++) { TimeMach[client] = CreateArray(3); /*#vector size#*/ }
RegConsoleCmd("t_s", Command_Stat_TimeAr);
RegConsoleCmd("t_r", Command_Read_TimeAr);
}
public OnClientPutInServer(client) { ClearValues(client); }
public OnClientDisconnect(client) { ClearValues(client); }
public Action:Command_Stat_TimeAr(client, args)
{
Start[client] = !Start[client];
PrintToChatAll("5 sec Demo Array %s", Start[client] ? "Activate" : "Deactivate");
}
public Action:Command_Read_TimeAr(client, args)
{
R_W[client] = !R_W[client];
PrintToChatAll("Read Time %s", R_W[client] ? "Start" : "End");
}
public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon)
{
if(Start[client])
{
if(!R_W[client]) /*#Write Array#*/
{
new Float:ClPos[3];
GetClientAbsOrigin(client, ClPos);
if(GetArraySize(TimeMach[client]) < 900) /*Items In Array*/
{
PushArrayArray(TimeMach[client], ClPos);
}
else
{
if(!CD[client]) { CD[client] = true; PrintToChat(client, "[Time Machine All Ok]"); }
RemoveFromArray(TimeMach[client], 0);
PushArrayArray(TimeMach[client], ClPos);
}
}
else /*#Read Array#*/
{
new index = GetArraySize(TimeMach[client]);
if(index && CD[client])
{
new Float:ArPos[3];
GetArrayArray(TimeMach[client], index-1, ArPos);
RemoveFromArray(TimeMach[client], index-1);
TeleportEntity(client, ArPos, NULL_VECTOR, NULL_VECTOR);
}
else
{
if(CD[client]) { CD[client] = false; R_W[client] = false; PrintToChat(client, "[Time Machine Cool Down]"); }
}
}
}
}
stock ClearValues(client)
{
Start[client] = R_W[client] = false;
ClearArray(TimeMach[client]);
}
Добавлено (08.06.2014, 03:00:21)
---------------------------------------------
тут никаких заумных проверок нет, это просто основа, все остальное допиливайте сами.