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

Mniejsze Obrazenia


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

#1 Daj buziaka

    Czempion

  • Zbanowany

Reputacja: 274
Wszechwidzący

  • Postów:849
  • Imię:Robert
  • Lokalizacja:Polska
Offline

Napisano 13.08.2013 18:44

Witam. Chciałbym dodać aby każdy kto do mnie strzela aby zadawał mi obrażenia :

 

1 strzał = 2 DMG

 

próbowałem zrobić ale nie działa xD


Paczka map COD - http://cs-boster.pl/...ter-strike-1-6/

Paczka map AIM - http://cs-boster.pl/...ter-strike-1-6/

Counter Strike 1.6 Non Steam v23 - http://cs-boster.pl/...m-v23-download/

Counter Strike 1.6 Non Steam v32 - http://cs-boster.pl/...m-v32-download/

Counter Strike 1.6 Non Steam v52 - http://cs-boster.pl/...-non-steam-v52/


#2 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 13.08.2013 18:54

#include <amxmodx>
#include <hamsandwich>

#define PLUGIN "Obrazenia za 2"
#define VERSION "1.0"
#define AUTHOR "hubertTM"


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

public Event_TakeDamage(this, inf, attacker, Float:damage){
	if(this == attacker)
	return HAM_IGNORED;
	
	if(inf != attacker)  /* Z granata sa normalne DMG jak cos to usun to */
	return HAM_IGNORED;  /* to tez */
	
	if(!is_user_connected(attacker))
	return HAM_IGNORED;
	
	if(!is_user_alive(this))
	return HAM_IGNORED;
	
	if(get_user_weapon(attacker) == CSW_KNIFE) /* Z noza sa normalne DMG jak cos to usun to */
	return HAM_IGNORED; /* to tez */
	
	SetHamParamFloat(4, 2.0);
	
	return HAM_HANDLED;
}

Użytkownik HubertTM edytował ten post 13.08.2013 19:24

  • +
  • -
  • 0

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#3 Daj buziaka

    Czempion

  • Autor tematu
  • Zbanowany

Reputacja: 274
Wszechwidzący

  • Postów:849
  • Imię:Robert
  • Lokalizacja:Polska
Offline

Napisano 13.08.2013 19:00

zaraz przetestuje i dzięki za szybką odpowiedź :P


Paczka map COD - http://cs-boster.pl/...ter-strike-1-6/

Paczka map AIM - http://cs-boster.pl/...ter-strike-1-6/

Counter Strike 1.6 Non Steam v23 - http://cs-boster.pl/...m-v23-download/

Counter Strike 1.6 Non Steam v32 - http://cs-boster.pl/...m-v32-download/

Counter Strike 1.6 Non Steam v52 - http://cs-boster.pl/...-non-steam-v52/


#4 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 13.08.2013 19:09

#include <amxmodx>
#include <hamsandwich>

#define PLUGIN "Obrazenia za 2"
#define VERSION "1.0"
#define AUTHOR "hubertTM"


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

public Event_TakeDamage(this, inf, attacker, Float:damage){
	if(this == attacker)
	return HAM_IGNORED;
	
	if(inf != attacker)  /* Z granata sa normalne DMG jak cos to usun to */
	return HAM_IGNORED;  /* to tez */
	
	if(!is_user_alive(attacker))
	return HAM_IGNORED;
	
	if(!is_user_connected(this))
	return HAM_IGNORED;
	
	if(get_user_weapon(attacker) == CSW_KNIFE) /* Z noza sa normalne DMG jak cos to usun to */
	return HAM_IGNORED; /* to tez */
	
	SetHamParamFloat(4, 2.0);
	
	return HAM_IGNORED;
}

Sprawdzasz, czy gracz zadający obrażenia jest żywy, a czy gracz dostający jest połączony z serwerem. Chyba się pomyliłeś, bo powinno się robić na odwrót (trzeba brać pod uwagę obrażenia z HE) oraz z tym sprawdzaniem broni też nie do końca bym się zgodził, ale to akurat zależy od paru rzeczy. Do tego na końcu wypadało by zwracać coś innego.
  • +
  • -
  • 1

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


#5 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 13.08.2013 19:21

Obrażenia HE zostały wykluczone przez

if(inf != attacker)
return HAM_IGNORED;

,ale poprawię, bo może autor tematu, chce, żeby DMG działało też dla HE.

 

Na końcu można zwrócić HAM_HANDLED zaraz poprawię.

 

@edit .Sma poprawione.

 

Co do sprawdzania broni, to powiem tak, jak autor chce, żeby HE zadawało normalne obrażenia, a nóż nie, to niech napiszę, a przerobię to pod jego prośbę :)


Użytkownik HubertTM edytował ten post 13.08.2013 19:27

  • +
  • -
  • 0

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#6 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 13.08.2013 19:26

Obrażenia HE zostały wykluczone przez:

if(inf != attacker)
return HAM_IGNORED;

Tu by można się sprzeczać ;]
1. Sam tam napisałeś, że można ten warunek usunąć.
2. To że inf != attacker nie musi oznaczać, że obrażenia zadane są granatem, ale to raczej dotyczy tylko jakichś modów, dlatego też napisałem, że to zależy od paru rzeczy.
  • +
  • -
  • 1

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


#7 Daj buziaka

    Czempion

  • Autor tematu
  • Zbanowany

Reputacja: 274
Wszechwidzący

  • Postów:849
  • Imię:Robert
  • Lokalizacja:Polska
Offline

Napisano 13.08.2013 19:29

jeden problem jeszcze mam.

ponieważ chcę to dodać do sklepu a chce aby tylko działało na jedną runde po zakupie.

 

ale coś nie działa xD

Załączone pliki


Paczka map COD - http://cs-boster.pl/...ter-strike-1-6/

Paczka map AIM - http://cs-boster.pl/...ter-strike-1-6/

Counter Strike 1.6 Non Steam v23 - http://cs-boster.pl/...m-v23-download/

Counter Strike 1.6 Non Steam v32 - http://cs-boster.pl/...m-v32-download/

Counter Strike 1.6 Non Steam v52 - http://cs-boster.pl/...-non-steam-v52/


#8 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 13.08.2013 19:58

Generalnie autor chciał, żeby HE i Knife też miały DMG za 2, więc poprawiłem Ci plugin miałeś literówkę.

one[attacker] trzeba było zamienić na one[this] - bo to dostający obrażenia ma mieć małe DMG ;) (Już poprawione w .sma)

 

Jednak jak ktoś nadal jest ciekaw tych poprawek sebula to macie kod :)

#include <amxmodx>
#include <hamsandwich>

#define PLUGIN "Obrazenia za 2"
#define VERSION "1.0"
#define AUTHOR "hubertTM"


#define DMG_NEVERGIB (1<<12) 
#define DMG_BULLET (1<<1) 
#define DMG_KNIFE     ( DMG_NEVERGIB | DMG_BULLET )
#define DMG_HEGRENADE (1<<24) 

#define GRANAT 1  // postaw // przed #define aby granat mialy DMG 2
#define NOZ 1 // postaw // przed #define aby noz mial DMG 2


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

public Event_TakeDamage(this, inf, attacker, Float:damage, damagebits){
	if(this == attacker)
	return HAM_IGNORED;
	
	if(!is_user_connected(attacker))
	return HAM_IGNORED;
	
	if(!is_user_alive(this))
	return HAM_IGNORED;
	
	#if defined NOZ
	if((damagebits & DMG_KNIFE)) 
	return HAM_IGNORED;
	#endif
	
	#if defined GRANAT
	if(damagebits & DMG_HEGRENADE) 
	return HAM_IGNORED;
	#endif
	
	SetHamParamFloat(4, 2.0);
	
	return HAM_HANDLED;
}

sebul (13.08.2013 20:25):
A co jeśli zadałbym niestandardowe obrażenia z (damagebits & DMG_HEGRENADE)? To oczywiście taki przypadek mało spotykany, ale jest to możliwe, a wtedy samo sprawdzenie damagebits nie wystarczy.
W każdym razie ten kod, raczej autorowi tematu powinien wystarczyć.
Droso (13.08.2013 20:30):
Fakt, ale jeśli ktoś używa damagebits DMG_HEGRENADE u np. jakiegoś bossa, to albo to jest nielogiczne, albo ten boss rzuca granatami :D
Tutaj już wpływ jest drugiego modera, wszystkiego przewidzieć się nie da.

+został jakiś sposób, żeby sprawdzić czy to HE?
sebul (13.08.2013 20:42):
Wystarczy dodatkowo sprawdzić, czy nazwa klasy bytu zadającego obrażenia to "grenade" ^^
sebul (13.08.2013 20:46):
Oczywiście nazwę klasy też można ustawić każdemu bytowi na jaką się chce, ale kto będzie ustawiał "grenade" tworzonemu bytowi przez siebie, skoro to zapewne nie będzie zwykły granat, a jak będzie zwykły, to nie trzeba tworzyć nowego bytu, tylko po prostu dać zwykły granat.
Droso (13.08.2013 21:06):
Zupełnie zapomniałem hah :D, tak samo można powiedzieć kto ustawia bytowi DMG_GRENADE :D
sebul (13.08.2013 21:16):
Jeśli obrażenia są od jakiegoś wybuchu czegoś latającego, to czemu by nie ustawiać (1<<24) albo w połączeniu jeszcze z czymś, na pewno bardziej to jest prawdopodobne, niż żeby ustawiać nowemu bytowi nazwę granatu.

Załączone pliki


Użytkownik HubertTM edytował ten post 13.08.2013 21:07

  • +
  • -
  • 0

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#9 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 13.08.2013 20:33

Wywal jeszcze to

#define IsPlayer(%1) (1 <= %1 <= 32)

  • +
  • -
  • 0




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

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