←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Takedamage - ile zadałem obrażeń

Nenczoks - zdjęcie Nenczoks 04.03.2012

Witam,

Chciałbym zrobić tak, że tyle ile zadałem obrażeń to tyle mi wpisuje się punktów. Działa to, ale nie tak jak trzeba.

public bacon_takedamage_player(victim, inflictor, attacker, Float:damage, damagetype)
{
if(damagetype & DMG_GENERIC || victim == attacker || !is_user_alive(victim) || !is_user_connected(attacker))
return HAM_IGNORED

if(!g_gamestarted || (!g_zombie[victim] && !g_zombie[attacker]) || ((damagetype & DMG_HEGRENADE) && g_zombie[attacker]))
return HAM_SUPERCEDE

if(!g_zombie[attacker])
{
static pclass
pclass = g_player_class[victim]
new origin[3]
get_user_origin(victim, origin)

damage *= (damagetype & DMG_HEGRENADE) ? g_class_data[pclass][DATA_HEDEFENCE] : g_class_data[pclass][DATA_DEFENCE]
SetHamParamFloat(4, damage)

if(damagetype & (1<<1))
{
point[attacker]+=floatround(damage)
set_hudmessage(0, 255,0, _, _, 0, 1.0, _)
show_hudmessage(attacker, "Punktow: %i",point[attacker]);
return HAM_HANDLED;
}
}


i niestety, problem polega na tym, że otrzymuję 2x mniej punktów niż je zadałem. Przykład, zadałem 10 obrażeń, to wlicza mi zamiast 10 to 5. Sądzę, że to wszystko przez:
damage *= (damagetype & DMG_HEGRENADE) ? g_class_data[pclass][DATA_HEDEFENCE] : g_class_data[pclass][DATA_DEFENCE]
  SetHamParamFloat(4, damage)

ale jak to naprawić? Może return HAM_HANDLED ma coś z tym też wspólnego ? Pomożecie mi naprawić, aby zadane obrażenia = punty?

2. Jak usunąć, aby nie pisało na serwerze gdy najedziemy na danego gracza Friend: nick jego w lewym dolnym rogu? Po prostu aby nic nie pisało. Jakiś cvar?
Użytkownik Nenczoks edytował ten post 04.03.2012 15:37
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 04.03.2012

przenieś
if(damagetype & (1<<1))
  {
   point[attacker]+=floatround(damage)
   set_hudmessage(0, 255,0, _, _, 0, 1.0, _)
   show_hudmessage(attacker, "Punktow: %i",point[attacker]);
   return HAM_HANDLED;
  }
powyżej
damage *= (damagetype & DMG_HEGRENADE) ? g_class_data[pclass][DATA_HEDEFENCE] : g_class_data[pclass][DATA_DEFENCE]
Odpowiedz

Nenczoks - zdjęcie Nenczoks 04.03.2012

Niestety, teraz spowodowalo to, że zadawałem obrażenia z kosmosu.
Usunąłem return HAM_HANDLED i teraz zadałem powiedźmy 600 obrażeń, to mam 1700 punktów.
HAM_OVERRIDE spowodował, że zadawałem obrażenia również z kosmosu.
HAM_IGNORED zrobił też siekę, zadawałem dużo obrażeń, ale otrzymałem mało punktów. Dodam, że to event:

RegisterHam(Ham_TakeDamage, "player", "bacon_takedamage_player")

nie

RegisterHam(Ham_TraceAttack, "player"... - bo tutaj to dopiero maniana była. Chyba, że tutaj mi pomożecie zrobić w tym.
Użytkownik Nenczoks edytował ten post 04.03.2012 16:15
Odpowiedz

Nenczoks - zdjęcie Nenczoks 05.03.2012

F5, minęło 24 h.
Odpowiedz

Nenczoks - zdjęcie Nenczoks 07.03.2012

F5.
Odpowiedz