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.
|

Pobranie obszaru i koordw gracza.
#1
Napisano 11.10.2010 19:55
Do DiabloMod'a.
#2
Napisano 11.10.2010 21:52
//id=gracz zadający obrażenia new const Float:fDistance = 300.0; new Float:fOrigin[3]; //położenie skąd szukasz //np. //pev(id, pev_origin, fOrigin) new ent = find_ent_in_sphere(-1,fOrigin,fDistance); while(ent){ if(is_user_alive(ent) && id != ent){ //zrób damage`a //najlepiej ExecuteHam(Ham_TakeDamage, ...) } ent = find_ent_in_sphere(ent, fOrigin,fDistance); }
#3
Napisano 12.10.2010 13:54
Ofc. Wywołanie jest w PreThinku i model sprite jest w precache.
public funkcjaxx(id)
{
new const Float:fDistance = 300.0;
new Float:fOrigin[3];
new entOrigin[3];
new Float:obrazenia = 80.0+player_intelligence[id]/2
pev(id, pev_origin, fOrigin)
new ent = find_ent_in_sphere(-1,fOrigin,fDistance)
while(ent){
if(is_user_alive(ent) && id != ent){
ExecuteHam(Ham_TakeDamage, ent, 0, id, obrazenia, 1);
pev(ent, pev_origin, entOrigin)
message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( 0 );
write_coord( entOrigin[0] );
write_coord( entOrigin[1] );
write_coord( entOrigin[2] + 400 );
write_coord( entOrigin[0] );
write_coord( entOrigin[1] );
write_coord( entOrigin[2] );
write_short( light );
write_byte( 1 ); // startframe
write_byte( 5 ); // framerate
write_byte( 20 ); // life
write_byte( 30 ); // width
write_byte( 255 ); // noise
write_byte( 255 ); // r, g, b
write_byte( 255 ); // r, g, b
write_byte( 255 ); // r, g, b
write_byte( 200 ); // brightness
write_byte( 200 ); // speed
message_end();
emit_sound( 0 ,CHAN_ITEM, thunder_sound, 1.0, ATTN_NORM, 0, PITCH_NORM );
}
ent = find_ent_in_sphere(ent, fOrigin,fDistance);
}
}
#4
Napisano 12.10.2010 14:55
#5
Napisano 12.10.2010 15:05
#6
Napisano 12.10.2010 16:10
możesz puścić taska w connect a zatrzymać w disconnect
albo puścić w spawn i zatrzymać przy śmierci
zawsze możesz też puścić w plugin init i nie zatrzymywać wcale (słabo

#7
Napisano 12.10.2010 22:29
1. Jest dźwięk.
2. Nie widać efektu na przeciwniku.
3. Zabiera całe hp, a nie 80 hp.
Może ktoś pomóc?
Dodano 14 październik 2010 - 00:37:
Odświeżam!
Błędy te co wyżej i jak dodać do tego, aby można było użyć co 10 sekund?
public funkcjaxx(id)
{
new const Float:fDistance = 300.0;
new Float:fOrigin[3];
new entOrigin[3];
new Float:obrazenia = 80.0+player_intelligence[id]/2
pev(id, pev_origin, fOrigin)
new ent = find_ent_in_sphere(-1,fOrigin,fDistance)
while(ent){
if(is_user_alive(ent) && id != ent){
ExecuteHam(Ham_TakeDamage, ent, 0, id, obrazenia, 1);
pev(ent, pev_origin, entOrigin)
message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( 0 );
write_coord( entOrigin[0] );
write_coord( entOrigin[1] );
write_coord( entOrigin[2] + 400 );
write_coord( entOrigin[0] );
write_coord( entOrigin[1] );
write_coord( entOrigin[2] );
write_short( light );
write_byte( 1 ); // startframe
write_byte( 5 ); // framerate
write_byte( 20 ); // life
write_byte( 30 ); // width
write_byte( 255 ); // noise
write_byte( 255 ); // r, g, b
write_byte( 255 ); // r, g, b
write_byte( 255 ); // r, g, b
write_byte( 200 ); // brightness
write_byte( 200 ); // speed
message_end();
emit_sound( 0 ,CHAN_ITEM, thunder_sound, 1.0, ATTN_NORM, 0, PITCH_NORM );
}
ent = find_ent_in_sphere(ent, fOrigin,fDistance);
}
}
#8
Napisano 14.10.2010 07:30
#9
Napisano 14.10.2010 12:27
public funkcjaxx(id)
{
new const Float:fDistance = 300.0;
new Float:fOrigin[3];
new entOrigin[3];
new Float:obrazenia = 80.0+player_intelligence[id]/2
pev(id, pev_origin, fOrigin)
new ent = find_ent_in_sphere(-1,fOrigin,fDistance)
while(ent){
if(is_user_alive(ent) && id != ent){
ExecuteHam(Ham_TakeDamage, ent, 0, id, obrazenia, 1);
pev(ent, pev_origin, entOrigin)
message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
write_byte( 0 );
write_coord( entOrigin[0] );
write_coord( entOrigin[1] );
write_coord( entOrigin[2] + 400 );
write_coord( entOrigin[0] );
write_coord( entOrigin[1] );
write_coord( entOrigin[2] );
write_short( light );
write_byte( 1 ); // startframe
write_byte( 5 ); // framerate
write_byte( 20 ); // life
write_byte( 30 ); // width
write_byte( 255 ); // noise
write_byte( 255 ); // r, g, b
write_byte( 255 ); // r, g, b
write_byte( 255 ); // r, g, b
write_byte( 200 ); // brightness
write_byte( 200 ); // speed
message_end();
emit_sound( 0 ,CHAN_ITEM, thunder_sound, 1.0, ATTN_NORM, 0, PITCH_NORM );
}
ent = find_ent_in_sphere(ent, fOrigin,fDistance);
}
}
public uzyj_mocy(id)
{
new button2 = get_user_button(id)
if (button2 & IN_USE && on_knife[id] && button[id]==0 && (player_class[id]==Lilith)){
button[id] = 1;
funkcjaxx(id)
}
}
client_connect:
set_task(0.1, "uzyj_mocy",id+TASK_MOC,_,_,"b")
client_disconnect:
remove_task(TASK_MOC+id)
Na górze:
#define TASK_MOC 666
Teraz będzie działać?
Użytkownik zwiru24 edytował ten post 14.10.2010 12:28
#10
Napisano 14.10.2010 13:30
#11
Napisano 14.10.2010 15:16
public uzyj_mocy(id)
{
new button2 = get_user_button(id)
if (button2 & IN_USE && on_knife[id] && button[id]==0 && (player_class[id]==Lilith)){
button[id] = 1;
funkcjaxx(id)
}
}
Jak ktoś na nożu wciśnie E i funkcja zadziała, pokaże się efekt, dźwięk i zabierze obrażenia, to żeby móc znów użyć (Nóż+E) musi odczekać 10 sekund.
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych