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.
|
Przemieszanie bytu.
#1
Napisano 07.05.2011 20:31
#2
Napisano 07.05.2011 20:34
#3
Napisano 07.05.2011 20:36
#4
Napisano 07.05.2011 20:38
#5
Napisano 08.05.2011 17:18
pev_velocity
pev_angle
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)
#6
Napisano 08.05.2011 20:22
jeśli byt porusza się w powietrzu, naucz go latać!
set_pev(ent, pev_movetype, MOVETYPE_FLY);
dalej przyda Ci się
#include <xs>trzeba obliczyć wektor prędkości
oblicz wektor między A i B, C = B-A
xs_vec_sub(B, A, C);
znormalizuj C
xs_vec_normalize(C, C);
przedłuż go do odpowiedniej szybkości
xs_vec_mul_scalar(C, 200.0, C);
nadaj bytowi prędkość C
set_pev(ent, pev_velocity, C);
byt nie zatrzyma się w punkcie B, więc musisz co jakiś czas sprawdzać odległość bytu od punktu B, najłatwiej użyć wbudowanego mechanizmu "myślenia" - Think
możesz ustawić moment w którym byt wywoła Think (tutaj za 0.1sekundy)
set_pev(ent, pev_nextthink, get_gamettime()+0.1);
złap register_forward(FM_Think), lub register_think() z <engine>
i tam też ustawiaj nextthink
#7
Napisano 08.05.2011 22:59
#8
Napisano 08.05.2011 23:39
uważaj tylko na touch z Triggerami, np. bombsitey
pev(ent, pev_solid) == SOLID_TRIGGER
ściana daje id enta=0, inne byty dają swoje indeksy
sprite to też model, jak chcesz animowany to "env_sprite" przy create_entity(); + pev_spawnflags | SF_SPRITE_STARTON
#9
Napisano 08.05.2011 23:45
#10
Napisano 08.05.2011 23:54
podejrzewam, że aktualnie korzystasz z klasy "info_target" bo jest jedną z prostszych
#11
Napisano 09.05.2011 00:57
Nie ma jakiejś innej metody, by stworzyć efekt no za pomocą TE_BEAMPOINTS?
#12
Napisano 09.05.2011 07:26
new ent = create_entity("env_sprite"); entity_set_model(ent, "sprites/sprite.spr"); entity_set_size(ent, fMin, fMax); entity_set_int(ent, EV_INT_spawnflags, SF_SPRITE_STARTON ); entity_set_float(ent, EV_FL_framerate, 1.0); DispatchSpawn(ent);
poza tym normalnie movetype i velocity
#13
Napisano 09.05.2011 11:35
No dobra, zrobiłem, działa. Ale jak mogę nadać temu efektowi np wiadomość TE_BEAMPOINT? Bo głównie o to mi chodzi..
#14
Napisano 09.05.2011 12:18
#define TE_BEAMPOINTS 0 // Beam effect between two points // write_byte(TE_BEAMPOINTS) // write_coord(startposition.x) // write_coord(startposition.y) // write_coord(startposition.z) // write_coord(endposition.x) // write_coord(endposition.y) // write_coord(endposition.z) // write_short(sprite index) // write_byte(starting frame) // write_byte(frame rate in 0.1's) // write_byte(life in 0.1's) // write_byte(line width in 0.1's) // write_byte(noise amplitude in 0.01's) // write_byte(red) // write_byte(green) // write_byte(blue) // write_byte(brightness) // write_byte(scroll speed in 0.1's)
to tworzy byt tymczasowy, nie trzeba używać create_entity() i nie można tego łączyć z normalnymi bytami
jak chcesz coś w rodzaju pocisku między 2 punktami to fajnie wygląda trail
#define TE_SPRITETRAIL 15 // Line of moving glow sprites with gravity, fadeout, and collisions // write_byte(TE_SPRITETRAIL) // write_coord(startposition.x) // write_coord(startposition.y) // write_coord(startposition.z) // write_coord(endposition.x) // write_coord(endposition.y) // write_coord(endposition.z) // write_short(sprite index) // write_byte(count) // write_byte(life in 0.1's) // write_byte(scale in 0.1's) // write_byte(velocity along vector in 10's) // write_byte(randomness of velocity in 10's)
#15
Napisano 09.05.2011 12:21
#16
Napisano 09.05.2011 12:45
precache_model("sprites/NazwaSpritea.spr")
#17
Napisano 09.05.2011 13:13
public Create_Piorun(id)
{
new StartOrigin[3], EndOrigin[3], FinalOrigin[3], Float:fStartOrigin[3], Float:fEndOrigin[3], Float:fFinalOrigin[3];
get_user_origin(id, StartOrigin);
get_user_origin(id, EndOrigin);
CreatePiorun(StartOrigin, SPR_LIGHTNING, 15, 90, 90, 255, 255, 255)
IVecFVec (StartOrigin, fStartOrigin)
IVecFVec (EndOrigin, fEndOrigin)
IVecFVec (FinalOrigin, fFinalOrigin)
xs_vec_sub(fEndOrigin, fStartOrigin, fFinalOrigin);
xs_vec_normalize(fFinalOrigin, fFinalOrigin);
xs_vec_mul_scalar(fFinalOrigin, 200.0, fFinalOrigin);
//set_pev(ent, pev_velocity, fFinalOrigin);
}
stock CreatePiorun(originss[3], sprite, life, width, noise, rrr, ggg, bbb)
{
message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( 0 );
write_coord( originss[0] );
write_coord( originss[1] );
write_coord( originss[2] + 700 );
write_coord( originss[0] );
write_coord( originss[1] );
write_coord( originss[2] );
write_short( sprite );
write_byte( 0 ); // startframe
write_byte( 5 ); // framerate
write_byte( life ); // life
write_byte( width ); // width
write_byte( noise ); // noise
write_byte( rrr ); // r, g, b
write_byte( ggg ); // r, g, b
write_byte( bbb ); // r, g, b
write_byte( 200 ); // brightness
write_byte( 200 ); // speed
message_end();
}
Efekt się pojawia ale tylko tam gdzie stoję. ; / Na razie bez zatrzymania chce zrobić.
#18
Napisano 09.05.2011 14:08
#19
Napisano 09.05.2011 17:03
#20
Napisano 09.05.2011 17:45
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych