Спрайт на оружие
| |
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) --------------------------------------------- Пробовал даже так делать, но эффекта не видно Код #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 [ +/- ]
|
|
У кого нибудь есть пример кода, как это сделать?
|
|
| |
|