Как реализовать взаимодействие entity при наведении и нажатии на E

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
28
Реакции
17
Ошибка
Нет
ОС
Linux
Amx Mod X
AMX Mod X 1.10.0.5406 (http://www.amxmodx.org)
Authors:
David "BAILOPAN" Anderson, Pavol "PM OnoTo" Marko
Felix "SniperBeamer" Geyer, Jonny "Got His Gun" Bergstrom
Lukasz "SidLuke" Wlasinski, Christian "Basic-Master" Hammacher
Borja "faluco" Ferrer, Scott "DS" Ehlert
Compiled: Jul 31 2020 14:34:47
Built from: https://github.com/alliedmodders/amxmodx/commit/1027df0
Build ID: 5406:1027df0
Core mode: JIT+ASM32
Билд
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.7.0.698-dev
Build date: 10:14:22 Aug 19 2020 (2321)
Build from: https://github.com/dreamstalker/rehlds/commit/376bc15
ReGamedll
ReGameDLL version: 5.18.0.474-dev
Build date: 11:07:34 Jul 16 2020
Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/efb06a7
Версия Metamod
Metamod-r v1.3.0.128, API (5:13)
Metamod-r build: 17:47:54 Aug 24 2018
Metamod-r from: https://github.com/theAsmodai/metamod-r/commit/0cf2f70
Список метамодулей
[ 1] VoiceTranscoder        RUN   -    VoiceTranscoder.so         v2017RC5         ini  ANY   ANY  
[ 2] Reunion RUN - reunion_mm_i386.so v0.1.0.92c ini Start Never
[ 3] ReAuthCheck RUN - reauthcheck_mm_i386.so v0.1.6 ini Start Never
[ 4] Rechecker RUN - rechecker_mm_i386.so v2.5 ini Chlvl ANY
[ 5] AMX Mod X RUN - amxmodx_mm_i386.so v1.10.0.5406 ini Start ANY
[ 6] ReSemiclip RUN - resemiclip_mm_i386.so v2.3.9 ini Chlvl ANY
[ 7] Placeholders disabler RUN - plfix_mm_i386.so v0.0.3 ini Start Never
[ 8] MySQL RUN - mysql_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[ 9] SQLite RUN - sqlite_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[10] Fun RUN - fun_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[11] Engine RUN - engine_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[12] FakeMeta RUN - fakemeta_amxx_i386.so v1.10.0.5406 pl5 ANY ANY

[13] GeoIP RUN - geoip_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[14] CStrike RUN - cstrike_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[15] CSX RUN - csx_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[16] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.10.0.5406 pl5 ANY ANY
[17] hackdetector RUN - hackdetector_amxx_i386.so v0.15.328.lite pl5 ANY ANY
[18] ReAPI RUN - reapi_amxx_i386.so v5.15.0.197-dev pl5 ANY Never
[19] gRIP RUN - grip_amxx_i386.so v0.1.5 Beta pl5 ANY ANY
Список плагинов
[  1] 0   Admin Loader            3.5         neygomon          unknown                          admin_loade  running  
[ 2] 1 FreshBans 1.4.3b kanagava unknown fresh_bans_ running
[ 3] 2 Aliases checker 1.0.6 kanagava unknown alias_detec running
[ 4] 3 Just Capture the Flag 1.32o Digi jctf_base.a running
[ 5] 4 VIP System 1.0 AJIeKc unknown jctf_vipmen running
[ 6] 5 Shop Natives 1.2 Sugisaki unknown jctf_shop.a running
[ 7] 6 unknown unknown unknown unknown item_regene running
[ 8] 7 Item Invisibilidad 1.0 Sugisaki unknown item_invisi running
[ 9] 8 Unlimited Clip 1.0 MeRcyLeZZ unknown item_balas_ running
[ 10] 9 Item Speed 1.0 shustrik unknown item_speed. debug

[ 11] 10 Item chameleon 1.0 shustrik unknown item_chamel running
[ 12] 11 Shop Menu 1.1.0 AJIeKc unknown ShopMenu.am running
[ 13] 12 [SHOP] Golden Deagle 1.0 Realution unknown sm_golden_d running
[ 14] 13 [SHOP] Golden AK-47 1.0 Realution unknown sm_golden_a running
[ 15] 14 [SHOP] Golden M4A1 1.0 Realution unknown sm_golden_m running
[ 16] 15 [SHOP] Golden AWP 1.0 Realution unknown sm_golden_a running
[ 17] 16 [SHOP] VSK94 1.0 Realution unknown sm_vsk94.am running
[ 18] 17 [SHOP] HK416 1.0 Realution unknown sm_hk416.am running
[ 19] 18 [SHOP] ALL Greandes 1.0 Realution unknown sm_all_gren running
[ 20] 19 [SHOP] Unlimited Clip 1.0 AJIeKc unknown sm_unlimite running
[ 21] 20 OciXCrom's Rank System 3.9 OciXCrom crx_ranksys running

[ 22] 21 Weapon Model + Sound R 1.2 GHW_Chronic unknown GHW_Weapon_ running
[ 23] 22 [182] Cvar On Map 19.12.07 SKAJIbnEJIb unknown cvar_on_map running
[ 24] 23 Admin Commands 1.10.0.540 AMXX Dev Team admincmd.am running
[ 25] 24 Multi-Lingual System 1.10.0.540 AMXX Dev Team multilingua running
[ 26] 25 Menus Front-End 1.5 neugomon unknown menufront_e running
[ 27] 26 Commands Menu 1.10.0.540 AMXX Dev Team cmdmenu.amx running
[ 28] 27 Players Menu 1.7 neugomon unknown players_men running
[ 29] 28 Maps Menu 1.10.0.540 AMXX Dev Team mapsmenu.am running
[ 30] 29 Plugin Menu 1.10.0.540 AMXX Dev Team pluginmenu. running
[ 31] 30 Admin Chat 1.10.0.540 AMXX Dev Team adminchat.a running
[ 32] 31 Admin Votes 1.10.0.540 AMXX Dev Team adminvote.a running

[ 33] 32 Nextmap Chooser 1.10.0.540 AMXX Dev Team mapchooser. stopped
[ 34] 33 Pause Plugins 1.10.0.540 AMXX Dev Team pausecfg.am running
[ 35] 34 Stats Configuration 1.10.0.540 AMXX Dev Team statscfg.am running
[ 36] 35 Map Manager 2.5.61 Mistrick unknown mapmanager. running
[ 37] 36 Lite VoteBan 1.4 neygomon unknown lite_voteba running
[ 38] 37 Advanced Gag 1.9.0 neygomon unknown amx_gag.amx running
[ 39] 38 Damager 0.0.5 steelzzz unknown damager.amx running
[ 40] 39 Killer ScreenFade 0.0.5 Vaqtincha unknown reapi_kille running
[ 41] 40 AES: StatsX 0.5+1 serfreeman1337 unknown aes_statsx_ running
[ 42] 41 Advanced Spam Nick Cha 0.2 Fullserver unknown advanced_sp running
[ 43] 42 Team Balance Control 1.3.9 gyxoBka unknown TeamBalance running

[ 44] 43 Steam Bonus 1.2 Stimul unknown steam_bonus running
[ 45] 44 SF MultiJump 0.2 serfreeman1337 unknown sf_multijum running
[ 46] 45 DemoRecoder 1.1 neygomon unknown amx_demorec running
[ 47] 46 Kill Effect 0.2 neugomon unknown kill_effect running
[ 48] 47 FM ResetScore 0.1 neygomon unknown fm_rs_nosou running
[ 49] 48 Block grande info 1.0 neygomon unknown BlockGrenad running
[ 50] 49 Lite Admin ESP 1.1 neygomon, AcE unknown admin_esp.a running
[ 51] 50 Advert Messages 1.22 neygomon unknown adverts.amx running
[ 52] 51 [DR]Menu 1.2 fifa unknown vip_opener. running
[ 53] 52 Parachute 1.0r Leo_[BH] unknown parachute.a running
[ 54] 53 [ReAPI] AWPoff 1.3 PAffAEJIkA :3 unknown awp_off.amx running

[ 55] 54 MOTD Window 0.1 shustrik unknown motdokno.am running
[ 56] 55 MOTD Window 0.1 shustrik unknown motdpriv.am running
[ 57] 56 Admin_Check 0.1 CepeH9 unknown online.amxx running
[ 58] 57 Time Bonus 1.1 SKOBAR1K unknown time_bonus. running
[ 59] 58 NMode 1.0 KanyCT@ unknown nmode.amxx running
[ 60] 59 [ZP]Card 1.0 kiryxapro unknown card.amxx running
[ 61] 60 unknown unknown unknown unknown transfer.am running
[ 62] 61 Discord Reports 0.2 paffgame unknown discord.amx running
[ 63] 62 VIP za podpisku 0.2 Shustrik unknown freevip.amx running
[ 64] 63 Admin, Vip, Lady model 0.5 AJIeKc unknown Admin_Vip_L running
[ 65] 64 Menu 1.0 AJIeKc unknown menu.amxx running

[ 66] 65 Lite Translit 2.8 neygomon unknown lite_transl running
[ 67] 66 [DR]Menu 1.2 fifa unknown kabinet.amx running
[ 68] 67 Mine 1.0 ill unknown csdm_mine_v running
[ 69] 68 unknown unknown unknown unknown c_gamedesc. running
[ 70] 69 Grab New 2.5 Cs-Str1ke.Clan.S unknown grab_new.am running
70 plugins, 69 running
Автор плагина
Digi
Версия плагина
1.32
Исходный код
public flag_spawn(iFlagTeam)
{
if(g_fFlagBase[iFlagTeam][x] == 0.0 && g_fFlagBase[iFlagTeam][y] == 0.0 && g_fFlagBase[iFlagTeam][z] == 0.0)
{
new iFindSpawn = find_ent_by_class(g_iMaxPlayers, iFlagTeam == TEAM_BLUE ? "info_player_start" : "info_player_deathmatch")

if(iFindSpawn)
{
entity_get_vector(iFindSpawn, EV_VEC_origin, g_fFlagBase[iFlagTeam])

server_print("[CTF] %s flag origin not defined, set on player spawn.", g_szTeamName[iFlagTeam])
log_error(AMX_ERR_NOTFOUND, "[CTF] %s flag origin not defined, set on player spawn.", g_szTeamName[iFlagTeam])
}
else
{
server_print("[CTF] WARNING: player spawn for ^"%s^" team does not exist !", g_szTeamName[iFlagTeam])
log_error(AMX_ERR_NOTFOUND, "[CTF] WARNING: player spawn for ^"%s^" team does not exist !", g_szTeamName[iFlagTeam])
set_fail_state("Player spawn unexistent!")

return PLUGIN_CONTINUE
}
}
else
server_print("[CTF] %s flag and base spawned at: %.1f %.1f %.1f", g_szTeamName[iFlagTeam], g_fFlagBase[iFlagTeam][x], g_fFlagBase[iFlagTeam][y], g_fFlagBase[iFlagTeam][z])

new ent
new Float:fGameTime = get_gametime()

// the FLAG

ent = entity_create(INFO_TARGET)

if(!ent)
return flag_spawn(iFlagTeam)

entity_set_model(ent, FLAG_MODEL)
entity_set_string(ent, EV_SZ_classname, FLAG_CLASSNAME)
entity_set_int(ent, EV_INT_body, 1)
entity_set_int(ent, EV_INT_skin, iFlagTeam == 1 ? 1 : 2)
entity_set_int(ent, EV_INT_sequence, FLAG_ANI_STAND)
entity_set_int(ent, EV_INT_impulse, 12345);
entity_spawn(ent)
entity_set_origin(ent, g_fFlagBase[iFlagTeam])
entity_set_vector(ent, EV_VEC_velocity, FLAG_SPAWN_VELOCITY)
entity_set_vector(ent, EV_VEC_angles, FLAG_SPAWN_ANGLES)
entity_set_edict(ent, EV_ENT_aiment, 0)
//entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS)
//entity_set_int(ent, EV_INT_movetype, MOVETYPE_PUSH)
entity_set_int(ent, EV_INT_movetype, MOVETYPE_FLYMISSILE)
entity_set_int(ent, EV_INT_renderfx, kRenderFxGlowShell)
entity_set_int(ent, EV_INT_solid, SOLID_TRIGGER)
//entity_set_int(ent, EV_INT_solid, SOLID_SLIDEBOX)
//entity_set_int(ent, EV_INT_solid, SOLID_BSP)
engfunc(EngFunc_SetSize, ent, Float:{-1.0, -1.0, -1.0}, Float:{1.0, 1.0, 85.0});
entity_set_float(ent, EV_FL_framerate, 1.0)
entity_set_float(ent, EV_FL_gravity, 2.0)
entity_set_float(ent, EV_FL_nextthink, fGameTime + FLAG_THINK)

if(iFlagTeam == TEAM_RED)
entity_set_vector(ent, EV_VEC_rendercolor, Float:{200.0, 0.0, 0.0})
else
entity_set_vector(ent, EV_VEC_rendercolor, Float:{0.0, 0.0, 200.0})

g_iFlagEntity[iFlagTeam] = ent
g_iFlagHolder[iFlagTeam] = FLAG_HOLD_BASE

// flag BASE

ent = entity_create(INFO_TARGET)

if(!ent)
return flag_spawn(iFlagTeam)

entity_set_string(ent, EV_SZ_classname, BASE_CLASSNAME)
entity_set_model(ent, FLAG_MODEL)
entity_set_int(ent, EV_INT_body, 0)
entity_set_int(ent, EV_INT_sequence, FLAG_ANI_BASE)
entity_spawn(ent)
entity_set_origin(ent, g_fFlagBase[iFlagTeam])
entity_set_vector(ent, EV_VEC_velocity, FLAG_SPAWN_VELOCITY)
entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS)

entity_set_int(ent, EV_INT_renderfx, kRenderFxGlowShell)

entity_set_float(ent, EV_FL_renderamt, 100.0)
entity_set_float(ent, EV_FL_nextthink, fGameTime + BASE_THINK)

if(iFlagTeam == TEAM_RED)
entity_set_vector(ent, EV_VEC_rendercolor, Float:{200.0, 0.0, 0.0})
else
entity_set_vector(ent, EV_VEC_rendercolor, Float:{0.0, 0.0, 200.0})

g_iBaseEntity[iFlagTeam] = ent
return PLUGIN_CONTINUE
}

