Спрайт на оружие

in-com

Участник
Сообщения
12
Реакции
0
Добрый день уважаемые. Уже как третий день пытаюсь прикрутить спрайт (эффект молнии или искр) к определенному оружию, но пока что не получается. В этом деле я еще новичок и поэтому всех тонкостей не понимаю.

Сначала делал так:
C-подобный:
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)   
   {   
     createSprite(client);
   } 
return Plugin_Stop;   
}

createSprite(client) 
{ 
   new 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); 
}
но эффекта не было видно. Далее переделал:
C-подобный:
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"); 
         } 
}
и также не получилось. Эффекта не видать :(
PS: некоторую часть кода брал с вашего форума


Прошу помощи у умельцев т.к. уже больше не к кому обратиться...
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335


Данное свечение всегда сопровождает оружие - будь оно поднято, выброшено или любые другие события. Думаю, со спрайтом тоже должно работать.
C-подобный:
#include <sdktools>
#include <sdkhooks>

#define EFFECT_MODEL "sprites/redglow1.vmt"

public OnMapStart()
{
    PrecacheModel(EFFECT_MODEL);
}

public OnEntityCreated(iEntity, const String:sClassName[])
{
    if ( StrEqual(sClassName, "weapon_m4a1") )
    {
        new iGlowEntity = CreateEntityByName("env_glow");
        DispatchKeyValue(iGlowEntity, "model", EFFECT_MODEL);
        DispatchKeyValue(iGlowEntity, "rendermode", "3");            // свечение
        DispatchKeyValue(iGlowEntity, "scale", "1.0");               // размер свечения
        DispatchKeyValue(iGlowEntity, "renderamt", "255");           // прозрачность
        DispatchKeyValue(iGlowEntity, "rendercolor", "255 0 0");     // цвет
        
        if ( DispatchSpawn(iGlowEntity) )
        {
            decl String:sTargetName[32], Float:fOrigin[3];
            Format(sTargetName, sizeof(sTargetName) - 1, "weapon_m4a1_%d", iGlowEntity);
            DispatchKeyValue(iEntity, "targetname", sTargetName);
            GetEntPropVector(iEntity, Prop_Data, "m_vecOrigin", fOrigin);
            
            SetVariantString(sTargetName);
            AcceptEntityInput(iGlowEntity, "SetParent");
            
            TeleportEntity(iGlowEntity, fOrigin, NULL_VECTOR, NULL_VECTOR);
            AcceptEntityInput(iGlowEntity, "ShowSprite");
            AcceptEntityInput(iGlowEntity, "TurnOn");
        }
    }
}
 

in-com

Участник
Сообщения
12
Реакции
0
Данное свечение всегда сопровождает оружие - будь оно поднято, выброшено или любые другие события.
Большое спасибо за помощь. Не ожидал такого быстрого решения. :beer:

Добавлено:
Думаю, со спрайтом тоже должно работать.
Со спрайтами работает, но не проходит анимация и невозможно повернуть сам спрайт к примеру влево или вправо.
Пытался добавлять "spawnflags","10" и "angles","90 0 0" но не выходит, спрайт стоит на месте.
С уважением.

Добавлено через 16 часов 20 минут
Со спрайтами работает, но не проходит анимация и невозможно повернуть сам спрайт к примеру влево или вправо.
Пытался добавлять "spawnflags","10" и "angles","90 0 0" но не выходит, спрайт стоит на месте.
Пробовал изменять эффект на env_fire_trail - анимация проходит, но размер не изменяется. Изменял параметры "scale" "endwidth" и "startwidth" - не работает...
 
Последнее редактирование:
Сверху Снизу