Moje .sma:
/* By pluser */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Nasze serwery"
#define VERSION "1.0"
#define AUTHOR "pluser"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /ffa", "ffa")
register_clcmd("say /db", "db")
register_clcmd("say /kz", "kz")
register_clcmd("say /dd2", "dd2")
register_clcmd("say /aaf", "aaf")
}
public ffa(id)
{
client_cmd(id, " Connect 37.123.206.28:27015");
return PLUGIN_HANDLED
}
public db(id)
{
client_cmd(id, " Connect 195.117.171.157:27025");
return PLUGIN_HANDLED
}
public kz(id)
{
client_cmd(id, " Connect 195.117.171.157:27045");
return PLUGIN_HANDLED
}
public dd2(id)
{
client_cmd(id, " Connect 193.33.176.21:27015");
return PLUGIN_HANDLED
}
public aaf(id)
{
client_cmd(id, " Connect 195.117.171.157:27035");
return PLUGIN_HANDLED
}
Wycinek .sma xredirect , w którym jest ta funkcja:
public redirect(id, nServer, bCanOther, bCanDrop, bIgnoreSource)
{
new nForwardServer = -1
new bool:bFoundServer = false
new nRedirType
if (nServer == -1)
nRedirType = 1
else
nRedirType = 2
new nSourceServer
if (bIgnoreSource)
{
nSourceServer = -1
}
else
{
new sSourceServer[3]
get_user_info(id, "xredir", sSourceServer, 2)
if (!is_str_num(sSourceServer))
nSourceServer = -1
else
nSourceServer = str_to_num(sSourceServer)
if ((nSourceServer < 0) || (nSourceServer >= g_nServerCount))
nSourceServer = -1
}
if ((can_redirect_player(nServer, id, nRedirType, false) > 0) || (nServer == -1))
{
if (!bCanOther)
{
if (bCanDrop)
{
client_cmd(id, "echo %s: %L", PLUGIN_TAG, id, "MSG_NO_REDIRECT_SERVER")
client_cmd(id, "disconnect")
}
return false
}
nForwardServer = 0
// make sure at least one valid server exists or the second loop could be endless
while (nForwardServer < g_nServerCount)
{
if ((can_redirect_player(nForwardServer, id, nRedirType, false) == 0) && (nForwardServer != nSourceServer))
{
bFoundServer = true
break
}
nForwardServer++
}
new nAutoMode = get_pcvar_num(cvar_auto)
if ((nAutoMode == 1) || (nAutoMode == 3) || (nAutoMode == 5)) // redirect to random server
nForwardServer = -1
}
else
{
nForwardServer = nServer
bFoundServer = true
}
if (bFoundServer)
{
while (nForwardServer == -1)
{
nForwardServer = random_num(0, g_nServerCount - 1)
if ((can_redirect_player(nForwardServer, id, nRedirType, false) > 0) || ((nForwardServer == nSourceServer)))
nForwardServer = -1
}
new sUserNick[MAX_NAME_LEN]
get_user_name(id, sUserNick, MAX_NAME_LEN - 1)
if (!equal(g_saServerPasswords[nForwardServer], "")) // set the user's server connect password if needed
client_cmd(id, "setinfo ^"password^" ^"%s^"", g_saServerPasswords[nForwardServer])
client_cmd(id, "setinfo ^"xredir^" ^"%d^"", g_nOwnServer)
new sCheckAddress[MAX_IP_LEN]
get_user_ip(id, sCheckAddress, MAX_IP_LEN - 1, 1)
new sFullAddress[MAX_SERVERADDRESS_LEN]
if (is_local_address(sCheckAddress) && (!equal(g_saServerLocalAddresses[nForwardServer], "")))
format(sFullAddress, MAX_SERVERADDRESS_LEN - 1, "%s:%d", g_saServerLocalAddresses[nForwardServer], g_naServerPorts[nForwardServer])
else
format(sFullAddress, MAX_SERVERADDRESS_LEN - 1, "%s:%d", g_saServerAddresses[nForwardServer], g_naServerPorts[nForwardServer])
if (nRedirType == 1)
client_cmd(id, "echo %s: %L", PLUGIN_TAG, id, "MSG_SERVER_FULL_REDIRECTING", g_saServerNames[nForwardServer])
client_cmd(id, "Connect %s", sFullAddress)
if (get_pcvar_num(cvar_show) == 1)
{
new nPlayers[MAX_PLAYERS]
new nPlayerNum, nPlayerCount, nCurrentPlayer
get_players(nPlayers, nPlayerNum, "c")
for (nPlayerCount = 0; nPlayerCount < nPlayerNum; nPlayerCount++)
{
nCurrentPlayer = nPlayers[nPlayerCount]
if (get_pcvar_num(cvar_follow) == 1)
client_print(nCurrentPlayer, print_chat, "%s: %L - %L", PLUGIN_TAG, nCurrentPlayer, "MSG_REDIRECTED", sUserNick, g_saServerNames[nForwardServer], nCurrentPlayer, "MSG_FOLLOW")
else
client_print(nCurrentPlayer, print_chat, "%s: %L", PLUGIN_TAG, nCurrentPlayer, "MSG_REDIRECTED", sUserNick, g_saServerNames[nForwardServer])
}
}
g_nLastRedirectServer = nForwardServer
g_sLastRedirectName = sUserNick
}
else if (bCanDrop)
{
client_cmd(id, "echo %s: %L", PLUGIN_TAG, id, "MSG_NO_REDIRECT_SERVER")
client_cmd(id, "disconnect")
}
return true
}
Dokładnie:
if (get_pcvar_num(cvar_show) == 1)
{
new nPlayers[MAX_PLAYERS]
new nPlayerNum, nPlayerCount, nCurrentPlayer
get_players(nPlayers, nPlayerNum, "c")
for (nPlayerCount = 0; nPlayerCount < nPlayerNum; nPlayerCount++)
{
nCurrentPlayer = nPlayers[nPlayerCount]
if (get_pcvar_num(cvar_follow) == 1)
client_print(nCurrentPlayer, print_chat, "%s: %L - %L", PLUGIN_TAG, nCurrentPlayer, "MSG_REDIRECTED", sUserNick, g_saServerNames[nForwardServer], nCurrentPlayer, "MSG_FOLLOW")
else
client_print(nCurrentPlayer, print_chat, "%s: %L", PLUGIN_TAG, nCurrentPlayer, "MSG_REDIRECTED", sUserNick, g_saServerNames[nForwardServer])
}
}
MSG_REDIRECTED = Gracz '%s' przekierowuje sie na %s
Jeśli można, to niech to jest użyte bez słownika, tylko bezpośrednio.
Dorzucam .sma xredirect i wycinek z tego pluginu w którym występuje ta funkcja.
Będę wdzięczny za pomoc, dziękuje.