Ustawienie obrażeń z inteligencją
RasiaQ
08.11.2013
Chciałem w tym temacie zaprezentować, jak ustawić danej klase x(+int) obrażeń z danej broni. (Nie znalazłem takowego w tym dziale ;_; )
1. Na sam początek dodajemy:
#include <hamsandwich>
i pod includami:
#define DMG_BULLET (1<<1)
i zmienna:
new bool:ma_klase[33];
2. do plugin_init() dodajemy:
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
3*. Jeśli nie masz to dodaj:
public cod_class_enabled(id) ma_klase[id] = true; public cod_class_disabled(id) ma_klase[id] = false;
4. I na koniec .sma
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_BULLET) { new weapon = get_user_weapon(idattacker); if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_BRON && damagebits & DMG_BULLET) cod_inflict_damage(idattacker, this, 5.0, 0.1, idinflictor, damagebits); } return HAM_IGNORED; }
CSW_BRON - BRON zmieniasz na nazwę swojej broni np. CSW_M4A1
W powyższym kodzie przyjrzyj się temu:
cod_inflict_damage(idattacker, this, 5.0, 0.1, idinflictor, damagebits);
5.0 oznacza ile obrażeń będziemy zadawali. W tym przypadku jest to 5(+int). Jeśli zmienimy np. na 50.0 to będziemy zadawać 50(+int) obrażeń więcej.
0.1 Jest to współczynnik/mnożnik tego, jak nasza inteligencja będzie się przekładała na obrażenia. Np.
0.1 - 10int = 1 DMG 0.2 - 5int = 1 DMG 0.15 - 6.(3)int = 1 DMG 0.14 - 7.14int = 1 DMG 0.066666 - 15int = 1 DMG 0.05 - 20int = 1 DMG
Sposób przeliczania tego jest bardzo prosty (nauczył mnie go dzisiaj rano Vasto_Lorde[btw. dzięki ]), otóż 1(jeden) dzielimy przez tyle ile chcemy inteligencji na 1 DMG. Np.
1/20 = 0.05 ( / zastępuje znak dzielenia ( patrz kod powyżej. Co wyszło ?) 1/15 = 0.66666
Łatwo sprawdzić na kalkulatorze
5. A więc nasz finalny kod będzie wyglądał tak:
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <codmod> #include <hamsandwich> #define DMG_BULLET (1<<1) new bool:ma_klase[33]; new const nazwa[] = "TEST"; new const opis[] = "Zadajesz 5(+int) obrazen z xxx"; new const bronie = 1<<CSW_M3; new const zdrowie = 20; new const kondycja = 40; new const inteligencja = 50; new const wytrzymalosc = 60; public plugin_init() { register_plugin(nazwa, "1.0", "Drizzt"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); } public cod_class_enabled(id) ma_klase[id] = true; public cod_class_disabled(id) ma_klase[id] = false; 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_BULLET) { new weapon = get_user_weapon(idattacker); if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_BRON && damagebits & DMG_BULLET) cod_inflict_damage(idattacker, this, 5.0, 0.1, idinflictor, damagebits); } return HAM_IGNORED; }
To chyba wszystko jasne
Dziękuję za uwagę. Gdyby ktoś czegoś nie rozumiał, będę wyjaśniał.
Lukas 9220 17.11.2013
Dzięki, bardzo mi tym pomogłeś, jak coś to już wiem do kogo się zwracać, jeszcze raz dzięki !
Magic..
21.12.2013
Było ale trzmaj tego + .
Użytkownik Magic.. edytował ten post 21.12.2013 17:43
koong
10.01.2014
cod_inflict_damage(idattacker, this, 5.0, 0.1, idinflictor, damagebits);
no to jest że 10 int=1 DMG
a jak chcę 1 int =1DMG to?
cod_inflict_damage(idattacker, this, 5.0, 1.0, idinflictor, damagebits);
dobrze mówię?
WirtualnyFanatyk
16.05.2021
Może być dmg od danej broni, a jak zrobić aby dana klasa otrzymywała bonus dmg od każdej broni a nie tylko od konkretnej.
Misiu.
16.05.2021
jak zrobić aby dana klasa otrzymywała bonus dmg od każdej broni a nie tylko od konkretnej
Wystarczy usunąć to
&& get_user_weapon(idattacker) == CSW_BRON
WirtualnyFanatyk
17.05.2021
Misiu.
18.05.2021
Procentowe podnoszenie obrażeń możesz uzyskać poprzez użycie https://amxx.pl/doku...etHamParamFloatdla odpowiedniej broni.
SetHamParamFloat(4, * 5.0)
WirtualnyFanatyk
18.05.2021
Misiu.
18.05.2021
A jak to zrobić, tak aby zależało to od inteligencji, to co dałeś to fajne aby na stałe dać jakiejś klasie dodatkowy dmg
Pobrać wartość inteligencji gracza i przemnożyć przez odpowiednią liczbę w zależności jaki chcesz % za int?
inteligencja gracza * 0.001
Jak pobrać inteligencje gracza masz wyjaśnione w codmod.inc i użyte w silniku coda, śmiało możesz się na tym wzorować.