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

Ham_TakeDamage - jak używać...?


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

#41 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 23.05.2011 20:05

no jak coś zmienisz to możesz dostać zmienione, nigdy nie potrzebowałem obu tych forwardów na raz; chodzi o to, że obsługa post jest mniej inwazyjna dla modułu i dlatego lżejsza, ale tylko 'do odczytu', bo nie daje kontroli na wynikiem; to jest coś jak różnica między register_message, a register_event
  • +
  • -
  • 1

#42 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.05.2011 20:23

Czyli może ja też nie będę potrzebował obydwu ^^ Bo wolałbym być pewny na kim wykonuje operacje :D

Dodano 23 maj 2011 - 21:52:
A i jeszcze coś miałem się dopytać ;] Z tym drzewem trie, to pobieranie nowej broni (nie przez equal) dodaje się tak?
if(!TrieGetCell(gCustomWeapons, szClass, weapon))
weapon = 0;
else
weapon = gCustomWeapons[szClass];

  • +
  • -
  • 0

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


#43 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 23.05.2011 20:55

nie xD pisałem że takie cuda się nie kompilują!

to
TrieGetCell(gCustomWeapons, szClass, weapon)
zapisałem tak
gCustomWeapons[szClass];
żeby łatwiej było zrozumieć ideę trie

to get pobiera wartość pod kluczem [szClass]
  • +
  • -
  • 0

#44 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.05.2011 21:01

Czyli jak? :D
if(!TrieGetCell(gCustomWeapons, szClass, weapon))
weapon = 0;
else
weapon = TrieGetCell(gCustomWeapons, szClass, weapon);

Tak? Oczywiście to tylko wycinek tego kodu.
  • +
  • -
  • 0

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


#45 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 23.05.2011 21:07

TrieGetCell zwraca 1 jak klucz istnieje i 0 jak klucz nie istnieje; wartość jest wpisywana do 3 argumentu przez referencję

if(!TrieGetCell(gCustomWeapons, szClass, weapon))
        weapon = 0;
to znaczy:
jeśli isnieje klucz o nazwie [szClass] to weapon będzie równe jego weaponid, jeśli nie istnieje (get zwróciło 0) to do weapon wpisz 0

nie potrzebujesz drugiego getCell

btw tamten kod działa identycznie jak ten
if(0 == TrieGetCell(gCustomWeapons, szClass, weapon))
        weapon = 0;

  • +
  • -
  • 1

#46 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.05.2011 23:15

Teraz już kumam :D
Jak wykryć wybuch bomby? DMG_BLAST?
I jeszcze czy da się zrobić tak, że jak ktoś kogoś zabija, to nie będzie pokazana broń z której zabił, tylko ta czaszka, co wyświetla się normalnie przy samobójstwie, itp. czy też nóż, pomimo tego, że zabito, np. z usp.

Użytkownik sebul edytował ten post 23.05.2011 23:35

  • +
  • -
  • 0

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


#47 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 23.05.2011 23:37

tak, bomba to DMG_BLAST
jak chcesz zmienić przyczynę zgonu to musisz podmienić zmienić inflictora
  • +
  • -
  • 0

#48 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 24.05.2011 01:52

Czyli w jaki sposób zmienić?

A jak najlepiej jest kogoś uśmiercić? Czyli powiedzmy, że gdy jakaś zmienna spełnia warunek, to wtedy zabijamy kogoś. Obecnie zwracam aktualne HP ofiary i 4 parametr zamieniam na te HP, ale nie zawsze zabija (przynajmniej tak zauważyłem), bo chyba jeszcze tutaj kamizelka redukuje te obrażenia.

Użytkownik sebul edytował ten post 24.05.2011 01:56

  • +
  • -
  • 0

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


#49 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 24.05.2011 10:35

SetHamParamEntity(2, ent);
ent musisz stworzyć i nadać klasę, od której gracz ma zginąć; w post mógbyś ten byt usuwać, żeby nie zostawiać śmieci

ewentualnie na początku mapy stwórz po 1 bycie dla każdej broni i wtedy weź sobie id bytu z tablicy


przed zabiciem gracza usuń mu kamizelkę (i tak zginie to po co mu:P)
set_pev(id, pev_armor, 0.0);

  • +
  • -
  • 0

#50 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 24.05.2011 11:18

Trochę pobawiłem się z tym wybuchem bomby, ale coś nie działa... Chciałem zwiększyć obrażenia przy wybuchu, napisałem coś takiego
Float:fNewDamage = damage;
// jakiś kod, który zmienia wartość fNewDamage
if(fNewDamage != damage) {
if(damagebits & DMG_BLAST) {
fNewDamage *= 2.0;
}
SetHamParamFloat(4, fNewDamage);
return HAM_HANDLED;
}

No i obrażenia były zawsze takie same, dawałem nawet "0.5", czy "3.0", ale nic się nie zmieniało. Chce to po prostu zrobić, bo na takich modach jak diablo ma się więcej życia, no i jest ta redukcja obrażeń, dlatego też przy jakichś 200-300 hp bomba już nie zabija gracza.

Z tą śmiercią może zrobię tak jak jest to w oryginalnym diablo, bo chciałbym to zrobić jak najłatwiej.
To "set_pev(id, pev_armor, 0.0)" usuwa tylko kamizelkę? A hełm zostawia?

Użytkownik sebul edytował ten post 24.05.2011 11:19

  • +
  • -
  • 0

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


#51 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 24.05.2011 11:26

damagebits sprawdzaj przed
if(fNewDamage != damage)

armor to armor, nie ma tu podziału na kamizelkę i hełm, od tego jest pev_armortype
  • +
  • -
  • 2

#52 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 24.05.2011 12:22

A te flagi damagebits są już w którymś includu zdefiniowane?
Chyba nie, bo teraz dałem "(1<<6)" i działa. Nie wyskakiwały jakieś błędy przy kompilacji to myślałem, że to już jest w jakimś includu ^ ^

Użytkownik sebul edytował ten post 24.05.2011 12:30

  • +
  • -
  • 0

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


#53 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 24.05.2011 12:59

hmm sa w standardowym includzie
#define DMG_GENERIC		0		/* generic damage was done */
#define DMG_CRUSH		(1<<0)		/* crushed by falling or moving object */
#define DMG_BULLET		(1<<1)		/* shot */
#define DMG_SLASH		(1<<2)		/* cut, clawed, stabbed */
#define DMG_BURN		(1<<3)		/* heat burned */
#define DMG_FREEZE		(1<<4)		/* frozen */
#define DMG_FALL		(1<<5)		/* fell too far */
#define DMG_BLAST		(1<<6)		/* explosive blast damage */
#define DMG_CLUB		(1<<7)		/* crowbar, punch, headbutt */
#define DMG_SHOCK		(1<<8)		/* electric shock */
#define DMG_SONIC		(1<<9)		/* sound pulse shockwave */
#define DMG_ENERGYBEAM		(1<<10)		/* laser or other high energy beam */
#define DMG_NEVERGIB		(1<<12)		/* with this bit OR\\\'d in, no damage type will be able to gib victims upon death */
#define DMG_ALWAYSGIB		(1<<13)		/* with this bit OR\\\'d in, any damage type can be made to gib victims upon death */
#define DMG_DROWN		(1<<14)		/* Drowning */
/* time-based damage */
#define DMG_TIMEBASED		(~(0x3fff))	/* mask for time-based damage */
/* TF Additions */
#define DMG_PARALYZE		(1<<15)		/* slows affected creature down */
#define DMG_NERVEGAS		(1<<16)		/* nerve toxins, very bad */
#define DMG_POISON		(1<<17)		/* blood poisioning */
#define DMG_RADIATION		(1<<18)		/* radiation exposure */
#define DMG_DROWNRECOVER	(1<<19)		/* drowning recovery */
#define DMG_ACID		(1<<20)		/* toxic chemicals or acid burns */
#define DMG_SLOWBURN		(1<<21)		/* in an oven */
#define DMG_SLOWFREEZE		(1<<22)		/* in a subzero freezer */
#define DMG_MORTAR		(1<<23)		/* Hit by air raid (done to distinguish grenade from mortar) */

  • +
  • -
  • 0

#54 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 24.05.2011 13:47

Czyli w "hamsandwich"? To ja u siebie tego nie mam... Ale dobra, dopisze się ;]
  • +
  • -
  • 0

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


#55 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 24.05.2011 14:36

hlsdk_const.inc, jest on dołączany prawdopodobnie w amxmodx.inc
  • +
  • -
  • 0

#56 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 24.05.2011 14:57

hlsdk_const.inc, jest on dołączany prawdopodobnie w amxmodx.inc

No już znalazłem, ale nigdzie nie widzę, żeby był on gdzieś dołączony...

A jednak jest ^^ w "engine_const". Tylko nie wiedzieć czemu, ale dopuki sam nie zrobiłem nowego pliku z tymi definicjami i nie dołączyłem go do pliku sma, to mi nie wykrywało wybuchu bomby poprzez "DMG_BLAST"...

Dodano 25 maj 2011 - 10:44:
A co zrobić, żeby nowemu bytowi przypisać jakiś sprite do wyświetlania przy zabójstwie? Myślę, że można po prostu blokować te wyświetlanie kto kogo zabił i w funkcji śmierci sprawdzać jaką ma nazwę broń i jeśli powiedzmy będzie "blyskawica" to dało by się "weapon_usp", czy coś innego, ale może jest jakieś lepsze rozwiązanie?

Użytkownik sebul edytował ten post 24.05.2011 15:02

  • +
  • -
  • 0

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


#57 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 25.05.2011 13:00

możesz też złapać message DeathMsg i tam podmienić nazwę broni
  • +
  • -
  • 0

#58 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 25.05.2011 13:34

możesz też złapać message DeathMsg i tam podmienić nazwę broni

No właśnie tak też zrobiłem ^ ^ Trochę musiałem to jeszcze inaczej zrobić (forwardem wysyłam id broni), ale sobie poradziłem. Po prostu myślałem, że może da się jakoś przypisać jakiś sprite do nowej broni, ale teraz to już mi nawet nie potrzebne.
  • +
  • -
  • 0

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


#59 Cypis'

    Master

  • Przyjaciel

Reputacja: 1 161
Super Hero

  • Postów:965
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 25.05.2011 13:38

sebul, da się podmienić sprites ale to wtedy trzeba ingerować w pliki gracza ale to jest nie dozwolone na amxx.pl ;)
  • +
  • -
  • 0

#60 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 25.05.2011 13:41

sebul, da się podmienić sprites ale to wtedy trzeba ingerować w pliki gracza ale to jest nie dozwolone na amxx.pl ;)

Nie pytałem o podmianę jakichkolwiek spritów, tylko przypisanie już istniejących do nowych broni.

Dodano 25 maj 2011 - 14:53:
W funkcji DeathMsg też mogę użyć
if(!TrieGetCell(gCustomWeapons, szClass, weapon))
weapon = 0;

??
Dokładniej to wygląda tak
public DeathMsg() {
new weaponname[32];
read_data(4, weaponname, 31);

(...)

new weapon = 0;
if(TrieGetCell(gCustomWeapons, weaponname, weapon)) {
replace(weaponname, charsmax(weaponname), "piorun", "knife");
}
else {
new nazwa[32];
formatex(nazwa, charsmax(nazwa), weaponname);
formatex(nazwa, charsmax(nazwa), "weapon_%s", nazwa);
weapon = get_weaponid(nazwa);
}

show_deadmessage(kid, vid, headshot, weaponname); // tak tylko to napisałem, żeby było wiadomo, że wyświetlam kto kogo zabił
(...)
}

Tak będzie dobrze? Wykryje ID nowych broni? A gdy nie znajdzie ID będzie brało z nazw standardowych broni? Sory, że już odbiegam trochę od samego hamsandwich, ale temat jakby nie patrzeć, też jest i o tym.

Użytkownik sebul edytował ten post 25.05.2011 14:12

  • +
  • -
  • 0

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





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

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