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

Uruchamianie pluginu po wejściu na serwer

serwer cs1.6

Najlepsza odpowiedź _McHappy, 06.11.2016 23:46

Poprawiam, w wersji 1. oprócz wspomnianych anty-zabezpieczeń, trzeba było poprawić buga.

Jeżeli lista serwerów została wyświetlona podczas, gdy otworzone było menu vgui (motd, wybór teamu), handle do menu był zwalniany, z czego wynikał brak reakcji na wybór gracza.

 

Wersja poprawiona (+metoda ex0):

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Menu serwerow"
#define VERSION "0.2.2"
#define AUTHOR "Sebul"

#define SERVERS_FILE "servers_list.ini"
#define MAX_SERVERS 32
#define MAX_CHARACTERS 63

new g_servers[MAX_SERVERS][2][MAX_CHARACTERS+1],
g_number_server,
cvar_pokaz_ip;

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	register_clcmd("say /server", "show_server");
	register_clcmd("say_team /server", "show_server");
	
	cvar_pokaz_ip = register_cvar("server_show_ip", "1");
	
	register_event( "TeamInfo", "event_druzyna", "a")
	
	set_task(1.0, "load_servers");
}

public load_servers() {
	new file_serwers[64];
	get_configsdir(file_serwers, 63);
	formatex(file_serwers, 63, "%s/%s", file_serwers, SERVERS_FILE);
	
	g_number_server = 0;
	
	new fHandle = fopen(file_serwers, "rt");
	
	if(fHandle) {
		new data_server[128];
		
		while(g_number_server<MAX_SERVERS && !feof(fHandle)) {
			fgets(fHandle, data_server, 127);
			
			if(!data_server[0] || data_server[0] == ' ' || data_server[0] == ';')
				continue;
			
			if(parse(data_server, g_servers[g_number_server][0], MAX_CHARACTERS, g_servers[g_number_server][1], MAX_CHARACTERS) != 2)
				continue;
			
			++g_number_server;
		}
		fclose(fHandle);
	}
	else
		log_amx("Brak '%s' na serwerze", file_serwers);
}

public show_server(id) {
	new menu = menu_create("Lista serwerow - polacz z:", "show_server_handle");
	
	for(new i=0,formats[256],pokaz=get_pcvar_num(cvar_pokaz_ip); i<g_number_server; ++i) {
		formatex(formats, 255, "%s%s%s", g_servers[i][0], pokaz ? " - \y" : "", pokaz ? g_servers[i][1] : "");
		menu_additem(menu, formats);
	}
	menu_setprop(menu, MPROP_BACKNAME, "Wroc");
	menu_setprop(menu, MPROP_NEXTNAME, "Dalej");
	menu_setprop(menu, MPROP_EXITNAME, "Wyjscie");
	menu_display(id, menu);
	
	return PLUGIN_HANDLED;
}

public show_server_handle(id, menu, item) {
	if(item == MENU_EXIT) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	client_cmd(id, ";^"Connect^" %s", g_servers[item][1]);
	
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public event_druzyna() 
{
	new id = read_data(1);
	show_server(id);
}
Przejdź do postu


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

#1 RedPower

    Życzliwy

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:32
  • GG:
  • Imię:Piotrek
  • Lokalizacja:Mazowsze
Offline

Napisano 04.11.2016 19:00

Witam,

Proszę o pomoc odnośnie pluginu "serwer".

Chciałbym aby menu serwerów było wyświetlane zaraz po wejściu na serwer najlepiej na środku ekranu.

Z góry dziękuję :)

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Menu serwerow"
#define VERSION "0.2.1"
#define AUTHOR "Sebul"


#define SERVERS_FILE "servers_list.ini"
#define MAX_SERVERS 32
#define MAX_CHARACTERS 63

new g_servers[MAX_SERVERS][2][MAX_CHARACTERS+1],
	g_number_server,
	cvar_pokaz_ip;

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);

	register_clcmd("say /server", "show_server");
	register_clcmd("say_team /server", "show_server");

	cvar_pokaz_ip = register_cvar("server_show_ip", "1");

	set_task(4.0, "load_servers");
}

public load_servers() {
	new file_serwers[64];
	get_configsdir(file_serwers, 63);
	formatex(file_serwers, 63, "%s/%s", file_serwers, SERVERS_FILE);

	g_number_server = 0;

	new fHandle = fopen(file_serwers, "rt");

	if(fHandle) {
		new data_server[128];

		while(g_number_server<MAX_SERVERS && !feof(fHandle)) {
			fgets(fHandle, data_server, 127);

			if(!data_server[0] || data_server[0] == ' ' || data_server[0] == ';')
				continue;

			if(parse(data_server, g_servers[g_number_server][0], MAX_CHARACTERS, g_servers[g_number_server][1], MAX_CHARACTERS) != 2)
				continue;

			++g_number_server;
		}
		fclose(fHandle);
	}
	else
		log_amx("Brak '%s' na serwerze", file_serwers);
}

public show_server(id) {
	new menu = menu_create("Lista serwerow - polacz z:", "show_server_handle");

	for(new i=0,formats[256],pokaz=get_pcvar_num(cvar_pokaz_ip); i<g_number_server; ++i) {
		formatex(formats, 255, "%s%s%s", g_servers[i][0], pokaz ? " - \y" : "", pokaz ? g_servers[i][1] : "");
		menu_additem(menu, formats);
	}
	menu_setprop(menu, MPROP_BACKNAME, "Wroc");
	menu_setprop(menu, MPROP_NEXTNAME, "Dalej");
	menu_setprop(menu, MPROP_EXITNAME, "Wyjscie");
	menu_display(id, menu);

	return PLUGIN_HANDLED;
}

public show_server_handle(id, menu, item) {
	if(item == MENU_EXIT) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	client_cmd(id, "wait;Connect %s", g_servers[item][1]);

	menu_destroy(menu);
	return PLUGIN_HANDLED;
}


  • +
  • -
  • 0

Pozdrawiam RedPower ^D^

 


#2 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

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

Napisano 04.11.2016 20:54

Na środku ekranu się nie da.

Menu wyświetlane zaraz po wejściu gracza na serwer:

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Menu serwerow"
#define VERSION "0.2.1"
#define AUTHOR "Sebul"

#define TASK_SHOW_SERVER 775

#define SERVERS_FILE "servers_list.ini"
#define MAX_SERVERS 32
#define MAX_CHARACTERS 63

new g_servers[MAX_SERVERS][2][MAX_CHARACTERS+1],
	g_number_server,
	cvar_pokaz_ip;

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);

	register_clcmd("say /server", "show_server");
	register_clcmd("say_team /server", "show_server");

	cvar_pokaz_ip = register_cvar("server_show_ip", "1");
	
	register_message(get_user_msgid("ShowMenu"), "message_show_menu")

	set_task(1.0, "load_servers");
}

public load_servers() {
	new file_serwers[64];
	get_configsdir(file_serwers, 63);
	formatex(file_serwers, 63, "%s/%s", file_serwers, SERVERS_FILE);

	g_number_server = 0;

	new fHandle = fopen(file_serwers, "rt");

	if(fHandle) {
		new data_server[128];

		while(g_number_server<MAX_SERVERS && !feof(fHandle)) {
			fgets(fHandle, data_server, 127);

			if(!data_server[0] || data_server[0] == ' ' || data_server[0] == ';')
				continue;

			if(parse(data_server, g_servers[g_number_server][0], MAX_CHARACTERS, g_servers[g_number_server][1], MAX_CHARACTERS) != 2)
				continue;

			++g_number_server;
		}
		fclose(fHandle);
	}
	else
		log_amx("Brak '%s' na serwerze", file_serwers);
}

public show_server(id) {
	new menu = menu_create("Lista serwerow - polacz z:", "show_server_handle");

	for(new i=0,formats[256],pokaz=get_pcvar_num(cvar_pokaz_ip); i<g_number_server; ++i) {
		formatex(formats, 255, "%s%s%s", g_servers[i][0], pokaz ? " - \y" : "", pokaz ? g_servers[i][1] : "");
		menu_additem(menu, formats);
	}
	menu_setprop(menu, MPROP_BACKNAME, "Wroc");
	menu_setprop(menu, MPROP_NEXTNAME, "Dalej");
	menu_setprop(menu, MPROP_EXITNAME, "Wyjscie");
	menu_display(id, menu);

	return PLUGIN_HANDLED;
}

public show_server_handle(id, menu, item) {
	if(item == MENU_EXIT) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	client_cmd(id, "wait;Connect %s", g_servers[item][1]);

	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public _show_server(id)
{
	id-=TASK_SHOW_SERVER;
	
	if(is_user_connected(id)) show_server(id);
}

public message_show_menu(msgid, dest, id) set_task(0.1, "_show_server", id+TASK_SHOW_SERVER);

  • +
  • -
  • 1

#3 RedPower

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:32
  • GG:
  • Imię:Piotrek
  • Lokalizacja:Mazowsze
Offline

Napisano 05.11.2016 08:59

Menu jest wyświetlane lecz gdy chce się połączyć z serwerem nic się nie dzieje :(


Użytkownik RedPower edytował ten post 05.11.2016 08:59

  • +
  • -
  • 0

Pozdrawiam RedPower ^D^

 


#4 KrwioPijca

    Pomocny

  • Użytkownik

Reputacja: 16
Początkujący

  • Postów:59
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 05.11.2016 11:16

Dzieje się tak ponieważ gracze non steam mają zabezpieczenia przed takimi komendami, by je obejść musiałbyś poszukać na internecie.


  • +
  • -
  • 1

Żegnam wszystkich.


#5 RedPower

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:32
  • GG:
  • Imię:Piotrek
  • Lokalizacja:Mazowsze
Offline

Napisano 05.11.2016 13:21

KrwioPijca ja (steam) nie mogę przejść na inny serwer.


  • +
  • -
  • 0

Pozdrawiam RedPower ^D^

 


#6 NEQU#

    Wszechpomocny

  • Użytkownik

Reputacja: 54
Pomocny

  • Postów:363
  • GG:
Offline

Napisano 05.11.2016 15:13

Na ns nie zadziała raczej, dla steama musisz podmienić komendy..

 

np.


client_cmd(id, "echo ^"^";^"connect^"%s", g_servers[item][1])

  • +
  • -
  • 1

#7 RedPower

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:32
  • GG:
  • Imię:Piotrek
  • Lokalizacja:Mazowsze
Offline

Napisano 05.11.2016 15:54

Niestety nadal nic się nie dzieje :(


  • +
  • -
  • 0

Pozdrawiam RedPower ^D^

 


#8 ex0

    Wolny strzelec.

  • Power User

Reputacja: 383
Wszechpomocny

  • Postów:1 127
  • GG:
  • Imię:Kacper
  • Lokalizacja:Żywiec
Offline

Napisano 06.11.2016 19:04

Niestety nadal nic się nie dzieje :(

client_cmd(id, ";^"Connect^" %s", g_servers[item][1]);

  • +
  • -
  • 1

TWORZENIE FOR SPOŁECZNOŚCIOWYCH | ZARZĄDZANIE STRONAMI INTERNETOWYMI
WSPARCIE TECHNICZNE SERWERÓW HLDS | MODERNIZACJA, OPTYMALIZACJA, ZABEZPIECZENIA


Zapraszam do mojego profilu ;)


#9 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

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

Napisano 06.11.2016 23:46   Najlepsza odpowiedź

Poprawiam, w wersji 1. oprócz wspomnianych anty-zabezpieczeń, trzeba było poprawić buga.

Jeżeli lista serwerów została wyświetlona podczas, gdy otworzone było menu vgui (motd, wybór teamu), handle do menu był zwalniany, z czego wynikał brak reakcji na wybór gracza.

 

Wersja poprawiona (+metoda ex0):

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Menu serwerow"
#define VERSION "0.2.2"
#define AUTHOR "Sebul"

#define SERVERS_FILE "servers_list.ini"
#define MAX_SERVERS 32
#define MAX_CHARACTERS 63

new g_servers[MAX_SERVERS][2][MAX_CHARACTERS+1],
g_number_server,
cvar_pokaz_ip;

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	register_clcmd("say /server", "show_server");
	register_clcmd("say_team /server", "show_server");
	
	cvar_pokaz_ip = register_cvar("server_show_ip", "1");
	
	register_event( "TeamInfo", "event_druzyna", "a")
	
	set_task(1.0, "load_servers");
}

public load_servers() {
	new file_serwers[64];
	get_configsdir(file_serwers, 63);
	formatex(file_serwers, 63, "%s/%s", file_serwers, SERVERS_FILE);
	
	g_number_server = 0;
	
	new fHandle = fopen(file_serwers, "rt");
	
	if(fHandle) {
		new data_server[128];
		
		while(g_number_server<MAX_SERVERS && !feof(fHandle)) {
			fgets(fHandle, data_server, 127);
			
			if(!data_server[0] || data_server[0] == ' ' || data_server[0] == ';')
				continue;
			
			if(parse(data_server, g_servers[g_number_server][0], MAX_CHARACTERS, g_servers[g_number_server][1], MAX_CHARACTERS) != 2)
				continue;
			
			++g_number_server;
		}
		fclose(fHandle);
	}
	else
		log_amx("Brak '%s' na serwerze", file_serwers);
}

public show_server(id) {
	new menu = menu_create("Lista serwerow - polacz z:", "show_server_handle");
	
	for(new i=0,formats[256],pokaz=get_pcvar_num(cvar_pokaz_ip); i<g_number_server; ++i) {
		formatex(formats, 255, "%s%s%s", g_servers[i][0], pokaz ? " - \y" : "", pokaz ? g_servers[i][1] : "");
		menu_additem(menu, formats);
	}
	menu_setprop(menu, MPROP_BACKNAME, "Wroc");
	menu_setprop(menu, MPROP_NEXTNAME, "Dalej");
	menu_setprop(menu, MPROP_EXITNAME, "Wyjscie");
	menu_display(id, menu);
	
	return PLUGIN_HANDLED;
}

public show_server_handle(id, menu, item) {
	if(item == MENU_EXIT) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	client_cmd(id, ";^"Connect^" %s", g_servers[item][1]);
	
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public event_druzyna() 
{
	new id = read_data(1);
	show_server(id);
}

Użytkownik _McHappy edytował ten post 06.11.2016 23:48

  • +
  • -
  • 1

#10 RedPower

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:32
  • GG:
  • Imię:Piotrek
  • Lokalizacja:Mazowsze
Offline

Napisano 07.11.2016 16:26

Dzięki wielkie w końcu działa :)


  • +
  • -
  • 0

Pozdrawiam RedPower ^D^

 






Również z jednym lub większą ilością słów kluczowych: serwer, cs1.6

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

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