Robie wszystko tak jak tutaj co do kroczku:
Jak pewnie większość z Was wie, mag w swoim opisie ma coś takiego
Cytat
Strzelajac z pistoletu zamrazasz wroga i zabierasz mu 5hp co 2 sek przez 15 sek.
ale tak naprawdę te zabieranie hp co 2 sek nie działa. Pokażę jak to naprawić.
Spoiler
Znajdź i usuń
new attacker1
znajdź
Spoiler
agi=(BASE_SPEED / 2)
set_speedchange(id)
if(DemageTake[id]==0)
{
DemageTake[id]=1
set_task(11.0, "funcReleaseVic", id)
set_task(11.0, "funcReleaseVic2", id)
set_task(2.0, "funcDemageVic", id+GLUTON)
}
zamień na
Spoiler
if(DemageTake[id] == 0) {
DemageTake[id] = 1;
new obrazenia = 5; // tutaj zmieniasz wartość obrażeń zadawanych co 2 sek.
new data[3];
data[0] = attacker_id;
data[1] = weapon;
data[2] = obrazenia;
set_task(11.0, "funcReleaseVic", id);
set_task(11.0, "funcReleaseVic2", id);
set_task(2.0, "funcDemageVic", id+GLUTON, data, 3);
}
set_speedchange(id);
znajdź
Spoiler
public funcDemageVic(id,attacker)
{
id-=GLUTON
if(get_user_health(id)>10)
set_task(2.0, "funcDemageVic", id+GLUTON)
DoDamage(id, attacker1, 5);
}
zamień na
Spoiler
public funcDemageVic(data[], id) {
id -= GLUTON;
new attacker = data[0];
new weapon = data[1];
new damage = data[2];
if(get_user_health(id)>10)
set_task(2.0, "funcDemageVic", id+GLUTON, data, 3);
new weaponname[32];
get_weaponname(weapon, weaponname, 31);
replace(weaponname, 31, "weapon_", "");
DoDamage(id, damage, attacker, weaponname);
}
znajdź
Spoiler
DoDamage(iTargetID, iShooterID, iDamage/*, iDamageCause, bIsWeaponID = false, iHeadShot = 0*/)
{
if(is_user_connected(iTargetID)&&is_user_connected(iShooterID))
if ( is_user_alive(iTargetID))
{
new bool:bPlayerDied = false;
new iHP = get_user_health(iTargetID);
if ( ( iHP - iDamage ) <= 0 )
bPlayerDied = true;
if (bPlayerDied)
{
// engine.inc set_msg_block function
//set_msg_block(g_iGameMsgDeath, BLOCK_ONCE);
user_kill(iTargetID, 1);
}
else
change_health(iTargetID,-iDamage,0,"")
new sShooterName[32];
get_user_name(iShooterID, sShooterName, 31);
if (bPlayerDied)
{
if ( iShooterID != iTargetID )
{
if ( get_user_team(iShooterID) != get_user_team(iTargetID) )
set_user_frags(iShooterID, get_user_frags(iShooterID) + 1);
else
set_user_frags(iShooterID, get_user_frags(iShooterID) - 1);
//LogKill(iShooterID, iTargetID, sWeaponOrMagicName);
}
//AddXP(iShooterID, BM_XP_KILL, iTargetID); // bmxphandler.inc
award_item(iShooterID,0)
award_kill(iShooterID,iTargetID)
add_respawn_bonus(iTargetID)
add_bonus_explode(iTargetID)
add_barbarian_bonus(iShooterID)
if (player_class[iShooterID] == Barbarzynca)
refill_ammo(iShooterID)
}
}
}
zamień na
Spoiler
public DoDamage(id, iDamage, attacker, weapon[]) {
if(is_user_connected(id) && is_user_alive(id) && is_user_connected(attacker) && freeze_ended) {
change_health(id, -iDamage, attacker, weapon);
if(get_user_health(id)-iDamage <= 0) {
add_respawn_bonus(id);
add_bonus_explode(id);
add_barbarian_bonus(attacker);
if(player_class[attacker] == Barbarzynca)
refill_ammo(attacker);
set_renderchange(attacker);
}
}
}
Przy tym ostatnim tylko nie wiem czy aby na pewno musi być ten "public", ale w każdym razie tak też będzie działać. Przy okazji po raz drugi podziękowania dla Pavulona i R3Xa ;] za wytłumaczenie co i jak z przenoszeniem w tasku więcej niż tylko id.
i wywala mi taki bład proszę o pomoc
of corse + poleci