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

Atakujący


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

#1 KariiO

    Super Hero

  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 18.10.2011 12:27

Witam czy istnieje jakaś funkcja żeby oznaczyć ent/gracza jako atakującego/zabijającego ?
Bo jest taki problem że mam dwa pluginy i w jednym atakujący zabija swoją ofiarę z jakieś mocy (piorun, kusza, totemy)[Diablomod] no i są logi że w "drugi" plugin nie umie rozpoznać atakującego po przez użycie funkcji get_user_attacker.
  • +
  • -
  • 0

#2 Kukol

    Zaawansowany

  • Zbanowany

Reputacja: 6
Nowy

  • Postów:113
  • Lokalizacja:Katowice
Offline

Napisano 18.10.2011 12:57

ExecuteHamB(Ham_TakeDamage, victim, ent, attacker, fDamage, damagebits);


Za ent możesz podstawić ID atakującego gracza jeżeli o to Ci chodzi.

#3 KariiO

    Super Hero

  • Autor tematu
  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 19.10.2011 13:48

W diablomodzie wszystko co ma zginąć sprowadza się do tej funkcji :
public UTIL_Kill(attacker,id,weapon[])
{
	if( is_user_alive(id) && is_user_connected(id)){
		if(get_user_team(attacker)!=get_user_team(id))
		set_user_frags(attacker,get_user_frags(attacker) +1);
		
		if(get_user_team(attacker)==get_user_team(id))
		set_user_frags(attacker,get_user_frags(attacker) -1);
		
		if (cs_get_user_money(attacker) + 150 <= 16000)
		cs_set_user_money(attacker,cs_get_user_money(attacker)+150)
		else
		cs_set_user_money(attacker,16000)
		
		cs_set_user_deaths(id, cs_get_user_deaths(id)+1)
		user_kill(id,1)
		
		if(is_user_connected(attacker) && attacker!=id)
		{
			award_kill(attacker,id)
			if(is_user_alive(attacker)) award_item(attacker,0)
		}
		
		message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
		write_byte(attacker)
		write_byte(id)
		write_byte(0)
		write_string(weapon)
		message_end()
		
		message_begin(MSG_ALL,gmsgScoreInfo)
		write_byte(attacker)
		write_short(get_user_frags(attacker))
		write_short(get_user_deaths(attacker))
		write_short(0)
		write_short(get_user_team(attacker))
		message_end()
		
		message_begin(MSG_ALL,gmsgScoreInfo)
		write_byte(id)
		write_short(get_user_frags(id))
		write_short(get_user_deaths(id))
		write_short(0)
		write_short(get_user_team(id))
		message_end()
		
		new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10];
		
		get_user_name(attacker, kname, 31);
		get_user_team(attacker, kteam, 9);
		get_user_authid(attacker, kauthid, 31);
		
		get_user_name(id, vname, 31);
		get_user_team(id, vteam, 9);
		get_user_authid(id, vauthid, 31);
		
		log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"",
		kname, get_user_userid(attacker), kauthid, kteam,
		vname, get_user_userid(id), vauthid, vteam, weapon);
	}
}

Zmieniłem na :
stock UTIL_Kill(killer, victim, damagebits, ent = 0, const szWeapon[] = ""){
		new Float:fHP;
		pev(victim, pev_health, fHP);
		set_pev(victim, pev_health, 1.0);
		
		UTIL_Damage(killer, victim, fHP, damagebits, ent, szWeapon);
}

stock UTIL_Damage(attacker, victim, Float:fDamage, damagebits, ent = 0, const szWeapon[] = ""){
		static info_target = 0;
		if(!info_target)
				info_target = engfunc(EngFunc_AllocString, "info_target");
		
		if(pev_valid(ent))
				ExecuteHamB(Ham_TakeDamage, victim, ent, attacker, fDamage, damagebits);
		else{
				ent = engfunc(EngFunc_CreateNamedEntity, info_target);
				set_pev(ent, pev_classname, szWeapon);
				ExecuteHamB(Ham_TakeDamage, victim, ent, attacker, fDamage, damagebits);
				set_pev(ent, pev_flags, FL_KILLME);
		}
}

Ale w logach nadal :
L 10/19/2011 - 14:11:39: [AMXX] Displaying debug trace (plugin "VIP_3.2.amxx")
L 10/19/2011 - 14:11:39: [AMXX] Run time error 10: native error (native "get_user_attacker")
L 10/19/2011 - 14:11:39: [AMXX]	[0] VIP_3.2.SMA::Damage (line 63)
L 10/19/2011 - 14:14:10: Invalid player id 0
Nie przeszkadzało by mi to gdyby nie fakt że wielkość pliku z logami to niekiedy kilka MB...

Użytkownik KariiO edytował ten post 19.10.2011 13:48

  • +
  • -
  • 0

#4 Jak się nazwać

    Wszechmogący

  • Power User

Reputacja: 169
Profesjonalista

  • Postów:617
  • Imię:a
  • Lokalizacja:a
Offline

Napisano 19.10.2011 14:02

hmm. Może dla bytu (piorunowi czy kuszy) ustawić entity_set_edict(Ent, EV_ENT_owner, id); gdzie id to gracz który tworzy ent. A w pluginie
new attacker = entity_get_edict(ent, EV_ENT_owner);

Użytkownik Jak się nazwać edytował ten post 19.10.2011 14:03

  • +
  • -
  • 0
Pisze na zamówienie statystyki pod nvault. GG: 15600964

#5 KariiO

    Super Hero

  • Autor tematu
  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 19.10.2011 14:33

Tylko tak przy wszystkich (kuszach, totemach) mam, ale nie pomaga.
Ostatecznym wyjściem będzie chyba złączenie pluginów.
  • +
  • -
  • 0

#6 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

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

Napisano 19.10.2011 14:40

daj sma vipa
  • +
  • -
  • 0

#7 KariiO

    Super Hero

  • Autor tematu
  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 21.10.2011 20:03

daj sma vipa


Odświeżam.

Odświeżam.

Załączone pliki


  • +
  • -
  • 0

#8 Stachuu :D ??

    Wszechobecny

  • Użytkownik

Reputacja: 237
Wszechwidzący

  • Postów:476
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Karsznice
Offline

Napisano 21.10.2011 20:07

twój problem sprowadza sie tylko do dodawania hp za zabicie ??

Użytkownik Stachuu ?? edytował ten post 21.10.2011 20:07

  • +
  • -
  • 0

#9 KariiO

    Super Hero

  • Autor tematu
  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 21.10.2011 20:51

bulletdamage też
  • +
  • -
  • 0

#10 Stachuu :D ??

    Wszechobecny

  • Użytkownik

Reputacja: 237
Wszechwidzący

  • Postów:476
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Karsznice
Offline

Napisano 22.10.2011 17:49

co do bulletdamage jeśli nie zamieniłeś eventu zadawania dmg (damage(id)) na hamsandwich ( co sam zrobilem i polecam)
to przy np zręczności i tak pokazuje bledne dane o ilosci zadanego hp ( bo leczy zadane obr )

Jesli masz oparte na hamsandwich dodaj w diablo
ze jeśli ma vpia
damage*=x

  • +
  • -
  • 1

#11 KariiO

    Super Hero

  • Autor tematu
  • Power User

Reputacja: 396
Wszechpomocny

  • Postów:1 133
  • GG:
  • Imię:Korneliusz
  • Lokalizacja:Cieszyn
Offline

Napisano 31.10.2011 21:57

Zmieniłem hamsandwich, zobaczymy co z tego będzie. A jak z tą redukcją hp po przez zręczność, masz jakiś sposób?
  • +
  • -
  • 0




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

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