curserver - for CubeScript access to connectedserverinfo

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@2182 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
flowtron
2008-07-17 18:53:51 +00:00
parent b2894c11a6
commit f2e4e46080
+104
View File
@@ -698,3 +698,107 @@ COMMAND(systime, ARG_NONE);
COMMAND(timestamp, ARG_NONE);
COMMAND(datestring, ARG_NONE);
COMMAND(timestring, ARG_NONE);
void wip_currentserver(int i)
{
// mmmh. using "getconnectedserverinfo" we don't see that we're connected :-/
string r;
r[0] = '\0';
serverinfo *s = getconnectedserverinfo();
if(s)
{
switch(i)
{
case 1:
{
int ip = s->address.host;
s_sprintf(r)("%d.%d.%d.%d", ip&0xFF, ip>>8&0xFF, ip>>16&0xFF, ip>>24&0xFF);
break;
}
case 2: s_sprintf(r)("%s", s->name); break;
case 3: s_sprintf(r)("%d", s->port); break;
case 4: // STATE
{
extern ENetPeer *curpeer;
switch(curpeer->state)
{
case 0: s_sprintf(r)("disconnected"); break;
case 1: s_sprintf(r)("connecting"); break;
case 2: s_sprintf(r)("acknowleding connect"); break;
case 3: s_sprintf(r)("connection pending"); break;
case 4: s_sprintf(r)("connection succeeded"); break;
case 5: s_sprintf(r)("connected"); break;
case 6: s_sprintf(r)("disconnect later"); break;
case 7: s_sprintf(r)("disconnecting"); break;
case 8: s_sprintf(r)("acknowledge disconnect"); break;
case 9: s_sprintf(r)("zombie"); break;
}
break; // compare ../enet/include/enet/enet.h [line 165 ff]
}
default:
{
int ip = s->address.host;
s_sprintf(r)("%s:%d [%d.%d.%d.%d] %s", s->name, s->port, ip&0xFF, ip>>8&0xFF, ip>>16&0xFF, ip>>24&0xFF, s->sdesc); break;
}
}
} else s_sprintf(r)("do not seem to be connected :-P");
result(r);
}
void currentserver(int i)
{
// using the curpeer directly we can get the info of our currently connected server
string r;
r[0] = '\0';
extern ENetPeer *curpeer;
if(curpeer)
{
switch(i)
{
case 1: // IP
{
int ip = curpeer->address.host;
s_sprintf(r)("%d.%d.%d.%d", ip&0xFF, ip>>8&0xFF, ip>>16&0xFF, ip>>24&0xFF);
break;
}
case 2: // HOST
{
char hn[1024];
s_sprintf(r)("%s", (enet_address_get_host(&curpeer->address, hn, sizeof(hn))==0) ? hn : "unknown");
break;
}
case 3: // PORT
{
s_sprintf(r)("%d", curpeer->address.port);
break;
}
case 4: // STATE
{
switch(curpeer->state)
{
case 0: s_sprintf(r)("disconnected"); break;
case 1: s_sprintf(r)("connecting"); break;
case 2: s_sprintf(r)("acknowleding connect"); break;
case 3: s_sprintf(r)("connection pending"); break;
case 4: s_sprintf(r)("connection succeeded"); break;
case 5: s_sprintf(r)("connected"); break;
case 6: s_sprintf(r)("disconnect later"); break;
case 7: s_sprintf(r)("disconnecting"); break;
case 8: s_sprintf(r)("acknowledge disconnect"); break;
case 9: s_sprintf(r)("zombie"); break;
}
break; // 5 == Connected (compare ../enet/include/enet/enet.h +165)
}
default: // HOST & IP
{
char hn[1024];
int ip = curpeer->address.host;
s_sprintf(r)("%s:%d %d.%d.%d.%d", (enet_address_get_host(&curpeer->address, hn, sizeof(hn))==0) ? hn : "unknown", curpeer->address.port, ip&0xFF, ip>>8&0xFF, ip>>16&0xFF, ip>>24&0xFF);
break;
}
}
}
result(r);
}
COMMANDN(curserver, currentserver, ARG_1INT);