Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Плагин Parachute

, Помогите исправить косяк в плагине
Статус пользователя Player2012
сообщение 3.11.2012, 12:26
Сообщение #1
Стаж: 13 лет

Сообщений: 9
Благодарностей: 1
Полезность: 0

Здравствуйте, помогите пожалуйста исправить ошибку в плагине Parachute.
Плагин выдаёт всем игрокам при спавне бесплатные парашюты.

Вот Debug-лог ошибки:
Цитата
L 11/02/2012 - 21:48:00: Start of error session.
L 11/02/2012 - 21:48:00: Info (map "de_dust2_2x2") (file "addons/amxmodx/logs/error_20121102.log")
L 11/02/2012 - 21:48:00: [AMXX] Displaying debug trace (plugin "parachute.amxx")
L 11/02/2012 - 21:48:00: [AMXX] Run time error 4: index out of bounds
L 11/02/2012 - 21:48:00: [AMXX] [0] parachute.sma::parachute_reset (line 51)
L 11/02/2012 - 21:48:00: [AMXX] [1] parachute.sma::death_event (line 46)


Вот исходник плагина
Код
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <fun>

new para_ent[33]

public plugin_init()
{
    register_plugin("Parachute", "1.3 Fixed", "KRoT@L/JTP10181")

    register_event("ResetHUD", "newSpawn", "be")
    register_event("DeathMsg", "death_event", "a")
}

public plugin_natives()
{
    set_native_filter("native_filter")
}

public native_filter(const name[], index, trap)
{
    if (!trap) return PLUGIN_HANDLED
    return PLUGIN_CONTINUE
}

public plugin_precache()
{
    precache_model("models/parachute.mdl")
}

public client_connect(id)
{
    parachute_reset(id)
}

public client_disconnect(id)
{
    parachute_reset(id)
}

public death_event()
{
    new id = read_data(2)
    parachute_reset(id)
}

parachute_reset(id)
{
    if(para_ent[id] > 0)
    {
        if (is_valid_ent(para_ent[id]))
        {
            remove_entity(para_ent[id])
        }
    }

    if(is_user_alive(id)) set_user_gravity(id, 1.0)
    para_ent[id] = 0
}

public newSpawn(id)
{
    if(para_ent[id] > 0)
    {
        remove_entity(para_ent[id])
        set_user_gravity(id, 1.0)
        para_ent[id] = 0
    }
}

public client_PreThink(id)
{
    if(!is_user_alive(id)) return
    
    new Float:fallspeed = 100 * -1.0
    new Float:frame
    new button = get_user_button(id)
    new oldbutton = get_user_oldbutton(id)
    new flags = get_entity_flags(id)
    if(para_ent[id] > 0 && (flags & FL_ONGROUND))
    {
        if(get_user_gravity(id) == 0.1) set_user_gravity(id, 1.0)
        {
            if(entity_get_int(para_ent[id],EV_INT_sequence) != 2)
            {
                entity_set_int(para_ent[id], EV_INT_sequence, 2)
                entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
                entity_set_float(para_ent[id], EV_FL_frame, 0.0)
                entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
                entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
                entity_set_float(para_ent[id], EV_FL_framerate, 0.0)
                return
            }
            frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0
            entity_set_float(para_ent[id],EV_FL_fuser1,frame)
            entity_set_float(para_ent[id],EV_FL_frame,frame)
            if(frame > 254.0)
            {
                remove_entity(para_ent[id])
                para_ent[id] = 0
            }
            else
            {
                remove_entity(para_ent[id])
                set_user_gravity(id, 1.0)
                para_ent[id] = 0
            }
            return
        }
    }
    if (button & IN_USE)
    {
        new Float:velocity[3]
        entity_get_vector(id, EV_VEC_velocity, velocity)
        if(velocity[2] < 0.0)
        {
            if(para_ent[id] <= 0)
            {
                para_ent[id] = create_entity("info_target")
                if(para_ent[id] > 0)
                {
                    entity_set_string(para_ent[id],EV_SZ_classname,"parachute")
                    entity_set_edict(para_ent[id], EV_ENT_aiment, id)
                    entity_set_edict(para_ent[id], EV_ENT_owner, id)
                    entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
                    entity_set_model(para_ent[id], "models/parachute.mdl")
                    entity_set_int(para_ent[id], EV_INT_sequence, 0)
                    entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
                    entity_set_float(para_ent[id], EV_FL_frame, 0.0)
                    entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
                }
            }
            if(para_ent[id] > 0)
            {
                entity_set_int(id, EV_INT_sequence, 3)
                entity_set_int(id, EV_INT_gaitsequence, 1)
                entity_set_float(id, EV_FL_frame, 1.0)
                entity_set_float(id, EV_FL_framerate, 1.0)
                set_user_gravity(id, 0.1)
                velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
                entity_set_vector(id, EV_VEC_velocity, velocity)
                if(entity_get_int(para_ent[id],EV_INT_sequence) == 0)
                {
                    frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0
                    entity_set_float(para_ent[id],EV_FL_fuser1,frame)
                    entity_set_float(para_ent[id],EV_FL_frame,frame)
                    if (frame > 100.0)
                    {
                        entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
                        entity_set_float(para_ent[id], EV_FL_framerate, 0.4)
                        entity_set_int(para_ent[id], EV_INT_sequence, 1)
                        entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
                        entity_set_float(para_ent[id], EV_FL_frame, 0.0)
                        entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
                    }
                }
            }
        }
        else if(para_ent[id] > 0)
        {
            remove_entity(para_ent[id])
            set_user_gravity(id, 1.0)
            para_ent[id] = 0
        }
    }
    else if((oldbutton & IN_USE) && para_ent[id] > 0 )
    {
        remove_entity(para_ent[id])
        set_user_gravity(id, 1.0)
        para_ent[id] = 0
    }
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя SiziF
сообщение 3.11.2012, 14:43
Сообщение #2


Стаж: 15 лет

Сообщений: 1042
Благодарностей: 133
Полезность: 18

Быстрее будет найти рабочий))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Player2012
сообщение 4.11.2012, 0:19
Сообщение #3
Стаж: 13 лет

