Prośba o klasę Scouter (Zwykła)
VeticK.
14.07.2014
Alelluja
14.07.2014
Proszę
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#define DMG_BULLET (1<<1)
new const nazwa[] = "Scouter";
new const opis[] = "Posiada Scout i z niego 1/2, 1/2 szansy na natychmiastowe zabicie z noza (PPM).";
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;
public plugin_init()
{
register_plugin(nazwa, "1.0", "Alelluja");
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(get_user_weapon(idattacker) == CSW_KNIFE && damagebits & DMG_BULLET && 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);
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;
}
VeticK.
14.07.2014
BlackPerfum
14.07.2014
Alelluja twój kod zadziałał by jeśli byś dodał sprawdzanie czy gracz posiada daną klasę ale ma w sobie dosyć duże błędy:
Zacznijmy od 1/2 ze scouta:
• 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
1/2 z kosy:
• Te same błędy co wyżej
• w twoim kodzie nie ma sprawdzania czy to jest ppm czy lpm gdyż sprawdzenie czy dmg jest większe od 20 nie ma najmniejszego sensu gdyż jakiś inny plugin mógł zwiększyć dmg z kosy i będziemy mieć także 1/2 z lpm lub jakiś inny plugin zmniejszy dmg i nie bedziemy mieć w ogóle 1/2 ani z lpm ani ppm
Do obu:
• 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/ a tego chyba nie chcemy
• Nie ma najmniejszego sensu 2x pobierać broń gracza za pomocą get_user_weapon wystarczy raz
Kod zadziała ale będziesz miał 1/2 z tylko z ppm jeśli żaden inny plugin nie ingeruje w czas między atakami z kosy ;D
Co do funkcji KillPlayer to jej opis znajdziesz tutaj
VeticK.
15.07.2014
A mógłbyś zrobić tą klasę na nowo, bo po Twojej mądrej odpowiedzi myślę, że aktualna klasa to lipa biorąc pod uwagę, że 1/2 z kosy nie zawsze będzie działać.
Użytkownik VeticK. edytował ten post 15.07.2014 07:53
BlackPerfum
15.07.2014
- w żaden sposób nie sprawdzasz czy dany atak był z ppm na nożu a to chcemy osiągnąć
- wykorzystanie tablicy z broniami w ten sposób jest irracjonalne i nie ma najmniejszego sensu to tak samo jak bym tej tablicy w ogóle nie zrobił a jedynie sprawdzał czy twoja zmienna bron_atakujacego równa się CSW_SCOUT lub CSW_KNIFE
- niepotrzebnie definiujesz stałą DMG_BULLET jeśli z niej nie kożystasz Poza tym na przyszłość dołączaj biblioteki (mówię o hlsdk_const.ini) a nie definiuj osobiście jeżeli chcesz komuś dawać kod bo jest dużo łatwiej go zmieniać
- I wszystkie moje błędy które wymieniłem w poprzednim poście
Większość tych błedów i wszystkie które wymieniłem w poprzednim poście także tyczą się kodu Pan Bartek
Dodatkowo wiedzcie że to nie wystarczy że kod działa bo:
- ma zawsze działać
- ma zawsze działać poprawnie
- nigdy ma działać niepoprawnie
Biorąc pod uwagę iż twój serwer to cod mod oraz to że klasa ma 1/2 z scouta to już jest za silna osobiście dał bym 1/3~6 i 1/2 z kosy z ppm dodatkowo wiedz o tym że mój kod zadziała a tym:A mógłbyś zrobić tą klasę na nowo, bo po Twojej mądrej odpowiedzi myślę, że aktualna klasa to lipa biorąc pod uwagę, że 1/2 z kosy nie zawsze będzie działać.
Nie musisz się przejmować bo to tak samo jak bym powiedział że inny plugin wyłącza amxx'a lub metamoda (nie crash'uje serwer a wyłącza samego) tzn. prawdopodobieństwo jest tak małe że jeszcze nie spotkałem żadnego serwerka na którym by był ten plugin ani samego pluginu dodatkowo pamiętaj że samemu wymieniłeś moce klasy jedynie wystarczy przeglądnąc czy w perkach nie masz mocy przyspieszające nie strzały a bicia z kosy. Nie znam innego sposobu którego nie da się zbugować od strony clienta dlatego używam tegoKod zadziała ale będziesz miał 1/2 z tylko z ppm jeśli żaden inny plugin nie ingeruje w czas między atakami z kosy ;D
Firehawk
15.07.2014
Przepraszam za błędy
Dopiero się uczę, ale chcę stać się lepszy
Dzięki za lekcję
Pan Bartek :)
15.07.2014
Poprawione z tymi statami co chciałeś . Śmiga testowałem na serwie powinno się podobać
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Załączone pliki
BlackPerfum
15.07.2014
To że ci działa nie oznacza że mu będzie!!! Poza tym twój kod nie uwzględnia najprostszych czynników zewnętrznych... Gracz dostanie perk ktry daje mu +10 dmg z kosy i już będzie miał także z lpm 1/2 Przeczytaj 10 razy 4 i 7 post potem swój kod...Poprawione z tymi statami co chciałeś . Śmiga testowałem na serwie powinno się podobać
Użytkownik BlackPerfum edytował ten post 15.07.2014 14:07
Pan Bartek :)
15.07.2014
Jezus człowieczku zrobiłem to co chciał. Czemu ty się tak do wszystkiego doczepiasz masakra czemu mu sam nie napiszesz jak tak wszystko perfekt wiesz? Nie chcę się? Już byś dawno te klasy napisał NAJLEPIEJ zamiast tak wszystkich upominać .Proszę cię dobrze ciesze się że ogarniasz AMXX lepiej ode mnie i innych ale przestaniesz takiego nadętego cwaniaczka zgrywać bo jest to irytujące. Zamiast napisać mu kod i pokazać już nawet nam jak to poprawnie zrobić to ty ino gnębisz i piszesz. Irytujący człowieku jesteś .
BlackPerfum
15.07.2014
Jezus człowieczku zrobiłem to co chciał.
Tego nie zrobiłeś poza tym twój kod jest wadliwy1/2 szansy na natychmiastowe zabicie z noza (PPM)
Czemu ty się tak do wszystkiego doczepiasz masakra czemu mu sam nie napiszesz jak tak wszystko perfekt wiesz? Nie chcę się? Już byś dawno te klasy napisał NAJLEPIEJ zamiast tak wszystkich upominać
Napisałem:Zamiast napisać mu kod i pokazać już nawet nam jak to poprawnie zrobić to ty ino gnębisz i piszesz. Irytujący człowieku jesteś .
To samo znajdziesz w 4 poście od góry
Nie rozumiem cię... Jedynie pokazuje wam błędy byście mogli się samodoskonalić oraz by pisany przez was kod był lepszy. Cwaniak Ciekawe jeszcze nikt mnie tak nigdy nie nazwał, ale że jestem irytującym to mi często mówiąProszę cię dobrze ciesze się że ogarniasz AMXX lepiej ode mnie i innych ale przestaniesz takiego nadętego cwaniaczka zgrywać bo jest to irytujące.
Użytkownik BlackPerfum edytował ten post 15.07.2014 20:02