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

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

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

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

[ZP] Parachute

[РЕШЕНО]
Статус пользователя $@NyA
сообщение 29.7.2019, 15:55
Сообщение #1


Иконка группы

Стаж: 18 лет

Сообщений: 987
Благодарностей: 529
Полезность: 1050

За основу был взят плагин с Оленей [ZP] Parachute
Я там поставил использование только для Человека и для Выжившего.

Но вот беда,я нигде ненашол как можно исправить тот нюанс,когда в момент использования Парашута,тебя заражает Зомби, и ты постоянно ходишь Зомбарем с открывшемся парашутом до конца следующего раунда
Такая же ситуацыя из Немезидой

Надеюсь на помощь Вашу
Код:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define _PLUGIN "[ZP] Parachute"
#define _VERSION "1.0"
#define _AUTHOR "H.RED.ZONE"

#define PARACHUTE_MODEL "models/zp_parachute_2/zp_parachute_2.mdl"

#define MAX_PLAYERS 32

#define MarkUserHasParachute(%0) g_bitHasParachute |= (1<<(%0&31))
#define ClearUserHasParachute(%0) g_bitHasParachute &= ~(1<<(%0&31))
#define HasUserParachute(%0) g_bitHasParachute & (1<<(%0&31))

new g_bitHasParachute

new g_iUserParachute[MAX_PLAYERS+1]

new Float:g_flEntityFrame[MAX_PLAYERS+1]

new parachutes_num[33] = 0

new g_iModelIndex
new g_pCvarFallSpeed

new const PARACHUTE_CLASS[] = "parachute"

enum {
deploy,
idle,
detach
}

public plugin_init() {
register_plugin(_PLUGIN, _VERSION, _AUTHOR)

g_pCvarFallSpeed = register_cvar("parachute_fallspeed", "30")

register_forward( FM_CmdStart, "fw_Start" )

RegisterHam(Ham_Spawn, "player", "Ham_CBasePlayer_Spawn_Post", 1)
RegisterHam(Ham_Killed, "player", "Ham_CBasePlayer_Killed_Post", 1)
}

public plugin_precache() {
g_iModelIndex = precache_model(PARACHUTE_MODEL)
}

public client_putinserver(id) {
if( HasUserParachute(id) ) {
new iEnt = g_iUserParachute[id]
if( iEnt ) {
RemoveUserParachute(id, iEnt)
}
ClearUserHasParachute(id)
}
parachutes_num[id] = 0
}

public client_disconnect(id) {
if( HasUserParachute(id) ) {
new iEnt = g_iUserParachute[id]
if( iEnt ) {
RemoveUserParachute(id, iEnt)
}
ClearUserHasParachute(id)
}
parachutes_num[id] = 0
}

public Ham_CBasePlayer_Killed_Post( id ) {
if( HasUserParachute(id) ) {
new iEnt = g_iUserParachute[id]
if( iEnt ) {
RemoveUserParachute(id, iEnt)
}
ClearUserHasParachute(id)
}
}

public Ham_CBasePlayer_Spawn_Post(id) {
if( is_user_alive(id) ) {
if( HasUserParachute(id) ) {
new iEnt = g_iUserParachute[id]
if( iEnt ) {
RemoveUserParachute(id, iEnt)
}
}
MarkUserHasParachute(id)
}
}

RemoveUserParachute(id, iEnt) {
engfunc(EngFunc_RemoveEntity, iEnt)
g_iUserParachute[id] = 0
}

CreateParachute(id) {
static iszInfoTarget
if( !iszInfoTarget ) {
iszInfoTarget = engfunc(EngFunc_AllocString, "info_target")
}

new iEnt = engfunc(EngFunc_CreateNamedEntity, iszInfoTarget)
if( iEnt > 0) {
static iszClass = 0
if( !iszClass ) {
iszClass = engfunc(EngFunc_AllocString, PARACHUTE_CLASS)
}
set_pev_string(iEnt, pev_classname, iszClass)
set_pev(iEnt, pev_aiment, id)
set_pev(iEnt, pev_owner, id)
set_pev(iEnt, pev_movetype, MOVETYPE_FOLLOW)

static iszModel = 0
if( !iszModel ) {
iszModel = engfunc(EngFunc_AllocString, PARACHUTE_MODEL)
}
set_pev_string(iEnt, pev_model, iszModel)
set_pev(iEnt, pev_modelindex, g_iModelIndex)

set_pev(iEnt, pev_sequence, deploy)
set_pev(iEnt, pev_gaitsequence, 1)
set_pev(iEnt, pev_frame, 0.0)
g_flEntityFrame[id] = 0.0
g_iUserParachute[id] = iEnt
MarkUserHasParachute(id)
new Float:fVecOrigin[3]
pev(id, pev_origin, fVecOrigin)

return iEnt
}
return 0
}

public fw_Start(id) {
if( ~HasUserParachute(id) || !is_user_alive(id) ) {
return
}

if (zp_get_user_nemesis(id) && !parachutes_num[id])
return;

if (zp_get_user_zombie(id) && !parachutes_num[id])
return;

new Float:flFrame
new iEnt = g_iUserParachute[id]

if(iEnt > 0 && pev(id, pev_flags) & FL_ONGROUND) {

if( pev(iEnt, pev_sequence) != detach ) {
set_pev(iEnt, pev_sequence, 2)
set_pev(iEnt, pev_gaitsequence, 1)
set_pev(iEnt, pev_frame, 0.0)
g_flEntityFrame[id] = 0.0
set_pev(iEnt, pev_animtime, 0.0)
set_pev(iEnt, pev_framerate, 0.0)
return
}

pev(iEnt, pev_frame, flFrame)
if( flFrame > 252.0 ) {
RemoveUserParachute(id, iEnt)
return
}

flFrame += 2.0

g_flEntityFrame[id] = flFrame
set_pev(iEnt, pev_frame, flFrame)

return
}

if( pev(id, pev_button) & IN_USE ) {
new Float:fVecVelocity[3], Float:fVelocity_z
pev(id, pev_velocity, fVecVelocity)
fVelocity_z = fVecVelocity[2]

if( fVelocity_z < 0.0 ) {
if(iEnt <= 0) {
iEnt = CreateParachute(id)
}

fVelocity_z = floatmin(fVelocity_z + 15.0, -get_pcvar_float(g_pCvarFallSpeed))
fVecVelocity[2] = fVelocity_z
set_pev(id, pev_velocity, fVecVelocity)

if( pev(iEnt, pev_sequence) == deploy ) {
flFrame = g_flEntityFrame[id]++

if( flFrame > 100.0 ) {
set_pev(iEnt, pev_animtime, 0.0)
set_pev(iEnt, pev_framerate, 0.4)
set_pev(iEnt, pev_sequence, 1)
set_pev(iEnt, pev_gaitsequence, 1)
set_pev(iEnt, pev_frame, 0.0)
g_flEntityFrame[id] = 0.0
}
else {
set_pev(iEnt, pev_frame, flFrame)
}
}
}
else if(iEnt > 0) {
RemoveUserParachute(id, iEnt)
}
}
else if( iEnt > 0 && pev(id, pev_oldbuttons) & IN_USE ) {
RemoveUserParachute(id, iEnt)
}
}


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя $@NyA
сообщение 29.7.2019, 22:57
Сообщение #2


Иконка группы

Стаж: 18 лет

Сообщений: 987
Благодарностей: 529
Полезность: 1050

Решено:
Добавил так и всё выйшло
Код:
public zp_user_infected_post( id, infector )
{
if( HasUserParachute(id) ) {
new iEnt = g_iUserParachute[id]
if( iEnt ) {
RemoveUserParachute(id, iEnt)
}
ClearUserHasParachute(id)
}
}


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 2.8.2019, 23:30
Сообщение #3


Иконка группы

Стаж: 18 лет

Сообщений: 987
Благодарностей: 529
Полезность: 1050

Не решено:

Опять нашол ещё один Баг. cbf1b2bfde1a.gif
После превращения Антидотом ( Противоядием ) из Зомби в Человека - Парашют полностью отключаеться.
И вроде что-то помню,где-то уже слышал об этом,что было в какой-то версии исправлено - но не нашел.
У Вас эсть варианты?

Отредактировал: $@NyA, - 2.8.2019, 23:57


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 11.8.2019, 21:28
Сообщение #4


Иконка группы

Стаж: 18 лет

Сообщений: 987
Благодарностей: 529
Полезность: 1050

Эсли что, вот Решение ( Спасибо Артист 666 )
Код:
public zp_user_humanized_post(id, survivor) Ham_CBasePlayer_Spawn_Post(id)
public zp_user_infected_post(id, infector, nemesis) Ham_CBasePlayer_Killed_Post( id )


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: