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] Funkcja - cvar


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

#1 Niquit

    Zaawansowany

  • Użytkownik

Reputacja: 4
Nowy

  • Postów:114
  • Lokalizacja:Szczecin
Offline

Napisano 05.08.2012 00:07

Witam,
chcę, by pobierało mi z cvar'u "rs_players" liczbę i działało na takiej zasadzie:

public client_connect()
{
if(player_count() == 18)
{
server_cmd("sv_visiblemaxplayers 19")
}
else if(player_count() >= 19)
{
server_cmd("sv_visiblemaxplayers 20")
}
else
{
server_cmd("sv_visiblemaxplayers 18")
}
}


Czyli standardowo cvar ma wartość 18. I dodać jakoś w instrukcjach warunków, by miało to wartość np. w pierwszym:
get_pcvar_num(cvar_players) = get_pcvar_num(cvar_players)+1

Takie coś napisałem:
public client_connect()
{
if(player_count() == get_pcvar_num(cvar_players))
{
get_pcvar_num(cvar_players) = get_pcvar_num(cvar_players)+1
server_cmd("sv_visiblemaxplayers %s",players)
}
else if(player_count() > get_pcvar_num(cvar_players))
{
get_pcvar_num(cvar_players) = get_pcvar_num(cvar_players)+2
server_cmd("sv_visiblemaxplayers %s",players)
}
else
{
get_pcvar_num(cvar_players) = get_pcvar_num(cvar_players)
server_cmd("sv_visiblemaxplayers %s",players)
}
}


Użytkownik Niquit edytował ten post 05.08.2012 00:09

  • +
  • -
  • 0

#2 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 05.08.2012 01:53

Wartości cvarów najlepiej zmienić funkcją set_cvar_num

Kod jest bardzo nieoptymalny, proponuję Ci
#include <amxmodx>

public plugin_init()
register_plugin("sv_visiblemaxplayers set depend on rs_players", "0.1", "benio101");

public client_authorized(){
new num=get_cvar_num("rs_players");
set_cvar_num("sv_visiblemaxplayers",max(min(get_playersnum()+1,num),num+2));
}


#3 Niquit

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 4
Nowy

  • Postów:114
  • Lokalizacja:Szczecin
Offline

Napisano 05.08.2012 02:00

Wartości cvarów najlepiej zmienić funkcją set_cvar_num

Kod jest bardzo nieoptymalny, proponuję Ci

#include <amxmodx>

public plugin_init()
register_plugin("sv_visiblemaxplayers set depend on rs_players", "0.1", "benio101");

public client_authorized(){
new num=get_cvar_num("rs_players");
set_cvar_num("sv_visiblemaxplayers",max(min(get_playersnum()+1,num),num+2));
}


I ten plugin co napisałeś wystarczy, że jak ustawie cvar:
rs_players "18"
To jak będzie:
<18 graczy - sv_visiblemaxplayers "18";
=18 graczy - sv_visiblemaxplayers "19";
>18 graczy - sv_visiblemaxplayers "20"?
  • +
  • -
  • 0

#4 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 05.08.2012 02:04

tak
(05.08.2012 02:06):
Dla takiego algorytmu, to nawet bruta by można szybko napisać ;)


#5 Niquit

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 4
Nowy

  • Postów:114
  • Lokalizacja:Szczecin
Offline

Napisano 05.08.2012 13:09

Tylko jeszcze jedno.
Cvar rs_players jest również w innej funkcji, w rezerwacji slota.
Nie będzie to ze sobą kolidowało, skoro jeśli się nie mylę, to Twój kod zmienia wartość cvar'a, tak?

Jeśli Twój kod zmienia wartość cvar'a to może przypisać nową zmienną cvarze, i na tej zmiennej będą wykonywane instrukcje?
  • +
  • -
  • 0

#6 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 05.08.2012 13:29

mój kod zmienia wartość cvaru sv_visiblemaxplayers na podstawie cvaru rs_players, ale samego cvaru rs_players nie zmienia.

#7 Niquit

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 4
Nowy

  • Postów:114
  • Lokalizacja:Szczecin
Offline

Napisano 05.08.2012 14:57

Przy wejściu gracza ustawia na sv_visiblemaxplayers 20.
Nie ważne czy jest 5 graczy czy 18. Zawsze na 20.

A ja chcę:
<18 graczy - sv_visiblemaxplayers "18";
=18 graczy - sv_visiblemaxplayers "19";
>18 graczy - sv_visiblemaxplayers "20"
  • +
  • -
  • 0

#8 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 05.08.2012 15:06

Na szybko funkcje max i min napisałem w odwrotnej kolejności, powinno być:


#include <amxmodx>

public plugin_init()
register_plugin("sv_visiblemaxplayers set depend on rs_players", "0.1", "benio101");

public client_authorized(){
new num=get_cvar_num("rs_players");
set_cvar_num("sv_visiblemaxplayers",min(max(get_playersnum()+1,num),num+2));
}


#9 Niquit

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 4
Nowy

  • Postów:114
  • Lokalizacja:Szczecin
Offline

Napisano 05.08.2012 15:44

Serwer był 18/18, a powinno być 18/19.
  • +
  • -
  • 0

#10 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 05.08.2012 16:48

Byłem przekonany, że get_playersnum() zwraca liczbę graczy na serwerze, zamiast tego trzeba jednak użyć get_playersnum(1) i będzie działać.
Podczas testów z get_playersnum() dostawałem zawsze o 1 gracza za mało, stąd błąd, użycie get_playersnum(1) pobierało już poprawne wartości.
Przetestowany kod:

#include <amxmodx>

public plugin_init()
register_plugin("sv_visiblemaxplayers set depend on rs_players", "0.1", "benio101");

public client_authorized(){
new num=get_cvar_num("rs_players");
set_cvar_num("sv_visiblemaxplayers",min(max(get_playersnum(1)+1,num),num+2));
}


#11 Niquit

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 4
Nowy

  • Postów:114
  • Lokalizacja:Szczecin
Offline

Napisano 05.08.2012 20:04

Działa, tylko brakuje drugiego takie z:

public client_disconnect(id)
Dzięki pomogłeś, można zamknąć(+ dostałeś wcześniej ;)).
  • +
  • -
  • 0

#12 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 05.08.2012 20:08

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

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





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

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