Разработчик
Скриптер
Участник
Пользователь
- Сообщения
- 1,700
- Реакции
- 1,512
- Помог
- 26 раз(а)
Можно в Jump)Пресинк :(
Можно в Jump)Пресинк :(
в первом фрейме даfl0wer, FL_ONGROUND?
Мб от фпс зависит. Но у меня все хорошо было для увеличения прыжка/дабл джампа.fl0wer, Оно работает как-то криво-косо. Будто бы с задержкой. Либо я в момент тестирования был не в себе.
Мб. Я ведь всё тестирую в окне, а там каким-то фигом фпс бывает и до 40 падает. В фуллскрин'е стабильно сотка.Мб от фпс зависит
Для этих целей как раз и использовал FL_ONGROUND с RG_CBasePlayer_Jump. Вот и говорю, оно будто бы с задержкой в долюсекунды. С пресинком такого нет.Но у меня все хорошо было для увеличения прыжка/дабл джампа.
Простой базисный вариант. Для его дальнейшего развития подойдет.Имеется ввиду после того,как игрок совершил прыжок с большой высоты или просто упал без прыжка ( как бы необязательно прыгать) и после его касается земли и тут..пошел нужный код.
#include <amxmodx>
#include <fakemeta>
const Float: g_sMinDistFallUnits = 150.0; // Минимальная дистанция для падения
new bool: g_bIsFall[MAX_PLAYERS+1];
public plugin_init()
{
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink");
}
public fw_PlayerPreThink(pPlayer)
{
if(!is_user_alive(pPlayer))
return;
new iFlags;
iFlags = pev(pPlayer, pev_flags);
if(~iFlags & FL_ONGROUND && !g_bIsFall[pPlayer] && get_distance_to_floor(pPlayer) >= g_sMinDistFallUnits)
g_bIsFall[pPlayer] = true;
else if(iFlags & FL_ONGROUND && g_bIsFall[pPlayer])
{
// тут твои действия
client_print_color(pPlayer, print_team_default, "Падение");
g_bIsFall[pPlayer] = false;
}
}
stock Float: get_distance_to_floor(pPlayer)
{
new
Float: fOriginStart[3],
Float: fOriginEnd[3];
pev(pPlayer, pev_origin, fOriginStart);
fOriginEnd = fOriginStart;
fOriginEnd[2] -= 8192.0;
engfunc(EngFunc_TraceLine, fOriginStart, fOriginEnd, IGNORE_MONSTERS, pPlayer, 0);
get_tr2(0, TR_vecEndPos, fOriginEnd);
return get_distance_f(fOriginStart, fOriginEnd);
}
RegisterHam(Ham_Player_PreThink
if((pev(id,pev_button) & ~IN_JUMP & ~IN_DUCK) && ~iFlags & FL_ONGROUND && !g_bIsFall[id] && get_distance_to_floor(id) >= g_sMinDistFallUnits)
public Hook_Player_Fall(id)
{
g_bIsFall[id] = false;
}
Можно и на реапиМожно же заменить на Хам?
RG_CBasePlayer_PreThink
Вы во флудилке находитесь)Только лучше в ТГ, чтобы не флудить тут
Позориться своими очепятками дело такое себе)
#include <amxmodx>
#include <engine>
#include <fun>
#include <fakemeta_util>
#include <hamsandwich>
#include <xs>
#define CLASSNAME_FOOTSTEPS_SNOW "footsteps_snow"
#define FOOTSTEPS_SNOW "models/footsteps_snow.mdl"
#define STEAM "sprites/steam.spr"
new g_steam
new Float:g_iNextStep[33];
public plugin_precache()
{
precache_model(FOOTSTEPS_SNOW);
register_think(CLASSNAME_FOOTSTEPS_SNOW, "Close_Footsteps");
register_forward(FM_PlayerPreThink, "Snow_Sound", 0);
g_steam = precache_model(STEAM);
}
public Snow_Sound(id)
{
if(!is_user_alive(id))return FMRES_IGNORED;
if(g_iNextStep[id] < get_gametime()) {
new iOrigin[3];
new Float:fAngles[3];
get_user_origin(id, iOrigin);
pev(id, pev_angles, fAngles);
Create_Footsteps_Snow(iOrigin, fAngles);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(TE_SPRITE);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2] -= 30);
write_short(g_steam);
write_byte(2);
write_byte(255);
message_end();
g_iNextStep[id] = get_gametime() + 3.0;
}
return FMRES_IGNORED;
}
public Create_Footsteps_Snow(iOrigin[3], const Float:fAngles[3])
{
new iEntity = create_entity("info_target");
if(!pev_valid(iEntity)) return PLUGIN_HANDLED;
new Float:fEntAngles[3], Float:fOrigin[3];
IVecFVec(iOrigin, fOrigin);
set_pev(iEntity, pev_origin, fOrigin);
set_pev(iEntity, pev_classname, CLASSNAME_FOOTSTEPS_SNOW);
set_pev(iEntity, pev_solid, SOLID_NOT);
pev(iEntity, pev_angles, fEntAngles);
fEntAngles[1] = fAngles[1];
set_pev(iEntity, pev_angles, fEntAngles);
engfunc(EngFunc_SetModel, iEntity, FOOTSTEPS_SNOW);
//engfunc(EngFunc_SetSize, iEntity, Float:{ -1.0, -1.0, -1.0 }, Float:{ 1.0, 1.0, 1.0 } );
drop_to_floor(iEntity);
set_pev(iEntity, pev_nextthink, get_gametime() + 3.0);
return PLUGIN_HANDLED;
}