Jak usunąć1/1 z wyvranej broni
NervusAngello
23.12.2011
Cześć .WIęc zrobilem klase w generatorze klas ii wybralem dwie bronie ..(Scout i deagl) ii z obu nich mam 1/1 ... ii tutaj moje pytanie .. jak usunąć 1/1 z deagla .. żeby poprostu zabierał normalne dmg.. ; D
NervusAngello
23.12.2011
a czy mół byś mi raczej powiedzieć. : D bo planuje robić pare klas zz takimi funkcjami .. ii niechciałbym abym przy każdej klasie musiał się zwracać do kogoś o pomoc : ) Odnawiam..
Edited by CostaLaVie, 24.12.2011 09:53.
Edited by CostaLaVie, 24.12.2011 09:53.
Mr. Dziwny
25.12.2011
Proszę to jest wypowiedź Spid3ra w jednym z tematów w tym dziale, myślę że, powinna tobie pomóc.
Edited by Proxma, 25.12.2011 03:23.
#include <xxx>
dodajesz
#define DMG_BULLET (1<<1)
pod
new const wytrzymalosc = xx;
dodajesz
new bool:ma_klase[33];
do public plugin_init()
dodajesz
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
pod public plugin_init pod klamrą }
dodajesz
public cod_class_enabled(id)
{
ma_klase[id] = true;
}
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
i na koncu
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_SCOUT && !random(3) && damagebits & DMG_BULLET)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
return HAM_IGNORED;
}
w miejscu gdzie masz
if(get_user_weapon(idattacker) == CSW_SCOUT && !random(3) && damagebits & DMG_BULLET)
zmieniasz na bron CSW_SCOUT (podczas wpisywania tego w amx studio pokaże Ci się listę broni) ktora ma miec losowe zabójstwo, a żeby zwiększyć lub zmniejszyć zmieniasz tu cyferkę !random(3)
Edited by Proxma, 25.12.2011 03:23.
Enson
25.12.2011
W generatorze dodajac klasie kilka broni i dajac jej 1/x z wybranej broni masz wtedy 1/x z kazdej broni ktora przydzieliles klasie.
Przyklad:
A by tego uniknac mozesz zrobic w ten sposob:
W tym momencie masz 1/1 z scouta. Aby zrobic np. 1/3 to w tej linijce:
Dopisujesz random_num(1, 3) == 1
bedzie to wygladalo w ten sposob:
cufra 3 to wspolczynnik ile chcesz miec szans na uderzenie z danej broni czyi w tym przypadku 1/3
Przyklad:
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#include <cstrike>
new const nazwa[] = "";
new const opis[] = "";
new const bronie = (1<<CSW_SCOUT)|(1<<CSW_DEAGLE);
new const zdrowie = 0;
new const kondycja = 0;
new const inteligencja = 0;
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", "fwTakeDamage_JedenZ");
}
public cod_class_enabled(id)
{
ma_klase[id] = true;
}
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
public fwTakeDamage_JedenZ(this, idInf, idAtt, Float:fDmg, dmgBits){
if(!is_user_alive(idAtt) || !ma_klase[idAtt] || !(dmgBits & (1<<1) ) || random_num(1, 1) != 1 )
return HAM_IGNORED;
cs_set_user_armor(this, 0, CS_ARMOR_NONE);
SetHamParamFloat(4, float(get_user_health(this) + 1));
return HAM_HANDLED;
}
A by tego uniknac mozesz zrobic w ten sposob:
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#include <cstrike>
new const nazwa[] = "";
new const opis[] = "";
new const bronie = (1<<CSW_SCOUT)|(1<<CSW_DEAGLE);
new const zdrowie = 0;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;
new bool:ma_klase[33];
#define DMG_BULLET (1<<1)
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 cod_class_enabled(id)
{
ma_klase[id] = true;
}
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
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)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
}
return HAM_IGNORED;
}
W tym momencie masz 1/1 z scouta. Aby zrobic np. 1/3 to w tej linijce:
if(weapon == CSW_SCOUT && damage > 20.0)
Dopisujesz random_num(1, 3) == 1
bedzie to wygladalo w ten sposob:
if(weapon == CSW_SCOUT && damage > 20.0 && random_num(1, [b]3[/b]) == 1)
cufra 3 to wspolczynnik ile chcesz miec szans na uderzenie z danej broni czyi w tym przypadku 1/3