Raised This Month: $ Target: $400
 0% 

A2S_PLAYER ( resolved ) & A2S_RULES ( need help )


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
red_bull2oo6
Senior Member
Join Date: Mar 2012
Location: Braila, Romania
Old 07-13-2013 , 21:23   A2S_PLAYER ( resolved ) & A2S_RULES ( need help )
Reply With Quote #1

hi again, it seems i need some help.. so after i searched.. like 2 hours.. i decided to ask for it

i took some code from Sylvester's dsi ( duplucate server info ) plugin and i played a little bit with sockets.
the problem is that i cant get each player's played time.. it always says it's 0.0.
i must say that i tried like 5 types of getting it.. no chance.
i don't wanna use server querries.. its too complexe.

here's the code:

PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <sockets>

#define PLUGIN "Socket !!!"
#define VERSION "1.0"

new g_ch_ret[4] = {255,255,255,255}

new 
g_szHost32 ];
new 
g_szPort10 ]

new 
g_szHostName128 ];
new 
g_szMapName64 ];
new 
g_szDescription64 ];
new 
g_iMaxPlayers;
new 
g_iPlayers;
new 
g_iBots;
new 
g_szDir64 ];
new 
g_szPlayersNames33 ][ 33 ];
new 
g_iPlayersKills33 ];
new 
Float:g_fPlayersTime33 ];
new 
g_szPassword24 ];

new 
g_iSocket 0;


public 
plugin_init( )
{
    
register_pluginPLUGINVERSION"Sylwester & Askhanar" );
    
    
register_clcmd"amx_serverinfo""svinfo" );
    
// Add your code here...
}

public 
svinfoid )
{
    new 
szServer64 ];
    
read_argv1szServer63 );
    
    
strtokszServerg_szHost31g_szPort9':');
    if( 
connect_server( ) )
    {
        
send_request( );
        
client_cmdid"echo Waiting for server infos" );
        
set_task10.0"task_info"id 1122 );
    }
    else
    {
        
client_cmdid"echo ERROR" );
    }
    
    return 
PLUGIN_HANDLED;
        
}

public 
task_infoid )
{
    
id -= 1122;
    
    if( !
is_user_connectedid ) )
        return;
        
    
client_cmdid"echo HostName: %s"g_szHostName );
    
client_cmdid"echo Map: %s"g_szMapName );
    
client_cmdid"echo Description: %s"g_szDescription );
    
client_cmdid"echo Slots: %i"g_iMaxPlayers );
    
client_cmdid"echo Players %i/%i"g_iPlayersg_iMaxPlayers );
    
client_cmdid"echo Bots: %i"g_iBots );
    
client_cmdid"echo Dir: %s"g_szDir );
    
    for( new 
0;g_iPlayersi++ )
        
client_cmd(id"echo Nick: %s Frags: %i Time: %.1f"g_szPlayersNames], g_iPlayersKills], g_fPlayersTime] );
        
    
    
}
public 
connect_server()
{
    new 
iErrorszError64 ];
    new 
iPort str_to_numg_szPort );
    
    if( 
strleng_szHost ) < || iPort <=|| iPort >= 65536){
        
log_amx("incorrect datas ( ^"IP/DNS: %s  PORT: %s^" ), must be ^"ip:port^" or ^"dns:port^""g_szHostg_szPort );
        return 
false;
    }
    
    if( 
g_iSocket )
    {
        
socket_closeg_iSocket );
        
g_iSocket 0;
    }
    
    
g_iSocket socket_openg_szHostiPortSOCKET_UDPiError );
    if( 
g_iSocket <= || iError )
    {
        switch( 
iError )
        {
            case 
0szError "unknown"
            
case 1szError "error while creating socket"
            
case 2szError "could not resolve hostname"
            
case 3formatszErrorsizeof szError ) -1"could not connect to %s:%d"g_szHostiPort );
        }
        
        
log_amx"Socket error: %s"szError );
        return 
false;
    }
    
    
log_amx"Connected to socket %i"g_iSocket );
    
set_task1.0"task_recive"112233__"b" );
    return 
true;
    
}

public 
task_recive( )
{
    
check_socket( );
}

public 
check_socket()
{
    if( 
g_iSocket <= 0)
        return
    new 
iCnt;
    while( 
socket_changeg_iSocket) && iCnt 10 )
    {
        
iCnt++
        
receive_data( );
    }
}


public 
disconnect_server()
{
    if( 
g_iSocket )
    {
        
socket_closeg_iSocket );
        
g_iSocket 0;
    }
}

public 
send_request()
{
    if( 
g_iSocket <= )
        return;
        
    new 
szRequest32 ];
    
//http://developer.valvesoftware.com/wiki/Server_Queries#A2S_INFO
    
formatszRequest25"%c%c%c%c%c%s%c"25525525525584"Source Engine Query");
    
socket_send2g_iSocketszRequest25 );
    
    
//http://developer.valvesoftware.com/wiki/Server_Queries#A2S_PLAYER
    
format(szRequest9"%c%c%c%c%c%c%c%c%c"25525525525585g_ch_ret[0], g_ch_ret[1], g_ch_ret[2], g_ch_ret[3])  //ping
    
socket_send2(g_iSocketszRequest9);
}

public 
receive_data()
{
    static 
szBuffer2048 ], iLen;
    
iLen socket_recvg_iSocketszBuffersizeofszBuffer ) -);
    
    if( 
iLen )
        return;
    
    
    
    if( !
equalszBuffer, { -1, -1, -1, -}, ) )
        return;
    
    if( 
szBuffer] == 'D' )
    { 
//(players details) A2S_PLAYER reply if sent challange number is correct
        
        
        
g_iPlayers szBuffer];
        
        new 
j=6;
        for(new 
i=0i<g_iPlayersi++){
            
j++
            
+= copyc(g_szPlayersNames[i], 31szBuffer[j], 0)+1
            g_iPlayersKills
[i] =  ret_ac(szBuffer[j+3])<<24|ret_ac(szBuffer[j+2])<<16|ret_ac(szBuffer[j+1])<<8|ret_ac(szBuffer[j]);
            
            
/*Here i need the code for getting played time.. i tried lots of things.. it's always 0.0 or 23742983749.0 */
            
g_fPlayersTime] = str_to_floatszBuffer+] );
            
            
j+= 8;
            
        }
    }

    
    if( 
szBuffer] == 'I' )
    { 
//(server details) A2S_INFO reply
        
new 6;
        
+= copycg_szHostNamesizeof g_szHostName ) -1szBuffer], ) +1;
        
+= copycg_szMapNamesizeof g_szMapName ) -1szBuffer], ) +1;
        
+= copycg_szDirsizeof g_szDir ) -1szBuffer], ) +1;
        
+= copycg_szDescriptionsizeof g_szDescription ) -1szBuffer], ) +1;
        
g_iMaxPlayers szBuffer+];
        
g_iBots szBuffer+];
        
+= copycg_szPasswordsizeof g_szPassword ) -1szBuffer+], );
        
        if( 
g_iPlayers g_iMaxPlayers g_iPlayers g_iMaxPlayers;
    }
}

public 
ret_ac(num){ //change byte -128..127 into 0..255
    
if(num<0)
        return 
256+num
    
return num
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1252\\ deff0{\\ fonttbl{\\ f0\\ froman\\ fcharset0 Times New Roman;}}\n{\\ colortbl ;\\ red0\\ green0\\ blue0;}\n\\ viewkind4\\ uc1\\ pard\\ cf1\\ lang11274\\ f0\\ fs24 \n\\ par }
*/ 
thanks in advance.

Last edited by red_bull2oo6; 07-17-2013 at 10:30. Reason: editting title
red_bull2oo6 is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 06:24.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode