Short Pallet

Short Pallet 1.4

Нет прав для скачивания

MayroN

Моделлер
Проверенный
Сообщения
53
Реакции
32
Баллы
18
C-подобный:
#include <amxmodx>
#include <fakemeta>

#define PLUGIN "Short Pallet"
#define VERSION "1.1"
#define AUTHOR "www.effexo.net"

new const g_szPalletModel[] = "models/pallet.mdl"

public plugin_precache() {
    register_plugin(PLUGIN, VERSION, AUTHOR)

    new szMapName[9]
    get_mapname(szMapName, charsmax(szMapName))
    if(equal(szMapName, "de_dust2")) {
        precache_model(g_szPalletModel)

        createPalletEntity()
    }
}

createPalletEntity() {
    new iPalletEntityIndex = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));

    if(!pev_valid(iPalletEntityIndex))
        return

    set_pev(iPalletEntityIndex, pev_classname, "short_pallet"); // exclude from the def ents

    new const Float: fPalletOrigin[3] = {578.92, 2367.28, 74.03}
    engfunc(EngFunc_SetOrigin, iPalletEntityIndex, fPalletOrigin)

    engfunc(EngFunc_SetModel, iPalletEntityIndex, g_szPalletModel)

    set_pev(iPalletEntityIndex, pev_solid, SOLID_BBOX)

    new const Float:fPalletAngle[3] = {0.0, 90.0, 45.0};
    set_pev(iPalletEntityIndex, pev_angles, fPalletAngle)

    new const Float: fMins[3] = {-30.0, -23.0, -25.0}
    new const Float: fMaxs[3] = {10.0, 20.0, 6.0}
    engfunc(EngFunc_SetSize, iPalletEntityIndex, fMins, fMaxs)
}
 

Вложения

@Kurtis,
Понял Вас Сер
Минимализм приветствуется,будем переоформлять
Но...уже завтра
 
@Kurtis,
Понял Вас Сер
Минимализм приветствуется,будем переоформлять
Но...уже завтра
Просто лишнее было.
+Косметика.

Было:
sp.png

Стало:
sp_fix.png

TE_BOX для наглядности. Как минимум +физика.
 
Add a pallet to the mid short (per box)
sp_src.png

C-подобный:
#include <amxmodx>
#include <fakemeta>

#define PLUGIN "Short Pallet"
#define VERSION "1.2"
#define AUTHOR "www.effexo.net"

new const g_szPalletModel[] = "models/pallet.mdl"

public plugin_precache() {
    register_plugin(PLUGIN, VERSION, AUTHOR)

    new szMapName[9]
    get_mapname(szMapName, charsmax(szMapName))
    if(equal(szMapName, "de_dust2")) {
        precache_model(g_szPalletModel)

        createPalletCtShort();
        createPalletMidShort_1();
        createPalletMidShort_2();
    }
}

public createPalletCtShort() {
    new const Float: fPalletOrigin[3] = {578.0, 2367.0, 74.0};
    new const Float: fPalletAngle[3] = {0.0, 90.0, 45.0};
    new const Float: fMins[3] = {-30.0, -23.0, -25.0}
    new const Float: fMaxs[3] = {10.0, 20.0, 6.0}

    createPalletEntity(fPalletOrigin, fPalletAngle, fMins, fMaxs);
}

public createPalletMidShort_1() {
    new const Float: fPalletOrigin[3] = {-287.0, 1359.0, -94.0};
    new const Float: fPalletAngle[3] = {60.0, 0.0, 0.0};
    new const Float: fMins[3] = {0.0, -25.0, -32.0}
    new const Float: fMaxs[3] = {28.0, 17.0, 10.0}

    createPalletEntity(fPalletOrigin, fPalletAngle, fMins, fMaxs);
}

public createPalletMidShort_2() {
    new const Float: fPalletOrigin[3] = {-287.0, 1445.0, 3.0};
    new const Float: fPalletAngle[3] = {40.0, 0.0, 0.0};
    new const Float: fMins[3] = {0.0, -26.0, -35.0}
    new const Float: fMaxs[3] = {30.0, 25.0, 0.0}

    createPalletEntity(fPalletOrigin, fPalletAngle, fMins, fMaxs);
}

createPalletEntity(const Float: fOrigin[3], const Float: fAngle[3], const Float: fMins[3], const Float: fMaxs[3]) {
    new iPalletEntityIndex = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));

    if(!pev_valid(iPalletEntityIndex))
        return

    engfunc(EngFunc_SetOrigin, iPalletEntityIndex, fOrigin)
    engfunc(EngFunc_SetModel, iPalletEntityIndex, g_szPalletModel)

    set_pev(iPalletEntityIndex, pev_classname, "short_pallet"); // exclude from the def ents
    set_pev(iPalletEntityIndex, pev_solid, SOLID_BBOX)
    set_pev(iPalletEntityIndex, pev_angles, fAngle)

    engfunc(EngFunc_SetSize, iPalletEntityIndex, fMins, fMaxs)
}
C-подобный:
 

Вложения

@Kurtis,
Весьма благодарен
Будем оформлять
 
из багов на карте de_dust2002 появились паллеты, возможно такой триггер на всех картах по типу de_dust будет, из минусов пачка если под паллет попадает достать нельзя
Screenshot_2.png
Screenshot_1.png
 
new szMapName[9]
->
new szMapName[10]

😁
 
из минусов пачка если под паллет попадает достать нельзя
Это вообще с любым выброшенным оружием должно происходить.
Я так понимаю, что просчёт идёт на уровне карты, поэтому с любыми кастомными объектами взаимодействия не будет у выброшенных оружий.
В принципе можно попробовать установить weaponbox'ам стандартным коллизию, но тогда придётся имитировать их стандартные свойства, так как нарушим их логику работы. И то я думаю, что есть наверное способ получше.

new szMapName[9]
->
new szMapName[10]

😁
Да, спасибо, я считать видимо не умею... 😅
 
Дело не в этом. Проверка выполняется по точному совпадению строки "de_dust2", и в get_mapname учитывается только длина сообщения "de_dust2". Таким образом, все карты, название которых совпадает по тексту в пределах размера этого массива, также инициируют плагин. Например, карта "de_dust2002".
 
Дело не в этом. Проверка выполняется по точному совпадению строки "de_dust2", и в get_mapname учитывается только длина сообщения "de_dust2". Таким образом, все карты, название которых совпадает по тексту в пределах размера этого массива, также инициируют плагин. Например, карта "de_dust2002".
Я про размер массива и имел ввиду, что считать не умею, что длину массива на один символ меньше определил.
 
для тех кому надо переставить паллет:

хелпер для координат:
#include <amxmodx>
#include <fakemeta>

public plugin_init() {
    register_plugin("coords helper", "1.0", "RMZ");
    register_clcmd("say /coords", "cmdgetcoords");
}

public cmdgetcoords(id) {
    new Float:fOrigin[3];

    getorigin(id, fOrigin);
    fOrigin[2] += 12.0;

    client_print(id, print_console, "КООРДИНАТЫ:");
    client_print(id, print_console, "new const Float:fPalletOrigin[3] = {%.1f, %.1f, %.1f};", fOrigin[0], fOrigin[1], fOrigin[2]);
    client_print(id, print_chat, "Координаты в консоли");

    return PLUGIN_HANDLED;
}

stock getorigin(id, Float:fOrigin[3]) {
    new Float:fStart[3], Float:fViewOfs[3], Float:fDest[3];
    
    pev(id, pev_origin, fStart);
    pev(id, pev_view_ofs, fViewOfs);
    
    fStart[0] += fViewOfs[0];
    fStart[1] += fViewOfs[1];
    fStart[2] += fViewOfs[2];
    
    pev(id, pev_v_angle, fDest);
    engfunc(EngFunc_MakeVectors, fDest);
    global_get(glb_v_forward, fDest);
    
    fDest[0] = fStart[0] + fDest[0] * 8192.0;
    fDest[1] = fStart[1] + fDest[1] * 8192.0;
    fDest[2] = fStart[2] + fDest[2] * 8192.0;
    
    engfunc(EngFunc_TraceLine, fStart, fDest, DONT_IGNORE_MONSTERS, id, 0);
    get_tr2(0, TR_vecEndPos, fOrigin);
}
Сообщение автоматически объединено:

для тех кому надо переставить паллет:

хелпер для координат:
#include <amxmodx>
#include <fakemeta>

public plugin_init() {
    register_plugin("coords helper", "1.0", "RMZ");
    register_clcmd("say /coords", "cmdgetcoords");
}

public cmdgetcoords(id) {
    new Float:fOrigin[3];

    getorigin(id, fOrigin);
    fOrigin[2] += 12.0;

    client_print(id, print_console, "КООРДИНАТЫ:");
    client_print(id, print_console, "new const Float:fPalletOrigin[3] = {%.1f, %.1f, %.1f};", fOrigin[0], fOrigin[1], fOrigin[2]);
    client_print(id, print_chat, "Координаты в консоли");

    return PLUGIN_HANDLED;
}

stock getorigin(id, Float:fOrigin[3]) {
    new Float:fStart[3], Float:fViewOfs[3], Float:fDest[3];
   
    pev(id, pev_origin, fStart);
    pev(id, pev_view_ofs, fViewOfs);
   
    fStart[0] += fViewOfs[0];
    fStart[1] += fViewOfs[1];
    fStart[2] += fViewOfs[2];
   
    pev(id, pev_v_angle, fDest);
    engfunc(EngFunc_MakeVectors, fDest);
    global_get(glb_v_forward, fDest);
   
    fDest[0] = fStart[0] + fDest[0] * 8192.0;
    fDest[1] = fStart[1] + fDest[1] * 8192.0;
    fDest[2] = fStart[2] + fDest[2] * 8192.0;
   
    engfunc(EngFunc_TraceLine, fStart, fDest, DONT_IGNORE_MONSTERS, id, 0);
    get_tr2(0, TR_vecEndPos, fOrigin);
}
не успел отредачить за 5 минут, напишу отдельно как пользоваться:
смотрите в нужную точку и пишете в чат /coords. в консоли берете готовую строчку либо только сами координаты и вставляете в исходник.
есть погрешности (fOrigin[2] += 12.0 как раз попытка их немного нивелировать), поэтому придется еще скорректировать по осям. По углу наклона уже ориентироваться придется самим. Хотя текущие angle и физические размеры не требуют особого изменения.
 
Последнее редактирование:

Кто просматривает тему

  • Назад
    Верх