Русское сообщество по скриптингу

Hitbox новой модели

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Hitbox новой модели

Сообщение Eternal » 19 ноя 2018, 20:12

Возможно ли сохранения старых хитбоксов от модели персонажа при замене на другую не стандартную модель. То есть хитбокс овердо*уя высоты и ширины и промахнуться стрёмно, но каким то образом происходит промах))
Плагин используется вот этот.
Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

enum _:MDL ACCESS[32], MDL_T[64], MDL_CT[64] }    // ip, steam, flag, #, *. # - steam; * - РІСЃРµРј 

#define MAX_MDL 64
new g_iBlockMdl[MAX_MDL];
new 
g_szModels[MAX_MDL][MDL];

new 
g_szPlayerModel[33][3][64];

public 
plugin_precache()
{
    new 
fp fopen("addons/amxmodx/configs/custom_models.ini""rt");
    if(!
fpset_fail_state("File addons/amxmodx/configs/custom_models.ini not found!");
    
    new 
buff[190], x;
    while(!
feof(fp))
    {
        
fgets(fpbuffcharsmax(buff)); trim(buff);
        if(!
buff[0] || buff[0] == ';')
            continue;
        if(
parse(buff
            
g_szModels[x][ACCESS], charsmax(g_szModels[][ACCESS]), 
            
g_szModels[x][MDL_T], charsmax(g_szModels[][MDL_T]), 
            
g_szModels[x][MDL_CT], charsmax(g_szModels[][MDL_CT])) == 3
        
x++;
    }
    
fclose(fp);
    if(!
xset_fail_state("File addons/amxmodx/configs/custom_models.ini incorrect!");

    for(new 
itctstr[64]; sizeof g_szModelsi++)
    {
        
formatex(strcharsmax(str), "models/player/%s/%s.mdl"g_szModels[i][MDL_T], g_szModels[i][MDL_T]);
        
file_exists(str);
        if(
tprecache_model(str);
        
        
formatex(strcharsmax(str), "models/player/%s/%s.mdl"g_szModels[i][MDL_CT], g_szModels[i][MDL_CT]);
        
ct file_exists(str);
        if(
ctprecache_model(str);
        
        
g_iBlockMdl[i] = (!&& !ct);
    }
}

public 
plugin_init()
{
    
register_plugin("Custom Models""1.3.2""neugomon");
    
    
RegisterHam(Ham_Spawn"player""fwd_HamSpawn_Post"true);
    
register_forward(FM_SetClientKeyValue"fwd_SetClientKeyValue_Pre"false);
}

public 
client_putinserver(id)
{
    new 
szIP[16];      get_user_ip(idszIPcharsmax(szIP), 1);
    new 
szAuthid[25];get_user_authid(idszAuthidcharsmax(szAuthid));
    new 
flags =      get_user_flags(id);

    
g_szPlayerModel[id][1][0] = EOS;
    
g_szPlayerModel[id][2][0] = EOS;
    
    for(new 
isizeof g_szModelsi++)
    {
        if(
g_iBlockMdl[i] == 1)
            continue;

        switch(
g_szModels[i][ACCESS][0])
        {
            case 
'#':
            {
                if(
is_user_steam(id))
                {
                    
CopyModel(idi);
                    break;
                }    
            }
            case 
'*':
            {
                
CopyModel(idi);
                break;
            }
            case 
'S':
            {
                if(
strcmp(g_szModels[i][ACCESS], szAuthid) == 0)
                {
                    
CopyModel(idi);
                    break;
                }
            }
            default:
            {
                if(
isdigit(g_szModels[i][ACCESS][0]))
                {
                    if(
strcmp(g_szModels[i][ACCESS], szIP) == 0)
                    {
                        
CopyModel(idi);
                        break;
                    }
                }
                else if(
flags read_flags(g_szModels[i][ACCESS]))
                {
                    
CopyModel(idi);
                    break;
                }
            }
        }
    }
}

public 
fwd_HamSpawn_Post(id)
{
    if(!
is_user_alive(id))
        return;
        
    switch(
get_pdata_int(id114))
    {
        case 
1: if(g_szPlayerModel[id][1][0]) fmSetModel(idg_szPlayerModel[id][1]);
        case 
2: if(g_szPlayerModel[id][2][0]) fmSetModel(idg_szPlayerModel[id][2]);
    }
}

public 
fwd_SetClientKeyValue_Pre(id, const szInfobuffer[], const szKey[], const szValue[])
{    
    if(
strcmp(szKey"model") != 0)
        return 
FMRES_IGNORED;
    static 
iTeamiTeam get_pdata_int(id114);
    if(
iTeam != && iTeam != 2)
        return 
FMRES_IGNORED;
    if(
g_szPlayerModel[id][iTeam][0] && strcmp(szValueg_szPlayerModel[id][iTeam]) != 0)
    {
        
fmSetModel(idg_szPlayerModel[id][iTeam]);
        return 
FMRES_SUPERCEDE;
    }
    return 
FMRES_IGNORED;    
}

stock CopyModel(indexsId)
{
    
copy(g_szPlayerModel[index][1], charsmax(g_szPlayerModel[][]), g_szModels[sId][MDL_T]);
    
copy(g_szPlayerModel[index][2], charsmax(g_szPlayerModel[][]), g_szModels[sId][MDL_CT]);
}

stock fmSetModel(id, const model[])
    
engfunc(EngFunc_SetClientKeyValueidengfunc(EngFunc_GetInfoKeyBufferid), "model"model);
    
bool:is_user_steam(id)
{
    static 
dp_pointer;
    if(!
dp_pointerdp_pointer get_cvar_pointer("dp_r_id_provider");
    
    
server_cmd("dp_clientinfo %d"id);
    
server_exec();
    return (
get_pcvar_num(dp_pointer) == 2) ? true false;
}    
 
Аватара пользователя
Eternal
 
Сообщения: 24
Зарегистрирован: 23 янв 2017, 08:49
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.
Языки программирования: Php

Re: Hitbox новой модели

Сообщение MFTWUZTLBW » 14 янв 2019, 14:04

Насколько я знаю "Hitbox" вшит в модель.
Если тебя не устраивает сам хитбокс то нужно:

Декомпелировать модельку спомощью "MilkShape 3D 1.8.4"
И изменить положение хитбоксов в файле ".qc" открыв его текстовым редактором.
Скомпелировать модель обратно.

Вообщем вот ссыль, на локалке тестил работало. За серв не ручаюсь.
Вы должны зарегистрироваться, чтобы видеть ссылки. ... 272&page=3
Аватара пользователя
MFTWUZTLBW
 
Сообщения: 5
Зарегистрирован: 05 дек 2018, 20:42
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 7