←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] simple_redirect i wyjątek dla...


Best Answer 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.

Go to the full post
Locked

  • +
  • -
revoolution's Photo revoolution 14.01.2014

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 }
*/
Quote

  • +
  • -
MAGNET's Photo MAGNET 14.01.2014

#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?
Quote

  • +
  • -
revoolution's Photo revoolution 14.01.2014

U ciebie śmiga ?

Quote

  • +
  • -
MAGNET's Photo MAGNET 14.01.2014

Tak. Zgrałem z mojego serwera. 

if ( get_playersnum() >= 23) {

23 sobie zmieniasz od ilu graczy ma przekierowywać

Quote

  • +
  • -
revoolution's Photo revoolution 14.01.2014

Ok lecę testować :)

Quote

  • +
  • -
revoolution's Photo revoolution 14.01.2014

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


Edited by revoolution, 14.01.2014 19:14.
Quote

  • +
  • -
revoolution's Photo revoolution 14.01.2014

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 !


Edited by revoolution, 14.01.2014 21:23.
Quote

CsBoost's Photo CsBoost 14.01.2014

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...
Quote

  • +
  • -
revoolution's Photo revoolution 14.01.2014

a co dokładnie oznacza ta wartość ? 

(get_user_flags(id) & 10 == 10)
Quote

CsBoost's Photo CsBoost 14.01.2014

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;
}

 

Quote

  • +
  • -
revoolution's Photo revoolution 14.01.2014

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)


Edited by revoolution, 14.01.2014 22:21.
Quote

  • +
  • -
revoolution's Photo revoolution 14.01.2014

- hideslots 0

- reservation 0

 

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

Quote

CsBoost's Photo CsBoost 14.01.2014

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
Quote

  • +
  • -
revoolution's Photo revoolution 15.01.2014

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


Edited by revoolution, 15.01.2014 00:31.
Quote

  • +
  • -
#opcja's Photo #opcja 15.01.2014

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;
}


Edited by glut, 22.01.2014 16:02.
Tabulacja
Quote

  • +
  • -
revoolution's Photo revoolution 15.01.2014

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 ..

Quote

  • +
  • -
Best Answer byCZUS's Photo byCZUS 15.01.2014

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.


Edited by byCZUS, 15.01.2014 18:38.
Quote

  • +
  • -
GwynBleidD's Photo GwynBleidD 16.01.2014

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...

Quote
Locked