Skocz do zawartości

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Pobranie obszaru i koordw gracza.


  • Zamknięty Temat jest zamknięty
10 odpowiedzi w tym temacie

#1 zwiru24

    Początkujący

  • Zbanowany

Reputacja: 2
Nowy

  • Postów:12
  • Lokalizacja:Dąbrowa Górnicza
Offline

Napisano 11.10.2010 19:55

Witam. Jak mogę pobrać obszar dookoła mnie w X promieniu (może być 300) i sprawdzić, czy są w nim wrogowie i jeżeli są, to zadać dmg, ale tak, abym za 10 sekund mógł znów tego użyć i tak w kółko, dziękuję.

Do DiabloMod'a.

#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

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);

}

  • +
  • -
  • 1

#3 zwiru24

    Początkujący

  • Autor tematu
  • Zbanowany

Reputacja: 2
Nowy

  • Postów:12
  • Lokalizacja:Dąbrowa Górnicza
Offline

Napisano 12.10.2010 13:54

Okej, czy taka funkcja będzie działać? Będzie ona zabijać przeciwnika i pokazywać na nim sprite?
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 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 12.10.2010 14:55

prethink to złe miejsce na tego typu operacje, lepiej puść taska 0.5s z flagą "b"
  • +
  • -
  • 1

#5 zwiru24

    Początkujący

  • Autor tematu
  • Zbanowany

Reputacja: 2
Nowy

  • Postów:12
  • Lokalizacja:Dąbrowa Górnicza
Offline

Napisano 12.10.2010 15:05

Gdzie i w jakim miejscu? A to nie będzie zamulać serwera? Przecież będzie się funkcja powtarzać co pół sekundy? W którym miejscu tego taska? Ten task z wywołaniem wciśnięcia klawiasza, tak?

#6 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 12.10.2010 16:10

przecież prethink jest wykonywany tyle razy ile gracz ma FPSów ;D zwykle nie mniej niż 30 razy na sekundę

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 <_< )
  • +
  • -
  • 1

#7 zwiru24

    Początkujący

  • Autor tematu
  • Zbanowany

Reputacja: 2
Nowy

  • Postów:12
  • Lokalizacja:Dąbrowa Górnicza
Offline

Napisano 12.10.2010 22:29

Niestety, to co napisałem na górze źle działa.

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 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 14.10.2010 07:30

pisałem Ci: przenieś to z prethinka do set_task => set_task - funkcje czasowe - Nieoficjalny polski support AMX Mod X
  • +
  • -
  • 1

#9 zwiru24

    Początkujący

  • Autor tematu
  • Zbanowany

Reputacja: 2
Nowy

  • Postów:12
  • Lokalizacja:Dąbrowa Górnicza
Offline

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 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 14.10.2010 13:30

Ty chcesz żeby to automatycznie działało co ileś czy tylko jak ktoś coś naciśnie?
  • +
  • -
  • 0

#11 zwiru24

    Początkujący

  • Autor tematu
  • Zbanowany

Reputacja: 2
Nowy

  • Postów:12
  • Lokalizacja:Dąbrowa Górnicza
Offline

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