[ROZWIĄZANE] pytanie dotyczace generatora...
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 +
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
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 :
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)
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 ?
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; }
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
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:
Użytkownik RasiaQ edytował ten post 22.12.2013 19:56
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
ArCAno 23.12.2013
dobra, zrobilem klase przez notatnik, jak dostac plik sma lub amx tej klasy ?
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
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
FORMOZA
23.12.2013
nie mam kodowania ASCII
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
dasiek
23.12.2013
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL