• Регистрация на форуме отключена.
    Она будет открываться первого числа каждого месяца на 24 часа.

    Если необходимо - пишите админу группы Dev-CS в Telegram-чате.

Склад полезного кода [GoldSrc]

Сообщения
1,174
Реакции
954
Предупреждения
10
Помог
9 раз(а)
Спавн армори энтити
Без названия.gif
Код:
// ArmouryItemPack, see cssdk_const.inc
spawnArmouryEntity(const ArmouryItemPack:armouryItem, const armouryCount, const Float:origin[3], bool:blockPickup = false) {
    new ent = rg_create_entity("armoury_entity");
   
    if(is_nullent(ent)) {
        return NULLENT;
    }
   
    set_member(ent, m_Armoury_iItem, ArmouryItemPack:armouryItem);
    set_member(ent, m_Armoury_iCount, armouryCount);
    set_entvar(ent, var_solid, blockPickup ? SOLID_NOT : SOLID_TRIGGER);

    engfunc(EngFunc_SetOrigin, ent, origin);
    dllfunc(DLLFunc_Spawn ,ent );

    return ent;
}
Код:
#include <amxmodx>
#include <fakemeta>
#include <reapi>

const Float:SpawnDist = 200.0     // in units

public plugin_init() {
    register_concmd("say wpn", "cmdSpawnArmoury");
}

public cmdSpawnArmoury(id) {
    new Float:originStart[3];
    get_entvar(id, var_origin, originStart);

    new Float:originEnd[3]
    getCoordPointInDirView(id, SpawnDist, originEnd);

    // ArmouryItemPack, see cssdk_const.inc
    if(spawnArmouryEntity(ARMOURY_AK47, 1, originEnd) == NULLENT) {
        log_amx("Invalid entity index");
    }
}

spawnArmouryEntity(const ArmouryItemPack:armouryItem, const armouryCount, const Float:origin[3], bool:blockPickup = false) {
    new ent = rg_create_entity("armoury_entity");
   
    if(is_nullent(ent)) {
        return NULLENT;
    }
   
    set_member(ent, m_Armoury_iItem, ArmouryItemPack:armouryItem);
    set_member(ent, m_Armoury_iCount, armouryCount);
    set_entvar(ent, var_solid, blockPickup ? SOLID_NOT : SOLID_TRIGGER);

    engfunc(EngFunc_SetOrigin, ent, origin);
    dllfunc(DLLFunc_Spawn ,ent );

    return ent;
}

stock getCoordPointInDirView(const index, const Float:dist, Float:output[3]) {
    new Float:start_origins[3];
    pev(index, pev_origin, start_origins);

    new Float:angles[3];
    pev(index, pev_v_angle, angles);

    new Float:end_origins[3];
    end_origins[0] = start_origins[0] + dist * floatcos(angles[1], degrees) * floatabs(floatcos(angles[0], degrees));
    end_origins[1] = start_origins[1] + dist * floatsin(angles[1], degrees) * floatabs(floatcos(angles[0], degrees));
    end_origins[2] = start_origins[2];

    engfunc(EngFunc_TraceLine, start_origins, end_origins, DONT_IGNORE_MONSTERS, index, 0);
    get_tr2(0, TR_vecEndPos, end_origins);

    output[0] = end_origins[0];
    output[1] = end_origins[1];
    output[2] = end_origins[2];
}
 
Сообщения
31
Реакции
43
Предупреждения
5
Дистанция между игроком/объектом и "потолком" карты либо помещения.

Код:
stock Float:fm_distance_to_ceiling(index, ignoremonsters = 1) {
    new Float:start[3], Float:dest[3], Float:end[3];
    pev(index, pev_origin, start);
    dest[0] = start[0];
    dest[1] = start[1];
    dest[2] = 8191.0;

    engfunc(EngFunc_TraceLine, start, dest, ignoremonsters, index, 0);
    get_tr2(0, TR_vecEndPos, end);

    pev(index, pev_absmin, start);
    new Float:ret = start[2] - end[2];

    return ret < 0 ? floatabs(ret) : 0.0;
}
 
Последнее редактирование:
Сообщения
398
Реакции
271
Помог
1 раз(а)
Код:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
  
new g_fwd_FM_Spawn
  
public plugin_precache()
   g_fwd_FM_Spawn = register_forward( FM_Spawn, "fwd_spawn" )
  
public plugin_init()
{     
   unregister_forward( FM_Spawn, g_fwd_FM_Spawn )
}
  
public fwd_spawn( iEnt )
{
   if( !pev_valid( iEnt ) )
      return FMRES_IGNORED
      
   new i, szClassName[ 32 ]
   new szRemovingEntities[][] =
   {
      "hostage_entity",       
      "func_hostage_rescue",
      "info_hostage_rescue"
   }
      
   pev( iEnt, pev_classname, szClassName, charsmax( szClassName ) )
  
   for( i = 0; i < sizeof szRemovingEntities; ++i )
   {
      if( equal( szClassName, szRemovingEntities[ i ] ) )
      {
         engfunc( EngFunc_RemoveEntity, iEnt )
            
         return FMRES_SUPERCEDE
      }
   }
   return FMRES_IGNORED
}
Код:
#include <amxmodx>
#include <engine>
#include <hamsandwich>
 
new mapname[31]
 
#define MAP     "cs_discounter"   // Название карты,где будут убраны Заложники
    
public plugin_precache()
{   
          get_mapname(mapname,31)
          if(!equali(mapname, MAP)) return 
  
          RegisterHam(Ham_Spawn, "hostage_entity", "Remove_Hostage", true);
}
  
public Remove_Hostage(Ent)
          remove_entity(Ent);
P.S. Если было и повтор - просьба удалить
 
Сообщения
398
Реакции
271
Помог
1 раз(а)
stalin_alex попросил меня предоставить код на удаление дропнутых Щипцов
Скину сюда для всех,может кому-то и пригодится

#define THIGHTPACK_TIME 10.0 // Через сколько секунд удалять Щипцы

Код:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN_NAME                      "THIGHTPACK DELETE"
#define PLUGIN_VERSION                           "1.0"
#define PLUGIN_AUTHOR                          "MayroN"

#define THIGHTPACK_TIME    10.0     //    Через сколько секунд удалять Щипцы

public plugin_init()
{
    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

    register_forward(FM_SetModel, "Thighpack_ItemModel")
    RegisterHam(Ham_Think, "item_thighpack", "Remove_Thighpack")
}

public Thighpack_ItemModel(const iEntity)
{
    if(!pev_valid(iEntity))
        return FMRES_IGNORED;

    #define m_rgpPlayerItems2 34
    #define m_iId 43

    static szClassName[32]
    pev(iEntity, pev_classname, szClassName, charsmax(szClassName))

    if(equal(szClassName, "item_thighpack"))  
    {
        set_pev(iEntity, pev_nextthink, get_gametime() + THIGHTPACK_TIME);  
    }
   
    return FMRES_IGNORED;
}

public Remove_Thighpack(iEntity)
{
    if (!pev_valid(iEntity))
        return HAM_IGNORED;

    set_pev(iEntity, pev_flags, FL_KILLME);

    return HAM_SUPERCEDE;
}
 
Последнее редактирование:
Сообщения
1,174
Реакции
954
Предупреждения
10
Помог
9 раз(а)
Albertio, чо мне мешает хеш подсмотреть этот?
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу