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
 

Większy damage


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

#1 Gość_kubek_*

  • Gość

Reputacja: 0

Offline

Napisano 28.11.2012 14:46

Witam, wie ktoś może dlaczego poniższy kod nie zwiększa obrażeń granatu?


public fwTakeDamage(this, idinflictor, idattacker, Float:damage, damagebits){
if(is_user_alive(idattacker))
if(get_user_weapon ( idattacker )==CSW_HEGRENADE){
SetHamParamFloat(4, damage+550.0);
return HAM_OVERRIDE;
}
return HAM_IGNORED;

}


Oczywiście dopisane jest u góry:
RegisterHam(Ham_TakeDamage, "player","fwTakeDamage",0);


Powinno działać, lecz dlaczego nie chce ?:D

#2 Krytykiewicz

    Zaawansowany

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:114
  • Lokalizacja:Stąd
Offline

Napisano 28.11.2012 15:15

#include <amxmodx>
#include <hamsandwich>

#define PLUGIN "Add dmg"
#define VERSION "1.0"
#define AUTHOR "Krytykiewicz"

#define DMG_WIECEJ 550.0

public plugin_init(){
register_plugin(PLUGIN,VERSION,AUTHOR);
RegisterHam(Ham_TakeDamage, "player", "takedamage", 0);
}

public takedamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(this == idattacker || !is_user_connected(this) || !is_user_connected(idattacker) || get_user_weapon(idattacker) != CSW_HEGRENADE)
return HAM_IGNORED;

damage += DMG_WIECEJ

SetHamParamFloat(4, damage);

return HAM_IGNORED;
}

Użytkownik Krytykiewicz edytował ten post 28.11.2012 15:41

  • +
  • -
  • 0

#3 Gość_kubek_*

  • Autor tematu
  • Gość

Reputacja: 0

Offline

Napisano 28.11.2012 15:25

Niestety, ale nie działa :>

#4 K!113r

    Teraz to chyba Sławek kek

  • Power User

Reputacja: 387
Wszechpomocny

  • Postów:868
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 28.11.2012 16:06

Po operacjach zwracamy HAM_HANDLED, aby zatwierdzić zmiany.


  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#5 Gość_kubek_*

  • Autor tematu
  • Gość

Reputacja: 0

Offline

Napisano 28.11.2012 16:13

Czyli jak to teraz będzie mniej więcej wyglądać ?:P

#6 K!113r

    Teraz to chyba Sławek kek

  • Power User

Reputacja: 387
Wszechpomocny

  • Postów:868
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 28.11.2012 16:23


public fwTakeDamage(this, idinflictor, idattacker, Float:damage, damagebits){
if(is_user_alive(idattacker))
if(get_user_weapon ( idattacker )==CSW_HEGRENADE){
SetHamParamFloat(4, damage+550.0);
return HAM_HANDLED;
}
return HAM_IGNORED;

}


Jest to twój przerobiony kod, sprawdź czy działa.
  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#7 Gość_kubek_*

  • Autor tematu
  • Gość

Reputacja: 0

Offline

Napisano 28.11.2012 16:40

Tak już próbowałem, bo tym co napisałeś.

#8 K!113r

    Teraz to chyba Sławek kek

  • Power User

Reputacja: 387
Wszechpomocny

  • Postów:868
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 28.11.2012 17:24


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

if(damagebits & (1<<24))// he
{
SetHamParamFloat(4, 5.0)
return HAM_HANDLED;
}
return HAM_IGNORED
}


Podmień na swój dmg (ten kod testowany i na bank działa xD)
  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#9 Krytykiewicz

    Zaawansowany

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:114
  • Lokalizacja:Stąd
Offline

Napisano 28.11.2012 17:26

Bardzo dobre zastosowanie tak jak wyżej. Kompletnie o nim nie pomyślałem. Chciałem właśnie zwrócić uwagę na return HAM_HANDLED.

Przyznam się do klęski w tym 1 poście.

->

#define HAM_IGNORED			 1	   /** Wywołuje funkcje i zwraca normalna wartość */
#define HAM_HANDLED			 2	   /**< Wywołuje funkcje jednak informuje moduł o wykonaniu czegoś i zwraca normalną warość */
#define HAM_OVERRIDE			3	   /**< Wywołuje funkcje, jednak zwraca cokolwiek ustalone za pomocą SetHamReturn*() */
#define HAM_SUPERCEDE		   4	   /**< Blokuje wywołanie funkcji */

Użytkownik Krytykiewicz edytował ten post 28.11.2012 17:44

  • +
  • -
  • 0

#10 Gość_21977_*

  • Autor tematu
  • Gość

Reputacja: 0

Offline

Napisano 28.11.2012 17:58

if(get_user_weapon ( idattacker )==CSW_HEGRENADE){
Ten kod nie zawsze zadziała poprawnie.
Sprawdza on posiadaną broń atakującego podczas, gdy po rzuceniu granatu, mógł on dawno zmienić broń na zupełnie inną, trzeba wziąć to po uwagę.

#11 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 28.11.2012 18:03

Chcesz sprawdzać z jakiej broni zostały zadane obreżenia? Zrób to tak
new weapon;
if(idinflictor == idattacker) weapon = get_user_weapon(idattacker);
else if(damagebits & (1<<24) && is_valid_ent(idinflictor)) {
new szClass[32];
entity_get_string(idinflictor, EV_SZ_classname, szClass, 31);
if(equal(szClass, "grenade"))
weapon = CSW_HEGRENADE;
}

  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#12 Gość_kubek_*

  • Autor tematu
  • Gość

Reputacja: 0

Offline

Napisano 28.11.2012 18:13


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

if(damagebits & (1<<24))// he
{
SetHamParamFloat(4, 5.0)
return HAM_HANDLED;
}
return HAM_IGNORED
}


Podmień na swój dmg (ten kod testowany i na bank działa xD)


Tak ten kodzik działa, plusik :)
Dzięki można zamknąć.

#13 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 28.11.2012 18:20

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

If you can dream it, you can do it.





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

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