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

Заменить модель конкретного weponbox  [Решено]

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

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

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

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

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

Re: Заменить модель конкретного weponbox

Сообщение Subb98 » 10 фев 2018, 10:45

KOTOKU, отписал.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Заменить модель конкретного weponbox

Сообщение provaider » 10 фев 2018, 11:36

KOTOKU писал(а):Код выше не самый сок, но для твоего сервака сгодится, как для обучения.
Ты запрекешил модели хотя бы? Тут либо косяк в прекеше, либо неправильно работает форвард.

Конечно они в прекеше, я же писал что и со стандартными моделями такая же херь.Как понять форвард неправильно работает, в инклюдах что-то что-ли?

KOTOKU писал(а):Код выше не самый сок

Почему?
Аватара пользователя
provaider
 
Сообщения: 86
Зарегистрирован: 21 дек 2017, 20:17
Забанен
Благодарил (а): 38 раз.
Поблагодарили: 4 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Заменить модель конкретного weponbox

Сообщение KOTOKU » 10 фев 2018, 11:49

Subb уже ответил на вопрос "Почему".
Здесь лучше использовать динамическое состояние, но никак не unregister_forward.

Добавлено спустя 1 минуту 39 секунд:
Код: Выделить всё
engfunc(EngFunc_SetModeliEnt"models/w_ak47.mdl"); 

-->
Код: Выделить всё
forward_return(FMV_CELLengfunc(EngFunc_SetModeliEnt"models/w_ak47.mdl")); 
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: Заменить модель конкретного weponbox

Сообщение provaider » 10 фев 2018, 11:51

KOTOKU писал(а):Код выше не самый сок, но для твоего сервака сгодится, как для обучения.

Мы даже не знакомы,с чего такие утверждения?

P.S. У меня нет серверов CS 1.6
Аватара пользователя
provaider
 
Сообщения: 86
Зарегистрирован: 21 дек 2017, 20:17
Забанен
Благодарил (а): 38 раз.
Поблагодарили: 4 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Заменить модель конкретного weponbox

Сообщение KOTOKU » 10 фев 2018, 11:54

Я не думаю, что этот вопрос имеет смысл обсуждения в данном разделе.
Даже если у тебя нет сервера, то эту работу кто-то будет юзать на своем сервере - это лишь вопрос времени и мне не важно, ставишь ты это на свой сервер или чужой, здесь вопрос об оптимизации стоит.

Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: Заменить модель конкретного weponbox

Сообщение provaider » 10 фев 2018, 12:06

KOTOKU писал(а):Я не думаю, что этот вопрос имеет смысл обсуждения в данном разделе.
Даже если у тебя нет сервера, то эту работу кто-то будет юзать на своем сервере - это лишь вопрос времени и мне не важно, ставишь ты это на свой сервер или чужой, здесь вопрос об оптимизации стоит.



Так а нахрена (простите за выражение) тогда утверждать о том то что тебе не важно человеку которого не знаешь?? Или это фетиш такой у Вас... Я попросил помощи и серьёзно интересуюсь решением данного вопроса,а как оказывается я ещё и виноват что ничего не знаю. Пздц... и с Вашими правками результат тот же.
Аватара пользователя
provaider
 
Сообщения: 86
Зарегистрирован: 21 дек 2017, 20:17
Забанен
Благодарил (а): 38 раз.
Поблагодарили: 4 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Заменить модель конкретного weponbox

Сообщение KOTOKU » 10 фев 2018, 12:27

