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

AMXX.pl: Support AMX Mod X i SourceMod

»

Klasa
Modyfikacja klasy Kapitan 1/2 z awp

  • +
  • -
weedzonka - zdjęcie weedzonka 29.01.2014

Witam,

 

chciałbym by ktoś mi pomógł edytować klasę Kapitan(Klasa Premium) tak żeby miała 1/2 z awp, zrobiłem wszystko tak jak w poradniku, jednak jeszcze ani razu nie zabiło za jednym strzałem, a przy 1/2 powinno to być dość często

 

 

załączam sma kapitana

Załączone pliki

Odpowiedz

  • +
  • -
Tamagotchi - zdjęcie Tamagotchi 29.01.2014

1/1 natychmiastowe zabicie, 1/2 za 2 strzałem dopiero zabija ! 

Odpowiedz

  • +
  • -
silva - zdjęcie silva 29.01.2014

spróbuj

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <codmod>
#include <fun>
#include <hamsandwich>
#include <colorchat>

#define DMG_BULLET (1<<1) 

new bool:ma_klase[33];

new const nazwa[] = "Kapitan (Klasa Premium)";
new const opis[] = "1/2 szansy na zabicie awp, nie slychac jego krokow";
new const bronie = 1<<CSW_AWP | 1<<CSW_FAMAS;
new const zdrowie = 30;
new const kondycja = 30;
new const inteligencja = 0;
new const wytrzymalosc = 10;

public plugin_init() 
{
	register_plugin(nazwa, "1.0", "CS-FPG.pl");
	
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
}

public cod_class_enabled(id)
{
	if(!(get_user_flags(id) & ADMIN_LEVEL_H))
	{
		ColorChat(id, GREEN, "[Kapitan (Klasa Premium)]^x01 Nie masz uprawnien, aby uzywac tej klasy.")
		return COD_STOP;
	}
	
	set_user_footsteps(id, 1);
	return COD_CONTINUE;

}

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_AWP && 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

  • +
  • -
weedzonka - zdjęcie weedzonka 29.01.2014

czy zmieniłeś coś w kodzie? jeśli tak to zdradzisz co? bo ja widzę, żę tylko entery dałeś gdzieniegdzie :D

Odpowiedz

  • +
  • -
silva - zdjęcie silva 29.01.2014

http://amxx.pl/topic...o-pisania-klas/ użyłem gotowego skryptu i nadpisałem ponieważ błędu tam nie widziałem :D

Odpowiedz

  • +
  • -
weedzonka - zdjęcie weedzonka 29.01.2014

też korzystałem z tego tyle, że mój kod troche inaczej wyglądał. przetestuję i zobacze

 

Odpowiedz

  • +
  • -
Engi - zdjęcie Engi 29.01.2014

public TakeDamage powinien wyglądać tak:

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))
                return HAM_IGNORED;
               
        if(get_user_weapon(idattacker) == CSW_AWP && 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;
}

 
Po za tym, gdzie jest public cod_class_disabled który wyłącza ciche chodzenie przy zmianie klasy?
 
 

public cod_class_disabled(id)
{
ma_klase[id] = false;
set_user_footsteps(id, 0);
}

Pomijając fakt, że w class_enabled brakuje ma_klase[id] = true; ...
Więc nie dziw się że 1/2 z AWP nie działało.
 

public cod_class_enabled(id)
{
	if(!(get_user_flags(id) & ADMIN_LEVEL_H))
	{
		ColorChat(id, GREEN, "[Kapitan (Klasa Premium)]^x01 Nie masz uprawnien, aby uzywac tej klasy.")
		return COD_STOP;
	}
	
	set_user_footsteps(id, 1);
        ma_klase[id] = true;
	return COD_CONTINUE;

}
Odpowiedz

  • +
  • -
weedzonka - zdjęcie weedzonka 29.01.2014

 

 

#define DMG_BULLET (1<<1)

jeśli to usunę 

 

 

 

 

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))
                return HAM_IGNORED;
               
       
if(get_user_weapon(idattacker) == CSW_AWP && 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;
}

to jakim prawem ma to działać? wywala błąd 

 

 

codclass_kapitan.sma(49) : error 017: undefined symbol "DMG_BULLET"

Odpowiedz

  • +
  • -
Engi - zdjęcie Engi 29.01.2014

Małe zagapienie :D

Zedytowałem

Odpowiedz

  • +
  • -
weedzonka - zdjęcie weedzonka 29.01.2014

 
codclass_kapitan.sma(56) : error 017: undefined symbol "DMG_BULLET"
 
 
dalej to samo

Użytkownik weedzonka edytował ten post 29.01.2014 15:06
Odpowiedz

  • +
  • -
Engi - zdjęcie Engi 29.01.2014

Zapewne po usunięciu nie dodałeś z powrotem pod include tego "#define DMG_BULLET (1<<1)" ??

Odpowiedz

  • +
  • -
weedzonka - zdjęcie weedzonka 29.01.2014

poprawiłem, nie ma błędów, testuje w tej chwili

 

Odpowiedz

  • +
  • -
weedzonka - zdjęcie weedzonka 30.01.2014

no i wydaje mi się, że to dalej nie działa... jakieś pomysły?

Odpowiedz

  • +
  • -
Engi - zdjęcie Engi 30.01.2014

Przecież pisałeś na pw że działa, więc może jakiś item miał przeciwnik?

Odpowiedz

  • +
  • -
weedzonka - zdjęcie weedzonka 30.01.2014

 

 

Przecież pisałeś na pw że działa, więc może jakiś item miał przeciwnik?

co Ty za bajki z tym pw opowiadasz? nie na starcie nie działa, zabiera normalnie jak awp 

Odpowiedz

  • +
  • -
Engi - zdjęcie Engi 30.01.2014

Sory nie ten nick ;d
 
Podmień
 

cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

 
na
 

SetHamParamFloat(4, 9999.0)

Raczej nikt nie będzie miał +10k hp

Odpowiedz

  • +
  • -
weedzonka - zdjęcie weedzonka 31.01.2014

 

 

SetHamParamFloat(4, 9999.0)

 

możesz powiedzieć co oznaczają cyferki?

Odpowiedz

  • +
  • -
Engi - zdjęcie Engi 31.01.2014

SetHamParamFloat - "Funkcja zmienia w locie dane wyjściowe."
4 - oznacza czwarty parametr od lewej, w tym wypadku oznacza to że chcemy zmienić parametr "damage"

9999.0 - zmiana "damage" na 9999.0 czyli za każdym trafieniem (nie ważne w co) obrażenia będą równe 9999 (musi być w float dlatego jest 9999.0 a nie 9999)

 

Więcej w dokumentacji: SetHamParamFloat

Odpowiedz

  • +
  • -
weedzonka - zdjęcie weedzonka 02.02.2014

dzięki działa! do zamknięcia ;)

Odpowiedz