←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Tarcz SWAT i inne podobne perki problem

  • +
  • -
WolfIDraV - zdjęcie WolfIDraV 07.12.2016

Mam taki problem, że mam na serwerze 3 perki na które nie powinny działać miny, rakiety, dynamity, oraz trutko ale dalej działają.

 

W linijce w której jest dmg mam tak zrobione:

	for (new i=0; i < numfound; i++) {
		new pid = entlist[i];

		if(!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid)  || cod_get_user_perk(pid) == cod_get_perkid("Nano Kamizelka") || cod_get_user_perk(pid) == cod_get_perkid("Tarcza SWAT") || cod_get_user_perk(pid) == cod_get_perkid("Niwelator[VIP]") || cod_get_user_perk(pid) == cod_get_perkid("Sprawdzanie[Admin]"))
			continue;
			
		cod_inflict_damage(attacker, pid, 120.0, get_cvar_float("Rakieciarz_RakietDmgInt"), ent, (1<<24));
	}

Ale dmg dalej od otrzymuje z min, rakiet, dynamitow oraz trutek


Użytkownik WolfIDraV edytował ten post 07.12.2016 12:21
Odpowiedz

  • +
  • -
Kmf!p - zdjęcie Kmf!p 07.12.2016

if(!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid)  || cod_get_user_perk(pid) == cod_get_perkid("Nano Kamizelka") || cod_get_user_perk(pid) == cod_get_perkid("Tarcza SWAT") || cod_get_user_perk(pid) == cod_get_perkid("Niwelator[VIP]") || cod_get_user_perk(pid) == cod_get_perkid("Sprawdzanie[Admin]"))
			continue;

to musi byc wklejone w kazdej klasie / perku ktora ma rakiety/miny itp., zakladam ze rakiet/min nie mozna kupowac np. przez sklep bo wtedy na pewno nie zablokujesz tym. do tego nie widze zebys tu dal warunek wykluczenia obrazen zadawanych przez klase, chodzi mi ze jesli zalozmy masz perk blokujacy inne perki z rakietami/minami to jesli cie ktos trafi rakieta z klasy to i tak ci zada obrazenia.

Odpowiedz

  • +
  • -
WolfIDraV - zdjęcie WolfIDraV 07.12.2016

if(!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid)  || cod_get_user_perk(pid) == cod_get_perkid("Nano Kamizelka") || cod_get_user_perk(pid) == cod_get_perkid("Tarcza SWAT") || cod_get_user_perk(pid) == cod_get_perkid("Niwelator[VIP]") || cod_get_user_perk(pid) == cod_get_perkid("Sprawdzanie[Admin]"))
			continue;

to musi byc wklejone w kazdej klasie / perku ktora ma rakiety/miny itp., zakladam ze rakiet/min nie mozna kupowac np. przez sklep bo wtedy na pewno nie zablokujesz tym. do tego nie widze zebys tu dal warunek wykluczenia obrazen zadawanych przez klase, chodzi mi ze jesli zalozmy masz perk blokujacy inne perki z rakietami/minami to jesli cie ktos trafi rakieta z klasy to i tak ci zada obrazenia.

 

Mam tylko w klasach to wpisane bo perku żadnego nie mam co daje miny,rakiety itd.

Czyli muszę zrobić osobno to cod_get_user_perk(pid) == cod_get_perkid("Nazwa Perku")

i pod tym dac return HAM_SUPERCEDE; ?

Odpowiedz

  • +
  • -
Kmf!p - zdjęcie Kmf!p 07.12.2016

skoro niby masz to zablokowane w kazdej klasie to pozostaje sprawdzic czy nazwy perkow tu: 

cod_get_perkid("Nazwa Perku")

sa dokladnie takie same jak nazwy perkow jesli wszystko sie zgadza, mysle ze mozna sprubowac rozdzielic te perki na osobne warunki bo czasami cos inaczej sprawdza niz myslimy zrob tak:

if(!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid))
			continue;

if(cod_get_user_perk(pid) == cod_get_perkid("Nano Kamizelka"))
			continue;

itd, choc nie sadze zeby to cos zmienilo ;D

ja mam taki warunek we wsparciu ogniowym:

if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid) || cod_get_user_perk(pid) == cod_get_perkid("Nano Kamizelka"))
			continue;

i o dziwo podczas testowania na bocie rakiety zadaja obrazenia, ale jesli ja mam ten perk nano kamizelke to mi juz nie zabiera hp z rakiet.


Użytkownik Kmf!p edytował ten post 07.12.2016 13:55
Odpowiedz

  • +
  • -
WolfIDraV - zdjęcie WolfIDraV 07.12.2016

skoro niby masz to zablokowane w kazdej klasie to pozostaje sprawdzic czy nazwy perkow tu: 

cod_get_perkid("Nazwa Perku")

sa dokladnie takie same jak nazwy perkow jesli wszystko sie zgadza, mysle ze mozna sprubowac rozdzielic te perki na osobne warunki bo czasami cos inaczej sprawdza niz myslimy zrob tak:

if(!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid))
			continue;

if(cod_get_user_perk(pid) == cod_get_perkid("Nano Kamizelka"))
			continue;

itd, choc nie sadze zeby to cos zmienilo ;D

ja mam taki warunek we wsparciu ogniowym:

if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid) || cod_get_user_perk(pid) == cod_get_perkid("Nano Kamizelka"))
			continue;

i o dziwo podczas testowania na bocie rakiety zadaja obrazenia, ale jesli ja mam ten perk nano kamizelke to mi juz nie zabiera hp z rakiet.

Dalej pozostaje bez zmian obrażenia sa otrzymywane.

Czyli nici z tego perku

Odpowiedz

  • +
  • -
AwIlL^^ - zdjęcie AwIlL^^ 09.12.2016

możesz też spróbować w taki sposób
pod

new ma_klase[33];

napisz

new id_perku[4];

w plugin_init

id_perku[0] = cod_get_perkid("Nano Kamizelka");
id_perku[1] = cod_get_perkid("Tarcza SWAT");
id_perku[2] = cod_get_perkid("Niwelator[VIP]");
id_perku[3] = cod_get_perkid("Sprawdzanie[Admin]");

a warunek zamien na ten

if(!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid)  || cod_get_user_perk(pid) == id_perku[0] || cod_get_user_perk(pid) == id_perku[1] || cod_get_user_perk(pid) == id_perku[2] || cod_get_user_perk(pid) == id_perku[3])
Odpowiedz