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
Klasa

Jak zmienić "pole rażenia" rakiety i pobrać zadany DMG

klasa

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
9 odpowiedzi w tym temacie

#1 Pytajnik?

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
  • Imię:Kamil
  • Lokalizacja:Rzeszów
Offline

Napisano 01.02.2018 13:44

Witam,

 

 

może mi ktoś wytłumaczyć którą wartość muszę zmienić aby zwiększyć zasięg pola rażenia "rakiety"? (piszę w " ponieważ to nie są rakiety z generatora i mają inną budowę)

public nazwapluginu(id)
{
	// Get origin, angle, and velocity
	new Float:fOrigin[3], Float:fAngle[3], Float:fVelocity[3]
	pev(id, pev_origin, fOrigin)
	pev(id, pev_v_angle, fAngle)
	
	// New ent
	new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
	
	// Not ent
	if (!ent) return PLUGIN_HANDLED
	
	// Set plugin model
	entity_set_model(ent, MODELS[1])
	
	//Set entity name
	entity_set_string(ent, EV_SZ_classname, "nazwapluginu")
	
	// Origin
	entity_set_origin(ent, fOrigin)
	
	// Angles
	entity_set_vector(ent, EV_VEC_angles, fAngle)
	
	// Size
	new Float:MinBox[3] = {-1.0, -1.0, -1.0}
	new Float:MaxBox[3] = {1.0, 1.0, 1.0}
	entity_set_vector(ent, EV_VEC_mins, MinBox)
	entity_set_vector(ent, EV_VEC_maxs, MaxBox)
	
	// Interaction
	entity_set_int(ent, EV_INT_solid, SOLID_SLIDEBOX)
	
	// Movetype
	entity_set_int(ent, EV_INT_movetype, MOVETYPE_FLY)
	
	// Owner
	entity_set_edict(ent, EV_ENT_owner, id)
	
	// Velocity
	VelocityByAim(id, get_pcvar_num(g_plugSpeed), fVelocity)
	entity_set_vector(ent, EV_VEC_velocity, fVelocity)
	
	message_begin( MSG_BROADCAST, SVC_TEMPENTITY ) 
	write_byte(TE_BEAMFOLLOW) 
	write_short(ent) //entity 
	write_short(explode2) //model 
	write_byte(10) //10)//life 
	write_byte(4) //5)//width 
	write_byte(224) //r 
	write_byte(224) //g 
	write_byte(255) //b 
	write_byte(100) //brightness 
	message_end()  
	
	return PLUGIN_CONTINUE;
} 

Obecnie działa to w taki sposób, że DMG zostaje zadany kiedy umiejętność trafi DOKŁADNIE w cel.

 

 

I w jaki sposób mogę pobrać DMG z tego ? Bullet DMG nie pokazuje zadanych obrażeń przez ten plugin.

Jeśli brakuje linijek kodu - przepraszam i proszę dać znać wstawię jak najszybciej, niestety nie wiem jeszcze co za co odpowiada ale wydaje mi się że ten kod jest prawidłowy.

 

Pozdrawiam!


  • +
  • -
  • 0

#2 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 01.02.2018 16:21

Podany kod odpowiada za stworzenie i nadanie ruchu rakiecie.

Samo zdarzenie wybuchu jest wywoływane przez interakcję (dotyk) rakiety z odpowiednim obiektem w jej otoczeniu.

 

Musisz podać kod funkcji odpowiedzialnej za obsługę zdarzenia dotyku rakiety (najczęściej ze słowem "touch" lub "dotyk" w nazwie). Jeżeli masz trudności w zlokalizowaniu owej funkcji, wrzuć na wklejkę kod pluginu i udostępnij w poście link.


Użytkownik _McHappy edytował ten post 01.02.2018 16:23

  • +
  • -
  • 0

#3 Pytajnik?

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
  • Imię:Kamil
  • Lokalizacja:Rzeszów
Offline

Napisano 02.02.2018 12:50

Podany kod odpowiada za stworzenie i nadanie ruchu rakiecie.

Samo zdarzenie wybuchu jest wywoływane przez interakcję (dotyk) rakiety z odpowiednim obiektem w jej otoczeniu.

 

Musisz podać kod funkcji odpowiedzialnej za obsługę zdarzenia dotyku rakiety (najczęściej ze słowem "touch" lub "dotyk" w nazwie). Jeżeli masz trudności w zlokalizowaniu owej funkcji, wrzuć na wklejkę kod pluginu i udostępnij w poście link.

 

 

Dzięki za odpowiedź!
Tak więc znalazłem coś takiego :

public fwd_Touch(ent, victim)
{ 
	if (!pev_valid(ent))
	{
		return
	}
	
	new szClassname[33] 
	entity_get_string(ent, EV_SZ_classname, szClassname, sizeof szClassname) 
	
	if (equal(szClassname, "nazwapluginu"))
	{ 
		new killer = pev(ent, pev_owner);
		
		new szNameOwner[33]
		new szNameVictim[33]
		new szOwnerTeam[33]
		new szVictimTeam[33]
		
		get_user_name(killer, szNameOwner, 32)
		get_user_name(victim, szNameVictim, 32)
		get_user_team(killer, szOwnerTeam, 32)
		get_user_team(victim, szVictimTeam,32)
		
		new iMoney, iFrags, iGain, iGainMoney, iLose, iLoseMoney
		iMoney = cs_get_user_money(killer)
		iFrags = get_user_frags(killer)
		iGain = iFrags + get_pcvar_num(g_KillFrags)
		iGainMoney = iMoney + get_pcvar_num(g_Money)
		iLose = iFrags - get_pcvar_num(g_LoseFrags)
		iLoseMoney = iMoney - get_pcvar_num(g_Money)
		
		// Alive...
		if (is_user_alive(victim) == 1 && get_user_godmode(victim) == 0)
		{
			
			// Get origin and distance
			new Float:VictimOrigin[3]
			pev(victim, pev_origin, VictimOrigin)
			
			//fakedamage him
			fakedamage(victim, "nazwapluginu", 0.0, DMG_PARALYZE)
			
			new Dam = get_pcvar_num(g_Damage)
			
			new health = get_user_health(victim)
			
			if (health - Dam >= 1 && !g_HasShield[victim])
			{
				set_user_health(victim, health - Dam)
			}
			else
			{	
				ExecuteHam(Ham_Killed, victim, killer, 2)//v1.1
				
				if (equal(szOwnerTeam, szVictimTeam))
				{
					set_user_frags(killer, iLose)
					if (iMoney > get_pcvar_num(g_Money))
						cs_set_user_money(killer, iLoseMoney, 1)
					
					else
						cs_set_user_money(killer ,0,1)
				}
				else
				{
					set_user_frags(killer, iGain)
					cs_set_user_money(killer, iGainMoney, 1)
				}
				
				set_hudmessage(0, 0, 0, 0.29, 0.49, 0, 6.0, 3.0)
				show_hudmessage(victim, "%s zabil Cie z ^nnazwapluginu",szNameOwner)
				show_hudmessage(killer, "Zabiles %s z ^nnazwapluginu",szNameVictim)
			}
		}
	}
	explode_nazwa(ent)
}

Co powinienem zrobić ?


  • +
  • -
  • 0

#4 Pytajnik?

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
  • Imię:Kamil
  • Lokalizacja:Rzeszów
Offline

Napisano 02.02.2018 14:11

Nie mogę edytować posta wyżej ale mam jeszcze to:

stock explode_nazwa(const ent_index) 
{
	new Float:iOrigin[3], fOrigin[3]
	entity_get_vector(ent_index, EV_VEC_origin, iOrigin) 
	FVecIVec(iOrigin, fOrigin)
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY, fOrigin) 
	write_byte(TE_EXPLOSION) 
	write_coord(fOrigin[0]) 
	write_coord(fOrigin[1]) 
	write_coord(fOrigin[2]) 
	write_short(explode2) 
	write_byte(30) 
	write_byte(15) 
	write_byte(0) 
	message_end() 
	remove_entity(ent_index)
}

  • +
  • -
  • 0

#5 glut

    Godlike

  • Przyjaciel

Reputacja: 954
Master

  • Postów:2 086
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Namysłów
Offline

Napisano 02.02.2018 14:32

Bodajże ta linia ;)
write_byte(15)

  • +
  • -
  • 0

Nie pomagam za darmo na PW/GG/Steam od tego jest forum

 

TP Game + RR

 

Znak rozpoznawczy :coto:


#6 Pytajnik?

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
  • Imię:Kamil
  • Lokalizacja:Rzeszów
Offline

Napisano 02.02.2018 16:15

Bodajże ta linia ;)

write_byte(15)

 

 

Tą linię już zmieniałem wcześniej, zamiast 30 miałem 300 a zamiast 15 miałem 200 (tak na oko wszystko dawałem - metoda prób i błędów) i nic się nie zmieniało. 

 

Z tego kodu wynika, że w tym miejscu powinno się zmieniać "pole rażenia" ?

 

Ps.

2 sprawa dlaczego BulletDMG nie pokazuje zadanego DMG z tej umiejętności?


  • +
  • -
  • 0

#7 Pytajnik?

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
  • Imię:Kamil
  • Lokalizacja:Rzeszów
Offline

Napisano 03.02.2018 20:09

Ktoś może mi w tym pomóc ?
  • +
  • -
  • 0

#8 AwIlL^^

    Magiczny Gość

  • Użytkownik

Reputacja: 135
Zaawansowany

  • Postów:263
  • Steam:steam
  • Imię:Eryk
  • Lokalizacja:Gdańsk
Offline

Napisano 05.02.2018 11:00

W kodzie nie da się zmienić zasięgu rakiety bo tego nie ma.
Przechwycić obrażeń się nie da bo nie jest wywołane zadawanie obrażeń, jest zmienianie hp lub wywołane zabicie, dodatkowo ExecuteHam nie da się przechwycić używając RegisterHam
Explode_nazwa tylko rysuje wybuch...
  • +
  • -
  • 0

Potrzebujesz porad do amxx?? Pisz na [PW]


#9 Pytajnik?

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
  • Imię:Kamil
  • Lokalizacja:Rzeszów
Offline

Napisano 06.02.2018 21:16

W kodzie nie da się zmienić zasięgu rakiety bo tego nie ma.
Przechwycić obrażeń się nie da bo nie jest wywołane zadawanie obrażeń, jest zmienianie hp lub wywołane zabicie, dodatkowo ExecuteHam nie da się przechwycić używając RegisterHam
Explode_nazwa tylko rysuje wybuch...

 

Więc można powiedzieć że to działa tak jak strzał w Hitboxa ? Dlatego DMG zadany obok modelu nie zadaje obrażeń ?

Czyli czeka mnie przeróbka kodu pod "rakiety"  i jedyne co mogę zostawić to wygląd (rysowanie) tej rakiety tak ?


  • +
  • -
  • 0

#10 AwIlL^^

    Magiczny Gość

  • Użytkownik

Reputacja: 135
Zaawansowany

  • Postów:263
  • Steam:steam
  • Imię:Eryk
  • Lokalizacja:Gdańsk
Offline

Napisano 06.02.2018 22:07

Dokładnie tak się dzieje jak opisałeś,
I jeszcze aby pobierać obrażenia i nimi manipulować w innych pluginach użyj ExecuteHamB(Ham_TakeDamage, id_ofiary, byt_atakujący, id_atakującego, Float:obrażenia, suma_bitowa_typów_obrażeń)
ten float napisałem żebyś wiedział że to ma być liczba rzeczywista, a ta suma bitowa obrażeń to dla wybuchu będzie 1<<24
Byt atakujący to id rakietu, atakujący to id właściciela rakiety
  • +
  • -
  • 1

Potrzebujesz porad do amxx?? Pisz na [PW]






Również z jednym lub większą ilością słów kluczowych: klasa

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

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