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.
|
Ham_TakeDamage - jak używać...?
#41
Napisano 23.05.2011 20:05
#42
Napisano 23.05.2011 20:23
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];
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#43
Napisano 23.05.2011 20:55
to
TrieGetCell(gCustomWeapons, szClass, weapon)zapisałem tak
gCustomWeapons[szClass];żeby łatwiej było zrozumieć ideę trie
to get pobiera wartość pod kluczem [szClass]
#44
Napisano 23.05.2011 21:01
if(!TrieGetCell(gCustomWeapons, szClass, weapon))
weapon = 0;
else
weapon = TrieGetCell(gCustomWeapons, szClass, weapon);
Tak? Oczywiście to tylko wycinek tego kodu.
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#45
Napisano 23.05.2011 21:07
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;
#46
Napisano 23.05.2011 23:15
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
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#47
Napisano 23.05.2011 23:37
jak chcesz zmienić przyczynę zgonu to musisz podmienić zmienić inflictora
#48
Napisano 24.05.2011 01:52
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
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#49
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);
#50
Napisano 24.05.2011 11:18
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
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#51
Napisano 24.05.2011 11:26
if(fNewDamage != damage)
armor to armor, nie ma tu podziału na kamizelkę i hełm, od tego jest pev_armortype
#52
Napisano 24.05.2011 12:22
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
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#53
Napisano 24.05.2011 12:59
#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) */
#54
Napisano 24.05.2011 13:47
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#55
Napisano 24.05.2011 14:36
#56
Napisano 24.05.2011 14:57
No już znalazłem, ale nigdzie nie widzę, żeby był on gdzieś dołączony...hlsdk_const.inc, jest on dołączany prawdopodobnie w amxmodx.inc
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
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#57
Napisano 25.05.2011 13:00
#58
Napisano 25.05.2011 13:34
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.możesz też złapać message DeathMsg i tam podmienić nazwę broni
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#59
Napisano 25.05.2011 13:38
#60
Napisano 25.05.2011 13:41
Nie pytałem o podmianę jakichkolwiek spritów, tylko przypisanie już istniejących do nowych broni.sebul, da się podmienić sprites ale to wtedy trzeba ingerować w pliki gracza ale to jest nie dozwolone na amxx.pl
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
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