// $Id: gamespy.c,v 1.13 2008/01/05 12:42:17 lynx Exp $ // vim:syntax=lpc // // gamespy gateway in a room, or something // #include #include #include inherit NET_PATH "place/owned"; mapping servers; void create() { if (!servers) servers = ([]); ::create(); } cmd(a, args, b, source, vars) { // TODO: multiline-sachen irgendwie D2(D("===========================\n");) //unless (source) source = previous_object(); switch (a) { case "add": unless (qAide(SNICKER)) return; if(!add(args)) { sendmsg(source, "_warning_usage_gamespy_add", "Usage: /add «gametype» «ip»:«port» [«name»]"); } else { castmsg(source, "_notice_gamespy_added", "Successfully added [_type]-Server [_host]", ([ "_type" : args[1], "_host" : args[2], ])); } return 1; case "delete": case "del": return 1; case "server": case "serverinfo": if(sizeof(args) < 2) { sendmsg(source, "_warning_usage_gamespy_info", "Usage: /info «ip»:«port» OR: /info «name»"); return 1; } else { mapping info = DAEMON_PATH "gameserv"->info(args[1]); if(!sizeof(m_indices(info))) { sendmsg(source, "_error_gamespy_info", "I dont know that gameserver! Use /add to add it!"); return 1; } sendmsg(source, "_notice_gamespy_info", "================\nhost\t[_host]:[_port]\n" "name\t[_name]\nmapname\t[_map]\n" "players\t[_players]/[_maxplayers]", info); return 1; } case "servers": case "listservers": D2(D(DAEMON_PATH "gameserv"->list_servers());) return 1; } return ::cmd(a, args, b, source, vars); } add(args) { array(string) host; if(sizeof(args) < 3) return 0; host = explode(args[2],":"); if(sizeof(host) != 2) return 0; if(sizeof(args) >= 4) { DAEMON_PATH "gameserv"->add_server(args[1],host[0],to_int(host[1]),args[3]); } else { DAEMON_PATH "gameserv"->add_server(args[1],host[0],to_int(host[1])); } return 1; }