←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

funkcja ktora pobiera liczbe tt i ct

Zablokowany

Rocketfuel - zdjęcie Rocketfuel 23.04.2013

witam.
Mam taka sprawe z ptb. Ustawilem ze transferowanie zaczyna sie od 4 graczy na mapie. Ale gdy np. 3 graczy gra a 1 jest na spekcie to miota tymi graczami. Chcialbym zrobic tak aby transferowanie zaczynalo sie od 4 graczy czyli liczba tt + ct, tylko nie moge znalezc tego w dokumentacji.
Uwaga nie chodzi mi o get_playersnum!!
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 23.04.2013

http://amxx.pl/dokum...f90/get_players

 

Odpowiednia flaga i pobierzesz CT i TT. 

Odpowiedz

Rocketfuel - zdjęcie Rocketfuel 23.04.2013

mozesz podpowiedziec jak to? na pewno 'h' i 'c' ale jak TT + CT nie wiem. help!
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 23.04.2013

get_players(players, pnum, "che", "CT"); - CT
get_players(players, pnum, "che", "TERRORIST") - TT

w pnum masz ilość a w tabeli players masz Id userów

Pewnie jest "lepszy sposób" jednak ten mi przyszedł pierwszy na myśl

Odpowiedz

Rocketfuel - zdjęcie Rocketfuel 23.04.2013

dobra a jak to polaczyc z if?
if (liczba TT + CT)== 4
{
//wykonaj to i to
}
Odpowiedz

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

Utwórz 2 zmienne, pobierzesz osobno ct do jednej i tt do jednej? (toporniej raczej to można pobrać get_playersnum() i pętlą sprawdzać czy należy on do ct lub tt)
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 23.04.2013

stock get_realplayersnum(team = 0) {
new playerCnt;
for(new i=1, MaxPlayers=get_maxplayers(); i<=MaxPlayers; ++i) {
if(!is_user_connected(i))
continue;

if(team && get_user_team(i) != team)
continue;

++playerCnt;
}
return playerCnt;
}

get_realplayersnum() - liczba wszystkich graczy
get_realplayersnum(1) - liczba tt
get_realplayersnum(2) - liczba ct
Odpowiedz

Rocketfuel - zdjęcie Rocketfuel 23.04.2013

a jak to polaczyc z if? Bo przerabiam ptb a nie chce aby bralo pod uwage spektow.
Rozwiazanie sebula wydaje sie byc sensowne. Tylko jak to podpiac do ptb?

albo mozna zrobic tak bo mi wpadlo do glowy tera
if (get_playersnum - SPECTATORS)
//wykonaj to i to
tylko sami obserwatorzy, bez hltv (i tak nie mam na serwie :()
Odpowiedz

  • +
  • -
Andrzejek - zdjęcie Andrzejek 24.04.2013

Może to?

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

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

new wszyscy_tt, wszyscy_ct;

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /sprawdz", "sprawdz_ilosc");
}

public sprawdz_ilosc(id)
{
	update_terro();
	
	client_print(id, print_chat, "Wszyscy tt: %s | Wszyscy ct: %s", wszyscy_tt, wszyscy_ct);
}

stock update_terro() 
{
	wszyscy_tt = active_players(CS_TEAM_T, false);
	wszyscy_ct = active_players(CS_TEAM_CT, false);
}

stock active_players(CsTeams:team, bool:aliveonly = false) 
{
	static players[32], inum, i, active, CsTeams:playerteam
	
	(aliveonly) ? get_players(players, inum, "ah") : get_players(players, inum, "h")
	
	active = 0
	
	for (i = 0; i < inum; ++i) {
		playerteam = cs_get_user_team(players[i])              
		if(playerteam == team) active++
	}
	return active
}
Odpowiedz

Rocketfuel - zdjęcie Rocketfuel 24.04.2013

a jak to wlozyc zamiast tego get_playersnum?
// skip switching for a small number of players
	if (get_playersnum() < PTB_SWITCHMIN) return
Odpowiedz

Gość_21977_* 24.04.2013

(aliveonly) ? get_players(players, inum, "ah") : get_players(players, inum, "h")

active = 0

for (i = 0; i < inum; ++i) {
	playerteam = cs_get_user_team(players[i])
	if(playerteam == team) active++
}

Tym sposobem:

  • Wykonujesz iterację po wszystkich graczach.
    Jeśli nie jest to HLTV, to pobierasz jego identyfikator
    oraz nick, co jest absolutnie zbędne w tym wypadku.
  • Następnie, ponownie iterujesz po liście graczy,
    tym razem sprawdzając kolejny warunek, czyli team,
    o co autor nie prosił i co jest zbędne.

Wracając do tematu:

  • korzystając ze stocka sebula:
    // skip switching for a small number of players
    	if (get_realplayersnum() < PTB_SWITCHMIN) return
    
Odpowiedz

Rocketfuel - zdjęcie Rocketfuel 24.04.2013

czyli to ma byc tak jak ty piszesz beniu??
A ten stock sebula to na koniec pluginu czy gdzie? (mr.green)
Odpowiedz

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

tak wklej sobie na koniec

Odpowiedz

Rocketfuel - zdjęcie Rocketfuel 25.04.2013

i tylko tyle?
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 25.04.2013

Jeśli ma zwracać liczbę graczy grających w tt lub ct, to trzeba ten kod trochę zmodyfikować, czyli
stock get_realplayersnum() {
new playerCnt;
for(new i=1, MaxPlayers=get_maxplayers(); i<=MaxPlayers; ++i) {
if(!is_user_connected(i))
continue;

if(!(UNASSIGNED < playerTeam[i] <= CTS))
continue;

++playerCnt;
}
return playerCnt;
}
Odpowiedz

  • +
  • -
Kawon - zdjęcie Kawon 06.05.2013

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Autor tematu zbanowany

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany