←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Otrzymujący obrażenia nie dostaje XP.

  • +
  • -
Droso's Photo Droso 04.03.2012

Witam mam problem otóż mam moda i chciałem zrobić taki myk, że jak gracz włączy sobie pancerz i ktoś go uderzy z bron to zmniejsza mu obrażenia (dzieli obrażenia) im większy lvl pancerza tym bardziej zmniejsza dmg.
Otóż nie działa anie zmniejszanie dmg a ni nie daje doswiadczenia
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_alive(this) || !is_user_connected(this) || !is_user_connected(idattacker) || get_user_team(this) == get_user_team(idattacker) || !klasa_gracza[idattacker])
  return HAM_IGNORED;

new health = get_user_health(this);
new weapon = get_user_weapon(idattacker);

/*Level 0*/
if(energia[this] > 100 && pancerz[this] == true && poziom_gracza[this] == 0)
{
  damage /= 1.5
  energia[this] -= 120
  doswiadczenie_gracz[this] += 10
}
/*Level 1*/
if(energia[this] > 100 && pancerz[this] == true && poziom_gracza[this] == 1)
{
  damage /= 1.55
  energia[this] -= 115
  doswiadczenie_gracz[this] += 10
}
/*Level 2*/
if(energia[this] > 100 && pancerz[this] == true && poziom_gracza[this] == 2)
{
  damage /= 1.6
  energia[this] -= 110
  doswiadczenie_gracz[this] += 10
}
/*Level 3*/
if(energia[this] > 100 && pancerz[this] == true && poziom_gracza[this] == 3)
{
  damage /= 1.65
  energia[this] -= 105
  doswiadczenie_gracz[this] += 10
}

/*Level 4*/
if(energia[this] > 100 && pancerz[this] == true && poziom_gracza[this] == 4)
{
  damage /= 1.7
  energia[this] -= 100
  doswiadczenie_gracz[this] += 10
}

/*Level 5*/
if(energia[this] > 100 && pancerz[this] == true && poziom_gracza[this] == 5)
{
  damage /= 1.75
  energia[this] -= 95
  doswiadczenie_gracz[this] += 10
}

/*Level 6*/
if(energia[this] > 100 && pancerz[this] == true && poziom_gracza[this] == 6)
{
  damage /= 1.8
  energia[this] -= 90
  doswiadczenie_gracz[this] += 10
}

/*Level 7*/
if(energia[this] > 100 && pancerz[this] == true && poziom_gracza[this] == 7)
{
  damage /= 1.85
  energia[this] -= 90
  doswiadczenie_gracz[this] += 10
}

/*Level 8*/
if(energia[this] > 100 && pancerz[this] == true && poziom_gracza[this] == 8)
{
  damage /= 1.9
  energia[this] -= 90
  doswiadczenie_gracz[this] += 10
}

/*Level 9*/

if(energia[this] > 100 && pancerz[this] == true && poziom_gracza[this] == 9)
{
  damage /= 1.9
  energia[this] -= 86
  doswiadczenie_gracz[this] += 11
}


/*Level 10*/
if(energia[this] > 100 && pancerz[this] == true && poziom_gracza[this] == 10)
{
  damage /= 1.95
  energia[this] -= 85
  doswiadczenie_gracz[this] += 10
}

/*Level 11*/
if(energia[this] > 100 && pancerz[this] == true && poziom_gracza[this] == 11)
{
  damage /= 1.9
  energia[this] -= 80
  doswiadczenie_gracz[this] += 10
}

/*Level 12*/
if(energia[this] > 100 && pancerz[this] == true && poziom_gracza[this] == 12)
{
  damage /= 2.0
  energia[this] -= 80
  doswiadczenie_gracz[this] += 10
}

if(weapon == CSW_KNIFE && KNIFE == 1){


   damage += 35

}

if(health < 2)
  return HAM_IGNORED;



SetHamParamFloat(4, damage);

return HAM_IGNORED;

}
P.s testuje na PodBotach
Quote

  • +
  • -
Zapalka's Photo Zapalka 04.03.2012

Zapoznaj się lepiej z parametrami funkcji TakeDamage :)
idattacker to id gracza atakującego, nie (tak jak ty podałeś) this.
Quote

  • +
  • -
Droso's Photo Droso 04.03.2012

Widzę twoje umiejętności są genialne

, że jak gracz włączy sobie pancerz i ktoś go uderzy z broni to zmniejsza mu obrażenia
I ? To chyba this
Nieważne chyba sobie poradziłem
Quote

  • +
  • -
Nakupenda.'s Photo Nakupenda. 04.03.2012

od razu do optymalizacji: zamień to na switcha albo conajmniej na else if'y
Quote