←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Problem event śmierci (lub ham_killed) [Ta...

Locked

  • +
  • -
Droso's Photo Droso 18.06.2012

Witam, użytkowników, tak to znowu ja ze swoimi problemami, z którymi nie mogę sobie poradzić.
W czym tkwi problem? Mam event DeathMsg pobrane vid, kid, weapon, nie ważne, w tej funkcji daję 50 xp za zabicie, + text
i tu jest problem, jak kogoś zabiję funkcja wywołuje się kilka razy, czasami raz, czasami kilka razy. Przez co dostajemy kilka razy XP,
oraz spam na chacie.

Nie wiem czy to w czymś pomoże, ale było 10 graczy (ze mną) i funkcja wykonała się 10 razy. (10 razy spam na chatcie), próbowałem także ham_killed to samo.

Testowane: na botach, i na 1 graczu (na 1 graczu też był spam)


Flaga eventu : "a"
register_event("DeathMsg", "Death", "a");
Quote

  • +
  • -
G[o]Q's Photo G[o]Q 18.06.2012

a mozesz pokazać caly kod ?
Quote

  • +
  • -
dasiek's Photo dasiek 18.06.2012

Pokaż całego Death(id)
Quote

  • +
  • -
Droso's Photo Droso 18.06.2012

public Death()
{
new attacker = read_data(1);
new id = read_data(2);
new bron = get_user_weapon(attacker)

if(!is_user_alive(attacker) || !is_user_connected(attacker))
return PLUGIN_CONTINUE;


if(killstreak_radar[attacker] >= 3){
  killstreak_radar[attacker] = 0
}

if(killstreak_przeciazenie[attacker] >= 5){
  killstreak_przeciazenie[attacker] = 0
}

if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker] && bron != CSW_KNIFE)
{
 
  doswiadczenie_gracz[attacker] += nowe_doswiadczenie;
  doswiadczenie_graczam[attacker] += nowe_doswiadczenie;
 
  set_hudmessage(255, 255, 0, -1.0, 0.05, 0, 6.0, 3.0,_,_, 2)
  show_hudmessage(attacker, "+ %i za zabojstwo", nowe_doswiadczenie)
 
  killstreak_radar[attacker]++;
  killstreak_przeciazenie[attacker]++;
 
  if(transfer_energii[attacker])
  energia[attacker] = 1000;
 
  if(uzupelnienie_pakietu[attacker])
  ammo(attacker)
 
 
 
}

if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker] && bron == CSW_KNIFE){
 
  set_hudmessage(255, 255, 0, -1.0, 0.05, 0, 6.0, 3.0,_,_, 2)
  show_hudmessage(attacker, "+ %i za zabojstwo ^n + %i za KNIFE KILL", nowe_doswiadczenie, nowe_doswiadczenie2)
 
  doswiadczenie_gracz[attacker] += nowe_doswiadczenie
  doswiadczenie_gracz[attacker] += nowe_doswiadczenie2
 
  doswiadczenie_graczam[attacker] += nowe_doswiadczenie;
  doswiadczenie_graczam[attacker] += nowe_doswiadczenie2
  killstreak_radar[attacker]++;
  killstreak_przeciazenie[attacker]++;
 
  if(transfer_energii[attacker])
  energia[attacker] = 1000;
 
 
}

if(killstreak_radar[attacker] >= 3){
 
  new name [32]
  get_user_name(attacker, name, 31)
 
 
 
 
  for(new i; i<=get_playersnum(); i++){
  
   if(get_user_team(i) == get_user_team(attacker)){
    remove_task(i+RADAR_WYL);
    set_task(2.0, "SKANOWANIE", i+RADAR_KS, _, _, "b");
    set_task(60.0, "SKANOWANIE_WYL", i+RADAR_WYL);
    ColorChat(i, TEAM_COLOR, "[KillStreak] ^x01 %s zdobyl potrojnego killstreaka, masz dzięki temu max. radar na 60 sec", name);
   }
  }
}


if(killstreak_przeciazenie[attacker] >= 5){
 
  fm_set_user_health(attacker, g_killstreak_p);
  new name [32]
  get_user_name(attacker, name, 31)
 
  ColorChat(0, GREEN, "[KillStreak] ^x01 %s zdobyl 5 killstreaka, otrzymal przeciazonego nanopancerza [%d hp]", name, g_killstreak_p);
  energia[attacker] = 1000;
 
  przeciazenie[attacker] = true;
}

killstreak_radar[id] = 0; // zerowanie killstreaku radaru
killstreak_przeciazenie[id] = 0; // zerowanie killstreaku przeciazenie
przeciazenie[id] = false
maskowanie[id] = false;
pancerz[id] = false;
OnNVGToggle[id] = false;
remove_task(id+RADAR_KS);
SprawdzPoziom(attacker);

return PLUGIN_CONTINUE;
}
Cały kod nie za bardzo, chyba, że PW moda i tak publikuję ;D
Quote

Gość_21977_* 19.06.2012

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked