Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Взрыв, обводка и невидимость для команды
BarD Дата: Среда, 30.04.2014, 17:34:36 | Сообщение # 1
Сообщений: 943
Репутация: 137 [ +/- ]
Меня мучают 3 вопроса:
1) Как создать взрыв на месте пропа, например, бочки (не взрывающаяся), при стрельбе по нему?
2) Как создать обводку вокруг человека, на которого смотришь, как в доте 2 или l4d2?
3) Можно ли сделать невидимость игроку так, чтобы его команда его видела, а противоположная нет?

Если можете, то помогите кодом, пожалуйста.
 
ThRunningMan Дата: Среда, 30.04.2014, 21:51:32 | Сообщение # 2
Сообщений: 140
Репутация: 12 [ +/- ]
2) Точно нельзя никак, в лефте эта функция прост овстроена и там можн описать плагины просто используя готовую функцию
3) Можно
Код
public OnClientPutInServer(client)
{
SDKHook(client, SDKHook_SetTransmit, Hook_SetTransmitPlayer);
}
public Action:Hook_SetTransmitPlayer(client, entity)   
{
   
  if(client == entity)  
  {
   return Plugin_Continue;
  }
  if((0 < entity <= MaxClients) && IsClientInGame(entity) && IsClientInGame(client) && IsClientIndex(client) && IsClientIndex(entity))
  {
   if(IsPlayerAlive(entity) && IsPlayerAlive(client))
   {
    if((GetClientTeam(entity) == 3 && GetClientTeam(client) == 2 ) || (GetClientTeam(client) == 3 && GetClientTeam(entity) == 2))
    return Plugin_Handled;
   }
  }
  return Plugin_Continue;   
}

Добавлено (30.04.2014, 21:51:32)
---------------------------------------------
На счет первого, тут несколкьо путей,например, можно создать отталкивающий тригер на месте бочки, воспроизвести звук взрыва, и отнять хп
И кстати есть плагин который заменяет обычные бочки на взрывающиеся на карте, не помню как называется, но точно знаю есть сам тестил, поищи

 
BarD Дата: Четверг, 01.05.2014, 04:41:13 | Сообщение # 3
Сообщений: 943
Репутация: 137 [ +/- ]
Спасибо! А вот по поводу взрыва, можно как-то создать взрыв от гранаты? Имитировать как-то...
 
Sallcom Дата: Воскресенье, 09.11.2014, 22:28:45 | Сообщение # 4
Сообщений: 205
Репутация: 31 [ +/- ]
Цитата BarD ()
А вот по поводу взрыва, можно как-то создать взрыв от гранаты? Имитировать как-то...


Создает взрыв там, куда ты смотришь, когда пишешь команду test.
Код

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

new iExpSprite;

public OnPluginStart(){
      RegConsoleCmd("test", Command_Test);
}

public OnMapStart(){
      PrecacheSound("weapons/hegrenade/explode3.wav", true);
      iExpSprite = PrecacheModel("materials/sprites/zerogxplode.vmt", true);
}

public Action:Command_Test(client, args){
      decl Float:fPos[3], Float:fClientPos[3], Float:fDistance;
      GetClientAimPosition(client, fPos);

      EmitAmbientSound("weapons/hegrenade/explode3.wav", fPos, client, SNDLEVEL_RAIDSIREN);

      TE_SetupExplosion(fPos, iExpSprite, 10.0, 1, 0, 275, 160);
      TE_SendToAll();
     
      for (new i = 1; i <= MaxClients; i++){
          if (IsClientInGame(i) && IsPlayerAlive(i)){
              GetClientAbsOrigin(i, fClientPos);

              if((fDistance = GetVectorDistance(fClientPos, fPos)) <= 100.0)
                  SDKHooks_TakeDamage(i, client, client, fDistance, DMG_GENERIC);//Урон, это fDistance, то есть в данном примере урон равен дистанции от взрыва до игрока.
          }
      }
}

stock GetClientAimPosition(client, Float:fPos[3]){
      decl Float:fAngles[3], Float:fPosition[3], Handle:hTrace;   
      GetClientEyePosition(client, fPosition);   
      GetClientEyeAngles(client, fAngles);   
      hTrace = TR_TraceRayFilterEx(fPosition, fAngles, MASK_SOLID, RayType_Infinite, Get_PosFilter, client);   
      TR_GetEndPosition(fPos, hTrace);   
      CloseHandle(hTrace);   
}   

public bool:Get_PosFilter(ent, mask, any:i)   
      return i != ent;


Сообщение отредактировал Sallcom - Воскресенье, 09.11.2014, 23:19:24
 
Naykon Дата: Понедельник, 10.11.2014, 13:46:21 | Сообщение # 5
Сообщений: 439
Репутация: -4 [ +/- ]
Цитата BarD ()
2) Точно нельзя никак, в лефте эта функция прост овстроена и там можн описать плагины просто используя готовую функцию


Не согласен. Может стандартной функции и нет но можно изобрести велосипед.

Кодом не помогу (времени нет)но вот идея вполне реальна:

Ловим куда смотрит игрок_1.
Если взгляд игрока_1 совпадает с позицией игрока_2 то получаем индекс игрока_2 и по индексу создаем круг вокруг него (типа маяка, чтоб визуально был похож на стабильный круг на 0.0001 сек), пока игрок_1 не отведет взор от игрока_2 круг будет стабильно мелькать.
 
BarD Дата: Понедельник, 10.11.2014, 14:18:19 | Сообщение # 6
Сообщений: 943
Репутация: 137 [ +/- ]
Sallcom, проблему решил еще в мае этого года) Спасибо.
Naykon, это будет не обводка, а просто круг под игроком. Также, создание круга раз в 0.0001 сек серьезно понижает фпс. Такой метод не подходит. Спасибо.
 
djded Дата: Среда, 28.11.2018, 03:26:30 | Сообщение # 7
Сообщений: 19
Репутация: 0 [ +/- ]
Цитата Sallcom ()
Создает взрыв там, куда ты смотришь, когда пишешь команду test.

Подскажите что где в коде поменять что бы взрыв прямо на клиенте был(тоесть висит подарок, чел его берет и из подарка как бы взрыв этот)? хочу прикрутить этот плаг, к подаркам GIFTs :) уже есть подарок с заморозкой, поджиганием, випкой, обезоруживанием, респавном, выдачей опыта, хп и кредитов разных. Вот такой бы взрыв добавить и что бы урон где то можно было выставить, и что бы на ботах работало.
Готов заплатить, адекватную цену:)
Если поможете буду очень благодарен:)
Код
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>

new iExpSprite;

public OnPluginStart(){
RegConsoleCmd("rastagift", Command_Test);
}

public OnMapStart(){
PrecacheSound("weapons/hegrenade/explode3.wav", true);
iExpSprite = PrecacheModel("materials/sprites/zerogxplode.vmt", true);
}

public Action:Command_Test(client, args){
decl Float:fPos[3], Float:fClientPos[3], Float:fDistance;
GetClientAimPosition(client, fPos);

EmitAmbientSound("weapons/hegrenade/explode3.wav", fPos, client, SNDLEVEL_RAIDSIREN);

TE_SetupExplosion(fPos, iExpSprite, 10.0, 1, 0, 275, 160);
TE_SendToAll();

for (new i = 1; i <= MaxClients; i++){
if (IsClientInGame(i) && IsPlayerAlive(i)){
GetClientAbsOrigin(i, fClientPos);

if((fDistance = GetVectorDistance(fClientPos, fPos)) <= 100.0)
SDKHooks_TakeDamage(i, client, client, fDistance, DMG_GENERIC);//Урон, это fDistance, то есть в данном примере урон равен дистанции от взрыва до игрока.
}
}
}

stock GetClientAimPosition(client, Float:fPos[3]){
decl Float:fAngles[3], Float:fPosition[3], Handle:hTrace;
GetClientEyePosition(client, fPosition);
GetClientEyeAngles(client, fAngles);
hTrace = TR_TraceRayFilterEx(fPosition, fAngles, MASK_SOLID, RayType_Infinite, Get_PosFilter, client);
TR_GetEndPosition(fPos, hTrace);
CloseHandle(hTrace);
}

public bool:Get_PosFilter(ent, mask, any:i)
return i != ent;

Гости не могут скачивать файлы


Сообщение отредактировал djded - Среда, 28.11.2018, 19:23:12
 
  • Страница 1 из 1
  • 1
Поиск: