Pan1k
Участник
- Сообщения
- 5
- Реакции
- 0
Всем привет,у меня возникла проблема при изучении SourcePawn. Я решил написать маленький плагин. Суть плагина заключается в том ,что при стрельбе игрок увеличивает скорость на определенное кол-во времени. Я сначала сделал плагин без таймера , все получилось,но вот дальше я не очень понимаю как связать Events и Timer.
Сам код без Timer :Оффтоп
#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required
public void OnPluginStart()
{
HookEvent("player_hurt" , Hurt,EventHookMode_Pre);
}
public void Hurt(Event hEvent , const char[] sEvName , bool bDontBroadcast)
{
int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
if(iClient!=0)
{
PrintToChat(iClient,"Ваша скорость увеличилась!");
SetEntPropFloat(iClient, Prop_Data, "m_flLaggedMovementValue", 1.7);
}
}
Дальше я пошел в какие то дебри и не понимаю как связать..
Мои наработки:
№1Оффтоп
#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required
public void OnPluginStart()
{
HookEvent("player_hurt" , Hurt,EventHookMode_Pre);
CreateTimer(4.9,Speedy_End, _,TIMER_REPEAT);
}
public void Hurt(Event hEvent , const char[] sEvName , bool bDontBroadcast)
{
int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
if(iClient!=0)
{
PrintToChat(iClient,"Ваша скорость увеличилась!");
SetEntPropFloat(iClient, Prop_Data, "m_flLaggedMovementValue", 1.7);
}
Speedy_End(Handle timer, any UserId)
{
int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
if(iClient!=0)
{
return Plugin_Stop
}
}
return Plugin_Continue;
}
№2
Оффтоп
#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required
public void OnPluginStart()
{
HookEvent("player_hurt" , Hurt,EventHookMode_Pre);
CreateTimer(4.9,Speedy_End,0,TIMER_REPEAT);
MySpeed(Hurt,Speedy_End);
}
int MySpeed(Hurt,Speedy_End)
{
Hurt(Event hEvent , const char[] sEvName , bool bDontBroadcast)
{
int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
if(iClient!=0)
{
PrintToChat(iClient,"Ваша скорость увеличилась!");
SetEntPropFloat(iClient, Prop_Data, "m_flLaggedMovementValue", 1.7);
}
}
Speedy_End(Handle timer, any UserId)
{
if(iClient!=0)
{
return Plugin_Stop
}
}
return Plugin_Continue;
}
Объясните пожалуйста как связать:ab:
Сам код без Timer :Оффтоп
#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required
public void OnPluginStart()
{
HookEvent("player_hurt" , Hurt,EventHookMode_Pre);
}
public void Hurt(Event hEvent , const char[] sEvName , bool bDontBroadcast)
{
int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
if(iClient!=0)
{
PrintToChat(iClient,"Ваша скорость увеличилась!");
SetEntPropFloat(iClient, Prop_Data, "m_flLaggedMovementValue", 1.7);
}
}
Дальше я пошел в какие то дебри и не понимаю как связать..
Мои наработки:
№1Оффтоп
#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required
public void OnPluginStart()
{
HookEvent("player_hurt" , Hurt,EventHookMode_Pre);
CreateTimer(4.9,Speedy_End, _,TIMER_REPEAT);
}
public void Hurt(Event hEvent , const char[] sEvName , bool bDontBroadcast)
{
int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
if(iClient!=0)
{
PrintToChat(iClient,"Ваша скорость увеличилась!");
SetEntPropFloat(iClient, Prop_Data, "m_flLaggedMovementValue", 1.7);
}
Speedy_End(Handle timer, any UserId)
{
int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
if(iClient!=0)
{
return Plugin_Stop
}
}
return Plugin_Continue;
}
№2
Оффтоп
#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required
public void OnPluginStart()
{
HookEvent("player_hurt" , Hurt,EventHookMode_Pre);
CreateTimer(4.9,Speedy_End,0,TIMER_REPEAT);
MySpeed(Hurt,Speedy_End);
}
int MySpeed(Hurt,Speedy_End)
{
Hurt(Event hEvent , const char[] sEvName , bool bDontBroadcast)
{
int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
if(iClient!=0)
{
PrintToChat(iClient,"Ваша скорость увеличилась!");
SetEntPropFloat(iClient, Prop_Data, "m_flLaggedMovementValue", 1.7);
}
}
Speedy_End(Handle timer, any UserId)
{
if(iClient!=0)
{
return Plugin_Stop
}
}
return Plugin_Continue;
}
Объясните пожалуйста как связать:ab: