Dodanie 1/2 z Noża do klasy Scouter
VeticK.
15.07.2014
Tak jak w temacie. Oto .sma klasy:
#include <amxmodx> #include <amxmisc> #include <codmod> #include <hamsandwich> #define DMG_BULLET (1<<1) new const nazwa[] = "Scouter"; new const opis[] = "Posiada Scouta i z niego 1/2"; new const bronie = (1<<CSW_SCOUT)|(1<<CSW_DEAGLE); new const zdrowie = 350; new const kondycja = 400; new const inteligencja = 150; new const wytrzymalosc = 0; new ma_klase[33]; public plugin_init() { register_plugin(nazwa, "1.0", "amxx.pl"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); } 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(weapon == CSW_SCOUT && damage > 20.0 && random_num(1, 2) == 1) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits); } return HAM_IGNORED; }
BlackPerfum
15.07.2014
VeticK. czasem nie chciałeś tylko z ppm?? Trzeba dopisać bo ludzie cię źle zrozumieją ;D
Nie chce mi się pisać tego parę razy pozwólcie że użyje czarodziejskich przycisków Ctrl+C & Ctrl+V
P350 twój kod zadziała ale ma w sobie dosyć duże błędy:
• Sprawdzanie czy dmg jest większe od 20 nie ma najmniejszego sensu gdyż jakiś inny plugin mógł zmniejszyć dmg z 270 (standardowo strzał w głowę) na 19 i się funkcja nie wykona
• Nie sprawdzasz czy inflictro czyli 2 arg w funkcji TakeDamage równa się attacker czyli 3 argument w tej funkcji. Po co to? Po to by rozróżnić dmg zadawane przez gracza ze standardowej broni od np. niestandardowej np. miny/kuszy/czegoś tam gdyż samo sprawdzenie damagebits nie wystarczy
• Funkcja cod_inflict_damage
nie służy do zabijania!!! Ta funkcja służy do zadawania indywidualnego dmg np. miny/kuszy itd
• Jakiś inny plugin może złapać dmg z cod_inflict_damage
i je zmniejszyć tak by już nie było śmiertelne przez co z 1/2 może się zrobić 1/(1/0) a tego chyba nie chcemy
• Nie ma najmniejszego sensu 2x pobierać broń gracza za pomocą get_user_weapon
wystarczy raz to samo się tyczy sprawdzania czy damagebits "ma w sobie" bit DMG_BULLET bo wystarczy raz
Poprawne 1/x masz tutaj: http://amxx.pl/topic/136292-prośba-o-klasę-scouter-zwykła/ 4 post
Nie chce mi się pisać tego parę razy pozwólcie że użyje czarodziejskich przycisków Ctrl+C & Ctrl+V

P350 twój kod zadziała ale ma w sobie dosyć duże błędy:
• Sprawdzanie czy dmg jest większe od 20 nie ma najmniejszego sensu gdyż jakiś inny plugin mógł zmniejszyć dmg z 270 (standardowo strzał w głowę) na 19 i się funkcja nie wykona
• Nie sprawdzasz czy inflictro czyli 2 arg w funkcji TakeDamage równa się attacker czyli 3 argument w tej funkcji. Po co to? Po to by rozróżnić dmg zadawane przez gracza ze standardowej broni od np. niestandardowej np. miny/kuszy/czegoś tam gdyż samo sprawdzenie damagebits nie wystarczy
• Funkcja cod_inflict_damage

• Jakiś inny plugin może złapać dmg z cod_inflict_damage

• Nie ma najmniejszego sensu 2x pobierać broń gracza za pomocą get_user_weapon

Poprawne 1/x masz tutaj: http://amxx.pl/topic/136292-prośba-o-klasę-scouter-zwykła/ 4 post