←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Jak pobrać nick ostatniego gracza?

  • +
  • -
Andrzejek - zdjęcie Andrzejek 02.11.2012

Witam, mam do was pytanie, jak pobrać nick ostatniego gracza będącego w TT?
Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 02.11.2012

W zdarzeniu śmierci sprawdzaj liczbę żyjących terrorystów (get_players()), jeżeli jest równa 1 to zapisz sobie gdzieś jego id, potem pobierz nick (get_user_name())
Odpowiedz

  • +
  • -
d0naciak - zdjęcie d0naciak 02.11.2012

stock get_last_terrorist_id()
{
new last, num = 0;
for(new i = i; i <= get_maxplayers(); i++)
{
if(is_user_alive(i) && get_user_team(i) == 1)
{
last = i;
num++;
}
}
if(num == 1)
return last;
return 0;
}


przyklad uzycia :

new id = get_last_terrorist_id();
if(is_user_connected(id))
{
new name[32]; get_user_name(id, name, 31);
//name = nick gracza
}

Użytkownik d0n tHe Pr0oo edytował ten post 02.11.2012 07:48
Odpowiedz

  • +
  • -
Andrzejek - zdjęcie Andrzejek 02.11.2012

OK,
Dzięki masz +

A jak zrobić na wojnie gangów, liste graczy z danym kolorem. Na przykład mam kolor niebieski to z boku wyświetla mi się nicki wszystkich graczy którzy należa do tego gangu

Może to pomoże:

new kolor_gang[][3] = {
{255,0,0},
{0,255,0},
{0,0,255}
};

Użytkownik Andrzejek edytował ten post 02.11.2012 19:21
Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 02.11.2012

zrób pętlę po wszystkich graczach i sprawdzaj ich przynależność do gangu?
Odpowiedz

  • +
  • -
Andrzejek - zdjęcie Andrzejek 03.11.2012

nic mi to nie mówi :)
Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 03.11.2012

Masz gdzieś jakąś zmienną z informacją do którego gangu przynależy dany gracz?
Odpowiedz

  • +
  • -
Andrzejek - zdjęcie Andrzejek 03.11.2012

Chyba tą:

new user_gangi[33];

kolor[user_gangi[i]]
Odpowiedz

  • +
  • -
Andrzejek - zdjęcie Andrzejek 13.11.2012

Odświeżam
Odpowiedz

Gość_21977_* 14.11.2012

"Chyba" nie. Podaj pełniejszy kod.
Odpowiedz

  • +
  • -
Andrzejek - zdjęcie Andrzejek 15.11.2012


new kolor[][] = {"Czerwony", "Zielony", "Niebieski"};

new kolor_gang[][3] = {
{255,0,0},//czerwony
{0,255,0},//zielony
{0,0,255}//niebieski
};


if(cs_get_user_team(i) == CS_TEAM_T){
formatex(szTemp2, 200, "^nTwoj Gang: %s", kolor[user_gangi[i]]);

Użytkownik Andrzejek edytował ten post 15.11.2012 01:05
Odpowiedz

  • +
  • -
nPaul - zdjęcie nPaul 16.11.2012

new id = get_last_terrorist_id();
if(is_user_connected(id))
   new name[32]; get_user_name(id, name, 31);
   //name=nick gracza
   client_print(id, 2, "Jestem %s a moj gang to: %s", name, kolor[user_gangi[i]]);
}

+ stock don the proo
Użytkownik Paulstudio edytował ten post 16.11.2012 22:12
Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 16.11.2012

jeżeli tak to raczej

new id = get_last_terrorist_id();
if(is_user_connected(id))
new name[32]; get_user_name(id, name, 31);
//name=nick gracza
client_print(id, 2, "Jestem %s a moj gang to: %s", name, kolor[user_gangi[id]]);
}
Odpowiedz

  • +
  • -
Droso - zdjęcie Droso 17.11.2012

<p>
new kolor[][] = {"Czerwony", "Zielony", "Niebieski"};
Rozumiem, że to są te "gangi".

http://amxx.pl/wklejka/13531436339579/
Tutaj masz pobieranie twoich sprzymierzeńców z gangu.Są oni wpisywaniu do szTextTeraz użyj hud'a i pokaż szText.
//Kod formatex z dokumentacji</p>
Użytkownik HubertTM edytował ten post 17.11.2012 10:16
Odpowiedz

  • +
  • -
nPaul - zdjęcie nPaul 17.11.2012

K!ller ja podałem dobrze tylko on musi do swojego pluginu wsadzić.
Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 17.11.2012

W takim razie zmienna 'i' jaką wartość przechowuje w twoim kodzie? Przeważnie takich zmiennych używa się do pętli, a robić pętle dla jednego gracza? (bo zakładamy że szukamy ostatniego gracza)
Użytkownik K!113r edytował ten post 17.11.2012 14:51
Odpowiedz

  • +
  • -
Andrzejek - zdjęcie Andrzejek 17.11.2012

HubertTM, tak i zaraz sprawdze twoja wersje

Ale panowie, mi chodzi o listę graczy wszystkich znajdujących się w moim gangu
Użytkownik Andrzejek edytował ten post 17.11.2012 20:16
Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 17.11.2012

to zrób sobie zmienną na listę (jakiegoś sensownego rozmiaru, 512 lub większą tablicę znakową) i po prostu musisz pętlą (po wszystkich graczach) sprawdzić czy aby ten ktoś nie należy do twojego gangu i dodać go do listy, to tylko mój sposób wymyślony na szybko, nie jest zbytnio optymalny :D
Odpowiedz

Gość_21977_* 17.11.2012

new num=0,last=0,gang=0;

new gangMembers[3][32];
new gangMembersNum[3];
new maxPlayers=get_maxplayers();

for(new id=1;id<=maxPlayers;++i){
if(is_user_connected(id)){
gangMembers[user_gangi[id]][gangMembersNum[user_gangi[id]]]=id;
[gangMembersNum[user_gangi[id]]=[gangMembersNum[user_gangi[id]]+1;
if(is_user_alive(id)){
++num;
last=id;
if(num>1){
id=maxPlayers+1;
num=last=0;
}
}
}
}
if(num && last){
// last - id ostatniego zyjacego
new gang=user_gangi[last];
// gang - id gangu lasta
new name[32]; get_user_name(id, name, 31);
// name - nick ostatniego gracza
// gangMembers[gang] - tablica gangMembersNum[gang]-elementowa z id graczy z tego samego gangu
// kolor[gang] - nazwa gangu


// Przyklad:
for(new id=0; id<gangMembersNum[gang]; ++id){
cs_set_user_money(gangMembers[gang][id],cs_get_user_money(gangMembers[gang][id])+300);
client_print(gangMembers[gang][id], print_chat, "Dostales 300 dolarow za to, ze Twoj gang wygral");
}
client_print(0, print_center, "Gang %s wygrywa dzięki %s!", kolor[gang], name);
}
Oczywiście lepiej jest trzymać członków gangu w zmiennej globalnej, ale tutaj masz rozwiązanie bez skorzystania z tego rozwiązania, którego zapewne nie stosujesz.
Odpowiedz