←  Prośby o modyfikacje silników/klas/perków

AMXX.pl: Support AMX Mod X i SourceMod

»

Klasa
Dodanie 1/2 z Noża do klasy Scouter

  • +
  • -
VeticK.'s Photo 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;
}

 

Quote

Oporowiec.'s Photo Oporowiec. 15.07.2014

sprawdź, nie obiecuje, że działa.

Attached Files

Quote

  • +
  • -
BlackPerfum's Photo 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 haha.gif
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
Quote