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

Plugin wymuszający cl_cmdrate


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

#1 jarski

    Początkujący

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:13
  • Lokalizacja:ŁG
Offline

Napisano 08.12.2009 12:34

Chciałem napisać plugin, który wymusza cl_cmdrate, jeśli jest on za niski przy wejściu gracza na serwer. Plugin ma sprawdzać czy cl_cmdrate jest niższe niż 65 i jeśli nie to ma zwiększyć tą zmienną do 65. Jeśli gracz ma powyżej 65 to plugin nic nie robi. Niestety coś jest źle i plugin wymusza wartość zmiennej także powyżej 65. Proszę o poprawę kodu.
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "cmdrate"
#define VERSION "1.0"
#define AUTHOR "jarski"


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

public client_connect(id)
{
	new cmdrate[32]
	get_user_info(id, "cl_cmdrate", cmdrate, 31)
	if(cmdrate[id] < 65)
	{
		client_cmd(id,"cl_cmdrate 65")
	}
	return PLUGIN_HANDLED
}

  • +
  • -
  • 0

#2 Adi^

    Życzliwy

  • Użytkownik

Reputacja: 8
Nowy

  • Postów:34
  • Imię:Adrian
  • Lokalizacja:Racibórz
Offline

Napisano 08.12.2009 12:52

Wejdź do cs'a/cz/hl i wpisz setinfo w konsoli. Sprawdź czy masz w ogóle takie pole jak cl_cmdrate. Nie możesz czytać cvarów w ten sposób, użyj rodziny funkcji get_cvar_string(), get_cvar_num(), get_cvar_float().
  • +
  • -
  • 0

#3 jarski

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:13
  • Lokalizacja:ŁG
Offline

Napisano 08.12.2009 13:17

Wpisałem i nie ma cl_cmdrate. Kierowałem się http://www.amxmodx.o...p?go=func&id=18 Zrobiłem tak, ale dalej jest to samo:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "cmdrate"
#define VERSION "1.1"
#define AUTHOR "jarski"


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

public client_connect(id)
{
	if(get_cvar_num("cl_cmdrate") < 65)
	{
		client_cmd(id,"cl_cmdrate 65")
	}
	return PLUGIN_HANDLED
}
Czy get_cvar_string(), get_cvar_num(), get_cvar_float() "biorą" tylko zmienne po stronie serwera? To mój pierwszy plugin, więc proszę o dalsze wskazówki.
  • +
  • -
  • 0

#4 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 08.12.2009 13:22

Steam czy NS? Na NS nie ma mozliwosci pobierania niektrorych wartosci...

Jak dla steam to uzyj: query_client_cvar
  • +
  • -
  • 0

#5 jarski

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:13
  • Lokalizacja:ŁG
Offline

Napisano 08.12.2009 15:37

Dzięki za odpowiedzi. Serwer jest steam/nonsteam. Napisałem coś takiego, ale wciąż nie działa. Mógłby mi ktoś wyjaśnić gdzie robię błąd?
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "cmdrate"
#define VERSION "1.0"
#define AUTHOR "jarski"


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

public client_connect(id)
{
	query_client_cvar(id, "cl_cmdrate", "new_cmdrate")
}

public new_cmdrate(id, const cvar[], const value[])
{
	if(value[id] < 65)
	{
		client_cmd(id,"cl_cmdrate 65")
	}
	return PLUGIN_HANDLED
}

  • +
  • -
  • 0

#6 Portek

    Kończymy zabawę, permanentna emerytura!

  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 08.12.2009 19:29

Zakładając iż serwer jest ns+s
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "cmdrate"
#define VERSION "1.0"
#define AUTHOR "jarski"


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

public client_connect(id)
{
    query_client_cvar(id, "cl_cmdrate", "new_cmdrate")
}

public new_cmdrate(id, const cvar[], const value[])
{
	new Float:val=str_to_float(value);
	if(val < 65)
	{
		client_cmd(id,"cl_cmdrate 65")
	}
	return PLUGIN_HANDLED
}

Dzięki za odpowiedzi. Serwer jest steam/nonsteam. Napisałem coś takiego, ale wciąż nie działa. Mógłby mi ktoś wyjaśnić gdzie robię błąd?

...
	new Float:val=str_to_float(value);
	if(val < 65)
...

  • +
  • -
  • 0

serwer-1.png
IP: ts3.cserwerek.pl


#7 jarski

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:13
  • Lokalizacja:ŁG
Offline

Napisano 09.12.2009 16:41

Dziękuję bardzo, działa :D

[ Dodano: 09-12-2009, 17:43 ]
Jednak nie działa do końca dobrze, bo w konsoli dużo komunikatów "dropped" (opuścił grę). Praktycznie sami steamowcy grali (może jedna osoba non steam). Jeżeli nie da się napisać pluginu to trudno :(
Osobom, które nie mogą się połączyć pisze w konsoli:

Could not establish connection to Steam servers (steamclient2).
Connecting to 85.232.244.14:27115...
Connection accepted by 85.232.244.14:27115
Host_Error: UserMsg: Not Present on Client


  • +
  • -
  • 0




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

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