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

AMXX 1.8.3 CS_InternalCommand

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

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

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

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

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

AMXX 1.8.3 CS_InternalCommand

Сообщение NEoMASTERR » 07 дек 2016, 02:40

Здравствуйте. В плагине client_buy ConnorMcLeod'a не вызывается на F1 (autobuy, cl_autobuy) CS_InternalCommand. Либо рехлдс виноват, либо амхх

Код: Выделить всё
public CS_InternalCommand(id, const szCommand[])
{
    client_print(0, print_chat, szCommand)  // сообщения нет, в amxx 1.8.2 есть
    if( is_user_alive(id) )
    {
        new szCmd[13]
        if( copy(szCmd, charsmax(szCmd), szCommand) < 12 )
        {
            return CheckBuyCmd(id, szCmd)
        }
    }
    return PLUGIN_CONTINUE


Никто не сталкивался?

Добавлено спустя 3 минуты 12 секунд:
Форварда вообще нет в cstrike.inc )=
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: AMXX 1.8.3 CS_InternalCommand

Сообщение ALIK » 07 дек 2016, 02:42

Аватара пользователя
ALIK
 
Сообщения: 227
Зарегистрирован: 01 июн 2010, 23:05
Благодарил (а): 116 раз.
Поблагодарили: 55 раз.
Опыт программирования: Меньше недели
Языки программирования: Pawn

Re: AMXX 1.8.3 CS_InternalCommand

Сообщение NEoMASTERR » 07 дек 2016, 02:47

Да, оно, спасибо, но client_command обрабатывает только autobuy/cl_autobuy целиком, не разбивая на "под"комманды вроде "ak47 vesthelm priammo secammo", и не проходит проверку CheckBuyCmd, т.к. там не указан autobuy. Соответственно не ясно когда игрок купил допустим ак47
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: AMXX 1.8.3 CS_InternalCommand

Сообщение zhorzh78 » 07 дек 2016, 03:29

Код: Выделить всё
register_clcmd( "cl_setautobuy", "client_command" ) 
register_clcmd
( "cl_setrebuy", "client_command" 


а.. так еще и речь про 1.8.3.. не заметил
Вы должны зарегистрироваться, чтобы видеть ссылки.
Аватара пользователя
zhorzh78
 
Сообщения: 91
Зарегистрирован: 26 фев 2014, 10:07
Благодарил (а): 1 раз.
Поблагодарили: 23 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn (AMXX)

Re: AMXX 1.8.3 CS_InternalCommand

Сообщение NEoMASTERR » 08 дек 2016, 00:14

CS_OnBuy нету в cstrike.inc
cl_setautobuy ловится 1 раз и больше не вызывается, вызываются только cl_autobuy который не несёт параметров.

Код: Выделить всё
register_clcmd("cl_setautobuy", "client_com")
register_clcmd("cl_setrebuy", "client_com")

public client_com(id)
{
    static str[128]; read_args(str, 127)
    static ar[33]
    static i, j;
    i = 0; j = 0;
    remove_quotes(str)
    
    while 
(1)
    {
        j = strfind(str[i], " ")
        
        if 
(!= -1)
        {
            formatex(ar, j, str[i])
            console_print(id, ar)
            i += j+1
        
}
        else
        
{
            formatex(ar, 32, str[i])
            console_print(id, ar)
            break
        
}
    }
}


Добавлено спустя 2 минуты 35 секунд:
2 вопроса:
1. Как поймать автозакуп?
2. Как сделать чтоб автозакуп корректно отрабатывался в client_command?

Код: Выделить всё
public client_command(id)
{
    if( is_user_alive(id) )
    {
        new szCommand[13] // autoshotgun
        if( read_argv(0, szCommand, charsmax(szCommand)) < 12 )
        {
            return CheckBuyCmd(id, szCommand)
        }
    }
    return PLUGIN_CONTINUE


Добавлено спустя 2 минуты 53 секунды:
Суть в том что у меня применяются модельки на купленное оружие, каких то других способов отловить покупку я не нашёл кроме client_buy.amxx, но в 1.8.3 он не работает с автозакупом т.к. урезали cstrike.inc

Добавлено спустя 7 минут 45 секунд:
Допустим сделаю на каждого игрока массив под его автозакуп который будет присваиваться cl_setautobuy, потом при получении команды cl_autobuy обрабатывать его список и передавать всё как client_command. Можно как то заблочить cl_autobuy и "сэмулировать" вызов client_command передав параметры туда? Как их передать?))

Добавлено спустя 2 часа 5 минут 19 секунд:
В общем решение дописываю, остался cl_rebuy
всё через жопу там)
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6


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

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

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