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

Odczytywanie punktów drużyny


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
6 odpowiedzi w tym temacie

#1 CoJestXdd

    Pomocny

  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:68
  • Lokalizacja:Polska
Offline

Napisano 22.10.2016 20:47

Witam, mam pytanie, czy da się odczytać ilość punktów drużyny TT jak i CT?

 

Chciałbym, by w danej chwili punkty drużyny się zamieniały ze sobą. Mógłby ktoś wytłumaczyć jak coś takiego zdziałać?


  • +
  • -
  • 0

#2 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 23.10.2016 00:06

Z tego co się orientuję, nie da się modyfikować punktów drużyny (no chyba że takie cacko drzemie w Orpheu).

@up no rzeczywiście, Orpheu umożliwia zmianę wyniku danej drużyny:

https://forums.allie...3&postcount=396

Nie istnieje funkcja pokroju get_user_frags będąca alternatywą dla drużyny, lecz możesz odczytać wynik druzyny w inny sposób.
Zhookuj event team score lub sendaudio i przy każdym wywołaniu modyfikuj zmienną (globalną), która zapamiętywałaby wynik odrębnie dla CT i tt.
Później w dowolnej chwili możesz dzięki temu pobrać aktualny wynik danego teamu.
Jednak łatwiej będzie zmodyfikować przytoczony wyżej plugin Arkshine'a i w nim pobierać wartość wyniku drużyny (po czym, np. zamienić je wzajemnie).

Powyższa metoda nie była przeze mnie testowana.

Użytkownik _McHappy edytował ten post 23.10.2016 00:10

  • +
  • -
  • 0

#3 CoJestXdd

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:68
  • Lokalizacja:Polska
Offline

Napisano 23.10.2016 01:17

Nie siedzę zbyt głęboko w pawnie żeby zrozumieć, możesz jaśniej wytłumaczyć? :/

 

EDIT: 

Jedyne co zrozumiałem to to, że mogę napisać plugin, który by liczył zdobyte punkty drużyny a następnie utworzył do niego hook'a, który by generował dane do pluginu, który podałeś wyżej. Dobrze rozumiem?


Użytkownik CoJestXdd edytował ten post 23.10.2016 01:19

  • +
  • -
  • 0

#4 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 23.10.2016 09:32

Dokładnie.
Z tym, że jak się domyślam, zamierzasz zrobić plugin, który po jakimś czasie zamienia drużyny a wraz z nimi ich wyniki.

Jeżeli tak, to lepszym rozwiązaniem będzie zmodyfikowanie pluginu dostępnego pod ww linkiem, dodanie tam np. warunku sprawdzania wyniku drużyny oraz samej zamiany drużyn.
Do tego niestety trzeba będzie instalować moduł Orpheu.

Jeżeli jednak zależy ci tylko na pobraniu wyniku danej drużyny, to można to zrobić właśnie w ten sposób (w twoim EDIT)

Może tak: powiedz coś więcej o tym pluginie, tzn. jakie miałby spełniać zadanie.
Kiedy dokładniej punkty drużyn miałyby ulegać wzajemnej zamianie.
  • +
  • -
  • 0

#5 CoJestXdd

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:68
  • Lokalizacja:Polska
Offline

Napisano 28.10.2016 13:50

Powiem tak: posiadam już plugin, na serwer csgo mod, który po 15 rundach zmienia drużyny oraz losuje skrzynki. Mapy trwają po 50-60 minut i to jest trochę monotonne. Do dodania dynamiki chciałbym dodać plugin, który zamienia punkty drużyny.

 

A więc łącząc wszystko chciałbym, aby po zakończeniu 15 rundy, punkty drużyn się wzajemnie zamieniły.

 

Jesteś w stanie mi pomóc?


  • +
  • -
  • 0

#6 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 29.10.2016 11:44

Łap:

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <orpheu>
#include <orpheu_memory>

#define TASK_SWITCH_TEAMS 777
#define TASK_SHOW_MESSAGE 778

#define set_mp_pdata(%1,%2)  ( OrpheuMemorySetAtAddress( g_pGameRules, %1, 1, %2 ) )
#define get_mp_pdata(%1)     ( OrpheuMemoryGetAtAddress( g_pGameRules, %1 ) )

#define CO_ILE 4 //Tu zmieniamy interwal zamian druzyn (w rundach)

new g_pGameRules;
new g_roundCount;

public plugin_precache()
{
	OrpheuRegisterHook( OrpheuGetFunction( "InstallGameRules" ), "OnInstallGameRules", OrpheuHookPost );
}

public OnInstallGameRules()
{
	g_pGameRules = OrpheuGetReturn();
}

public plugin_init ()
{
	register_plugin( "Zamiana druzyn", "1.1.0", "Arkshine | _McHappy" );
	register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w");
	register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
	register_logevent("GameCommencing", 2, "1=Game_Commencing");
	register_event("SendAudio", "eEndRound", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin", "2&%!MRAD_rounddraw");
}

//Jezeli nastepna runda bedzie 'runda zamiany', to wykonujemy zamiane tuz przed nowa runda.
public eEndRound() if( !( (g_roundCount+1) % CO_ILE) ) set_task(4.5, "SwitchTeams", TASK_SWITCH_TEAMS); 

//Funcja wlasciwej zamiany druzyn
public SwitchTeams()
{
	new maxP = get_maxplayers();
	for(new i=1; i<=maxP; i++)
	{
		if(is_user_connected(i))
		switch(get_user_team(i))
		{
			case 1: cs_set_user_team(i, 2);
			case 2: cs_set_user_team(i, 1);
		}
	}
	
	//Wywolujemy zamiane wynikow
	SwitchTeamScores();
	
	//Wyswietlamy odpowiednia informacje, aby gracze sie nie pogubili.
	if(task_exists(TASK_SHOW_MESSAGE)) remove_task(TASK_SHOW_MESSAGE);
	set_task(1.0, "ShowMessage", TASK_SHOW_MESSAGE);
	
}

public event_new_round() ++g_roundCount;

public GameCommencing() g_roundCount=0;

public eRestart() g_roundCount = 0;

//Zamiana wynikow. Po wykonaniu tablica wynikow zostanie odswiezona samoczynnie poprzez event nowej rundy.
public SwitchTeamScores()
{
	new temp=get_mp_pdata("m_iNumCTWins");
	
	set_mp_pdata( "m_iNumCTWins", get_mp_pdata("m_iNumTerroristWins"));
	set_mp_pdata( "m_iNumTerroristWins", temp);
	
	return PLUGIN_HANDLED;
}   

public ShowMessage()
{	
	set_hudmessage(85, 255, 42, -1.0, 0.30, 2, 6.0, 5.0, 0.05, 2.0)
	show_hudmessage(0, "Zamiana druzyn!") //Tekst do wyswietlenia.
}

Do poprawnego działania pluginu wymagany jest moduł Orpheu

Po pobraniu go i zainstalowaniu, pobierz pliki sygnatur i wypakuj je do folderu amxmodx.

Tyle, większość rzeczy w komentarzach :D

Załączone pliki


Użytkownik _McHappy edytował ten post 29.10.2016 11:47

  • +
  • -
  • 2

#7 CoJestXdd

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:68
  • Lokalizacja:Polska
Offline

Napisano 30.10.2016 11:31

Wszystko pięknie działa, dodałem swoje losowanie i czas na przerwę, dzięki! :D


  • +
  • -
  • 0




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

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