←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Uratowanie/zbicie hostów/hosta

Zablokowany

  • +
  • -
A może sma? - zdjęcie A może sma? 11.08.2011

Siema :D
Jak skutecznie wykryć zabójstwo hosta oraz uratowanie wszystkich hostów?
Zabicie hosta chciałem wykryć tak:
register_event("TextMsg","HostageKilled","b","2&#Killed_Hostage");

public HostageKilled() 
{
coins_kill_hostage = get_pcvar_num(cvar_coins_kill_hostage);
coins_kill_hostage_vip = get_pcvar_num(cvar_coins_kill_hostage_vip);

new aPlayers[32],iNum,i
get_players(aPlayers,iNum,"ce","CT")

for( i=0; i<=iNum; i++)
{
if(!is_user_connected(aPlayers[i])) continue

if(get_user_flags(i) & VIP)
monety[i] -= coins_kill_hostage_vip;
else
monety[i] -= coins_kill_hostage;
}

return PLUGIN_CONTINUE
}

Ale coś mi w tym sposobie nie trybi :]
Odpowiedz

  • +
  • -
speedkill - zdjęcie speedkill 11.08.2011

Może tak + ustaw sobie jak tam chcesz
Sprawdź czy działa bo nie jestem pewny ;]
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Administrator"

new Hosty, Hostydead;

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_event("TextMsg", "allhostage_rescue", "a", "2&#All_Hostages_R" )
	register_event("TextMsg","host_killed","b","2&#Killed_Hostage") 
	Hosty    = register_cvar("hostage_r", "5");
	Hostydead    = register_cvar("hostkill", "3");
}
public allhostage_rescue(id)
{
	monety[id] -= get_pcvar_num(Hosty)
	
} 

public host_killed(id)
{
	monety[id] -= get_pcvar_num(Hostydead)
}
Odpowiedz

  • +
  • -
A może sma? - zdjęcie A może sma? 11.08.2011

Zabicie hosta zadziałało :D
Nie wiem na jaką cholerę ja tam pętle próbowałem wcisnąć xD

Ale wszyscy zakładnicy dalej nie są wykrywani (ich uratowanie)
Odpowiedz

  • +
  • -
speedkill - zdjęcie speedkill 11.08.2011

Właśnie ten event odpowiada za uratowanie wszystkich zakładników
register_event("TextMsg", "allhostage_rescue", "a", "2&#All_Hostages_R" )
Lub przerób sobie ten plugin :)
[CoD Nowy] Dodawkowy exp - AMXX.pl: Support AMX Mod X
Odpowiedz

Dwdov - zdjęcie Dwdov 11.08.2011

Ten event raczej jest masowy i on nie przyjmuje id... Nie jestem pewien co do tego ale raczej tak jest.
Tu jest kod, który prawdopodobnie działa:

register_logevent("hostage_rescued", 3, "2=Rescued_A_Hostage");

public hostage_rescued()
new id = get_loguser_index();

stock get_loguser_index() {
new loguser[80], name[32];
read_logargv(0, loguser, 79);
parse_loguser(loguser, name, 31);

return get_user_index(name);
}



Odpowiedz

  • +
  • -
speedkill - zdjęcie speedkill 11.08.2011

No to można zrobić pętle ;] :
public allhostage_rescue(id)
{
        for(new id=1;id<33; id++
        {
	monety[id] -= get_pcvar_num(Hosty)
	}
}
Odpowiedz

  • +
  • -
A może sma? - zdjęcie A może sma? 11.08.2011

Ten event raczej jest masowy i on nie przyjmuje id... Nie jestem pewien co do tego ale raczej tak jest.
Tu jest kod, który prawdopodobnie działa:


register_logevent("hostage_rescued", 3, "2=Rescued_A_Hostage");

public hostage_rescued()
new id = get_loguser_index();

stock get_loguser_index() {
new loguser[80], name[32];
read_logargv(0, loguser, 79);
parse_loguser(loguser, name, 31);

return get_user_index(name);
}


Właśnie to sobie uświadomiłem, gdy jadłem kolację :P
@UP: To też już sprawdzałem - nie działało :P
Odpowiedz

Zkont?! - zdjęcie Zkont?! 11.08.2011

Do sprawdzenia, czy zakładnicy zostali uratowani wystarczy to.

1. Rejestrujesz ten event:
register_event("TextMsg", "hosty", "a", "2&#All_Hostages_R" );


2. Tworzysz public, w którym ten event jest wykonywany.
public hosty(id)
{
//dalsza część Twojego kodu.
}


3. Tyle :]
Odpowiedz

Dwdov - zdjęcie Dwdov 11.08.2011

Ja stawiam na to że ten event nie przyjmuje ID gracza bo jest to event wywoływany przez serwer. Teoretycznie ID powinno wynieść w takim przypadku 0, jak komuś się chce niech to sprawdzi print_chat( id, 3, "id: %i", id ) i tyle.
Odpowiedz

  • +
  • -
A może sma? - zdjęcie A może sma? 11.08.2011

Już sobie poradziłem :]
Odpowiedz

Zkont?! - zdjęcie Zkont?! 12.08.2011

Nie wiem, dlaczego autor tematu mówił, że ten event nie przyjmuje index'u 'id'. Mi w programie testowym ze spokojem się odczytało i skompilowało.
Odpowiedz

  • +
  • -
A może sma? - zdjęcie A może sma? 12.08.2011

Ja mówiłem, że mi to po prostu nie działało :D A nie, że nie przyjmuję ID :]
Skompilowanie bez błędu to jedno, działanie to drugie :D
Odpowiedz
Zablokowany