Как сделать гибсы для зомби правильно.

santazx

Участник
Сообщения
23
Реакции
5
Всем добрый вечер или ночи, на днях задумал реализовать плагин гибсов для нпц.
Смысл одинаковый и в итоге остановился на одном моменте.
Есть npc_zombie и нужно хукнуть правильно.
Я сделал набросок попутно смотря по интернету что и по чем в pawno scripts. :beer:

PHP:
#include <sourcemod>
#include <sdktools>
 
new g_iMaxClients;
 
public OnPluginStart()
{ 
   HookEvent("player_spawn", PlayerSpawn_Event, EventHookMode_Pre);
   HookEntityOutput("npc_zombie", "OnDeath", EntityOutput:OnEntityOutPut)
}

public Action:PlayerSpawn_Event(Handle:event, const String:name[], bool:dontBroadcast)
{
    g_iMaxClients = GetClientOfUserId(GetEventInt(event,"userid"));
    return Plugin_Handled;
}
 
public OnMapStart()
{
    //Clients
    //g_iMaxClients = GetMaxClients();
    
    //Gibs:
    PrecacheModel("models/player/Gibs/female_01_head.mdl", true);
}
 
public OnEntityOutPut(const String:output[], caller, activator, Float:delay)
{
   new ent = CreateEntityByName("prop_physics")
   //for (new i = 1; i <= g_iMaxClients; i++) {
   if (IsValidEntity(ent))
   {
      SetEntityModel(ent, "models/player/Gibs/female_01_head.mdl")
      new Float:origin[3]
      GetClientAbsOrigin(g_iMaxClients/*i*/, origin)
      origin[2] += 100
      DispatchKeyValueVector(ent, "origin", origin)
      DispatchKeyValue(ent, "targetname", "!activator")
      DispatchKeyValue(ent, "spawnflags", "256")
      DispatchSpawn(ent)
      SetEntityMoveType(ent, MOVETYPE_FLY)
   }
   PrintToChatAll("output=%s, caller=%d, activator=%d",output, caller, activator)
   //}
}
Но работает не правильно, часть гибса вылетает над моим персонажем.
Подскажите как решить проблему, в долгу не останусь знаю здесь есть толковые люди. :)
 

santazx

Участник
Сообщения
23
Реакции
5
Нужно чтобы нпц развалился на части gibs и его регдолл исчез сразу, а потом уже все gibs.
Как для игрока, только здесь для нпц.
Я просто не могу сделать чтобы gibs появился вместо нпц, вместо этого gibs появляется там где я стою.
Не могу правильно хукнуть :(
 

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
PHP:
public OnPluginStart()
{ 
   HookEntityOutput("npc_zombie", "OnDeath", OnEntityOutPut)
}
 
public OnMapStart()
{
    PrecacheModel("models/player/Gibs/female_01_head.mdl", true);
}
 
public OnEntityOutPut(const String:output[], caller, activator, Float:delay)
{
   new ent = CreateEntityByName("prop_physics_multiplayer")
   if (ent != -1)
   {
      decl Float:origin[3]
	  GetEntPropVector(caller, Prop_Send, "m_vecOrigin", origin)
      origin[2] += 100
	  
	  AcceptEntityInput(caller, "kill")
	  
      SetEntityModel(ent, "models/player/Gibs/female_01_head.mdl")
      DispatchKeyValueVector(ent, "origin", origin)
      DispatchKeyValue(ent, "spawnflags", "256")
      DispatchSpawn(ent)
      SetEntityMoveType(ent, MOVETYPE_FLY)
	  
      decl String:_tmp[128]
      FormatEx(_tmp, sizeof(_tmp), "OnUser1 !self:kill::%f:-1", 3.0)		// Gibs исчезнет через 3 секунды
      SetVariantString(_tmp)
      AcceptEntityInput(entity, "AddOutput")
      AcceptEntityInput(entity, "FireUser1")
   }
}
 

santazx

Участник
Сообщения
23
Реакции
5
Как оказалось все просто, спасибо огромное. :)
Только начал изучать Pawno Script.
 

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
Как оказалось все просто, спасибо огромное. :)
Только начал изучать Pawno Script.

ну да, уровень знаний пока что не позволяет вам, просто нужно почитать руководства по скриптингу СМ и хорошо понимать, как это все используется
 

santazx

Участник
Сообщения
23
Реакции
5
ну да, уровень знаний пока что не позволяет вам, просто нужно почитать руководства по скриптингу СМ и хорошо понимать, как это все используется

До этого изучал Java, C# теперь знаю.
Хотелось С++ но там все серьезнее и решил пока что попробовать изучать pawno scripts. :)
 
Сверху Снизу