Если честно,то жесть как сложно реализовать. Если бы просто на другой скелет пернести - то делов на 30 минут,а тут ещё и молнию добавить. Да и она будет к примеру как труба торчать из игрока...писал не работает)
всем писал кого нашёл на форуме у кого времени нет и тд)
А на подобие этого нельзя сделать?)Если честно,то жесть как сложно реализовать. Если бы просто на другой скелет пернести - то делов на 30 минут,а тут ещё и молнию добавить. Да и она будет к примеру как труба торчать из игрока...
Скорее да,чем нет,но видишь...здесь через плагин эффект реализован,а в моделировании не всё так легкоА на подобие этого нельзя сделать?)
Да просто молнию вокруг всего перса реализовать да и все...Скорее да,чем нет,но видишь...здесь через плагин эффект реализован,а в моделировании не всё так легко
А на подобие этого нельзя сделать?)
Ну смотри,по сути реально сделать. Нужен партикл(молния) + скин + плагин и всё будет чики-пуки)Да просто молнию вокруг всего перса реализовать да и все...
Ну ты например сделаешь модельку, а скриптер сделает молнию, деньги по полам и все.
Ну так это лучше, чем то что ты написал выше с какой-то трубой :DDD
Наверное берётся эффект и привязывается на определённый координат(к примеру горло)
--- Добавлено позже ---
Ну смотри,по сути реально сделать. Нужен партикл(молния) + скин + плагин и всё будет чики-пуки)
Это я говорил со стороны чисто модели) А если плаг запилить,то легче)Ну так это лучше, чем то что ты написал выше с какой-то трубой :DDD
CSGO/CSS/DODS Models - View topic - Ghostrider !!!А на подобие этого нельзя сделать?)
реализуй :)Смотрите. Тут по сути можно просто скелет перенести и легко установить тот плагин + в него добавив партикл молнии(если он бесплатный)
А на подобие этого нельзя сделать?)
#include <sourcemod>
#include <sdktools>
#define PLUGIN_VERSION "1.2"
new hFlame[MAXPLAYERS+1];
new Handle:g_Cvar_Enable = INVALID_HANDLE;
new Handle:g_DLTimer = INVALID_HANDLE;
public Plugin:myinfo =
{
name = "Ghostrider Flame",
author = "Andi67",
description = "Flaming head for Ghostrider",
version = PLUGIN_VERSION,
url = "http://andi67board.de.vu"
}
public OnPluginStart()
{
CreateConVar("sm_ghostrider_version", PLUGIN_VERSION, "SM Ghostrider Version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
g_Cvar_Enable = CreateConVar("sm_flame_enabled", "1", " Enable/Disable the Flame plugin", FCVAR_PLUGIN);
g_DLTimer = CreateConVar("sm_dltimer_enabled", "1", " Enable/Disable Timer for removing effect", FCVAR_PLUGIN);
AutoExecConfig(true, "sm_ghostrider");
}
public OnMapStart()
{
HookEvent("player_spawn", PlayerSpawnEvent);
HookEvent("player_death", PlayerHurtEvent);
}
public PlayerHurtEvent(Handle:event, const String:name[], bool:broadcast)
{
if (GetConVarInt(g_Cvar_Enable) == 1)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
DeleteFlame(client);
}
}
public PlayerSpawnEvent(Handle:event, const String:name[], bool:dontBroadcast)
{
if (GetConVarInt(g_Cvar_Enable) == 1)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(IsValidClient(client))
{
CreateTimer(3.0, Flame, client)
if (GetConVarInt(g_DLTimer) == 1)
{
CreateTimer(5.0, DLDeleteFlame, client, TIMER_REPEAT)
}
}
}
}
public Action:Flame(Handle:timer, any:client)
{
decl String:ModelName[128];
GetEntPropString(client, Prop_Data, "m_ModelName", ModelName, sizeof(ModelName));
if(StrEqual(ModelName, "models/player/custom_player/marvel/ghostrider/ghostrider.mdl"))
{
AttachParticle(client, "office_fire")
}
}
stock AttachParticle(client, String:particleType[])
{
new particle=CreateEntityByName("info_particle_system");
SetEntPropEnt(particle, Prop_Data, "m_hOwnerEntity", client);
DispatchKeyValue(particle, "effect_name", particleType);
SetVariantString("!activator");
AcceptEntityInput(particle, "SetParent", client, particle, 0);
SetVariantString("facemask");
AcceptEntityInput(particle, "SetParentAttachment", particle , particle, 0);
DispatchSpawn(particle);
AcceptEntityInput(particle, "start");
ActivateEntity(particle);
hFlame[client] = particle;
}
public DeleteFlame(client)
{
new ent = -1;
while ((ent = FindEntityByClassname(ent, "info_particle_system")) != -1)
{
if (GetEntPropEnt(ent, Prop_Send, "m_hOwnerEntity") == client)
{
if(ent > 0 && IsValidEntity(ent) && IsValidEdict(ent))
{
AcceptEntityInput(ent, "Kill");
RemoveEdict(ent);
}
}
}
}
public Action:DLDeleteFlame(Handle:timer, any:client)
{
if(IsValidClient(client))
{
decl String:ModelName[128];
GetEntPropString(client, Prop_Data, "m_ModelName", ModelName, sizeof(ModelName));
if(StrEqual(ModelName, "models/player/custom_player/marvel/ghostrider/ghostrider.mdl"))
{
return Plugin_Continue;
}
else
{
DeleteFlame(client);
}
}
return Plugin_Handled
}
public IsValidClient( client )
{
if ( !( 1 <= client <= MaxClients ) || !IsClientInGame(client) )
return false;
return true;
}
Вот исходник самого плагина привязки particle к модели:
C-подобный:#include <sourcemod> #include <sdktools> #define PLUGIN_VERSION "1.2" new hFlame[MAXPLAYERS+1]; new Handle:g_Cvar_Enable = INVALID_HANDLE; new Handle:g_DLTimer = INVALID_HANDLE; public Plugin:myinfo = { name = "Ghostrider Flame", author = "Andi67", description = "Flaming head for Ghostrider", version = PLUGIN_VERSION, url = "http://andi67board.de.vu" } public OnPluginStart() { CreateConVar("sm_ghostrider_version", PLUGIN_VERSION, "SM Ghostrider Version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY); g_Cvar_Enable = CreateConVar("sm_flame_enabled", "1", " Enable/Disable the Flame plugin", FCVAR_PLUGIN); g_DLTimer = CreateConVar("sm_dltimer_enabled", "1", " Enable/Disable Timer for removing effect", FCVAR_PLUGIN); AutoExecConfig(true, "sm_ghostrider"); } public OnMapStart() { HookEvent("player_spawn", PlayerSpawnEvent); HookEvent("player_death", PlayerHurtEvent); } public PlayerHurtEvent(Handle:event, const String:name[], bool:broadcast) { if (GetConVarInt(g_Cvar_Enable) == 1) { new client = GetClientOfUserId(GetEventInt(event, "userid")); DeleteFlame(client); } } public PlayerSpawnEvent(Handle:event, const String:name[], bool:dontBroadcast) { if (GetConVarInt(g_Cvar_Enable) == 1) { new client = GetClientOfUserId(GetEventInt(event, "userid")); if(IsValidClient(client)) { CreateTimer(3.0, Flame, client) if (GetConVarInt(g_DLTimer) == 1) { CreateTimer(5.0, DLDeleteFlame, client, TIMER_REPEAT) } } } } public Action:Flame(Handle:timer, any:client) { decl String:ModelName[128]; GetEntPropString(client, Prop_Data, "m_ModelName", ModelName, sizeof(ModelName)); if(StrEqual(ModelName, "models/player/custom_player/marvel/ghostrider/ghostrider.mdl")) { AttachParticle(client, "office_fire") } } stock AttachParticle(client, String:particleType[]) { new particle=CreateEntityByName("info_particle_system"); SetEntPropEnt(particle, Prop_Data, "m_hOwnerEntity", client); DispatchKeyValue(particle, "effect_name", particleType); SetVariantString("!activator"); AcceptEntityInput(particle, "SetParent", client, particle, 0); SetVariantString("facemask"); AcceptEntityInput(particle, "SetParentAttachment", particle , particle, 0); DispatchSpawn(particle); AcceptEntityInput(particle, "start"); ActivateEntity(particle); hFlame[client] = particle; } public DeleteFlame(client) { new ent = -1; while ((ent = FindEntityByClassname(ent, "info_particle_system")) != -1) { if (GetEntPropEnt(ent, Prop_Send, "m_hOwnerEntity") == client) { if(ent > 0 && IsValidEntity(ent) && IsValidEdict(ent)) { AcceptEntityInput(ent, "Kill"); RemoveEdict(ent); } } } } public Action:DLDeleteFlame(Handle:timer, any:client) { if(IsValidClient(client)) { decl String:ModelName[128]; GetEntPropString(client, Prop_Data, "m_ModelName", ModelName, sizeof(ModelName)); if(StrEqual(ModelName, "models/player/custom_player/marvel/ghostrider/ghostrider.mdl")) { return Plugin_Continue; } else { DeleteFlame(client); } } return Plugin_Handled } public IsValidClient( client ) { if ( !( 1 <= client <= MaxClients ) || !IsClientInGame(client) ) return false; return true; }
На сколько я понял в плагине привязывается эффект "office_fire" к кости модели головы "facemask".
ps: я не "скриптер".