Cześć, mam ID bytu "func_button", jak teraz dowiedzieć się jakie "wywołuje" ( doprowadza do zmiany pozycji etc. jak na Deathrun ) byty. Czyli załóżmy jaką pułapkę uruchamia func_button o id 12 ? ( potrzebuje metody wydobycia id bytu pułapki lub kilku bytów pułapki )
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
[ROZWIĄZANE] Byty, które wywołuje ten func_button
#1
Napisano 28.04.2013 10:13
#2
Napisano 28.04.2013 12:49
Specjalnie trochę poczytałem na forach mapperskich, lecz tam coś jest mowa o ustawieniu targetu dla bytu, więc może ze stałą pev_target? Nie wiem czy to dobra odpowiedź, to moja dedukcja Nie mam teraz jak to sprawdzić zbytnio, jak znajdę czas to coś popatrzę.
DarkGL to mój autorytet.
skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować
#3
Napisano 28.04.2013 13:10
new szTarget[ 64 ]; pev( iButton, pev_target, szTarget, 63 ); new iDoor = -1; while( ( iDoor = fm_find_ent_by_target( iDoor, szTarget ) ) > 0 ) { // do sth.. }
#4
Napisano 28.04.2013 14:05
Hmm.. moim celem jest aby osoba stojąca przy przycisku na dr widziała pokolorowaną pułapkę, to kod, ale coś nie działa
Efekt to przycisk pokolorowany na czarno, dziwne
#include <amxmodx>#include <fakemeta>#include <engine>#define PLUGIN "New Plug-In"#define VERSION "1.0"#define AUTHOR "author"public plugin_init() {register_plugin(PLUGIN, VERSION, AUTHOR)register_forward( FM_AddToFullPack, "fw_Fullpack", 1 );}public fw_Fullpack(es_handle, e, ENT, HOST, hostflags, player, pSet){if(player)return FMRES_IGNORED;if( !is_user_alive( HOST ) )return FMRES_IGNORED;new Float:origin[3];pev( HOST, pev_origin, origin );new ent[2];find_sphere_class( 0, "func_button", 50.0, ent, 1, origin );if( !ent[0] )return FMRES_IGNORED;new szTarget[ 64 ];pev( ent[0], pev_target, szTarget, 63 );new iDoor = -1;while( ( iDoor = find_ent_by_target( iDoor, szTarget ) ) > 0 ){if( iDoor == ENT ){set_es( es_handle, ES_RenderMode, kRenderTransColor );set_es( es_handle, ES_RenderColor, { 55.0, 200.0, 55.0 } );set_es( es_handle, ES_RenderAmt, 100.0 );}}}
#5
Napisano 28.04.2013 14:33
public fw_Fullpack(es_handle, e, ENT, HOST, hostflags, player, pSet) { if(player) return FMRES_IGNORED; if( !is_user_alive( HOST ) ) return FMRES_IGNORED; new Float:origin[3]; pev( HOST, pev_origin, origin ); \\ [1.] new ent[2]; find_sphere_class( 0, "func_button", 50.0, ent, 1, origin );\\ [2.] if( !ent[0] ) return FMRES_IGNORED; new szTarget[ 64 ]; pev( ent[0], pev_target, szTarget, 63 ); \\ [3.] new iDoor = -1; while( ( iDoor = find_ent_by_target( iDoor, szTarget ) ) > 0 ) \\ [4.] { if( iDoor == ENT ) // [5.] { set_es( es_handle, ES_RenderMode, kRenderTransColor ); set_es( es_handle, ES_RenderColor, { 55.0, 200.0, 55.0 } ); set_es( es_handle, ES_RenderAmt, 100.0 ); } } }
- Pobierasz pozycję gracza
- Wyszukujesz przycisk położony najbliżej gracza
- Pobierasz target na który przycisk wskazuje.
- Szukasz wszystkich bytów o określonym targecie
- I podświetlasz te, których ID jest RÓWNE ID bytu z fullpacka, czyli podświetlasz de facto również przycisk (posiada on przecież taki sam target)
Już widzisz gdzie popełniasz błąd?
Użytkownik GwynBleidD edytował ten post 28.04.2013 15:05
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#6
Napisano 29.04.2013 08:44
Już widzisz gdzie popełniasz błąd?
Niestety nie, moje doświadczenie z bytami wygląda kiepsko. Próbowałem co nieco ale nic nie wyszło.
czyli podświetlasz de facto również przycisk (posiada on przecież taki sam target)
Właśnie nie również ( bo wydaje mi się że zrozumiałeś ze podświetla się przycisk i pułapka ). Podświetla się jedynie przycisk
#7
Napisano 29.04.2013 14:13
Hmm, a zróbmy drobnego debuga:
client_print(id, print_chat, "ent: %d, ENT: %d, iDoor: %d, targetname: %s", ent[0], ENT, iDoor, szTarget);
dodaj to po while zaraz, później obserwuj w grze jakie wartości się wyświetlają.
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#8
Napisano 29.04.2013 15:16
#9
Napisano 29.04.2013 16:32
Dzięki wszystkim za pomoc. Tak wygląda mój "działający" kod
#include <amxmodx>#include <fakemeta>#include <engine>#define PLUGIN "New Plug-In"#define VERSION "1.0"#define AUTHOR "author"public plugin_init() {register_plugin(PLUGIN, VERSION, AUTHOR)register_forward( FM_AddToFullPack, "fw_Fullpack", 1 );}public fw_Fullpack(es_handle, e, ENT, HOST, hostflags, player, pSet){if(player)return FMRES_IGNORED;if( !is_user_alive( HOST ) )return FMRES_IGNORED;if( !pev_valid( ENT ) )return FMRES_IGNORED;new Float:origin[3];pev( HOST, pev_origin, origin );new ent[2];find_sphere_class( 0, "func_button", 50.0, ent, 1, origin );if( !ent[0] )return FMRES_IGNORED;new szTarget[ 64 ];pev( ent[0], pev_target, szTarget, 63 );new szTname[64];pev( ENT, pev_targetname, szTname, 63 );if( equal( szTarget, szTname ) ){set_es( es_handle, ES_RenderMode, kRenderTransColor );set_es( es_handle, ES_RenderColor, { 55.0, 200.0, 55.0 } );set_es( es_handle, ES_RenderAmt, 100.0 );}}
#10
Napisano 29.04.2013 21:20
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych