←  Prośby o Klasę/Perk

AMXX.pl: Support AMX Mod X i SourceMod

»

Klasa
Prośba o klasę Scouter (Zwykła)

  • +
  • -
VeticK. - zdjęcie VeticK. 14.07.2014

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;
Odpowiedz

  • +
  • -
Alelluja - zdjęcie 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;
}

Odpowiedz

  • +
  • -
VeticK. - zdjęcie VeticK. 14.07.2014

codclass_Scouter.sma(56) : error 017: undefined symbol "ma_klase"
codclass_Scouter.sma(56) : warning 215: expression has no effect
codclass_Scouter.sma(56) : error 001: expected token: ";", but found "]"
codclass_Scouter.sma(56) : error 029: invalid expression, assumed zero
codclass_Scouter.sma(56) : fatal error 107: too many error messages on one line
Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie 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/d245777abca64ece2d5d7ca0d19fddb6.png 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

Spoiler

Co do funkcji KillPlayer to jej opis znajdziesz tutaj

Odpowiedz

  • +
  • -
VeticK. - zdjęcie 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
Odpowiedz

  • +
  • -
Firehawk - zdjęcie Firehawk 15.07.2014

Sprawdź to :D

Załączone pliki

Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 15.07.2014

Firehawk sad.png Czytaj posty zanim coś na piszesz!!! Popełniłeś wszystkie błędy które wytknełem przedmówcy ale dodatkowo:
- 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 biggrin.png 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
 

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ć.

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:

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

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 tego
Odpowiedz

  • +
  • -
Firehawk - zdjęcie Firehawk 15.07.2014

Przepraszam za błędy :(

Dopiero się uczę, ale chcę stać się lepszy ^^

Dzięki za lekcję :D

Odpowiedz

  • +
  • -
Pan Bartek :) - zdjęcie Pan Bartek :) 15.07.2014

Poprawione  z tymi statami co chciałeś :) . Śmiga testowałem na serwie  powinno się podobać :D

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Załączone pliki

Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 15.07.2014

Poprawione  z tymi statami co chciałeś . Śmiga testowałem na serwie  powinno się podobać

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 haha.gif Przeczytaj 10 razy 4 i 7 post potem swój kod...
Użytkownik BlackPerfum edytował ten post 15.07.2014 14:07
Odpowiedz

  • +
  • -
Pan Bartek :) - zdjęcie 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ś .

Odpowiedz

  • +
  • -
BlackPerfum - zdjęcie BlackPerfum 15.07.2014

Jezus człowieczku zrobiłem to co chciał.

1/2 szansy na natychmiastowe zabicie z noza (PPM)

Tego nie zrobiłeś poza tym twój kod jest wadliwy
 

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ć

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ś .

Napisałem:
Spoiler

To samo znajdziesz w 4 poście od góry

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.

Nie rozumiem cię... Jedynie pokazuje wam błędy byście mogli się samodoskonalić oraz by pisany przez was kod był lepszy. Cwaniak haha.gif Ciekawe jeszcze nikt mnie tak nigdy nie nazwał, ale że jestem irytującym to mi często mówią
Użytkownik BlackPerfum edytował ten post 15.07.2014 20:02
Odpowiedz