Сообщений: 9
Благодарностей: 1
Полезность: 0

Да я итак этот еле нашёл! Всё попадаются с командами buy_parachute в чате для покупки и т.д.
Нужен именно этот, чтобы ничего покупать не надо было и игроки не заморачивались с этим,
но в тоже время чтобы парашют работал... Меня в нём всё устраивает, кроме ошибки, из-за которой
редко, но метко падает сервер(((
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sergggzi
сообщение 4.11.2012, 1:24
Сообщение #4
Иконка группы

Стаж: 13 лет

Сообщений: 6536
Благодарностей: 6222
Полезность: 807

плагин парашют без всякой покупки каждому игроку в каждом раунде.

PS модель не кидал, заюзать можно любую..

Прикрепленный файл  parachute.sma ( 4,55 килобайт ) Кол-во скачиваний: 58


Отредактировал: sergggzi, - 4.11.2012, 1:27
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Player2012
сообщение 5.11.2012, 2:23
Сообщение #5
Стаж: 13 лет

Сообщений: 9
Благодарностей: 1
Полезность: 0

sergggzi
Спасибо конечно, но это 100% копия плагина, что в первом посту и соответственно с ошибкой(((
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sergggzi
сообщение 5.11.2012, 2:31
Сообщение #6
Иконка группы

Стаж: 13 лет

Сообщений: 6536
Благодарностей: 6222
Полезность: 807

Цитата(Player2012 @ 5.11.2012, 2:23) *
sergggzi
Спасибо конечно, но это 100% копия плагина, что в первом посту и соответственно с ошибкой(((

я не сверял код, а просто кинул плагин, который стоит у меня на сервере и не вызывает каких-либо ошибок.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Player2012
сообщение 7.11.2012, 20:01
Сообщение #7
Стаж: 13 лет

Сообщений: 9
Благодарностей: 1
Полезность: 0

Up! Помогите пожалуйста, мне больше не к кому обратиться... cray.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sambo
сообщение 7.11.2012, 20:57
Сообщение #8


Стаж: 14 лет

Сообщений: 847
Благодарностей: 200
Полезность: 477

Player2012,
Оно?
Прикрепленный файл  parachute.sma ( 4,55 килобайт ) Кол-во скачиваний: 12


Добавлено поже :
Сор не смотрел исходник в Сообщение #4 .
Player2012, нормальный рабочий плагин , несколько месяцев стоял - норм . Поставь потесли , если будет выбивать ошибки значит дело не в нем .

Отредактировал: sambo, - 7.11.2012, 21:07
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Player2012
сообщение 8.11.2012, 23:42
Сообщение #9
Стаж: 13 лет

Сообщений: 9
Благодарностей: 1
Полезность: 0

sambo
Несовсем. Этот плагин с абсолютно идентичным кодом.
Я сравнил свой и этот и вот результаты отличий:
1) В твоём плагине есть комментарии (которые компилятор не использует вообще)
2) В строчке с автором плагина ещё дописан 3 человек - sector
Больше никаких отличий в коде нету и как ты понимаешь это получается 100% точно
такойже плагин, однако ошибку он выдаёт, что указал в первом посте...
Незнаю важно это или нет, но на сервере используется AMXX 1.8.2-dev-hg26

Отредактировал: Player2012, - 8.11.2012, 23:42
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: