Jump to content


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

Posted Image Posted Image

Guest Message by DevFuse
 

[ROZWIĄZANE] Skrócenie kodu - prostszy zapis


Best Answer Seba , 30.10.2013 23:22

	new Float:dmgbase, div
	
	if(poziom_gracza[attacker] <= 50)
	{
		dmgbase = 25.0
		div = 1
	}
	else if(poziom_gracza[attacker] <= 200)
	{
		dmgbase = 30.0
		div = 2
	}
	else if(poziom_gracza[attacker] <= 500)
	{
		dmgbase = 45.0
		div = 3
	}	
	
	new Float:dmg = ( dmgbase+float(inteligencja_gracza[attacker])/div)-redukcja_obrazen_gracza_rakieta[pid]/div;	
	ExecuteHam(Ham_TakeDamage, pid, ent, attacker, (dmg <= 1.0) ? 2.0 : dmg, 1);
Go to the full post


  • This topic is locked This topic is locked
5 replies to this topic

#1 palarie

    Banned

  • Zbanowany

  • Reputacja: 19
    Początkujący

  • Postów:76
  • Lokalizacja:Polska
Offline

Posted 30.10.2013 21:15

Witam.

Chciałbym się dowiedzieć czy da radę zapisać poniższy kod w prostszy sposób (z cod moda):

if (poziom_gracza[attacker] <=50)
	{
	new Float: dmg = ( 25.0+float(inteligencja_gracza[attacker]))-redukcja_obrazen_gracza_rakieta[pid];
	if( dmg <= 1.0 )
	dmg = 2.0;
	ExecuteHam(Ham_TakeDamage, pid, ent, attacker, dmg , 1);
        }
else if (poziom_gracza[attacker] <=200)
	{
	new Float: dmg = ( 30.0+float(inteligencja_gracza[attacker])/2)-(redukcja_obrazen_gracza_rakieta[pid])/2;
	if( dmg <= 1.0 )
	dmg = 2.0;
				
	ExecuteHam(Ham_TakeDamage, pid, ent, attacker, dmg , 1);
	}
	else if (poziom_gracza[attacker] <=500)
	{
	new Float: dmg = ( 45.0+float(inteligencja_gracza[attacker])/3)-(redukcja_obrazen_gracza_rakieta[pid])/3;
	if( dmg <= 1.0 )
	dmg = 2.0;
	ExecuteHam(Ham_TakeDamage, pid, ent, attacker, dmg , 1);
	}

Chodzi głównie o to, aby za każdym razem nie powtarzać tego:

if( dmg <= 1.0 )
    dmg = 2.0;

Pobierz najnowszą wersję CS 1.6 PrO [Professional Edition]!
Temat z opisem i screenamiCS 1.6 PrO
Oficjalna strona: CS 1.6 Download

#2 Vasto_Lorde

    Wszechmogący

  • Power User

  • Reputacja: 256
    Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Posted 30.10.2013 23:01

if(dmg <= 1.0)
     dmg=2.0;

To możesz zamienić na to:

dmg=dmg<=1.0 ? 2.0 : dmg

Efekt jest ten same ale nie wiem czy jest on szybszy.

 

Albo (teraz mnie oświeciło) możesz zrobić tak:

if(poziom_gracza[attacker] <= 50)
     new Float: dmg=(25.0+float(inteligencja_gracza[attacker]))-redukcja_obrazen_gracza_rakieta[pid];
else if(poziom_gracza[attacker]<=200)
     new Float: dmg=(30.0+float(inteligencja_gracza[attacker])/2)-(redukcja_obrazen_gracza_rakieta[pid])/2;
else if(poziom_gracza[attacker]<=500)
     new Float: dmg=(45.0+float(inteligencja_gracza[attacker])/3)-(redukcja_obrazen_gracza_rakieta[pid])/3;
 
if(dmg<=1.0)
     dmg=2.0;
ExecuteHam(Ham_TakeDamage, pid, ent, attacker, dmg , 1);

Ewentualnie zamienić ostatniego ifa na to co podałem wyżej.


  • +
  • -
  • 1

#3 Seba

    Wszechobecny

  • Zbanowany

  • Reputacja: 198
    Profesjonalista

  • Postów:424
  • Lokalizacja:Internet
Offline

Posted 30.10.2013 23:22   Best Answer

	new Float:dmgbase, div
	
	if(poziom_gracza[attacker] <= 50)
	{
		dmgbase = 25.0
		div = 1
	}
	else if(poziom_gracza[attacker] <= 200)
	{
		dmgbase = 30.0
		div = 2
	}
	else if(poziom_gracza[attacker] <= 500)
	{
		dmgbase = 45.0
		div = 3
	}	
	
	new Float:dmg = ( dmgbase+float(inteligencja_gracza[attacker])/div)-redukcja_obrazen_gracza_rakieta[pid]/div;	
	ExecuteHam(Ham_TakeDamage, pid, ent, attacker, (dmg <= 1.0) ? 2.0 : dmg, 1);

Edited by Seba, 30.10.2013 23:23.


#4 Misiaczek ;c

    /dev/null

  • Moderator

  • Reputacja: 1,679
    Godlike

  • Postów:2,496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Posted 31.10.2013 11:48

	new Float:dmgbase, div
	switch (poziom_gracza[attacker]) {
		case 1 .. 50: {
			dmgbase = 25.0
			div = 1
		}
		case 51 .. 200 {
			dmgbase = 30.0
			div = 2
		}
		case 201 .. 500: {
			dmgbase = 45.0
			div = 3
		}
	}
	new Float:dmg = ( dmgbase+float(inteligencja_gracza[attacker])/div)-redukcja_obrazen_gracza_rakieta[pid]/div;	
	ExecuteHam(Ham_TakeDamage, pid, ent, attacker, (dmg <= 1.0) ? 2.0 : dmg, 1);

  • +
  • -
  • 2

#5 Seba

    Wszechobecny

  • Zbanowany

  • Reputacja: 198
    Profesjonalista

  • Postów:424
  • Lokalizacja:Internet
Offline

Posted 31.10.2013 14:34

O ile dobrze pamietam to switch w pawnie powoduje wiecej problemow niz korzysci. Krzykaczom z gory od razu proponuje skompilowac np. to

new a 
switch (a) {
case 1 .. 10000: {
 
}
case 10001 .. 100000: {
 
}
}
;]

Edited by Seba, 31.10.2013 14:36.


#6 palarie

    Banned

  • Autor tematu
  • Zbanowany

  • Reputacja: 19
    Początkujący

  • Postów:76
  • Lokalizacja:Polska
Offline

Posted 31.10.2013 16:38

Dzięki za pomoc, rozwiązanie Seby najbardziej mi przypadło.


Pobierz najnowszą wersję CS 1.6 PrO [Professional Edition]!
Temat z opisem i screenamiCS 1.6 PrO
Oficjalna strona: CS 1.6 Download




  


1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

Coinsy CSGOPolygon Za SMS, PSC , Przelew - CoinSell.pro
Skiny do CS:GO za SMS, PSC, Przelew - CSGOPaka.com
Automatyczny Bot Levelowania Steam - LVLUPSteam.com
CSGO Gambling Sites and Free Betting Codes - DreamCodes.gg

Sign In