public fw_TraceLine_Post ( Float:start[3], Float:end[3], noMonsters, id )
{
if(pev(id, pev_button) & IN_USE) {
if ( !is_valid_ent ( id ) || !is_user_alive ( id ) )
return FMRES_IGNORED

new iHitEnt = get_tr ( TR_pHit )

new sClassName[11]//, sentry, base

pev ( iHitEnt, pev_classname, sClassName, charsmax ( sClassName ) )

if(equal(sClassName, FLAG_CLASSNAME)) {
new iFlagTeam = (g_iFlagEntity[TEAM_BLUE] == iHitEnt ? TEAM_BLUE : TEAM_RED)
if(get_user_team(id) == iFlagTeam && get_entity_distance(id, iHitEnt) <= 100) {
new nmenu = menu_create("\r[\yСАЙТ\r] \yМеню сервера", "menu_handler")

menu_additem(nmenu, "text", "1")

menu_setprop(nmenu, MPROP_EXITNAME, "Выход")
menu_display(id, nmenu, 0)
//client_print(id, print_center, "Good, ok")
} else if (get_user_team(id) != iFlagTeam && get_entity_distance(id, iHitEnt) <= 250) {
client_print(id, print_chat, "Это не ваш флаг!")
}
}
}
}
Привет! На моем сервере стоит мод jctf, я хочу сделать чтобы при наведении на флаг и нажатии на E открывалась меню и при этом можно было бы проходить сквозь флаг. По комментариям видно как менялись EV_INT_movetype и EV_INT_solid. При EV_INT_solid, SOLID_BSP сервер падал с ошибкой "FATAL ERROR (shutting down): SV_HullForEntity: SOLID_BSP without MOVETYPE_PUSH", поставил EV_INT_movetype, MOVETYPE_PUSH и пропал сам флаг. Подскажите начинающему скриптеру как можно это грамотно реализовать, буду очень благодарен
 
