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
Klasa

Proszę o klasę Polaris

klasa

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

#1 1stADXionC

    Wszechobecny

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:443
  • Imię:Rafał
  • Lokalizacja:Wrocław
Offline

Napisano 26.12.2016 22:50

Nazwa: Polaris

Opis: Obrażenie lepsze o 15% ( z każdej broni )


  • +
  • -
  • 0

DiabloMod - 10%

 

COD:MW3 - BETATESTY

 


#2 NEQU#

    Wszechpomocny

  • Użytkownik

Reputacja: 54
Pomocny

  • Postów:363
  • GG:
Offline

Napisano 26.12.2016 23:24

Sprawdź czy na pewno 15% więcej zadaje, słaby w tym jestem ^^

#include <amxmodx>
#include <codmod>
#include <hamsandwich>

new const nazwa[] = "Polaris";
new const opis[] = "15%% wieksze obrazenia z kazdej broni";
new const bronie = 1<<CSW_M3;
new const zdrowie = 0;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;

public plugin_init() {
	register_plugin(nazwa, "1.0", "QTM_Peyote");
	
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	RegisterHam(Ham_TakeDamage, "player","fwTakeDamage",0);
}


public fwTakeDamage(victim, inflictor, attacker, Float:damage, damagebits)
{
	if(damagebits & DMG_BULLET)

	damage*=0.15
	SetHamParamFloat(4,damage)

	return HAM_IGNORED;
}


edit.

Możesz też zamienić funkcje na

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(idattacker))
		return HAM_IGNORED;
		
		cod_inflict_damage(idattacker, this, damage*0.15, 0.0, idinflictor, damagebits);

	return HAM_IGNORED;
}

lub dla bezpieczeństwa dodać sprawdzanie czy ma klase

cod_class_enabled(id)

{

ma_klase[id] = true;

}

 

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(idattacker))
		return HAM_IGNORED;
		
	if(ma_klase[idattacker])
		cod_inflict_damage(idattacker, this, damage*0.15, 0.0, idinflictor, damagebits);

	return HAM_IGNORED;
}

Użytkownik NEQU# edytował ten post 26.12.2016 23:53

  • +
  • -
  • 1

#3 1stADXionC

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:443
  • Imię:Rafał
  • Lokalizacja:Wrocław
Offline

Napisano 27.12.2016 10:06

 

Sprawdź czy na pewno 15% więcej zadaje, słaby w tym jestem ^^

#include <amxmodx>
#include <codmod>
#include <hamsandwich>

new const nazwa[] = "Polaris";
new const opis[] = "15%% wieksze obrazenia z kazdej broni";
new const bronie = 1<<CSW_M3;
new const zdrowie = 0;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;

public plugin_init() {
	register_plugin(nazwa, "1.0", "QTM_Peyote");
	
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	RegisterHam(Ham_TakeDamage, "player","fwTakeDamage",0);
}


public fwTakeDamage(victim, inflictor, attacker, Float:damage, damagebits)
{
	if(damagebits & DMG_BULLET)

	damage*=0.15
	SetHamParamFloat(4,damage)

	return HAM_IGNORED;
}


edit.

Możesz też zamienić funkcje na

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(idattacker))
		return HAM_IGNORED;
		
		cod_inflict_damage(idattacker, this, damage*0.15, 0.0, idinflictor, damagebits);

	return HAM_IGNORED;
}

lub dla bezpieczeństwa dodać sprawdzanie czy ma klase

cod_class_enabled(id)

{

ma_klase[id] = true;

}

 

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(idattacker))
		return HAM_IGNORED;
		
	if(ma_klase[idattacker])
		cod_inflict_damage(idattacker, this, damage*0.15, 0.0, idinflictor, damagebits);

	return HAM_IGNORED;
}

 

A jak sprawdzić czy zadaje 15% wiecej :D ?


  • +
  • -
  • 0

DiabloMod - 10%

 

COD:MW3 - BETATESTY

 


#4 NEQU#

    Wszechpomocny

  • Użytkownik

Reputacja: 54
Pomocny

  • Postów:363
  • GG:
Offline

Napisano 27.12.2016 11:12

No proste, standardowe dmg z broni np. ak + dolicz 15% tego, uderz kogos i się dowiesz. 

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(idattacker))
		return HAM_IGNORED;
		
	if(ma_klase[idattacker])
		cod_inflict_damage(idattacker, this, damage*0.15, 0.0, idinflictor, damagebits);
 
	return HAM_IGNORED;
}

to na 100% zadziała


  • +
  • -
  • 1

#5 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 27.12.2016 13:24

damage*=0.15
SetHamParamFloat(4,damage)

 

Matematyka?

 

damage = 70.0

 

damage *= 0.15 --> damage = damage*0.15  --> damage = 70.0*0.15 --> damage = 10.5

SetHamParamFloat(4,damage) --> SetHamParamFloat(4,10.5)

 

Koniec końców redukujemy obrażenia do 15%, a nie je zwiększamy.

 

Więc należy to ująć tak:

public fwTakeDamage(victim, inflictor, attacker, Float:damage, damagebits)
{
	if(is_user_connected(attacker) && ma_klase[attacker] && damagebits & DMG_BULLET)
	{
		damage*=1.15;
		SetHamParamFloat(4,damage);
	}
	
	return HAM_IGNORED;
}

Użytkownik _McHappy edytował ten post 27.12.2016 13:28

  • +
  • -
  • 0

#6 1stADXionC

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:443
  • Imię:Rafał
  • Lokalizacja:Wrocław
Offline

Napisano 27.12.2016 13:27

No proste, standardowe dmg z broni np. ak + dolicz 15% tego, uderz kogos i się dowiesz. 

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(idattacker))
		return HAM_IGNORED;
		
	if(ma_klase[idattacker])
		cod_inflict_damage(idattacker, this, damage*0.15, 0.0, idinflictor, damagebits);
 
	return HAM_IGNORED;
}

to na 100% zadziała

 

A taki kod będzie poprawny?

 

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;


if(!ma_klase[idattacker])
return HAM_IGNORED;


cod_inflict_damage(idattacker, this, damage*0.15, 0.0, idinflictor, damagebits); 


if(damagebits & DMG_BULLET)
{
new weapon = get_user_weapon(idattacker);
if(weapon == CSW_HEGRENADE)
cod_inflict_damage(idattacker, this, damage*2.0, 0.0, idinflictor, damagebits);     
}
return HAM_IGNORED;
}

  • +
  • -
  • 0

DiabloMod - 10%

 

COD:MW3 - BETATESTY

 


#7 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 27.12.2016 13:38

if(damagebits & DMG_BULLET)
{
new weapon = get_user_weapon(idattacker);
if(weapon == CSW_HEGRENADE)
cod_inflict_damage(idattacker, this, damage*2.0, 0.0, idinflictor, damagebits);     
}

Tak, ale w nierealnych okolicznościach :)

Gracz strzela gracza i zanim pocisk dotrze do celu, zmienia broń na granat - tylko wtedy aktywują się podwojone obrażenia z granata ;)

 

Poza tym metoda ta nie podwaja, a potraja zadane obrażenia ("naturalne" obrażenia damage + "sztuczne" obrażenia wywołane funkcją Cod Mod'a.

 

Jeżeli chcesz zmodyfikować obrażenia z granata, polecam tę metodę:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_connected(idattacker))
        return HAM_IGNORED;
    
    if(!ma_klase[idattacker])
        return HAM_IGNORED;

    cod_inflict_damage(idattacker, this, damage*0.15, 0.0, idinflictor, damagebits); 
        
    if(damagebits & DMG_HEGRENADE) SetHamParamFloat(4, 2*damage)

    return HAM_IGNORED;
}

+ poniżej sekcji <include> dodaj:

#define DMG_HEGRENADE (1<<24) 

Ale z opisu klasy nie wynika, że miałaby ona mieć dodatkowe obrażenia z granata :)

 


Użytkownik _McHappy edytował ten post 27.12.2016 13:44

  • +
  • -
  • 2

#8 1stADXionC

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:443
  • Imię:Rafał
  • Lokalizacja:Wrocław
Offline

Napisano 27.12.2016 13:46

if(damagebits & DMG_BULLET)
{
new weapon = get_user_weapon(idattacker);
if(weapon == CSW_HEGRENADE)
cod_inflict_damage(idattacker, this, damage*2.0, 0.0, idinflictor, damagebits);     
}

Tak, ale w nierealnych okolicznościach :)

Gracz strzela gracza i zanim pocisk dotrze do celu, zmienia broń na granat - tylko wtedy aktywują się podwojone obrażenia z granata ;)

 

Poza tym metoda ta nie podwaja, a potraja zadane obrażenia ("naturalne" obrażenia damage + "sztuczne" obrażenia wywołane funkcją Cod Mod'a.

 

Jeżeli chcesz zmodyfikować obrażenia z granata, polecam tę metodę:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_connected(idattacker))
        return HAM_IGNORED;
    
    if(!ma_klase[idattacker])
        return HAM_IGNORED;

    cod_inflict_damage(idattacker, this, damage*0.15, 0.0, idinflictor, damagebits); 
        
    if(damagebits & DMG_HEGRENADE) SetHamParamFloat(4, 2*damage)

    return HAM_IGNORED;
}

+ poniżej sekcji <include> dodaj:

#define DMG_HEGRENADE (1<<24) 

Ale z opisu klasy nie wynika, że miałaby ona mieć dodatkowe obrażenia z granata :)

 

 

Czyli ten kod będzie najlepszy: 

 

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_connected(idattacker))
        return HAM_IGNORED;
    
    if(!ma_klase[idattacker])
        return HAM_IGNORED;
        
    if(damagebits & DMG_HEGRENADE) SetHamParamFloat(4, 2*damage)
    
    cod_inflict_damage(idattacker, this, damage*0.15, 0.0, idinflictor, damagebits); 
}

  • +
  • -
  • 0

DiabloMod - 10%

 

COD:MW3 - BETATESTY

 


#9 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 27.12.2016 13:49

Potestuj i zobaczymy, czy Ci pasuje :D


  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: klasa

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

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