←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Stary
Sprawdzanie, czy gracz zabił z rakiety.

  • +
  • -
Sniper Elite - zdjęcie Sniper Elite 14.05.2012

Witam.
Jest jakiś sposób aby sprawdzić czy gracz zabił kogoś z miny, rakiety lub dynamitu i wtedy jaka zmienna ++?

Dzięki za pomoc.
Odpowiedz

  • +
  • -
ogieR8 - zdjęcie ogieR8 14.05.2012

Jak dla mnie to tworzenie zmiennej globanej

new zmienna[33];


A potem w publicach, gdzie następuję zabicie zabicie z w/w przedmiotów

zmienna[index]++


Pozdrawiam.
Użytkownik ogieR- edytował ten post 14.05.2012 18:11
Odpowiedz

  • +
  • -
Sniper Elite - zdjęcie Sniper Elite 15.05.2012

Tylko, że takowej funkcji nie ma.
Sprawdzę warunek gdy hp jest mniejsze od obrażeń i wtedy zmienną ++, ale to jutro.
Odpowiedz

  • +
  • -
ogieR8 - zdjęcie ogieR8 16.05.2012

Jak to nie ma ? Musi być, daj mi Twój kod z rakiety/miny itd, jak dasz to w odpowiednim miejscu wsadzę tam zmienną[index]++, a musi być, bo przecież skądś te rakiety się wydobywają na serwerze itd ^^
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 16.05.2012

Po kodzie Nadawaniu obrażeń z rakiet bądź min sprawdz czy gracz żyje (po ExecuteHam(Ham_damage cośtamdalej)) Jeśli nie żyje to nadaj mu zmienna logiczna że został zabity z rakiet.
Odpowiedz

  • +
  • -
Sniper Elite - zdjęcie Sniper Elite 16.05.2012

public DotykRakiety(ent, id)
{
if ( !is_valid_ent(ent))
return;

new attacker = entity_get_edict(ent, EV_ENT_owner);

new Float:fOrigin[3], iOrigin[3];
entity_get_vector( ent, EV_VEC_origin, fOrigin); 
iOrigin[0] = floatround(fOrigin[0]);
iOrigin[1] = floatround(fOrigin[1]);
iOrigin[2] = floatround(fOrigin[2]);

message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_blast);
write_byte(32); // scale
write_byte(20); // framerate
write_byte(0);// flags
message_end();

new entlist[33];
new numfound = find_sphere_class(ent, "player", 230.0, entlist, 32);

for (new i=0; i < numfound; i++)
{ 
new pid = entlist[i];

if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid) || player_b_antyrakieta[id] == 1)
continue;

new Float:dam = 70.0 - (70.0*redukcja_obrazen_gracza[pid]) + float(inteligencja_gracza[id])
ExecuteHam(Ham_TakeDamage, pid, ent, attacker, dam , 1);
}
remove_entity(ent);
}

Zrobie to tak:


if(dam >= get_user_heatth(pid)
   zmienna[id]++

lub:


if(!is_user_alive(pid)
   zmienna[id]++
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 16.05.2012

if(!is_user_alive(pid))
   zmienna[id]++

o tak.
Odpowiedz

  • +
  • -
Sniper Elite - zdjęcie Sniper Elite 19.05.2012

Działa, dzięki za pomoc.
Odpowiedz