Отталкивание игроков гравипушкой

iamdss

Участник
Сообщения
126
Реакции
12
Всем привет, снова я с моими вопросами. Теперь моя задача такова. Необходимо сделать так, чтобы игроки могли толкать других игроков гравиганом, как будто это не игроки, а предметы. Кто не в курсе, напомню, что речь о HL2DM. Подскажите, в каком направлении мне искать. Спасибо.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
в каком направлении мне искать
Тут наверно проще: через GetClientAimTarget или подобное (trace) наводим на предмет и, если ловит индекс игрока (при выстреле) - значит, толкаем его velosity (TeleportEntity(iClient, const Float:origin[3], const Float:angles[3], const Float:velocity[3])).
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
В сдк хукс есть SDKHook_TraceAttack или аутпуты. Как делать кнокбек уже не однократно описывалось на ам
 

SourceGod

Участник
Сообщения
47
Реакции
0
PHP:
#include <sourcemod> 
#include <sdktools> 

public OnPluginStart()  
{ 
   HookEvent("weapon_fire", Fire); //Ловим событие
} 

public Action:Fire(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
   new client = GetClientOfUserId(GetEventInt(event, "userid")); 
   if (client && IsClientInGame(client)) 
   { 
     decl String:stuff[30]; 
  GetEventString(event, "weapon", stuff, 30); 
  if (StrEq, stuff, "awp"))  Pussh(client); 
   } 
} 

Pussh(client)  
{  
decl Float:EyeAngles[3];  
GetClientEyeAngles(client, EyeAngles);  

decl Float:Push[3];  
Push[0] = (FloatMul(50.0, Cosine(DegToRad(EyeAngles[1]))));  
Push[1] = (FloatMul(50.0, Sine(DegToRad(EyeAngles[1]))));  
Push[2] = (FloatMul(50.0, Sine(DegToRad(EyeAngles[0]))));  
ScaleVector(Push, -20.0); //20.0 Сила отталкивания

TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, Push);  
}
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
PHP:
#include <sourcemod> 
#include <sdktools> 

public OnPluginStart()  
{ 
   HookEvent("weapon_fire", Fire); //Ловим событие
} 

public Action:Fire(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
   new client = GetClientOfUserId(GetEventInt(event, "userid")); 
   if (client && IsClientInGame(client)) 
   { 
     decl String:stuff[30]; 
  GetEventString(event, "weapon", stuff, 30); 
  if (StrEq, stuff, "awp"))  Pussh(client); 
   } 
} 

Pussh(client)  
{  
decl Float:EyeAngles[3];  
GetClientEyeAngles(client, EyeAngles);  

decl Float:Push[3];  
Push[0] = (FloatMul(50.0, Cosine(DegToRad(EyeAngles[1]))));  
Push[1] = (FloatMul(50.0, Sine(DegToRad(EyeAngles[1]))));  
Push[2] = (FloatMul(50.0, Sine(DegToRad(EyeAngles[0]))));  
ScaleVector(Push, -20.0); //20.0 Сила отталкивания

TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, Push);  
}

Оффтоп
 

iamdss

Участник
Сообщения
126
Реакции
12
Всем спасибо за советы.



Это как раз первое, что и пришло в голову.

SDKHook_TraceAttack или аутпуты

Посмотрю. С отбрасыванием проблем нет, код готов. Меня просто интересовали все возможные варианты.

SourceGod, спасибо за код, правда, вряд ли у меня найдётся weapon_fire. Попробую все варианты.
 

SourceGod

Участник
Сообщения
47
Реакции
0
gibs, Шо не так? Я ему кинул идею. Код от хвостера

Добавлено через 3 минуты
iamdss, weapon fire
Це все зброї. А в самому коді є
Назва цієї зброї там написано, weapon_awp міняй її на свою

Добавлено через 4 минуты
Блин привычка
Weapon fire Это все оружия. А в самом коде есть
Название этого оружия там написано, weapon_awp меняй ее на свою
 
Последнее редактирование:
Сверху Снизу