NeLifeASkazka
Участник
- Сообщения
- 128
- Реакции
- 70
Вместо handle, вы можете попробовать создать переменные int/float и сохранять время каждого игрокаУ меня в плагине пару десятков итемов с кулдауном на каждый, вот кроме как отдельными таймерами это делать, идей нет. Уж не знаю, разумный ли это предел)
Пример кода:
int iItem_1[MAXPLAYERS+1];
int iItem_2[MAXPLAYERS+1];
public void OnPluginStart(){
RegConsoleCmd("sm_item1", cmd_item1);
RegConsoleCmd("sm_item2", cmd_item2);
}
public void OnMapStart(){
CreateTimer(0.1, GlobalTimer, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}
public Action cmd_item1(int client, int args){
if(iItem_1[client] == 0){ // если время действия предмета вышло
iItem_1[client] = GetTime() + 10; // игрок покупает 1 предмет на 10 секунд
}
}
public Action cmd_item2(int client, int args){
if(iItem_2[client] == 0){
iItem_2[client] = GetTime() + 5;
}
}
public Action GlobalTimer(Handle timer){
for(int client = 1; client <= MaxClients; client++){
if(iItem_1[client] != 0 && (GetTime() - iItem_1[client]) <= 0){ // Если 1 предмет активен, и если время действия предмета уже равно 0
iItem_1[client] = 0; // "выключаем" предмет
}
if(iItem_2[client] != 0 && (GetTime() - iItem_2[client]) <= 0){
iItem_2[client] = 0;
}
}
}