Скинь лог после тестов, он будет лежать в amxmodx папке
Код: Выделить всё
public HamHook_Weaponbox_Spawn_Post(const iWeaponBox)
{
    if (
pev_valid(iWeaponBox) == && is_user_connected(pev(iWeaponBoxpev_owner))) {
        
g_SetModel register_forward(FM_SetModel"fw_SetModel");
        
log_to_file("addons/amxmodx/weaponbox.txt","IF HAM SetModel: %d"g_SetModel);
        }

    return 
HAM_IGNORED;
}
public 
fw_SetModel(iEnt) {
        
unregister_forward(FM_SetModelg_SetModel);
    static 
iszClassname[32], iItem
    
pev(iEntpev_classnameszClassname31);

    
log_to_file("addons/amxmodx/weaponbox.txt","F ENT_CLASS: %s | ID: %d"szClassnameiEnt);

    if(!
equal(szClassname"weaponbox")){ 
    
log_to_file("addons/amxmodx/weaponbox.txt","F ENT NOT WEAPONBOX | ID: %d"iEnt);
    return 
FMRES_IGNORED;
    }
    for(
06i++) {
        
iItem get_pdata_cbase(iEntm_rgpPlayerItems_CWeaponBox i4);
        
log_to_file("addons/amxmodx/weaponbox.txt","F ID: %d | i: %d | iItem: %d"iEntiiItem);
        if(
iItem && (pev(iItempev_iuser1) == 1337) {
            
log_to_file("addons/amxmodx/weaponbox.txt","F ID: %d | SUCCESS"iEnt);
            
forward_return(FMV_CELLengfunc(EngFunc_SetModeliEnt"models/w_ak47.mdl")); 
            
set_pev(iEntpev_body0);
            
            return 
FMRES_SUPERCEDE;
        }
    }

    return 
FMRES_IGNORED;
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: Заменить модель конкретного weponbox

Сообщение provaider » 10 фев 2018, 13:53

DeMNiX писал(а):
Ham_Touch

:D

Код: Выделить всё
// kord
#define m_rgpPlayerItems_CWeaponBox 34

new g_SetModel
public plugin_init
()
{
    RegisterHam(Ham_Spawn,         "weaponbox",         "HamHook_Weaponbox_Spawn_Post", true);
}
public HamHook_Weaponbox_Spawn_Post(const iWeaponBox)
{
    if (pev_valid(iWeaponBox) == 2 && is_user_connected(pev(iWeaponBox, pev_owner))) {
        g_SetModel = register_forward(FM_SetModel, "fw_SetModel");
        }

    return HAM_IGNORED;
}
public fw_SetModel(iEnt) {
        unregister_forward(FM_SetModel, g_SetModel);
    static i, szClassname[32], iItem; 
    pev
(iEnt, pev_classname, szClassname, 31);

    if(!equal(szClassname, "weaponbox")) return FMRES_IGNORED;
    for(= 0; i < 6; i++) {
        iItem = get_pdata_cbase(iEnt, m_rgpPlayerItems_CWeaponBox + i, 4);

        if(iItem > 0 && (pev(iItem, pev_iuser1) == 1337) {
            engfunc(EngFunc_SetModel, iEnt, "models/w_ak47.mdl");
            set_pev(iEnt, pev_body, 0);
            
            return FMRES_SUPERCEDE
;
        }
    }

    return FMRES_IGNORED;
}
 


Попутал iEnt с iItem поэтому модель и не ставилась :-| Простите за невнимательность ((

Добавлено спустя 6 минут 32 секунды:
Код: Выделить всё

                    set_pev
(weaponbox_id, pev_body, 0);
                    set_pev(weaponbox_id, pev_skin, 2);

смена сабмодели weponbox`a
Аватара пользователя
provaider
 
Сообщения: 86
Зарегистрирован: 21 дек 2017, 20:17
Забанен
Благодарил (а): 38 раз.
Поблагодарили: 4 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Заменить модель конкретного weponbox

Сообщение KOTOKU » 10 фев 2018, 14:07

Код: Выделить всё
set_pev(weaponbox_idpev_body0); // смена сабмодели
set_pev(weaponbox_idpev_skin2);  // смена скина у сабмодели
 
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: Заменить модель конкретного weponbox

Сообщение DeMNiX » 10 фев 2018, 15:19

я не хочу конечно никого тут обидеть, но суть - замена конкретного веапонбокса, выбрашенного игроком предмета из инвентаря, при котором у предмета есть какое-то свойство pev_iuser. Собственно weaponbox и предмет из инвентаря это разные энтити. Как вы будете ловить иначе я не представляю
те примеры что вы скинули совершенно имеют другое значение, дропнуть и удалить - это одно, дропнуть и заменить модель у конкретной энтити - это другое
Работа с моделями для кс 1.6
Telegram @DeMNiX
vk com/sbalburov
Аватара пользователя
DeMNiX
 
Сообщения: 177
Зарегистрирован: 24 сен 2011, 17:48
Благодарил (а): 25 раз.
Поблагодарили: 37 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Пред.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12