Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Problem z wyswietleniem(i formatowaniem) wiadomosci tam gdzie sie pokazuje info o graczu po nacelowa


Najlepsza odpowiedź sebul, 10.01.2014 20:07

@up
stock dobry. Za co odpowiada 2 parametr?

Aby w ogóle brać pod uwagę team, ale już dawno poprawiłem ten stock i jego lepsza forma wygląda tak
stock get_teamplayersnum(team = -1, bool:alive = false) {
static mpln;
if(!mpln) mpln = get_maxplayers();

new playerCnt, i;
for(i=1; i<=mpln; ++i) {
if(!is_user_connected(i) || is_user_hltv(i)) continue;
if(team > -1 && cs_get_user_team(i) != CsTeams:team) continue;
if(alive && !is_user_alive(i)) continue;

++playerCnt;
}

return playerCnt;
}
Przejdź do postu


  • Zamknięty Temat jest zamknięty
8 odpowiedzi w tym temacie

#1 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 16.12.2013 19:43

Witam.

Mam ogromny porblem z tym pluginem

Powoduje on crashe serwera z informacja cos o MSG_ONE_UNRELIABLED

Moglby ktos to naprawic/przegladnac/ podpowiedziec

#include <amxmodx>
#include <csx>
#include <cstrike>

#define MAX_PLAYERS 12

public EnemyRemaining

new g_he_sync, num


public plugin_init()
{
  
    set_msg_block(106, BLOCK_SET); //block info player
    
    if(EnemyRemaining)
            set_task(1.0, "task_server", _, _, _, "b");
}

public plugin_cfg()
{
    new g_addStast[] = "amx_statscfg add ^"%s^" %s"
   
    server_cmd(g_addStast, "ST_ENEMY_REM", "EnemyRemaining")
}


public task_server()
{
      for(new id=1; id<=MAX_PLAYERS; id++)
      {
            if(is_user_alive(id) && is_user_connected(id))
                  PokazStatusText(id, "Jeszcze: %i %s", num, get_user_team(id) == 1 ? "CT" : "TT");
      }
}
      
public PokazStatusText(id, szText[], any:...)
{
      new players[32], team;
      team = get_user_team(id)
      
      if(team != 3 && team != 0)
      {
            if(team == 1)
            {
                  for(new i; i <= MAX_PLAYERS; i++)
                  {
                        if (!is_user_connected(i) || !is_user_alive(i) || get_user_team(i) != 2)
                        continue
                        
                        ++num
                  }
            }
                  
            else if(team == 2)
                  get_players(players, num, "ae", "TERRORIST")
                  
            if(is_user_alive(id) && is_user_connected(id))
            {
                  new szTemp[192];
                  vformat(szTemp, 191, szText, 3);
                  message_begin(MSG_ONE_UNRELIABLE, 106, {0,0,0}, id);
                  write_byte(0);
                  write_string(szTemp);
                  message_end();
            }
            
            else
                  return PLUGIN_CONTINUE
      }
      
      else
            return PLUGIN_CONTINUE
            
      return PLUGIN_CONTINUE
}

  • +
  • -
  • 0

#2 Andrzejek

    Ucze się :]

  • Power User

Reputacja: 136
Zaawansowany

  • Postów:1 300
  • Imię:Andrzej
Offline

Napisano 18.12.2013 15:14

Jeżeli dobrze zrozumiałem po nacelowaniu na gracza ma się wyświetlić wiadomość w czacie? Użyj może player_status

 

http://amxx.pl/dokum...10/ClearSyncHud


  • +
  • -
  • 0

Mam do sprzedania pluginy AMXX pod serwery typu, JB, ONLY DD2, ZOMBIE, COD MOD, DR i inne...

 

Jeżeli jesteś zainteresowany(a), napisz na PW lub GG 42384104


#3 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 18.12.2013 15:45

chodzi mi o to:

jak pobrac liczbe zywych ct?


  • +
  • -
  • 0

#4 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 31.12.2013 10:28

Za pomocą funkcji get_players


  • +
  • -
  • 0

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#5 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 31.12.2013 12:13

no wlasnie nie, bo zwraca zle wyniki dla ct (dla tt dobre).
I jak to zrobic petla i dac do message_begin aby nie powodowalo crashy (crsah dotyczyl zle sformatowanej wiadomosci msg_one)
  • +
  • -
  • 0

#6 Niide

    *** it I'm done

  • Użytkownik

Reputacja: 86
Zaawansowany

  • Postów:216
  • Imię:Paweł
  • Lokalizacja:Holandia
Offline

Napisano 07.01.2014 20:19

Ja polecam stocka:

stock get_teamplayersnum(CsTeams:team = CS_TEAM_UNASSIGNED, bool:team_enabled = true, bool:alive = false) 
{
	new playerCnt, i;
	for(i=1; i<=get_maxplayers(); i++) 
	{
		if(!is_user_connected(i) || is_user_hltv(i)) continue;
		if(team_enabled && cs_get_user_team(i) != team) continue;
		if(alive && !is_user_alive(i)) continue;

		playerCnt++;
	}

	return playerCnt;
}

Potem żywych CT pobierasz tak:

get_teamplayersnum(CS_TEAM_CT, _, true)

I żywych TT tak:

get_teamplayersnum(CS_TEAM_T, _, true)

  • +
  • -
  • 0

kP8HWV.png


#7 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 07.01.2014 21:17

@up
stock dobry. Za co odpowiada 2 parametr?

@topic
Jak poprawnie sformatowac ta wiadomosc?
  • +
  • -
  • 0

#8 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 10.01.2014 20:07   Najlepsza odpowiedź

@up
stock dobry. Za co odpowiada 2 parametr?

Aby w ogóle brać pod uwagę team, ale już dawno poprawiłem ten stock i jego lepsza forma wygląda tak
stock get_teamplayersnum(team = -1, bool:alive = false) {
static mpln;
if(!mpln) mpln = get_maxplayers();

new playerCnt, i;
for(i=1; i<=mpln; ++i) {
if(!is_user_connected(i) || is_user_hltv(i)) continue;
if(team > -1 && cs_get_user_team(i) != CsTeams:team) continue;
if(alive && !is_user_alive(i)) continue;

++playerCnt;
}

return playerCnt;
}

sebul (10.01.2014 20:08):
Oczywiście maksymalną ilość graczy lepiej pobierać do zmiennej globalnej gdzieś na początku mapy.

  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#9 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 10.01.2014 20:23

CZyli to ma wygladac tak?

#include <amxmodx>
#include <csx>
#include <cstrike>

new num

public plugin_init()
{
    set_msg_block(106, BLOCK_SET); //block info player
    
      set_task(1.0, "task_server", _, _, _, "b");
}

public task_server()
{
      for(new id=1; id<=MAX_PLAYERS; id++)
      {
            if(is_user_alive(id) && is_user_connected(id))
                  PokazStatusText(id, "Jeszcze: %i %s", num, get_user_team(id) == 1 ? "CT" : "TT");
      }
}
      
public PokazStatusText(id, szText[], any:...)
{
      if(is_user_alive(id) && is_user_connected(id))
      {
            new team;
            team = get_user_team(id)
            
            if(team != 3 && team != 0)
            {
                  if(team == 1)
                        num = get_teamplayersnum(2)
                  if(team == 2)
                        num = get_teamplayersnum(1)
                        
                  new szTemp[192];
                  vformat(szTemp, 191, szText, 3);
                  message_begin(MSG_ONE, 106, {0,0,0}, id);
                  write_byte(0);
                  write_string(szTemp);
                  message_end();
            }
      }

      return PLUGIN_CONTINUE
}
	
stock get_teamplayersnum(team = -1)
{
      new playerCnt, i;
      for(i=1; i<=MAX_PLAYERS; ++i)
      {
            if(!is_user_connected(i) || is_user_hltv(i)) continue;
            if(team > -1 && cs_get_user_team(i) != CsTeams:team) continue;
            if(!is_user_alive(i)) continue;

            ++playerCnt;
      }

      return playerCnt;
}

Boje sie ze znow beda crashe przez msg_one


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych