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] Sprawdzanie drużyny po końcu rundy - problem


Najlepsza odpowiedź VertekS, 27.05.2014 06:16

Mam taki kod:

public event_roundend_t(id)
{
	if(is_user_connected(id) && xTeam[id] == CS_TEAM_T) 
	{	
		//client_cmd(id, "mp3 play sound/misc/win")
		client_print(id,print_center, "Jestes TT")
	}
}

Przy odrodzeniu działa, natomiast po wygraniu rundy przez TT nadal nic.

get_user_team w ogóle nie działa (nawet przy respawnie)

 

Może są jeszcze inne sposoby sprawdzenia tego kto wygrał/przegrał rundę?

W tym evencie nie sprawdzisz graczy po ID w ten sposób. Musisz zrobić pętle for:

for(new i = 1; i < 33; i++){
		if(is_user_connected(i) && xTeam[i] == CS_TEAM_T) 
		{	
			client_cmd(i, "mp3 play sound/misc/win")
			client_print(i,print_center, "Jestes TT")
		}
		
		if(is_user_connected(i) && xTeam[i] == CS_TEAM_CT) 
		{	
			client_cmd(i, "mp3 play sound/misc/lose")
			client_print(i,print_center, "Jestes CT")
		}
	}

Pętlę for możesz usprawnić jeszcze poprzez użycie funkcji get_maxplayers() w plugin_precache i podstawienie wartości zwracanej przez nią w miejsce liczby 33.

Przejdź do postu


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

#1 Scorpion Flail

    Wszechobecny

  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:489
  • GG:
  • Steam:steam
Offline

Napisano 26.05.2014 14:14

Witam.

Chcę zrobić dźwięk dla wygranej i przegranej drużyny (2 różne dźwięki).

Dlatego też zrobiłem coś takiego:

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Test"
#define VERSION "1.0"
#define AUTHOR "Test"


public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_event("SendAudio", "event_roundend_t", "a", "2&%!MRAD_terwin") 
    register_event("SendAudio", "event_roundend_ct", "a", "2&%!MRAD_ctwin") 
}

public plugin_precache()
{
    precache_sound("misc/win.mp3")
    precache_sound("misc/lose.mp3")

}
public event_roundend_t(id)
{
	if (get_user_team(id) == 2)
	{	
		//client_cmd(id, "mp3 play sound/misc/lose")
		client_print(id,print_center, "Jestes CT")
	}
	if ((get_user_team(id) == 1))
	{	
		//client_cmd(id, "mp3 play sound/misc/win")
		client_print(id,print_center, "Jestes TT")
	}
}
public event_roundend_ct(id)
{
	if (get_user_team(id) == 1)
	{	
		//client_cmd(id, "mp3 play sound/misc/lose")
		client_print(id,print_center, "Jestes CT")
	}
	if ((get_user_team(id) == 2))
	{	
		//client_cmd(id, "mp3 play sound/misc/win")
		client_print(id,print_center, "Jestes TT")
	}
}

Bez sprawdzania drużyny dźwięk/wiadomość się pokazuje.

Po dodaniu sprawdzania już nie.

cs_get_user_team również nie pomaga.

 

Macie jakiś pomysł?

 

 

 


  • +
  • -
  • 0

#2 Pomager'ek

    Profesjonalista

  • Zbanowany

Reputacja: 53
Pomocny

  • Postów:175
  • Imię:Damian
  • Lokalizacja:Płock
Offline

Napisano 26.05.2014 16:08

#include <amxmodx>



new maxplayers;



public plugin_init()

{

register_plugin("Dzwiek wygrana druzyn", "0.1", "kapi10072 edit by pomager'ek");

register_event("SendAudio", "Wygrana_TT", "a", "2&%!MRAD_terwin");

register_event("SendAudio", "Wygrana_CT", "a", "2&%!MRAD_ctwin");



maxplayers = get_maxplayers();

}

public Wygrana_TT()

{

for(new id = 0; id < maxplayers; id++)

{

if(is_user_connected(id))

{

if(get_user_team(id) == 1)

{

client_cmd(id, "spk dzwiek/wygrana_tt.wav");

}

else

{

client_cmd(id, "spk dzwiek/przegrana_ct.wav");

}

}

}

}

public Wygrana_CT()

{

for(new id=0; id < maxplayers; id++)

{

if(is_user_connected(id))

{

if(get_user_team(id) == 2)

{

client_cmd(id, "spk dzwiek/wygrana_ct.wav");

}

else

{

client_cmd(id, "spk dzwiek/przegrana_tt.wav");

}

}

}

}

public plugin_precache()

{

precache_sound("dzwiek/przegrana_tt.wav");

precache_sound("dzwiek/wygrana_tt.wav");

precache_sound("dzwiek/przegrana_ct.wav");

precache_sound("dzwiek/wygrana_ct.wav");


Użytkownik Pomager'ek edytował ten post 26.05.2014 16:08


#3 Scorpion Flail

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:489
  • GG:
  • Steam:steam
Offline

Napisano 26.05.2014 16:41

Nadal nic (testowałem również na samym client_print):

#include <amxmodx>



new maxplayers;



public plugin_init()

{

    register_plugin("Dzwiek wygrana druzyn", "0.1", "kapi10072");

    register_event("SendAudio", "Wygrana_TT", "a", "2&%!MRAD_terwin");

    register_event("SendAudio", "Wygrana_CT", "a", "2&%!MRAD_ctwin");

    

    maxplayers = get_maxplayers();

}

public Wygrana_TT()

{

    for(new id = 0; id < maxplayers; id++)

    {    

        if(is_user_connected(id))

        {

            if(get_user_team(id) == 1)

            {

               client_print(0,print_center, "Wygrywa TT")

            }

            else

            {

               client_print(0,print_center, "Przegrywa CT")

            }

        }

    }

}

public Wygrana_CT()

{

    for(new id=0; id < maxplayers; id++)

    {    

        if(is_user_connected(id))

        {

            if(get_user_team(id) == 2)

            {

                 client_print(0,print_center, "Wygrywa CT")

            }

            else

            {

                 client_print(0,print_center, "Przegrywa TT")

            }

        }

    }

}


  • +
  • -
  • 0

#4 VertekS

    Zaawansowany

  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:80
  • Lokalizacja:amxxpc.exe
Offline

Napisano 26.05.2014 19:49

Zaciekawił mnie ten problem i postanowiłem sprawdzić, dlaczego jest tak, a nie inaczej. Event SendAudio odpowiada tylko i wyłącznie za obsługę dźwięków - wynika to z moich testów. Pobieranie drużyny, do której gracz należy, czy wyświetlenie czegoś w czacie musisz zrobić przy wyłapywaniu innego eventu (pobieranie drużyny - spawn powinien być ok, a wyświetlenie czegoś w czacie, to odpowiedni logevent)

register_logevent("showTopPlayers", 2, "1=Round_End")

W celu przechowywania drużyny, do której gracz należy utwórz tablicę 33 elementową, a następnie przy spawnie sprawdź drużynę, do której gracz należy. Na pewno ten sposób działa z cs_get_user_team, nie dam 100% gwarancji, że zadziała z get_user_team; chociaż nie widzę przeciwwskazań.

Następnie w evencie SendAudio możesz sprawdzać drużynę poprzez utworzoną tablicę.


  • +
  • -
  • 0

#5 Scorpion Flail

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:489
  • GG:
  • Steam:steam
Offline

Napisano 27.05.2014 00:17

Mam taki kod:

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>

#define PLUGIN "Test"
#define VERSION "1.0"
#define AUTHOR "Test"

new CsTeams:xTeam[33]


public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_event("SendAudio", "event_roundend_t", "a", "2&%!MRAD_terwin") 
    //register_event("SendAudio", "event_roundend_ct", "a", "2&%!MRAD_ctwin") 
    
    RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
}

public plugin_precache()
{
    precache_sound("misc/win.mp3")
    precache_sound("misc/lose.mp3")

}
public event_roundend_t(id)
{
	if(is_user_connected(id) && xTeam[id] == CS_TEAM_T) 
	{	
		//client_cmd(id, "mp3 play sound/misc/win")
		client_print(id,print_center, "Jestes TT")
	}
}
public Odrodzenie(id) 
{
	xTeam[id] = cs_get_user_team(id)
	if(is_user_connected(id) && xTeam[id] == CS_TEAM_T) 
	client_print(id, print_chat, "Jestes w terro"); 
}

Przy odrodzeniu działa, natomiast po wygraniu rundy przez TT nadal nic.

get_user_team w ogóle nie działa (nawet przy respawnie)

 

Może są jeszcze inne sposoby sprawdzenia tego kto wygrał/przegrał rundę?


Użytkownik Scorpion Flail edytował ten post 27.05.2014 00:18

  • +
  • -
  • 0

#6 VertekS

    Zaawansowany

  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:80
  • Lokalizacja:amxxpc.exe
Offline

Napisano 27.05.2014 06:16   Najlepsza odpowiedź

Mam taki kod:

public event_roundend_t(id)
{
	if(is_user_connected(id) && xTeam[id] == CS_TEAM_T) 
	{	
		//client_cmd(id, "mp3 play sound/misc/win")
		client_print(id,print_center, "Jestes TT")
	}
}

Przy odrodzeniu działa, natomiast po wygraniu rundy przez TT nadal nic.

get_user_team w ogóle nie działa (nawet przy respawnie)

 

Może są jeszcze inne sposoby sprawdzenia tego kto wygrał/przegrał rundę?

W tym evencie nie sprawdzisz graczy po ID w ten sposób. Musisz zrobić pętle for:

for(new i = 1; i < 33; i++){
		if(is_user_connected(i) && xTeam[i] == CS_TEAM_T) 
		{	
			client_cmd(i, "mp3 play sound/misc/win")
			client_print(i,print_center, "Jestes TT")
		}
		
		if(is_user_connected(i) && xTeam[i] == CS_TEAM_CT) 
		{	
			client_cmd(i, "mp3 play sound/misc/lose")
			client_print(i,print_center, "Jestes CT")
		}
	}

Pętlę for możesz usprawnić jeszcze poprzez użycie funkcji get_maxplayers() w plugin_precache i podstawienie wartości zwracanej przez nią w miejsce liczby 33.


  • +
  • -
  • 2

#7 Scorpion Flail

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:489
  • GG:
  • Steam:steam
Offline

Napisano 28.05.2014 14:14

Dzięki działa.

Teraz nie muszę nawet tworzyć zmiennej do przechowywania drużyny.


  • +
  • -
  • 0




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

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