←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] pytanie dotyczace generatora...

Zablokowany

ArCAno - zdjęcie ArCAno 22.12.2013

witam.

otóż chce zrobic klase na COD MOD.

klasa ma posiadac 1/6 usp, 1/14 m4a1 i 1/3 z he

w generatorze jest 1/x ZE WSZYSTKICH..

moglby ktos podrzucic lub wytlumaczyc jak 1/x z brońmi zrobic ?

nie chce, by ktos pisal, ze ja ci to zrobie badz cos w tym stylu, bo mam wiecej klas do zrobienia i chcialbym sie nauczyc.

za wszelki trud dam +

Odpowiedz

  • +
  • -
FORMOZA - zdjęcie FORMOZA 22.12.2013

To tak.. ;)

 

#define DMG_BULLET (1<<1)

rejestrujesz:
 

RegisterHam(Ham_TakeDamage, "player", "TakeDamage");

a potem

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_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_SCOUT && damagebits & DMG_BULLET && random_num(1,4) == 1)
		cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
		
	return HAM_IGNORED;
}

W miejsce CSW_SCOUT dajesz z jakiej broni np CSW_M4A1 

A szansa np 1\4 to random_num(1,4) zamiast 4 dajesz 2 i bedzie 1 na 2 ;)

 

Odpowiedz

vaulT - zdjęcie vaulT 22.12.2013

w

plugin_init()

 

dodajesz:

    RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage_JedenZ");

 

Na koniec sma twojej klasy dodaj

public fwTakeDamage_JedenZ(this, idInf, idAtt, Float:fDmg, dmgBits){
    if(!is_user_alive(idAtt) || !ma_perk[idAtt] || !(dmgBits & (1<<1) ) || random_num(1, 5) != 1 )
        return HAM_IGNORED;

    new weapon = get_user_weapon(idAtt);
    
    if(weapon == CSW_M4A1)    
        SetHamParamFloat(4, float(get_user_health(this) + 1));
    

    return HAM_HANDLED;
}

 

i teraz objasnienie:

random_num(1, 5) != 1 )

 

tutaj masz szanse 1 na 5.. mozesz sobie zmienic na ile chcesz

 

a tutaj masz podany warunek z danej broni ktora ma miec % szansy na zabicie natychmiastowe

    if(weapon == CSW_M4A1) 

 

Tu masz nazwy wszystkich broni jak mozesz dodac :

 

http://amxx.pl/topic...ive-item-speed/

Odpowiedz

  • +
  • -
FORMOZA - zdjęcie FORMOZA 22.12.2013


    new weapon = get_user_weapon(idAtt);
    
    if(weapon == CSW_M4A1)  


Można i tak ale jeśli korzystasz do jednej zmiennej to wystarczyłoby:
 
if(get_user_weapon(idAtt) == CSW_M4A1)  

;)

Odpowiedz

vaulT - zdjęcie vaulT 22.12.2013


klasa ma posiadac 1/6 usp, 1/14 m4a1 i 1/3 z he

 

Sugerowalem sie na tym :)

Odpowiedz

ArCAno - zdjęcie ArCAno 22.12.2013

dobra, tu macie podany tylko o jednej broni (M4), a zeby dodac usp 1/6, to wystarczy to 

public fwTakeDamage_JedenZ(this, idInf, idAtt, Float:fDmg, dmgBits){
    if(!is_user_alive(idAtt) || !ma_perk[idAtt] || !(dmgBits & (1<<1) ) || random_num(1, 5) != 1 )
        return HAM_IGNORED;

    new weapon = get_user_weapon(idAtt);
    
    if(weapon == CSW_M4A1)    
        SetHamParamFloat(4, float(get_user_health(this) + 1));
    

    return HAM_HANDLED;
}
 

skopiowac i zmieni dane ?

Odpowiedz

  • +
  • -
FORMOZA - zdjęcie FORMOZA 22.12.2013

Jeśli chodzi ci zeby bylo i z m4 i usp to tak:

 

public fwTakeDamage_JedenZ(this, idInf, idAtt, Float:fDmg, dmgBits){
    if(!is_user_alive(idAtt) || !ma_perk[idAtt] || !(dmgBits & (1<<1) ) || random_num(1, 5) != 1 )
        return HAM_IGNORED;

    new weapon = get_user_weapon(idAtt);
    
    if(weapon == CSW_M4A1 || weapon == CSW_USP)    
        SetHamParamFloat(4, float(get_user_health(this) + 1));
    

    return HAM_HANDLED;
}
Odpowiedz

ArCAno - zdjęcie ArCAno 22.12.2013

czy mi sie wydaje, czy jest usp i m4 1/6 ?

Odpowiedz

vaulT - zdjęcie vaulT 22.12.2013

 

Jeśli chodzi ci zeby bylo i z m4 i usp to tak:

 

Tylko ze teraz m4a1 i usp jest z szansa 1 na 5 a on chcial usp z 1 na 6..

Jezeli chcesz z rozna szansa na natychmiastowe zabicie gracza to chyba takie rozwiazanie jest :

public fwTakeDamage_JedenZ(this, idInf, idAtt, Float:fDmg, dmgBits){
	if(!is_user_alive(idAtt) || !ma_perk[idAtt] || !(dmgBits & (1<<1) ))
		return HAM_IGNORED;
	
	new weapon = get_user_weapon(idAtt);
	
	if(weapon == CSW_M4A1) 
	{
		if(random_num(1, 5) == 1}
		SetHamParamFloat(4, float(get_user_health(this) + 1));
	}
	if(weapon == CSW_USP)
	{
		if(random_num(1, 6) == 1}
		SetHamParamFloat(4, float(get_user_health(this) + 1));
	}
	
	return HAM_HANDLED;
}

Użytkownik vaulT edytował ten post 22.12.2013 19:49
Odpowiedz

ArCAno - zdjęcie ArCAno 22.12.2013

vaulT, to jest pewne, czy tylko tak Ci sie wydaje ?

Odpowiedz

  • +
  • -
RasiaQ - zdjęcie RasiaQ 22.12.2013

My się chyba znamy ;x

http://amxx.pl/topic...broni-w-klasie/

 

Dla granatów

 

Pod wszystkimi include dodajesz:

#define DMG_HEGRENADE (1<<24)

I warunek:

if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_HEGRENADE && damagebits & DMG_HEGRENADE && random_num(1, x) == 1)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

Wszystko robisz tak samo jak w poradniku. Link wyżej.

 

@EDIT

Najprostsza klasa 1/x z M4 i 1/x z granata:

Spoiler

Użytkownik RasiaQ edytował ten post 22.12.2013 19:56
Odpowiedz

vaulT - zdjęcie vaulT 22.12.2013


vaulT, to jest pewne, czy tylko tak Ci sie wydaje ?

 

Po kodzie wychodzi na to ze powinno dzialac.. ale najlepiej sprawdzic badz niech ktos inny to sprawdzi

Odpowiedz

ArCAno - zdjęcie ArCAno 22.12.2013

dzięki za pomoc ;)

Odpowiedz

ArCAno - zdjęcie ArCAno 23.12.2013

dobra, zrobilem klase przez notatnik, jak dostac plik sma lub amx tej klasy ?

Odpowiedz

  • +
  • -
FORMOZA - zdjęcie FORMOZA 23.12.2013

Plikiem sma można nazwać to co zrobiłeś w notatniki wystarczy, że zapiszesz w notatniku z roszerzeniem *.sma w kodowaniu ASCII ;)

A ten plik sie kompiluje możesz tutaj: amxx.pl/kompilator

Albo kompilować lokalnie :)

Ps. Po kompilacji 'dostaniesz' plik *.amxx 

Odpowiedz

ArCAno - zdjęcie ArCAno 23.12.2013

dzięki za pomoc. ;-)

Odpowiedz

ArCAno - zdjęcie ArCAno 23.12.2013

Plikiem sma można nazwać to co zrobiłeś w notatniki wystarczy, że zapiszesz w notatniku z roszerzeniem *.sma w kodowaniu ASCII

nie mam kodowania ASCII 

Odpowiedz

  • +
  • -
FORMOZA - zdjęcie FORMOZA 23.12.2013


nie mam kodowania ASCII 

:facepalm:  Każdy ma, to chyba nawet domyślnie się zapisuje w ASCII... (poczytaj tu http://pl.wikipedia.org/wiki/ASCII)

Zapisz z rozszerzeniem *.sma i skompiluj ;) i będzie oki

Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 23.12.2013

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany