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

Rozbłysjk granatu w Zombie Plague - Jak zrobiono


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

#1 zielu001

    Zaawansowany

  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:90
  • Lokalizacja:Zator
Offline

Napisano 23.05.2010 16:29

Witam, potrzebuję wiedzieć jak zrobiono rozbłysk granatu zapalającego, i pobieranie graczy którzy znajdują się w promieniu.

Kod z zombieplague:

// Fire Grenade Explosion
fire_explode(ent)
{
	// Get origin
	static Float:originF[3]
	pev(ent, pev_origin, originF)
	
	// Make the explosion
	create_blast2(originF)
	
	// Fire nade explode sound
	static sound[64]
	ArrayGetString(grenade_fire, random_num(0, ArraySize(grenade_fire) - 1), sound, charsmax(sound))
	emit_sound(ent, CHAN_WEAPON, sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
	
	// Collisions
	static victim
	victim = -1
	
	while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, NADE_EXPLOSION_RADIUS)) != 0)
	{
		// Only effect alive zombies
		if (!is_user_valid_alive(victim) || !g_zombie[victim] || g_nodamage[victim])
			continue;
		
		// Heat icon?
		if (get_pcvar_num(cvar_hudicons))
		{
			message_begin(MSG_ONE_UNRELIABLE, g_msgDamage, _, victim)
			write_byte(0) // damage save
			write_byte(0) // damage take
			write_long(DMG_BURN) // damage type
			write_coord(0) // x
			write_coord(0) // y
			write_coord(0) // z
			message_end()
		}
		
		if (g_nemesis[victim]) // fire duration (nemesis is fire resistant)
			g_burning_duration[victim] += get_pcvar_num(cvar_fireduration)
		else
			g_burning_duration[victim] += get_pcvar_num(cvar_fireduration) * 5
		
		// Set burning task on victim if not present
		if (!task_exists(victim+TASK_BURN))
			set_task(0.2, "burning_flame", victim+TASK_BURN, _, _, "b")
	}
	
	// Get rid of the grenade
	engfunc(EngFunc_RemoveEntity, ent)
}

  • +
  • -
  • 0

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 984
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 23.05.2010 18:00


static Float:originF[3]
pev(ent, pev_origin, originF)

// Make the explosion
create_blast2(originF)

funkcja create_blast2 (jest w zm)

do pobierania odległości między graczami (lub obiektami )służy get_entity_distance(id,id2)
załóżmy że szukamy graczy któży są w odległości 1200 unitów

new tablica[32]
new ile = 0;
for(new i = 1;i<33;i++){
if(is_user_alive(i) && i != id && get_user_team(i) != get_user_team(id)){
if(get_entity_distance(id,i) < 1200){
tablica[ile] = i;
ile++;
}
}
}

  • +
  • -
  • 0

#3 zielu001

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:90
  • Lokalizacja:Zator
Offline

Napisano 23.05.2010 18:13

Tak, ale ta funkcja którą podaleś jest na sprawdzanie odleglosci graczy(for) od gracza(id), a mi chodzi o pobieranie graczy którzy są w promieniu tego połysku ( funkcja create_blast2)
  • +
  • -
  • 0

#4 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 984
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 23.05.2010 18:18

no to masz

static victim
victim = -1
while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, asdasd)) != 0){
}

w victim jest id gracza
za aasdasd wstawiasz liczbę rzeczywistą
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych