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

Run time error 10: native error (native "set_speak")

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

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

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

Run time error 10: native error (native "set_speak")

Сообщение GoOleM » 27 дек 2011, 14:04

Выдает вот эту ошибку
Код: Выделить всё
L 12/27/2011 - 16:06:58: [ENGINE] Invalid player 1
L 12/27/2011 - 16:06:58: [AMXX] Displaying debug trace (plugin "admin_chat.amxx")
L 12/27/2011 - 16:06:58: [AMXX] Run time error 10: native error (native "set_speak")
L 12/27/2011 - 16:06:58: [AMXX]    [0] admin_chat.sma::client_authorized (line 18)

Плагин:
Код: Выделить всё
#include <amxmodx>
#include <engine>
 
#define ACCESS_LEVEL ADMIN_LEVEL_H
 
public client_connect
(id)
{
        if (get_user_flags(id) & ACCESS_LEVEL)
        {
                set_speak(id, 4)
        }
}
 
public client_authorized
(id)
{
        if (get_user_flags(id) & ACCESS_LEVEL)
        {
                set_speak(id, 4)
        }
}
 
public client_infochanged
(id)
{
        if (get_user_flags(id) & ACCESS_LEVEL)
        {
                set_speak(id, 4)
        }
}
 
get_mode
() {
        new mode[4];
        get_cvar_string("pd_listen_mode", mode, 3)
        return read_flags(mode)
}
 
public handle_say
(id) {
        new mode = get_mode()
        if (! mode) {
                return PLUGIN_CONTINUE
        
}
 
        new is_alive 
= is_user_alive(id)
        new team = get_user_team(id)
 
        new command
[17]
        read_argv(0, command, 16)
 
        new is_team_msg 
= ! equal(command, "say")
 
        new player_count 
= get_playersnum()
        new players[32]
 
        get_players
(players, player_count, "c")
 
        new message
[129]
        read_args(message, 128)
        replace(message,128,"^"","")
        replace(message,128,"
^"","")
 
        new name
[33]
        get_user_name(id, name, 32);
 
        for 
(new i = 0; i < player_count; i++)
        {
                if(get_user_flags(players[i])&ACCESS_LEVEL && mode&1)
                {
                        if ( (is_user_alive(players[i])!=is_alive) ||
                             ( (get_user_team(players[i])!=team)&&(is_team_msg)) )
                        {
                                        client_print(players[i], print_chat, "%s%s%s :  %s",
                                                        is_team_msg ? "(TEAM) " : "",
                                                        is_alive ? "" : "(DEAD) ", name, message)
                        }
 
                
} else if( mode&&& is_alive && !is_user_alive(players[i]) )
                {
                        client_print(players[i], print_chat, "%s%s :    %s",
                                is_team_msg ? "(TEAM) " : "",
                                name, message)
                }
        }
        return PLUGIN_CONTINUE;
}
 
public plugin_init
() {
        register_plugin("admin_chat", "1", "B-ceps")
 
        register_clcmd
("say", "handle_say")
        register_clcmd("say_team", "handle_say")
 
        register_cvar
("pd_listen_mode", "a")
 
        return PLUGIN_CONTINUE
}
Аватара пользователя
GoOleM
 
Сообщения: 290
Зарегистрирован: 21 дек 2010, 16:43
Благодарил (а): 29 раз.
Поблагодарили: 6 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: Run time error 10: native error (native "set_speak")

Сообщение DJ_WEST » 10 янв 2012, 16:36

Код: Выделить всё
public client_connect(id)
{
        if (get_user_flags(id) & ACCESS_LEVEL)
        {
                set_speak(id4)
        }
}
 
public client_authorized(id)
{
        if (get_user_flags(id) & ACCESS_LEVEL)
        {
                set_speak(id4)
        }
}
 
public client_infochanged(id)
{
        if (get_user_flags(id) & ACCESS_LEVEL)
        {
                set_speak(id4)
        }

Это прикол?

Ошибка из-за того, что set_speak не может выполниться в функции client_authorized, потому что игрока еще нету.
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2


Вернуться в Вопросы по AMXX и его плагинам

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

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