amx_parachute и связанные с ним баги.
e6udno II

Пользователь


Рейтинг: 8


Сообщений: 3


Спасибок: 1

Парашют. Надо как-то исправить его. Когда у игрока гравитация, и он использует парашют, гравитация возвращается до стандартного значения. Очень заметно будет в играх на выходных, а именно Чай-чай и другие.

Предлогаю, либо найти новый плагин (этот редактировать), либо убрать парашют.

._.

Пользователь


Рейтинг: 22


Сообщений: 2


Спасибок: 4

+++

 

Данил Святославский

Пользователь


Рейтинг: 4


Сообщений: 4


Спасибок: 0

+

Олег

Пользователь


Рейтинг: 221


Сообщений: 20


Спасибок: 40

Не знаю, вроде этот плагин должным образом удалит тот "баг"

 
Fix


#include

#include

#include

#include

#include

 

new para_ent[33]

 

public plugin_init()

{

register_plugin("Parachute", "1.0", "Syava")

 

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

}

}

 

 

Отредактировал: Олег, 4 декабря 2017 г, 10:19
Спасибо сказали: SORRY
cAh

Главный Админ


Рейтинг: 108


Сообщений: 7


Спасибок: 20

Олег писал:

Не знаю, вроде этот плагин должным образом удалит тот "баг"

 
Fix


#include

#include

#include

#include

#include

 

new para_ent[33]

 

public plugin_init()

{

register_plugin("Parachute", "1.0", "Syava")

 

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

}

}

 

 

Файлом прикрепи

0
Олег

Пользователь


Рейтинг: 221


Сообщений: 20


Спасибок: 40

Отредактировал: Олег, 12 декабря 2017 г, 16:22
Спасибо сказали: SORRY
Авторизация
  Войти через ВК
Последнее на форуме

В Данный Момент Проблемы С Хостингом

Дата: Вчера в 16:05

Автор: St1s

Получи +1р на баланс за голос на мониторинге

Дата: 14 ноября 2018 г, 19:07

Автор: Green4ik

Бан ни за что.

Дата: 10 ноября 2018 г, 14:01

Автор: Paininthedota

Жалоба На Игрока 1/4 PRO Legion Vara

Дата: 6 ноября 2018 г, 16:37

Автор: Артем Смирнов

МУЗЫКА В СПАРТЕ

Дата: 4 ноября 2018 г, 10:49

Автор: Артем Смирнов