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

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

  • Страница 1 из 1
  • 1
Спрайт на оружие
In-com_Software Дата: Суббота, 16.11.2013, 10:55:47 | Сообщение # 1
Сообщений: 17
Репутация: 0 [ +/- ]
Добрый день парни! Начну сразу с кода:

Код
public OnEntityCreated(entity, const String:classname[])   
{   
   if(StrEqual(classname, "weapon_smg1"))   
   {   
    CreateTimer(0.01, Timer_Entity, entity);   
   }   
}   

public Action:Timer_Entity(Handle:timer, any:entity)   
{   
   new client = GetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity");
   if(!IsValidEntity(client)) return Plugin_Stop;
     
   if (client > 0 && client <= MaxClients)   
   {   
    // Здесь должен быть эффект
   }
return Plugin_Stop;   
}


Как можно прикрутить спрайт (эффект молнии или искр) на определенное оружие, чтобы при его доставании запускался данный эффект и все время был на нем?

Пытался добавлять env_sprite но все тщетно...
Код
createSprite(client)
{
   env_sprite[client] = CreateEntityByName("env_sprite");
   if (!IsValidEntity(env_sprite[client]) && (env_sprite[client] != 0))
   {
    return;
   }
   new Float:origin[3];
   GetEntPropVector(client,Prop_Send,"m_vecOrigin",origin);
   origin[2] += 80.0;
   DispatchKeyValueVector(env_sprite[client],"origin",origin);
   DispatchKeyValue(env_sprite[client],"model","materials/Sprites/bluelight1.vmt");
   DispatchKeyValue(env_sprite[client],"rendermode","1");
   DispatchKeyValue(env_sprite[client],"spawnflags","1");
   DispatchKeyValue(env_sprite[client],"scale","0.3");
   DispatchSpawn(env_sprite[client]);
   SetVariantString("!activator");
   AcceptEntityInput(env_sprite[client],"SetParent",client);
}


Буду признателен за помощь!

Добавлено (16.11.2013, 10:55:47)
---------------------------------------------
Пробовал даже так делать, но эффекта не видно grust

Код
#include <sourcemod>
#include <sdktools>

public OnMapStart()
{
  PrecacheModel("sprites/bluelight1.vmt");
}

public OnEntityCreated(entity, const String:classname[])
{
  if(StrEqual(classname, "weapon_smg1"))
  {
   CreateTimer(0.01, Timer_Entity, entity);
  }
}

public Action:Timer_Entity(Handle:timer, any:entity)
{
  new client = GetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity");
  if(!IsValidEntity(client)) return Plugin_Stop;
   
  if (client > 0 && client <= MaxClients)
  {
   Void_AttachTrail(client);
  }
  return Plugin_Stop;
}

void:Void_AttachTrail(client)
{
         new g_iEntity[client];
         g_iEntity[client] = CreateEntityByName("env_spritetrail");
         if(g_iEntity[client] > 0 && IsValidEdict(g_iEntity[client]))
         {
   
                 new Float:g_fOrigin[3], String:g_sName[MAX_NAME_LENGTH];
                 GetClientName(client, g_sName, sizeof(g_sName));
                 Format(g_sName, sizeof(g_sName), "Trails_%s", g_sName);
         
                 DispatchKeyValue(client, "targetname", g_sName);
                 DispatchKeyValue(g_iEntity[client], "parentname", g_sName);
                 DispatchKeyValue(g_iEntity[client], "lifetime", "1.5");
                 DispatchKeyValue(g_iEntity[client], "endwidth", "0.1");
                 DispatchKeyValue(g_iEntity[client], "startwidth", "5");
                 DispatchKeyValue(g_iEntity[client], "spritename", "materials/sprites/bluelight1.vmt");
                 DispatchKeyValue(g_iEntity[client], "renderamt", "255");
                 DispatchKeyValue(g_iEntity[client], "rendercolor", "255 0 0");
                 DispatchKeyValue(g_iEntity[client], "rendermode", "5");
   
                 DispatchSpawn(g_iEntity[client]);
   
                 new g_fTrailHeight;
                 GetClientAbsOrigin(client, g_fOrigin);
                 g_fOrigin[2] += g_fTrailHeight;
                 TeleportEntity(g_iEntity[client], g_fOrigin, NULL_VECTOR, NULL_VECTOR);
                 SetVariantString(g_sName);
                 AcceptEntityInput(g_iEntity[client], "SetParent");
         }
}


Я еще новичек в это деле и мне совершенно не понятно, что же еще можно сделать. Прошу помощи у _wS_ и Scarface_slv


Сообщение отредактировал In-com_Software - Четверг, 14.11.2013, 15:07:15
 
panorama Дата: Суббота, 16.11.2013, 14:05:19 | Сообщение # 2
Сообщений: 203
Репутация: 2 [ +/- ]
Цитата In-com_Software ()
Я еще новичек в это деле и мне совершенно не понятно, что же еще можно сделать. Прошу помощи у _wS_ и Scarface_slv

Не уверен что есть такое оружие weapon_smg1
 
In-com_Software Дата: Суббота, 16.11.2013, 14:25:47 | Сообщение # 3
Сообщений: 17
Репутация: 0 [ +/- ]
Цитата panorama
Не уверен что есть такое оружие weapon_smg1

Это оружие есть в игре HL2DM
Думаю можно установить спрайт и на любое другое, даже в CSS...

Есть какие либо идеи по этому поводу?
 
panorama Дата: Суббота, 16.11.2013, 14:34:16 | Сообщение # 4
Сообщений: 203
Репутация: 2 [ +/- ]
Цитата In-com_Software ()
Есть какие либо идеи по этому поводу?

В css я как то названия не встречал ...

А по поводу плагина можно через sdkhook
Код

SDKHook(client, SDKHook_PostThinkPost, OnPostThinkPosts);

Записывать текущее оружие клиента и тут же сверять нынешнее с записанным раннее ... И если индексы оружия различаются значит игрок его сменил ... Ну и тогда плагин воспроизводит твои эффекты ...
 
Scarface_slv Дата: Суббота, 16.11.2013, 17:43:38 | Сообщение # 5
Сообщений: 737
Репутация: 61 [ +/- ]
public OnEntityCreated(entity, const String:classname[]) не будет работать без #include <sdkhooks>
 
In-com_Software Дата: Суббота, 16.11.2013, 23:19:37 | Сообщение # 6
Сообщений: 17
Репутация: 0 [ +/- ]
Цитата Scarface_slv
#include <sdkhooks>

Отлично! Спасибо за совет. Я то думаю что не так. Вот с env_spritetrail проблемка вышла, не изменяется размер спрайта и его анимация. Пробовал юзать env_fire_trail анимация проходит а вот размер спрайта не изменяется. Баловался с параметром scale и spawnflags - не работает.
 
Scarface_slv Дата: Воскресенье, 17.11.2013, 00:20:00 | Сообщение # 7
Сообщений: 737
Репутация: 61 [ +/- ]
Пробовал менять "endwidth" и "startwidth"?
 
panorama Дата: Воскресенье, 17.11.2013, 05:03:09 | Сообщение # 8
Сообщений: 203
Репутация: 2 [ +/- ]
Цитата Scarface_slv ()
Отлично! Спасибо за совет. Я то думаю что не так. Вот с env_spritetrail проблемка вышла, не изменяется размер спрайта и его анимация. Пробовал юзать env_fire_trail анимация проходит а вот размер спрайта не изменяется. Баловался с параметром scale и spawnflags - не работает.

Можно поинтересоваться для чего ты функцию делаешь ? Для Спрайта выстрела ?
 
In-com_Software Дата: Воскресенье, 17.11.2013, 07:49:02 | Сообщение # 9
Сообщений: 17
Репутация: 0 [ +/- ]
Цитата Scarface_slv
Пробовал менять "endwidth" и "startwidth"?

С env_fire_trail не работает. Можно ли за место функции env_fire_trail использовать env_spritetrail с анимацией спрайта (fire.vmt)?

Цитата panorama
Можно поинтересоваться для чего ты функцию делаешь ? Для Спрайта выстрела ?

Делаю по типу этого скрина но с эффектом анимированного огня. Для спрайта выстрелов тоже идейка есть.
 
panorama Дата: Понедельник, 18.11.2013, 12:37:14 | Сообщение # 10
Сообщений: 203
Репутация: 2 [ +/- ]
Цитата In-com_Software ()
Делаю по типу этого скрина но с эффектом анимированного огня. Для спрайта выстрелов тоже идейка есть.

С спрайтом выстрела я тоже бы хотел повозиться но в event я к сожалению ничего не нашел ...


Сообщение отредактировал panorama - Понедельник, 18.11.2013, 12:37:29
 
Scarface_slv Дата: Понедельник, 18.11.2013, 13:11:24 | Сообщение # 11
Сообщений: 737
Репутация: 61 [ +/- ]
panorama, event "bullet_impact" не?
 
panorama Дата: Понедельник, 18.11.2013, 14:38:04 | Сообщение # 12
Сообщений: 203
Репутация: 2 [ +/- ]
Цитата Scarface_slv ()
panorama, event "bullet_impact" не?

Не ... Есть ли event создания спрайта muzzflash ? Или как то так называется ...
 
In-com_Software Дата: Четверг, 21.11.2013, 07:57:58 | Сообщение # 13
Сообщений: 17
Репутация: 0 [ +/- ]
Видел на одном сервере эффект огня на оружии, но он там анимированный и очень маленький. Кто знает, как такое сделать?
 
Sunday Дата: Четверг, 21.11.2013, 14:46:51 | Сообщение # 14
Сообщений: 186
Репутация: 24 [ +/- ]
У меня наверное видел :)

Ты бы в начале проверил что создается на самом деле при выстреле, например так:
Код
public OnEntityCreated(entity, const String:classname[])
{
  PrintToChatAll("%s", classname);  
}


Убивает конечно weapon_smg1 но выстреливаешь ты grenade_ar2(это подствол летящий) а env_smoketrail(дым летящий за ним).

Попробуй например так:

Код
#include <sourcemod>
#include <sdkhooks>
#include <sdktools>

new Sprite;

public OnMapStart()
{
  Sprite = PrecacheModel("sprites/laser.vmt");
}

public OnEntityCreated(entity, const String:classname[])
{
  if(strcmp(classname, "grenade_ar2") == 0)
  {
   TE_SetupBeamFollow(entity, Sprite,    0, Float:1.0, Float:10.0, Float:10.0, 5, {225,0,0,225});
   TE_SendToAll();
  }
}
 
Loco Дата: Понедельник, 16.12.2013, 21:20:20 | Сообщение # 15
Сообщений: 42
Репутация: 0 [ +/- ]
У кого нибудь есть пример кода, как это сделать?
 
  • Страница 1 из 1
  • 1
Поиск: