#include <amxmodx>
#include <amxmisc>
#pragma tabsize 0
public plugin_init() {
register_plugin("Menu Serwerow","1.0","???")
register_clcmd("say /serwer","AwesomeMenu")
register_clcmd("say /serwery","AwesomeMenu")
register_clcmd("say /server","AwesomeMenu")
register_clcmd("say /servery","AwesomeMenu")
}
public AwesomeMenu(id)
{
new menu = menu_create("Menu serwerow!:", "menu_handler")
menu_additem(menu, "CsBytow[AimSkill/Respawn][STEAM ONLY]", "1", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)
}
public menu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
return PLUGIN_HANDLED
}
new data[8], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,7, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1:{
client_cmd(id, "Connect 91.207.10.45:27010")
menu_destroy(menu)
return PLUGIN_HANDLED
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
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.
|
Guest Message by DevFuse
Ilosc graczy
Temat rozp. kasza, 01.09.2009 16:27
8 odpowiedzi w tym temacie
#1
Napisano 01.09.2009 16:27
Mozna dodac w tym pluginie opcje aby pokazywala ilosc graczy na serwerze ??
#2
Napisano 01.09.2009 19:22
bez sockets nie
#3
Napisano 01.09.2009 19:28
a zrobil byś?
#4
Napisano 01.09.2009 20:37
widzialem cos podobnego w xRedirect czy jakos tak
wyciagnij z tamtego
#5
Napisano 01.09.2009 20:41
Żeby nie było więcej o tym mowy - kasza nie zna się na PAWNIE
#6
Napisano 01.09.2009 20:43
g_naServerActivePlayers[nServerCount] = index_get_byte(sRcvBuf, aIndexes[A2S_INFO_GOLD_IDX_NUMPLAYERS]) g_naServerMaxPlayers[nServerCount] = index_get_byte(sRcvBuf, aIndexes[A2S_INFO_GOLD_IDX_MAXPLAYERS])cos takiego szukaj
@up
cos pomoge
#7
Napisano 01.09.2009 21:16
kyku, nic nie wymysle
wybacz nie jak jak pisal abes
mial dopisac ze kompletne 0kasza nie zna się na PAWNIE
#8
Napisano 15.10.2009 21:38
jak bys jeszcze chcial.. masz tu moj plugin:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <sockets>
#include <colorchat>
#define SERWEROW 6
#define TAG "[Ganiany]"
new PORT[SERWEROW];
new IP[SERWEROW][33];
new SOCKETS[SERWEROW];
new MAPA[SERWEROW][33];
new GRACZY[SERWEROW];
new GRACZYMAX[SERWEROW];
new iloscserwerow;
public plugin_init() {
// --- TWOJE SERWERY --
format(IP[/*W pierwszym bez ++*/iloscserwerow], 32, "77.79.241.195");
PORT[iloscserwerow] = 27059 ;
format(IP[++iloscserwerow], 32, "77.79.241.200");
PORT[iloscserwerow] = 27075;
format(IP[++iloscserwerow], 32, "77.79.241.206");
PORT[iloscserwerow] = 27054 ;
format(IP[++iloscserwerow], 32, "193.33.177.35");
PORT[iloscserwerow] = 27146 ;
format(IP[++iloscserwerow], 32, "77.79.241.208");
PORT[iloscserwerow] = 27022 ;
// -- KONIEC
if(iloscserwerow > SERWEROW){
server_print("------------------------------------");
server_print("-----------ZA DUZO SERWEROW---------");
server_print("------------------------------------");
set_fail_state("Za duzo serwerow");
}
register_plugin("MINI REDIRECT", "0.1", "kyku")
set_task(1.0, "query_servers")
set_task(555.0, "spamuj", 0, _, _, "b"); // co 555 sekund <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/wink.gif' class='bbc_emoticon' alt=';)' />
register_clcmd("say /serwer","serwery")
register_clcmd("say /serwery","serwery")
register_clcmd("say /server","serwery")
register_clcmd("say /servery","serwery")
}
public spamuj()
{
ColorChat(0, GREEN, "%s^x01 By przelaczac sie pomiedzy serwerami wpisz:^x03 /serwery", TAG);
}
public serwery(id)
{
query_servers()
for(new i; i<=iloscserwerow; i++){
if(equal(MAPA[i], "") || equal(MAPA[i], " ")|| equal(MAPA[i], "Serwer OFFLINE")){
format(MAPA[i], 32, "Serwer OFFLINE");
} else if(contain(MAPA[i], "Mapa:") == -1){
format(MAPA[i], 63, "Mapa: %s", MAPA[i]);
}
}
new menu = menu_create("Menu serwerow", "serweryh")
new serv[256];
new num=0;
// ------ TWOJE SERWERY ------
format(serv, 255, "%s[Ganiany] Mystic ^t(%d/%d)^t %s", !equal(MAPA[++num], "Serwer OFFLINE")?"":"d", GRACZY[num],GRACZYMAX[num], MAPA[num])
menu_additem(menu, serv, "1", 0)
format(serv, 255, "%s[PokeMod] Mystic ^t(%d/%d)^t %s", !equal(MAPA[++num], "Serwer OFFLINE")?"":"d", GRACZY[num],GRACZYMAX[num], MAPA[num])
menu_additem(menu, serv, "2", 0)
format(serv, 255, "%s[EasyBlock] Mystic ^t(%d/%d)^t %s", !equal(MAPA[++num], "Serwer OFFLINE")?"":"d", GRACZY[num],GRACZYMAX[num], MAPA[num])
menu_additem(menu, serv, "3", 0)
format(serv, 255, "%s[DiabloMod] Mystic ^t(%d/%d)^t %s", !equal(MAPA[++num], "Serwer OFFLINE")?"":"d", GRACZY[num],GRACZYMAX[num], MAPA[num])
menu_additem(menu, serv, "4", 0)
format(serv, 255, "%s[Surf] Mystic ^t(%d/%d)^t %s", !equal(MAPA[++num], "Serwer OFFLINE")?"":"d", GRACZY[num],GRACZYMAX[num], MAPA[num])
menu_additem(menu, serv, "5", 0)
// ------ KONIEC ------
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)
}
public serweryh(id, menu, item)
{
if (item == MENU_EXIT)
{
return PLUGIN_HANDLED
}
new data[8], iName[64], name[34]
get_user_name(id, name, 33)
new access, callback
menu_item_getinfo(menu, item, access, data,7, iName, 63, callback)
new key = str_to_num(data)
if(GRACZY[key-1] > 0 && GRACZY[key-1] == GRACZYMAX[key-1]){
ColorChat(id, GREEN, "%s^x01 Serwer jest pelny.", TAG);
return PLUGIN_HANDLED
}
if(equal(MAPA[key-1], "Serwer OFFLINE")){
ColorChat(id, GREEN, "%s^x01 Serwer jest wylaczony.", TAG);
return PLUGIN_HANDLED
}
switch(key)
{
// ------ TWOJE SERWERY ------
case 1:{
ColorChat(0, GREEN, "%s^x01 Gracz: %s przeszedl na serwer: Ganiany",TAG, name);
client_cmd(id, "Connect %s:%d", IP[key-1], PORT[key-1] )
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 2:{
ColorChat(0, GREEN, "%s^x01 Gracz: %s przeszedl na serwer: PokeMod",TAG, name);
client_cmd(id, "password poke;Connect %s:%d", IP[key-1], PORT[key-1] )
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 3:{
ColorChat(0, GREEN, "%s^x01 Gracz: %s przeszedl na serwer: EasyBlock",TAG, name);
client_cmd(id, "password eb;Connect %s:%d", IP[key-1], PORT[key-1] )
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 4:{
ColorChat(0, GREEN, "%s^x01 Gracz: %s przeszedl na serwer: DiabloMod",TAG, name);
client_cmd(id, "password diablo;Connect %s:%d", IP[key-1], PORT[key-1] )
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 5:{
ColorChat(0, GREEN, "%s^x01 Gracz: %s przeszedl na serwer: Surf",TAG, name);
client_cmd(id, "password surf;Connect %s:%d", IP[key-1], PORT[key-1] )
menu_destroy(menu)
return PLUGIN_HANDLED
}
// ------ KONIEC ------
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public receive_serverquery_answers()// ---- Z PLUGINU XREDIRECT [Edit]
{
for(new num; num<=iloscserwerow; num++){
new sRcvBuf[1400]
new nRcvLen
new nRecvCount
new sMap[30]
nRecvCount = 0
new nCmdBackup = 2
new nSocket = SOCKETS[num];
while (socket_change(nSocket, 1) && (nRecvCount <= nCmdBackup))
{
nRecvCount++
setc(sRcvBuf, 1400, 0);
nRcvLen = socket_recv(nSocket, sRcvBuf, 1400)
if (nRcvLen > 5)
{
new aIndexes[100]
if (equal(sRcvBuf, {-1,-1,-1,-1}, 4))
{
if (sRcvBuf[4] == 'm')
{
index_create(sRcvBuf, nRcvLen, "41sssss111111[ss14411]11", aIndexes)
copyc(sMap, 30- 1, sRcvBuf[aIndexes[4]], 0)
MAPA[num] = sMap
GRACZY[num] = index_get_byte(sRcvBuf, aIndexes[7])
GRACZYMAX[num] = index_get_byte(sRcvBuf, aIndexes[8])
}
else if (sRcvBuf[4] == 'I')
{
index_create(sRcvBuf, nRcvLen, "411ssss21111111s", aIndexes)
copyc(sMap, 30- 1, sRcvBuf[aIndexes[4]], 0)
MAPA[num] = sMap
GRACZY[num] = index_get_byte(sRcvBuf, aIndexes[8])
GRACZYMAX[num] = index_get_byte(sRcvBuf, aIndexes[9])
}
}
}
}
}
return PLUGIN_HANDLED
}
public index_get_byte(sData[1400], nIndex)// ---- Z PLUGINU XREDIRECT
{
return sData[nIndex]
}
public query_servers()// ---- Z PLUGINU XREDIRECT [Edit]
{
for(new num; num<=iloscserwerow; num++){
new nCheckMethod = 2
if (nCheckMethod == 0)
return PLUGIN_HANDLED
new socket_error
new sOldRequest[12]
new sNewRequest[26]
if (nCheckMethod == 1)
{
// we don't know what server it is so send both old and new style query
format(sOldRequest, 8, "%c%c%c%c%s", 255, 255, 255, 255, "ping")
format(sNewRequest, 5, "%c%c%c%c%c", 255, 255, 255, 255, 105)
}
else if (nCheckMethod == 2)
{
// we don't know what server it is so send both old and new style query
format(sOldRequest, 11, "%c%c%c%c%s", 255, 255, 255, 255, "details")
format(sNewRequest, 25, "%c%c%c%c%c%s%c", 255, 255, 255, 255, 84, "Source Engine Query", 0)
}
new nServerCount = 0
new nQuerySocket
new nCmdBackup
new nSendCount
nQuerySocket = SOCKETS[num]
if (nQuerySocket > 0)
{
new sEmptyBufferDummy[512]
new nEndlessProtection = 0
while ((socket_change(nQuerySocket, 1)) && (nEndlessProtection < 500))
{
socket_recv(nQuerySocket, sEmptyBufferDummy, 512)
nEndlessProtection++
}
if (nEndlessProtection >= 500)
{
socket_close(nQuerySocket)
//log_amx("WARNING: endless protection triggered for socket %i (%s)", nQuerySocket, g_saServerNames)
}
}
else
{
if (!equal(IP[num], "")){
nQuerySocket = socket_open(IP[num], PORT[num], SOCKET_UDP, socket_error)
}
}
if ((nQuerySocket > 0) && (socket_error == 0))
{
SOCKETS[num] = nQuerySocket
nCmdBackup = 2
if (nCheckMethod == 1)
{
for (nSendCount = -1; nSendCount < nCmdBackup; nSendCount++)
socket_send2(nQuerySocket, sOldRequest, 8)
for (nSendCount = -1; nSendCount < nCmdBackup; nSendCount++)
socket_send2(nQuerySocket, sNewRequest, 5)
}
else if (nCheckMethod == 2)
{
for (nSendCount = -1; nSendCount < nCmdBackup; nSendCount++)
socket_send2(nQuerySocket, sOldRequest, 11)
for (nSendCount = -1; nSendCount < nCmdBackup; nSendCount++)
socket_send2(nQuerySocket, sNewRequest, 25)
}
}
else
{
SOCKETS[num] = 0
log_amx("%L", LANG_SERVER, "MSG_SOCKET_ERROR", socket_error, nServerCount)
}
}
set_task(1.0, "receive_serverquery_answers", 21934808)
return PLUGIN_HANDLED
}
public index_create(sData[1400], nDataLen, sFormatString[100], aIndexes[100])// ---- Z PLUGINU XREDIRECT [Edit]
{
new nFormatPos = 0
new nIndexPos = 0
new nDataIndex = 0
new nFormatPosMax = strlen(sFormatString)
while ((nIndexPos < nFormatPosMax) && (nDataIndex <= nDataLen))
{
switch (sFormatString[nFormatPos])
{
case '1':
{
aIndexes[nIndexPos] = nDataIndex
nDataIndex++
nIndexPos++
}
case '2':
{
aIndexes[nIndexPos] = nDataIndex
nDataIndex += 2
nIndexPos++
}
case '4':
{
aIndexes[nIndexPos] = nDataIndex
nDataIndex += 4
nIndexPos++
}
case 's':
{
aIndexes[nIndexPos] = nDataIndex
do { nDataIndex++; } while ((sData[nDataIndex] != 0) && (nDataIndex < nDataLen)) // find the end of the string by searching a 0 character
nDataIndex++
nIndexPos++
}
case '[':
{
if (sData[nDataIndex] != 1) // skip options
{
do { nFormatPos++; } while ((sFormatString[nFormatPos] != ']') && (nFormatPos < nFormatPosMax))
}
else
nDataIndex++
nIndexPos++
}
case ']':
{
nDataIndex++
}
default:
nDataIndex++
}
nFormatPos++
}
return nIndexPos
}
#9
Napisano 15.10.2009 21:42
dzięki kyku, mam juz Xredirect i na razie dziala
Temat off
Temat off
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych


Dodatki SourceMod



Temat jest zamknięty









