Помогите "убить таймер"

pashek71

Участник
Сообщения
232
Реакции
43
C-подобный:
public OnPluginStart()
{
	HookEvent("round_start", Event_RoundStart);
	RegConsoleCmd("sm_marker", marker);
	RegAdminCmd("sm_clearmarker", ClearMarker, ADMFLAG_ROOT);
}

public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
	KillTimer(g_Timer[0]);
}

public OnMapStart()
{
	g_BeamSprite = PrecacheModel("materials/sprites/blueflare1.vmt");
	g_HaloSprite = PrecacheModel("materials/sprites/glow08.vmt");
}

GetLookPos(i, Float:pposCMD[3]) 
{ 
     decl Float:EyePosition[3], Float:EyeAngles[3], Handle:h_trace; 
     GetClientEyePosition(i, EyePosition); 
     GetClientEyeAngles(i, EyeAngles); 
     h_trace = TR_TraceRayFilterEx(EyePosition, EyeAngles, MASK_SOLID, RayType_Infinite, GetLookPos_Filter, i); 
     TR_GetEndPosition(pposCMD, h_trace); 
     CloseHandle(h_trace); 
} 

public bool:GetLookPos_Filter(ent, mask, any:i) 
{ 
      return i != ent; 
}

public Action:ClearMarker(client,args)
{
	KillTimer(g_Timer[0]);
	return Plugin_Handled;
}

public Action:marker(client,args)
{
	if(JC_GetCaptain() != client) 
	{
		PrintToChat(client, "Вы не командир");
		return;
	} else
	{
	GetLookPos(client,g_pposCMD);
	g_Timer[0] = CreateTimer(0.5, Timer_Beacon, _,TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
	}
}

public Action:Timer_Beacon(Handle:Timer, any:pack)
{
	TE_SetupBeamRingPoint(g_pposCMD, 50.0, 60.0, g_BeamSprite, g_HaloSprite, 0, 15, 0.1, 10.0, 0.0, g_color, 10, 0);
	TE_SendToAll();
	return Plugin_Continue;
}
Крч, вот код, нужно создать маяк в том месте куда указывает курсор+удаление маяка командой+удаление маяка в новом раунде, для этого нужно убить таймер, но я чет вообще не понимаю как, делал по примеру из другого плагина(я про то как убить тайме), но там все работает, здесь же нет. Пишет что неизвестный handle:
[SM] Native "KillTimer" reported: Invalid timer handle 29fc082c (error 3)
нужно так же всунуть проверку на то включен ли он или нет(таймер перед его "убийстом"), просьба пояснить :Ы

осталось сделать проверку на то "жив" ли таймер, :С
 
Последнее редактирование:

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
if(g_Timer[0]) - вот твоя проверка, жив ли таймер. А когда его будешь убивать, делай g_Timer[0] = INVALID_HANDLE (После KillTimer)
 
Сверху Снизу