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

dodanie obrażeń z kilku źródeł nie działa


Najlepsza odpowiedź vanillah, 18.02.2016 19:12

^on edytuje gotowy kod

spróbuj tak:

	if(get_user_weapon(idattacker) == CSW_MP5NAVY && moze[idattacker] == true)
	{
		SetHamParamFloat(4,damage+(damage*1.5))
		return HAM_HANDLED
	}

	else if( is_user_alive( idattacker ) )
	{
		SetHamParamFloat(4,damage+(damage*(dmg_level[idattacker]*0.01)))
		return HAM_HANDLED
	}
Przejdź do postu


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

#1 wonsz żeczny

    Wszechwidzący

  • Użytkownik

Reputacja: 82
Zaawansowany

  • Postów:254
  • Imię:Wonsz
  • Lokalizacja:Żeka
Offline

Napisano 18.02.2016 16:08

Otóż mam skill moda, które dodaje obrażenia z skilla "Większe obrażenia"

Dodałem też broń, w której zwiększam obrażenia lecz w zależności jak ustawie return'a to albo działa z tego albo z tego.

	if(get_user_weapon(idattacker) == CSW_MP5NAVY && moze[idattacker] == true)
	{
		SetHamParamFloat(4, damage * 1.5)
	}

	if( is_user_alive( idattacker ) )
	{
		SetHamParamFloat(4,damage+(damage*(dmg_level[idattacker]*0.01)))
	}

Na końcu publika return HAM_HANDLED

W ten sposób działa tylko to 2-gie.

	if(get_user_weapon(idattacker) == CSW_MP5NAVY && moze[idattacker] == true)
	{
		SetHamParamFloat(4, damage * 1.5)
		return HAM_HANDLED
	}

	if( is_user_alive( idattacker ) )
	{
		SetHamParamFloat(4,damage+(damage*(dmg_level[idattacker]*0.01)))
		return HAM_HANDLED
	}

Tak również nie działa, tu próbowałem na końcu HAM_HANDLED i HAM_IGNORED i w efekcie działało tylko z 1-szego.

 


  • +
  • -
  • 0

#2 Sniper Elite

    Master

  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 18.02.2016 17:15

Bo tego się tak nie robi.
Rejestrujesz hama:
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
Później funkcja:
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_alive(this) || !is_user_connected(this) || !is_user_connected(idattacker) || get_user_team(this) == get_user_team(idattacker))
return HAM_IGNORED;


//this ofiara
//idattacker atakujacy
//operacje na zmiennej damage


SetHamParamFloat(4, damage);
return HAM_IGNORED;
}

Kopiowane z codmoda.

 


  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#3 vanillah

    nie wiem

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:324
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 18.02.2016 19:12   Najlepsza odpowiedź

^on edytuje gotowy kod

spróbuj tak:

	if(get_user_weapon(idattacker) == CSW_MP5NAVY && moze[idattacker] == true)
	{
		SetHamParamFloat(4,damage+(damage*1.5))
		return HAM_HANDLED
	}

	else if( is_user_alive( idattacker ) )
	{
		SetHamParamFloat(4,damage+(damage*(dmg_level[idattacker]*0.01)))
		return HAM_HANDLED
	}

  • +
  • -
  • 1

Wykonam pluginy, paczki (amxx) kontakt GG: 32263742, Steam: https://steamcommuni...om/id/vankillah

Multi-Head.pl


#4 wonsz żeczny

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 82
Zaawansowany

  • Postów:254
  • Imię:Wonsz
  • Lokalizacja:Żeka
Offline

Napisano 18.02.2016 19:27

damage+

To chyba wystarczy :)

 

Bo po użyciu else to 2-gie dodawanie obrażeń działało by tylko wtedy gdy nie mamy tej broni.


Użytkownik wonsz żeczny edytował ten post 18.02.2016 19:31

  • +
  • -
  • 0

#5 Sniper Elite

    Master

  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 18.02.2016 23:19

Tak to powinno wyglądać:

    if(get_user_weapon(idattacker) == CSW_MP5NAVY && moze[idattacker] == true)
    {
       damage *= 1.5;
    }

    if( is_user_alive( idattacker ) )
    {
        damage = damage+(damage*(dmg_level[idattacker]*0.01));
    }
 SetHamParamFloat(4,damage)

  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#6 wonsz żeczny

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 82
Zaawansowany

  • Postów:254
  • Imię:Wonsz
  • Lokalizacja:Żeka
Offline

Napisano 19.02.2016 11:30

Wystarczyło 

		SetHamParamFloat(4, damage * 1.5)

zamienić na 

		SetHamParamFloat(4,damage+(damage*1.5))

Bo myśląc logicznie nie można mnożyć obrażeń i ich dodawać. Nie wiem czy wiesz o co chodzi.

Wtedy działało tylko z mnożenia a jak zrobiłem oba aby się sumowały to wszystko śmiga.

Nie wiem jak z twoim sposobem podejrzewam, że też zadziała ale tamtego używam i jest wszystko w porządku. 


  • +
  • -
  • 0

#7 Sniper Elite

    Master

  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 19.02.2016 12:01

SetHamParamFloat(which, Float:value)

Funkcja zmienia w locie dane wyjściowe (wg dokumentacji).

Dobrą praktyką programisty jest zrobienie tego jak ja, a nie tak jak ty. Najpierw działasz na zmiennej, z później wywołujesz funkcję na jej rzecz.

new jakas_zmienna = 40;

JakasFunkcja(jakas_zmienna * 1.5)

//tu zmienna jakas_zmienna ma dalej wartość 40 (chyba :P)

więc robimy tak:

jakas_zmienna *= 1.5
JakasFunkcja(jakas_zmienna); 
// tu dalej mozesz spokojnie edytowac zmienna jakas_zmienna (czyli damage) bo zostala zedytowana

czyli najlepiej jest:

jakas_zmienna += 5;
jaka_zmienna *= 1.5
JakasFunkcja(jakas_zmienna);

Na sam koniec dajesz znać silnikowi, że zmieniasz obrażenia (metodą SetHamParamFloat). Nie ma sensu wywoływać jej 2 razy.

 


  • +
  • -
  • 1

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#8 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 21.02.2016 03:55

Ham_TakeDamage nie sluzy do zmiany obrazen BRONI tylko GRANATOW, uzyj Ham_TraceAttack


  • +
  • -
  • 0




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

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