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

Помогите решить проблему!

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

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

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

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

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

Помогите решить проблему!

Сообщение KpoxaYT » 14 мар 2024, 02:38

У меня есть 1 моделька девушки [GIRL], я добавил ее в код, но у меня появились проблема, есть выбор цвета команд, но мне надо чтобы отдельно моделька девушки была у тех у кого есть флаг "n" ADMIN_LEVEL_B, Вроде есть сама моделька, все вписал, все сделал, а модельки нет(
Код: Выделить всё
; Название файла: player_models.ini
; Внимание: все строчки начинающиеся со знака ; являются комментарием и не влияют на работу мода!
;
;
 Описание: файл используется для изменения моделей игроков.
;
 Путь к папке с моделями игроков "../models/player/"
; Название файла не должно содержать пробелов, максимальная длина 16 символов.
;
 Предупреждение: превышение максимальной длины или неверное название модели, повлечёт за собой падение сервера.

;
 Заключённые (8 скинов)
jbe_prisoner

; Охрана
jb_oxr

; Начальник
jb_na4

; Футболисты (2 скина)
jbe_footballer

; Девушки [2 команды]
jbe_girll_v5


А вот код и исходник
Код: Выделить всё
/* -> Индексы моделей -> */
#define PRISONER 0
#define GUARD 1
#define CHIEF 2
#define FOOTBALLER 3
#define GIRL 4   


Код: Выделить всё
Show_SkinMenu(id)
{
    jbe_informer_offset_up(id);
    jbe_menu_block(id);
    new szMenu[512], iKeys = (1<<0|1<<1|1<<2|1<<3), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_SKIN_TITLE");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_SKIN_ORANGE");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_SKIN_GRAY");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_SKIN_YELLOW");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_SKIN_BLUE");
    if(IsSetBit(g_iBitUserGirl, id))
    {
        formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L", id, "JBE_MENU_SKIN_BLACK");
        iKeys |= (1<<4);
    }
    else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L", id, "JBE_MENU_SKIN_BLACK");
    return show_menu(id, iKeys, szMenu, -1, "Show_SkinMenu");
}

public Handle_SkinMenu(id, iKey)
{
    g_iUserSkin[id] = iKey;
    engclient_cmd(id, "joinclass", "1");
    jbe_menu_unblock(id);


Предупреждение: Название темы в стиле помогите
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
KpoxaYT
 
Сообщения: 6
Зарегистрирован: 25 авг 2018, 15:25
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.
Языки программирования: Я ничего не знаю

Re: Помогите решить проблему!

Сообщение nemec21 » 14 мар 2024, 14:20

Обрати внимание, в функцию Show_SkinMenu, где там активная кнопка?
Код: Выделить всё
iKeys = (1<<0|1<<1|1<<2|1<<3)

/*может так надо?*/
iKeys = (1<<0|1<<1|1<<2|1<<3|1<<4)
 
Аватара пользователя
nemec21
Скриптер
 
Сообщения: 826
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 216 раз.
Поблагодарили: 49 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Помогите решить проблему!

Сообщение KpoxaYT » 14 мар 2024, 18:41

nemec21 писал(а):Обрати внимание, в функцию Show_SkinMenu, где там активная кнопка?
Код: Выделить всё
iKeys = (1<<0|1<<1|1<<2|1<<3)

/*может так надо?*/
iKeys = (1<<0|1<<1|1<<2|1<<3|1<<4)

Спасибо что уже второй раз мне помогаешь, я попробую) блин жаль киви блокнули я бы отблагодарил тебя, но спасибо большое, сейчас же попробую!
Аватара пользователя
KpoxaYT
 
Сообщения: 6
Зарегистрирован: 25 авг 2018, 15:25
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.
Языки программирования: Я ничего не знаю

Re: Помогите решить проблему!

Сообщение nemec21 » 14 мар 2024, 18:52

KpoxaYT писал(а):
nemec21 писал(а):Обрати внимание, в функцию Show_SkinMenu, где там активная кнопка?
Код: Выделить всё
iKeys = (1<<0|1<<1|1<<2|1<<3)

/*может так надо?*/
iKeys = (1<<0|1<<1|1<<2|1<<3|1<<4)
 

Спасибо что уже второй раз мне помогаешь, я попробую) блин жаль киви блокнули я бы отблагодарил тебя, но спасибо большое, сейчас же попробую!

В Белоруссии киви уже лет 10 как нет наверное
Аватара пользователя
nemec21
Скриптер
 
Сообщения: 826
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 216 раз.
Поблагодарили: 49 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Помогите решить проблему!

Сообщение KpoxaYT » 14 мар 2024, 19:10

nemec21 писал(а):Обрати внимание, в функцию Show_SkinMenu, где там активная кнопка?
Код: Выделить всё
iKeys = (1<<0|1<<1|1<<2|1<<3)

/*может так надо?*/
iKeys = (1<<0|1<<1|1<<2|1<<3|1<<4)

Не работает, я вписал в код модельку GIRL, и в player_models тоже, но она даже не грузилась при запуске сервера, а самой модельки нет, есть возможность чтобы она была без выбора одежды Show_SkinMenu чтобы просто была сразу если есть нужны флаг в моем случае if(iFlags & ADMIN_LEVEL_B) SetBit(g_iBitUserGirl, id); флаг, прошу помоги( :( :-X
Аватара пользователя
KpoxaYT
 
Сообщения: 6
Зарегистрирован: 25 авг 2018, 15:25
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.
Языки программирования: Я ничего не знаю

Re: Помогите решить проблему!

Сообщение nemec21 » 14 мар 2024, 19:31

У меня нет компа на данный момент, в ремонте, на тлефоне смотреть такие объемы нереально, так что пока увы
Аватара пользователя
nemec21
Скриптер
 
Сообщения: 826
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 216 раз.
Поблагодарили: 49 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Помогите решить проблему!

Сообщение nekruxa » 15 мар 2024, 15:59

Код: Выделить всё
set_pev(id, pev_skin, skinID
меняет скин, а не модельку
Код: Выделить всё
jbe_set_user_model(id, g_szPlayerModels[MDL]) 
меняет модельку
Может отличаться в зависимости от кора

Добавлено спустя 20 минут 2 секунды:
Если разбирать подробно:
В
Код: Выделить всё
Show_SkinMenu()
по кнопке в массив
Код: Выделить всё
g_iUserSkin
вписывается некий скин, при событии спавна хам
Код: Выделить всё
Ham_PlayerSpawn_Post()
вызывается процедура
Код: Выделить всё
jbe_default_player_model()

Пример реализации этой процедуры:
Код: Выделить всё

jbe_default_player_model
(pPlayer)
{
    switch(
g_iUserTeam[pPlayer])
    {
        case 
1:
        {
            
jbe_set_user_model(pPlayerg_szPlayerModels[PRISONER]); // Устаналиваем, что моделькой будет заключенные
            
set_pev(pPlayerpev_sking_iUserSkin[pPlayer]); // Меняем скин из моделек заключенных на выбранный
        
}
        case 
2jbe_set_user_model(pPlayerg_szPlayerModels[GUARD]);
    }
}
 
Аватара пользователя
nekruxa
 
Сообщения: 147
Зарегистрирован: 20 апр 2020, 12:43
Благодарил (а): 13 раз.
Поблагодарили: 28 раз.
Языки программирования: Я ничего не знаю

Re: Помогите решить проблему!

Сообщение KpoxaYT » 15 мар 2024, 18:49

nekruxa писал(а):
Код: Выделить всё
set_pev(id, pev_skin, skinID)
меняет скин, а не модельку
Код: Выделить всё
jbe_set_user_model(id, g_szPlayerModels[MDL])
меняет модельку
Может отличаться в зависимости от кора

Добавлено спустя 20 минут 2 секунды:
Если разбирать подробно:
В
Код: Выделить всё
Show_SkinMenu()
по кнопке в массив
Код: Выделить всё
g_iUserSkin
вписывается некий скин, при событии спавна хам
Код: Выделить всё
Ham_PlayerSpawn_Post()
вызывается процедура
Код: Выделить всё
jbe_default_player_model()

Пример реализации этой процедуры:
Код: Выделить всё

jbe_default_player_model
(pPlayer)
{
    switch(g_iUserTeam[pPlayer])
    {
        case 1:
        {
            jbe_set_user_model(pPlayer, g_szPlayerModels[PRISONER]); // Устаналиваем, что моделькой будет заключенные
            set_pev(pPlayer, pev_skin, g_iUserSkin[pPlayer]); // Меняем скин из моделек заключенных на выбранный
        }
        case 2: jbe_set_user_model(pPlayer, g_szPlayerModels[GUARD]);
    }
}


получается должно быть так?
Код: Выделить всё
Show_SkinMenu(id)
{
    
jbe_informer_offset_up(id);
    
jbe_menu_block(id);
    new 
szMenu[512], iKeys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5), iLen formatex(szMenucharsmax(szMenu), "\y%L^n^n"id"JBE_MENU_SKIN_TITLE");
    
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[1] \w%L^n"id"JBE_MENU_SKIN_ORANGE");
    
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[2] \w%L^n"id"JBE_MENU_SKIN_GRAY");
    
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[3] \w%L^n"id"JBE_MENU_SKIN_YELLOW");
    
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[4] \w%L^n"id"JBE_MENU_SKIN_BLUE");
    if(
IsSetBit(g_iBitUserAdminid))
    {
        
formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[5] \w%L"id"JBE_MENU_SKIN_BLACK");
        
iKeys |= (1<<4);
    }
    else 
formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[5] \d%L"id"JBE_MENU_SKIN_BLACK");
    if(
IsSetBit(g_iBitUserGirlid))
    {
        
formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[6] \w%L"id"JBE_MENU_SKIN_GIRL");
        
iKeys |= (1<<5);
    }
    else 
formatex(szMenu[iLen], charsmax(szMenu) - iLen"\y[6] \d%L"id"JBE_MENU_SKIN_GIRL");
    return 
show_menu(idiKeysszMenu, -1"Show_SkinMenu");
}

public 
Handle_SkinMenu(idiKey)
{
    
g_iUserSkin[id] = iKey;
    
Ham_PlayerSpawn_Post()
    
jbe_default_player_model()
    
engclient_cmd(id"joinclass""1");
    
jbe_menu_unblock(id);


а дальше не очень понятно как будет изменяться моделька в
Код: Выделить всё
be_default_player_model(pPlayer)
{
    switch(
g_iUserTeam[pPlayer])
    {
        case 
1:
        {
            
jbe_set_user_model(pPlayerg_szPlayerModels[PRISONER]); // Устаналиваем, что моделькой будет заключенные
            
set_pev(pPlayerpev_sking_iUserSkin[pPlayer]); // Меняем скин из моделек заключенных на выбранный
        
}
        case 
2jbe_set_user_model(pPlayerg_szPlayerModels[GUARD]);
    }
Аватара пользователя
KpoxaYT
 
Сообщения: 6
Зарегистрирован: 25 авг 2018, 15:25
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.
Языки программирования: Я ничего не знаю

Re: Помогите решить проблему!

Сообщение nemec21 » 16 мар 2024, 10:48

Модел подкидываешь с помощью pev_skin
Аватара пользователя
nemec21
Скриптер
 
Сообщения: 826
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 216 раз.
Поблагодарили: 49 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Помогите решить проблему!

Сообщение nekruxa » 16 мар 2024, 15:23

Вообще не так
Не надо вызывать Ham_PlayerSpawn_Post, он как-нибудь сам
Код: Выделить всё
jbe_default_player_model()
надо переделать эту процедуру
Код: Выделить всё

jbe_default_player_model
(pPlayer)
{
    switch(g_iUserTeam[pPlayer])
    {
        case 1:
        {
            if (IsSetBit(g_iBitUserGirl, pPlayer)) jbe_set_user_model(pPlayer, g_szPlayerModels[GIRL]); // Что-то такое, опять же зависит от кора
            else {
                jbe_set_user_model(pPlayer, g_szPlayerModels[PRISONER]);
                set_pev(pPlayer, pev_skin, g_iUserSkin[pPlayer]);
            }
        }
        case 2: jbe_set_user_model(pPlayer, g_szPlayerModels[GUARD]);
    }
}

Также придется переделать логику при свободном дне, розыске и мини играх, потому что при них сетаются модели "заключенные" на определенный скин. Простым добавлением пары строчек тут не фиксится, а полностью переписывать и тестить уже не за мной. Если модель даже не грузится на клиент, стоит проверить
Код: Выделить всё
models_precache()

Насчет вопроса про то, что не должно появляться меню выбора скина (если это вопрос был)
Есть натив
Код: Выделить всё
jbe_set_user_team()
там при выборе первого кейса в последней строчке и вызывается функция
Код: Выделить всё
Show_SkinMenu(id)
, сообственно, надо сделать так, чтобы он вызывался только в случае, если у пользователя нет определенного флага, ну а далее подкидывать в это условие все функции и процедуры с обработчика меню (нужные), может есть вариант лучше, но пока первое, что пришло в голову
Аватара пользователя
nekruxa
 
Сообщения: 147
Зарегистрирован: 20 апр 2020, 12:43
Благодарил (а): 13 раз.
Поблагодарили: 28 раз.
Языки программирования: Я ничего не знаю

След.

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

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

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