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.
|
Guest Message by DevFuse
Smoke i byt.
Temat rozp.
GoldeN
, 26.11.2010 19:35
11 odpowiedzi w tym temacie
#1
Napisano 26.11.2010 19:35
Witam. Jak mogę przechwycić rzucenie granatem (smoke) i jak on leży to na nim stworzyć niewidzialny byt (coś tak totem) i żeby on w X obszarze cośdawał?
#2
Napisano 26.11.2010 21:00
szukasz smoke'a
Sprawdzasz czy leży na ziemi, jeśli tak to pobierasz koordynaty a następnie sprawdzasz czy ktoś znajduje się w obszarze jego i dalej lecisz ze swoją funkcją.
new ent = find_ent_by_owner(-1, "weapon_smokegrenade", id, 1);
Sprawdzasz czy leży na ziemi, jeśli tak to pobierasz koordynaty a następnie sprawdzasz czy ktoś znajduje się w obszarze jego i dalej lecisz ze swoją funkcją.
#3
Napisano 26.11.2010 21:16
Sprawdzenie czy jest na ziemi to za pomocą tego:
?
Kompiluje się wiec chyba to to. Teraz dodałem do tego leczenie. Jak mam zrobić, aby po X sekundach wszystkie efekty się usuwały? I żeby leczenie było co X sekund?
if(ent & FL_ONGROUND)
?
Kompiluje się wiec chyba to to. Teraz dodałem do tego leczenie. Jak mam zrobić, aby po X sekundach wszystkie efekty się usuwały? I żeby leczenie było co X sekund?
Użytkownik GoldeNx3 edytował ten post 26.11.2010 21:56
#5
Napisano 26.11.2010 22:27
Dobra. Jeszcze jak mam wywołać tą całą funkcję? W którym momencie?
Jak do tego dodać leczenie co 2 sekundy i żeby to trwało 10 sekund i wszystkie efekty się usuwały?
public function_smoke_gren(id)
{
new ent = find_ent_by_owner(-1, "weapon_smokegrenade", id, 1);
new koordy[3];
new gracz[3];
get_user_origin(id, gracz)
if( pev( ent, pev_flags ) & FL_ONGROUND )
{
get_user_origin(ent, koordy)
set_rendering(ent, kRenderFxGlowShell, 255,0,0, kRenderNormal, 255)
message_begin( MSG_BROADCAST, SVC_TEMPENTITY, koordy );
write_byte( TE_BEAMCYLINDER );
write_coord( koordy[0] );
write_coord( koordy[1] );
write_coord( koordy[2] );
write_coord( koordy[0] );
write_coord( koordy[1] + 300 );
write_coord( koordy[2] + 300 );
write_short( sprite_white );
write_byte( 1 ); // startframe
write_byte( 2 ); // framerate
write_byte( 10 ); // life
write_byte( 50 ); // width
write_byte( 255 ); // noise
write_byte( 255 ); // r, g, b
write_byte( 0 ); // r, g, b
write_byte( 0 ); // r, g, b
write_byte( 128 ); // brightness
write_byte( 5 ); // speed
message_end();
}
return PLUGIN_CONTINUE;
}
Jak do tego dodać leczenie co 2 sekundy i żeby to trwało 10 sekund i wszystkie efekty się usuwały?
Użytkownik GoldeNx3 edytował ten post 26.11.2010 22:36
#6
Napisano 26.11.2010 22:36
Ustawiasz taska, żeby się wykonywał co jakiś czas gdy byt granatu będzie na ziemi, np. w nieskończoność aż byt nie zostanie usunięty i wtedy robisz remove_task.
#7
Napisano 26.11.2010 22:40
No tak, ale jak wywołam taska w funkcji w/w to jak mam wszystko pobrać i jak mam usunąć byt, skoro ta nast. funkcja nie bd wiedziała co to jest "ent"?
#8
Napisano 26.11.2010 22:45
To przepisujesz argument.
new iArg[ 1 ];
iArg[ 0 ] = ent;
set_task( 1.0, "func", id + X, iArg, sizeof( iArg ) - 1, "b" );
#9
Napisano 26.11.2010 22:48
public function_smoke_gren(id)
{
new ent = find_ent_by_owner(-1, "weapon_smokegrenade", id, 1);
new koordy[3];
new gracz[3];
new iArg[ 1 ];
iArg[ 0 ] = ent;
get_user_origin(id, gracz)
if( pev( ent, pev_flags ) & FL_ONGROUND )
{
get_user_origin(ent, koordy)
set_rendering(ent, kRenderFxGlowShell, 255,0,0, kRenderNormal, 255)
set_task( 1.0, "func", id + 333, iArg, sizeof( iArg ) - 1, "b" );
}
return PLUGIN_CONTINUE;
}
Takie cuś? ; /
#10
Napisano 26.11.2010 22:52
Tak, a w:
public func( id, iArg[ ] ) {
id =- 333;
new ent = iArg[ 0 ];
}
#11
Napisano 26.11.2010 23:36
ehh ortega nie lepiej przekazac ent zamiast id i usunac ent bo o to chodzi wiec id w zasadzie jest zbedna a jak jest juz potrzebne to lepiej wpisac wczesniej pev_owner i odczytac w funkcji konczacej efekt bez kombinowania z taskami + mozna uzyc innych pev_* ktore sa znane z tego ze nie robia nic waznego i mozna ich sobie uzywac
Manual ponad wszystko, konsola ponad manual :&
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
#12
Napisano 26.11.2010 23:39
public func( id, iArg[ ] ) {
id =- 333;
new ent = iArg[ 0 ];
}
I w tym mam usunąć byt? Czy w tym mam wywołać leczenie?
Dodano 27 listopad 2010 - 17:14:
Pomoże ktoś?
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych