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

Тема в разделе "Программирование / Скриптинг", создана пользователем santazx, 27 мар 2015.

  1. santazx

    santazx

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

    PHP:
    #include <sourcemod>
    #include <sdktools>
     
    new g_iMaxClients;
     
    public 
    OnPluginStart()

       
    HookEvent("player_spawn"PlayerSpawn_EventEventHookMode_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[], calleractivatorFloat: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(entMOVETYPE_FLY)
       }
       
    PrintToChatAll("output=%s, caller=%d, activator=%d",outputcalleractivator)
       
    //}
    }
    Но работает не правильно, часть гибса вылетает над моим персонажем.
    Подскажите как решить проблему, в долгу не останусь знаю здесь есть толковые люди. :)
     
  2. FrozDark

    FrozDark Команда сайта HLMod Модератор

    Сообщения:
    1.761
    Симпатии:
    1.915
    а что нужно то?
     
  3. santazx

    santazx

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

    FrozDark Команда сайта HLMod Модератор

    Сообщения:
    1.761
    Симпатии:
    1.915
    PHP:
    public OnPluginStart()

       
    HookEntityOutput("npc_zombie""OnDeath"OnEntityOutPut)
    }
     
    public 
    OnMapStart()
    {
        
    PrecacheModel("models/player/Gibs/female_01_head.mdl"true);
    }
     
    public 
    OnEntityOutPut(const String:output[], calleractivatorFloat:delay)
    {
       new 
    ent CreateEntityByName("prop_physics_multiplayer")
       if (
    ent != -1)
       {
          
    decl Float:origin[3]
          
    GetEntPropVector(callerProp_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(entMOVETYPE_FLY)
          
          
    decl String:_tmp[128]
          
    FormatEx(_tmpsizeof(_tmp), "OnUser1 !self:kill::%f:-1"3.0)        // Gibs исчезнет через 3 секунды
          
    SetVariantString(_tmp)
          
    AcceptEntityInput(entity"AddOutput")
          
    AcceptEntityInput(entity"FireUser1")
       }
    }  
     
    santazx нравится это.
  5. santazx

    santazx

    Сообщения:
    19
    Симпатии:
    0
    Как оказалось все просто, спасибо огромное. :)
    Только начал изучать Pawno Script.
     
  6. FrozDark

    FrozDark Команда сайта HLMod Модератор

    Сообщения:
    1.761
    Симпатии:
    1.915
    ну да, уровень знаний пока что не позволяет вам, просто нужно почитать руководства по скриптингу СМ и хорошо понимать, как это все используется
     
    santazx нравится это.
  7. santazx

    santazx

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