В этой теме было размещено решение! Перейти к решению.

Вложения

Сообщения
1,661
Реакции
1,486
Помог
24 раз(а)
Сообщения
28
Реакции
17
fl0wer, при SOLID_TRIGGER я прохожу сквозь, да все ок, но я не могу отловить куда наведен прицел
 
Сообщения
1,661
Реакции
1,486
Помог
24 раз(а)
Тогда groupinfo, либо солидность менять при трейсе.
 
Сообщения
28
Реакции
17
Спасибо!
Добавил в спавн флага set_pev(ent, pev_groupinfo, 1) и solid поставил на SOLID_BBOX

C++:
public flag_spawn(iFlagTeam)
{
    if(g_fFlagBase[iFlagTeam][x] == 0.0 && g_fFlagBase[iFlagTeam][y] == 0.0 && g_fFlagBase[iFlagTeam][z] == 0.0)
    {
        new iFindSpawn = find_ent_by_class(g_iMaxPlayers, iFlagTeam == TEAM_BLUE ? "info_player_start" : "info_player_deathmatch")

        if(iFindSpawn)
        {
            entity_get_vector(iFindSpawn, EV_VEC_origin, g_fFlagBase[iFlagTeam])
            
            server_print("[CTF] %s flag origin not defined, set on player spawn.", g_szTeamName[iFlagTeam])
            log_error(AMX_ERR_NOTFOUND, "[CTF] %s flag origin not defined, set on player spawn.", g_szTeamName[iFlagTeam])
        }
        else
        {
            server_print("[CTF] WARNING: player spawn for ^"%s^" team does not exist !", g_szTeamName[iFlagTeam])
            log_error(AMX_ERR_NOTFOUND, "[CTF] WARNING: player spawn for ^"%s^" team does not exist !", g_szTeamName[iFlagTeam])
            set_fail_state("Player spawn unexistent!")
            
            return PLUGIN_CONTINUE
        }
    }
    else
        server_print("[CTF] %s flag and base spawned at: %.1f %.1f %.1f", g_szTeamName[iFlagTeam], g_fFlagBase[iFlagTeam][x], g_fFlagBase[iFlagTeam][y], g_fFlagBase[iFlagTeam][z])
    
    new ent
    new Float:fGameTime = get_gametime()
    
    // the FLAG
    
    ent = entity_create(INFO_TARGET)
    
    if(!ent)
        return flag_spawn(iFlagTeam)
    
    entity_set_model(ent, FLAG_MODEL)
    entity_set_string(ent, EV_SZ_classname, FLAG_CLASSNAME)
    entity_set_int(ent, EV_INT_body, 1)
    entity_set_int(ent, EV_INT_skin, iFlagTeam == 1 ? 1 : 2)
    entity_set_int(ent, EV_INT_sequence, FLAG_ANI_STAND)
    entity_set_int(ent, EV_INT_impulse, 12345);
    entity_spawn(ent)
    entity_set_origin(ent, g_fFlagBase[iFlagTeam])
    entity_set_vector(ent, EV_VEC_velocity, FLAG_SPAWN_VELOCITY)
    entity_set_vector(ent, EV_VEC_angles, FLAG_SPAWN_ANGLES)
    entity_set_edict(ent, EV_ENT_aiment, 0)
    entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS)
    //entity_set_int(ent, EV_INT_movetype, MOVETYPE_PUSH)
    //entity_set_int(ent, EV_INT_movetype, MOVETYPE_BOUNCEMISSILE)
    entity_set_int(ent, EV_INT_renderfx, kRenderFxGlowShell)
    //entity_set_int(ent, EV_INT_solid, SOLID_TRIGGER)
    entity_set_int(ent, EV_INT_solid, SOLID_BBOX)
    //entity_set_int(ent, EV_INT_solid, SOLID_SLIDEBOX)
    //entity_set_int(ent, EV_INT_solid, SOLID_BSP)
    engfunc(EngFunc_SetSize, ent, Float:{-1.0, -1.0, -100.0}, Float:{1.0, 1.0, 85.0});
    entity_set_float(ent, EV_FL_framerate, 1.0)
    entity_set_float(ent, EV_FL_gravity, 2.0)
    entity_set_float(ent, EV_FL_nextthink, fGameTime + FLAG_THINK)
    set_pev(ent, pev_groupinfo, 1)

    if(iFlagTeam == TEAM_RED)
        entity_set_vector(ent, EV_VEC_rendercolor, Float:{200.0, 0.0, 0.0})
    else
        entity_set_vector(ent, EV_VEC_rendercolor, Float:{0.0, 0.0, 200.0})
    
    g_iFlagEntity[iFlagTeam] = ent
    g_iFlagHolder[iFlagTeam] = FLAG_HOLD_BASE
    
    // flag BASE
    
    ent = entity_create(INFO_TARGET)
    
    if(!ent)
        return flag_spawn(iFlagTeam)
    
    entity_set_string(ent, EV_SZ_classname, BASE_CLASSNAME)
    entity_set_model(ent, FLAG_MODEL)
    entity_set_int(ent, EV_INT_body, 0)
    entity_set_int(ent, EV_INT_sequence, FLAG_ANI_BASE)
    entity_spawn(ent)
    entity_set_origin(ent, g_fFlagBase[iFlagTeam])
    entity_set_vector(ent, EV_VEC_velocity, FLAG_SPAWN_VELOCITY)
    entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS)
    
    entity_set_int(ent, EV_INT_renderfx, kRenderFxGlowShell)

    entity_set_float(ent, EV_FL_renderamt, 100.0)
    entity_set_float(ent, EV_FL_nextthink, fGameTime + BASE_THINK)

    if(iFlagTeam == TEAM_RED)
        entity_set_vector(ent, EV_VEC_rendercolor, Float:{200.0, 0.0, 0.0})
    else
        entity_set_vector(ent, EV_VEC_rendercolor, Float:{0.0, 0.0, 200.0})
    
    g_iBaseEntity[iFlagTeam] = ent
    return PLUGIN_CONTINUE
}
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу