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

[ROZWIĄZANE] Obrazenia dla druzyny TT - dobrze napisany kod ?


Najlepsza odpowiedź dasiek, 06.11.2014 13:37

taki zapis

if(damagebits & DMG_BULLET)
	{	
		if(get_user_team(id)== 1)
		{		
			SetHamParamFloat(4, damage*2)
		}	
	}		
	if(damagebits & DMG_HE)
	{
		if(get_user_team(id)==1)
		{
				SetHamParamFloat(4, damage*2)
		}
	}

możesz bez problemu zastąpić

if(get_user_team(id)==1){
	if(damagebits & DMG_BULLET || damagebits & DMG_HE){
		SetHamParamFloat(4, damage*2)
	}
}

(miejsce klamer nie ma znaczenia) 

 

Dlaczego? 

-Mniej ifów.

-Obecnie kod wykonuje się dla konkretnych obrażeń , sprawdzenia obrażeń wykonują się nawet, kiedy jest się w CT. W założeniach jest żeby działało dla VIP'a (co się wykonuje) oraz dla TT. myślę że mój zapis jest swojego rodzaju "optymalizacją". 

-2 razy wykonujesz to samo (damage *2) w 2 ifach. wrzucone w 1.

 

Taka uwaga dot. samego algorytmu.

Przejdź do postu


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

#1 Dziobak?

    Wszechmogący

  • Power User

Reputacja: 271
Wszechwidzący

  • Postów:645
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Radom
Offline

Napisano 06.11.2014 13:25

Chciałbym się zapytać czy ten kod jest poprawnie napisany. Ten kod ma za zadanie:

- szansa 2/10 na większe obrażenia dla drużyny TT (VIP)

- szansa 2/10 na większe obrażenia z HE dla drużyny TT (VIP)

#define DMG_HE (1<<24)
#define DMG_BULLET (1<<1)
RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage");	
public fwTakeDamage(id, this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(idattacker) && !Vip[idattacker])
		return HAM_IGNORED;
               
	if(random_num(2, 10)!=1)
		return HAM_IGNORED;

	if(damagebits & DMG_BULLET)
	{	
		if(get_user_team(id)== 1)
		{		
			SetHamParamFloat(4, damage*2)
		}	
	}		
	if(damagebits & DMG_HE)
	{
		if(get_user_team(id)==1)
		{
				SetHamParamFloat(4, damage*2)
		}
	}	
	return HAM_IGNORED;
}

Jeżeli ktoś uważa że źle napisany, nie będzie działać to proszę o napisanie co byście jak napisali swoim zdaniem.


  • +
  • -
  • 0

#2 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 06.11.2014 13:37   Najlepsza odpowiedź

taki zapis

if(damagebits & DMG_BULLET)
	{	
		if(get_user_team(id)== 1)
		{		
			SetHamParamFloat(4, damage*2)
		}	
	}		
	if(damagebits & DMG_HE)
	{
		if(get_user_team(id)==1)
		{
				SetHamParamFloat(4, damage*2)
		}
	}

możesz bez problemu zastąpić

if(get_user_team(id)==1){
	if(damagebits & DMG_BULLET || damagebits & DMG_HE){
		SetHamParamFloat(4, damage*2)
	}
}

(miejsce klamer nie ma znaczenia) 

 

Dlaczego? 

-Mniej ifów.

-Obecnie kod wykonuje się dla konkretnych obrażeń , sprawdzenia obrażeń wykonują się nawet, kiedy jest się w CT. W założeniach jest żeby działało dla VIP'a (co się wykonuje) oraz dla TT. myślę że mój zapis jest swojego rodzaju "optymalizacją". 

-2 razy wykonujesz to samo (damage *2) w 2 ifach. wrzucone w 1.

 

Taka uwaga dot. samego algorytmu.


  • +
  • -
  • 1

#3 Dziobak?

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 271
Wszechwidzący

  • Postów:645
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Radom
Offline

Napisano 06.11.2014 14:00

Dzięki, nie pomyślałem o tym :)


  • +
  • -
  • 0




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

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