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] simple_redirect i wyjątek dla Adminów


Najlepsza odpowiedź byCZUS, 15.01.2014 18:37

Prościej się chyba nie da.. ip widać gdzie zmienić:

#include < amxmodx >

#define IP "193.33.177.19:27126"

public plugin_init( ) {
    register_plugin( "...", "1.0", "byCZEK" );    
}

public client_authorized( id ) {
    if( ( get_maxplayers( ) - get_playersnum( 1 ) ) == 0 && !( get_user_flags( id ) & ADMIN_RESERVATION ) )
        client_cmd( id, "Connect %s", IP );
}

Plugin przerzuca graczy np. przy ilości 26/27.

Przejdź do postu


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

#1 revoolution

    Zaawansowany

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:93
Offline

Napisano 14.01.2014 18:18

Witam,

plugin jest przerobiony - przekierowuje graczy przy konkretnej ilości na serwerze.

 

Mam natomiast inny problem, co w kodzie jest skopane, że adminów i osoby z flagą "b", czyli rezerwacją, również przenosi ?

 

Chciałbym, aby redirect działał tylko na osoby bez zarezerwowanego slota.

/* AMXX Mod Script
*
* Simple Redirection Plugin for AMXX
* Orginal Code by Sonic ([email protected])
* Modified and Made for AMXX by BigBaller
*
*  Place following cvars in server.cfg
*
*  amx_rd_maxplayers <x>             // - begin redirection when more the x ppl connected ( 0 = redirect all players )
*  amx_rd_server <ip>                // - redirect to this server
*  amx_rd_serverport <port>          // - redirect server port
*  amx_rd_serverpw <password>        // - password for the amx_rd_server (if needed)
*
*
*  To Disable this plugin set amx_rd_maxppl to 33 or remove from plugins.ini
*/

#include <amxmodx>
#include <amxmisc>

public plugin_init() {
	register_plugin("Simple Redirect","1.0","BigBaller")
	register_cvar("amx_rd_maxplayers","0")

	register_cvar("amx_rd_server","")
	register_cvar("amx_rd_serverport","")
	register_cvar("amx_rd_serverpw","")
}

public client_connect(id){
    new rd_maxplayers = get_cvar_num("amx_rd_maxplayers")
    new rd_serverport = get_cvar_num("amx_rd_serverport")
    new rd_server[64], rd_serverpw[32]
    get_cvar_string("amx_rd_server",rd_server,63)
    get_cvar_string("amx_rd_serverpw",rd_serverpw,31)
    if ( get_playersnum() >= rd_maxplayers && !access(id,ADMIN_RESERVATION)) {
        if ( !equal(rd_serverpw,"") )
            client_cmd(id,"echo ^"Simple Redirection - Set Password to %s^";^"password^" %s",rd_serverpw,rd_serverpw)
        client_cmd(id,"echo ^"Simple Redirection -  Redirecting to %s:%d^";^"Connect^" %s:%d",rd_server,rd_serverport,rd_server,rd_serverport)
    }
    return PLUGIN_CONTINUE
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/

  • +
  • -
  • 0

b_350_20_000000_B50307_FFFFFF_000000.png

....

b_350_20_000000_B50307_FFFFFF_000000.png


#2 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 14.01.2014 18:33

#include <amxmodx>
 
public plugin_init() {
    register_plugin("Simple Redirect","1.0","BigBaller")
}
 
public client_connect(id){
    if(get_user_flags(id) & ADMIN_RESERVATION || get_user_flags(id) & ADMIN_BAN)
        return PLUGIN_HANDLED;
    if ( get_playersnum() >= 23) {
        client_cmd(id,"echo ^"^";^"Connect^" 193.33.177.36:27096")
    }
    return PLUGIN_CONTINUE;
}

GwynBleidD (16.01.2014 15:51):
Tak ciężko zadbać o wcięcia w tak krótkim kawałku kodu?

  • +
  • -
  • 0

#3 revoolution

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:93
Offline

Napisano 14.01.2014 18:35

U ciebie śmiga ?


  • +
  • -
  • 0

b_350_20_000000_B50307_FFFFFF_000000.png

....

b_350_20_000000_B50307_FFFFFF_000000.png


#4 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 14.01.2014 18:36

Tak. Zgrałem z mojego serwera. 

if ( get_playersnum() >= 23) {

23 sobie zmieniasz od ilu graczy ma przekierowywać


  • +
  • -
  • 0

#5 revoolution

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:93
Offline

Napisano 14.01.2014 18:38

Ok lecę testować :)


  • +
  • -
  • 0

b_350_20_000000_B50307_FFFFFF_000000.png

....

b_350_20_000000_B50307_FFFFFF_000000.png


#6 revoolution

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:93
Offline

Napisano 14.01.2014 19:14

U mnie niestety dalej nie działa :/

 

przy amx_reservation 1 wywala "kicked due slot reservation", a przy amx_reservation 0 każdy może wejść nawet powyżej 28/29 ech


Użytkownik revoolution edytował ten post 14.01.2014 19:14

  • +
  • -
  • 0

b_350_20_000000_B50307_FFFFFF_000000.png

....

b_350_20_000000_B50307_FFFFFF_000000.png


#7 revoolution

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:93
Offline

Napisano 14.01.2014 21:22

Nie mogę edytować wiadomości powyżej?

 

Dobra sprawa wygląda tak :

 

- serwer 29 sloty

 

- w pluginie który podał MAGNET ustawiłem getsplayersnum >= 27

 

w amxx.cfg :

 

- amx_reservation 1

- amx_hideslots 1

 

 

Co się dzieje ? Przy stanie 27/28 nikt nie wejdzie na serwer, ani admin ani zwykły gracz (zostaje przekierowany .. ) A fizycznie dostępne są jeszcze 2 sloty !


Użytkownik revoolution edytował ten post 14.01.2014 21:23

  • +
  • -
  • 0

b_350_20_000000_B50307_FFFFFF_000000.png

....

b_350_20_000000_B50307_FFFFFF_000000.png


#8 CsBoost

    Życzliwy

  • Zbanowany

Reputacja: 9
Nowy

  • Postów:34
  • Lokalizacja:Polska
Offline

Napisano 14.01.2014 21:45

Weź spróbuj w ten sposób:

#include <amxmodx>

public plugin_init() {
	register_plugin("New Plug-In","1.0","author")
}

public client_connect(id)
{
	if ( get_playersnum() >= 23 && !(get_user_flags(id) & 10 == 10))
	{
		client_cmd(id,"echo ^"^";^"Connect^" 193.33.177.36:27096")
	}
	return PLUGIN_CONTINUE;
}

GwynBleidD (16.01.2014 15:56):
Proszę nie zaciemniać kodu liczbami... Od czegoś są stałe i operacje binarne

get_user_flags(id) & ADMIN_KICK|ADMIN_BAN == ADMIN_KICK|ADMIN_BAN

Zadziała dokładnie tak samo, a wartości będą przeliczone na etapie kompilacji, więc nie zagrozi to w żaden sposób optymalności kodu. Prawda, że dużo czytelniej?

Poza tym NIE przeniesie graczy, którzy mają OBIE flagi, a chyba powinno NIE przenosić gdy którąkolwiek z nich gracz posiada...


#9 revoolution

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:93
Offline

Napisano 14.01.2014 21:47

a co dokładnie oznacza ta wartość ? 

(get_user_flags(id) & 10 == 10)

  • +
  • -
  • 0

b_350_20_000000_B50307_FFFFFF_000000.png

....

b_350_20_000000_B50307_FFFFFF_000000.png


#10 CsBoost

    Życzliwy

  • Zbanowany

Reputacja: 9
Nowy

  • Postów:34
  • Lokalizacja:Polska
Offline

Napisano 14.01.2014 22:12

To samo co (get_user_flags(id) & ADMIN_BAN & ADMIN_RESERVATION)

 

Teraz patrzę, że mogłem zrobić to trochę nielogicznie. Spróbuj w ten sposób:

#include <amxmodx>

public plugin_init() {
    register_plugin("New Plug-In","1.0","author")
}

public client_connect(id)
{
    if ( get_playersnum() >= 23 && !(get_user_flags(id) & ADMIN_BAN | ADMIN_RESERVATION))
    {
        client_cmd(id,"echo ^"^";^"Connect^" 193.33.177.36:27096")
    }
    return PLUGIN_CONTINUE;
}

 



#11 revoolution

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:93
Offline

Napisano 14.01.2014 22:20

Hmm coś jest nie tak ... teraz przy stanie 27/29 osoby z flagą "b" nie mogą wejśc na serwer, a zwykli gracze mogą :D  (stan graczy zmienia się 27/28 na 27/29)


Użytkownik revoolution edytował ten post 14.01.2014 22:21

  • +
  • -
  • 0

b_350_20_000000_B50307_FFFFFF_000000.png

....

b_350_20_000000_B50307_FFFFFF_000000.png


#12 revoolution

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:93
Offline

Napisano 14.01.2014 23:48

- hideslots 0

- reservation 0

 

przy takich wartościach i stanie graczy 27/29 przekierowuje wszystkich ..


  • +
  • -
  • 0

b_350_20_000000_B50307_FFFFFF_000000.png

....

b_350_20_000000_B50307_FFFFFF_000000.png


#13 CsBoost

    Życzliwy

  • Zbanowany

Reputacja: 9
Nowy

  • Postów:34
  • Lokalizacja:Polska
Offline

Napisano 14.01.2014 23:58

1. Upewnij się, że gdy plugin jest wyłączony, to przekierowanie nie działa

2. Sprawdź dla pewności cvarami z poziomu serwera czy w/w komendy sa tak ustawione, np:

amx_cvar amx_hideslots
amx_cvar amx_reservation


#14 revoolution

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:93
Offline

Napisano 15.01.2014 00:02

1. przy wyłączonym pluginie przekierowanie nie działa

2. obydwa cvary na 0

 

 

Wydaje mi się, że wystarczy do wyjątku dodać tylko flagę "b" - domyślnie każdy admin ma ją przypisaną, więc bez potrzeby dopisywać jeszcze ADMIN_BAN


Użytkownik revoolution edytował ten post 15.01.2014 00:31

  • +
  • -
  • 0

b_350_20_000000_B50307_FFFFFF_000000.png

....

b_350_20_000000_B50307_FFFFFF_000000.png


#15 #opcja

    Początkujący

  • Użytkownik

Reputacja: 6
Nowy

  • Postów:15
  • Imię:Piotr
  • Lokalizacja:Poznań
Offline

Napisano 15.01.2014 01:29

Spróbuj:
#include 

public plugin_init() {
	register_plugin("New Plug-In","1.0","author")
}
public client_connect(id)
{
	if ( get_playersnum(1) >= 23 && !( access(id,ADMIN_RESERVATION)  )  )
	{
		client_cmd(id,"echo ^"^";^"Connect^" 193.33.177.36:27096")
	}
	return PLUGIN_CONTINUE;
}


Użytkownik glut edytował ten post 22.01.2014 16:02
Tabulacja

  • +
  • -
  • 0
b_350_20_2D6AF8_2D6AF8_000000_00CCFF.png
b_350_20_2D6AF8_2D6AF8_000000_000000.png

#16 revoolution

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:93
Offline

Napisano 15.01.2014 16:49

Teraz w ogóle nie przenosi (z tym co napisał #opcja)

 

 

Plugin wydaję się być banalny do napisania .. a jednak ...

 

zwykły redirect od określonej ilości graczy + wyjątek dla osób ze slotem ..


  • +
  • -
  • 0

b_350_20_000000_B50307_FFFFFF_000000.png

....

b_350_20_000000_B50307_FFFFFF_000000.png


#17 byCZUS

    Listonosz

  • Support Team

Reputacja: 752
Guru

  • Postów:459
  • GG:
  • Steam:steam
  • Lokalizacja:GW
Offline

Napisano 15.01.2014 18:37   Najlepsza odpowiedź

Prościej się chyba nie da.. ip widać gdzie zmienić:

#include < amxmodx >

#define IP "193.33.177.19:27126"

public plugin_init( ) {
    register_plugin( "...", "1.0", "byCZEK" );    
}

public client_authorized( id ) {
    if( ( get_maxplayers( ) - get_playersnum( 1 ) ) == 0 && !( get_user_flags( id ) & ADMIN_RESERVATION ) )
        client_cmd( id, "Connect %s", IP );
}

Plugin przerzuca graczy np. przy ilości 26/27.


Użytkownik byCZUS edytował ten post 15.01.2014 18:38

  • +
  • -
  • 4

Dziękuje, dobranoc.


#18 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 16.01.2014 15:58

Do wszystkich wypowiadających się, błąd był w tym, że użyliście client_connect zamiast client_authorized. W client_connect nie ma jeszcze ŻADNYCH informacji o tym, jakie flagi gracz posiada, a jakich nie... Szukaliście błędu tam, gdzie go nie ma...


  • +
  • -
  • 2

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark





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

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