commit of a modified version of [ Patch #2130 ] games bug fix
This commit is contained in:
parent
10fc28a405
commit
10511d9926
4 changed files with 40 additions and 39 deletions
pvpgn/src/bnetd
|
@ -483,14 +483,20 @@ extern int channel_add_connection(t_channel * channel, t_connection * connection
|
|||
for (user=channel_get_first(channel); user; user=channel_get_next())
|
||||
{
|
||||
message_send_text(connection,message_type_adduser,user,NULL);
|
||||
message_send_text(user,message_type_join,connection,NULL);
|
||||
/* In WOL gamechannels we send JOINGAME ack explicitely to self */
|
||||
if (conn_wol_get_ingame(connection)==0)
|
||||
message_send_text(user,message_type_join,connection,NULL);
|
||||
}
|
||||
else
|
||||
message_send_text(connection,message_type_join,connection,NULL);
|
||||
else {
|
||||
if (conn_wol_get_ingame(connection)==0)
|
||||
message_send_text(connection,message_type_join,connection,NULL);
|
||||
}
|
||||
|
||||
if (conn_is_irc_variant(connection))
|
||||
if (conn_is_irc_variant(connection)) {
|
||||
if (conn_wol_get_ingame(connection)==0)
|
||||
message_send_text(connection,message_type_namreply,connection,NULL);
|
||||
|
||||
}
|
||||
conn_wol_set_ingame(connection,0);
|
||||
/* please don't remove this notice */
|
||||
if (channel->log)
|
||||
message_send_text(connection,message_type_info,connection,prefs_get_log_notice());
|
||||
|
|
|
@ -3812,8 +3812,7 @@ extern void conn_wol_set_ingame(t_connection * c, int ingame)
|
|||
return;
|
||||
}
|
||||
|
||||
if (ingame)
|
||||
c->protocol.wol.ingame = ingame;
|
||||
c->protocol.wol.ingame = ingame;
|
||||
}
|
||||
|
||||
extern int conn_wol_get_ingame(t_connection * c)
|
||||
|
@ -3864,8 +3863,7 @@ extern void conn_wol_set_codepage(t_connection * c, int codepage)
|
|||
return;
|
||||
}
|
||||
|
||||
if (codepage)
|
||||
c->protocol.wol.codepage = codepage;
|
||||
c->protocol.wol.codepage = codepage;
|
||||
}
|
||||
|
||||
extern int conn_wol_get_codepage(t_connection * c)
|
||||
|
@ -3887,8 +3885,7 @@ extern void conn_wol_set_game_type(t_connection * c, int gameType)
|
|||
return;
|
||||
}
|
||||
|
||||
if (gameType)
|
||||
c->protocol.wol.gameType = gameType;
|
||||
c->protocol.wol.gameType = gameType;
|
||||
}
|
||||
|
||||
extern int conn_wol_get_game_type(t_connection * c)
|
||||
|
@ -3939,8 +3936,7 @@ extern void conn_wol_set_findme(t_connection * c, int findme)
|
|||
return;
|
||||
}
|
||||
|
||||
if (findme)
|
||||
c->protocol.wol.findme = findme;
|
||||
c->protocol.wol.findme = findme;
|
||||
}
|
||||
|
||||
extern int conn_wol_get_findme(t_connection * c)
|
||||
|
@ -3962,8 +3958,7 @@ extern void conn_wol_set_pageme(t_connection * c, int pageme)
|
|||
return;
|
||||
}
|
||||
|
||||
if (pageme)
|
||||
c->protocol.wol.pageme = pageme;
|
||||
c->protocol.wol.pageme = pageme;
|
||||
}
|
||||
|
||||
extern int conn_wol_get_pageme(t_connection * c)
|
||||
|
|
|
@ -711,7 +711,6 @@ static int _handle_list_command(t_connection * conn, int numparams, char ** para
|
|||
|
||||
if (numparams == 0) {
|
||||
/* This is Westwood Chat LIST command */
|
||||
/* FIXME: We send only chat channels (no gamechannels for CnC, RedAlert and CnC Sole Survivor) */
|
||||
eventlog(eventlog_level_debug,__FUNCTION__,"[** WOL **] LIST WCHAT");
|
||||
|
||||
LIST_TRAVERSE_CONST(channellist(),curr) {
|
||||
|
@ -846,13 +845,7 @@ static int _handle_join_command(t_connection * conn, int numparams, char ** para
|
|||
irc_send(conn,ERR_NOSUCHCHANNEL,":JOIN failed"); /* FIXME: be more precise; what is the real error code for that? */
|
||||
}
|
||||
else {
|
||||
char temp[MAX_IRC_MESSAGE_LEN];
|
||||
t_channel * channel;
|
||||
channel = conn_get_channel(conn);
|
||||
|
||||
channel_set_userflags(conn);
|
||||
wolname=irc_convert_channel(channel);
|
||||
|
||||
}
|
||||
}
|
||||
if (e)
|
||||
|
@ -1286,7 +1279,8 @@ static int _handle_joingame_command(t_connection * conn, int numparams, char **
|
|||
char temp[MAX_IRC_MESSAGE_LEN];
|
||||
|
||||
channel_set_userflags(conn);
|
||||
message_send_text(conn,message_wol_joingame,conn,gameOptions); /* we have to send the JOINGAME acknowledgement */
|
||||
// message_send_text(conn,message_wol_joingame,conn,gameOptions); /* we have to send the JOINGAME acknowledgement */
|
||||
channel_message_send(channel,message_wol_joingame,conn,gameOptions);
|
||||
wolname=irc_convert_channel(channel);
|
||||
|
||||
if ((topic = channel_get_topic(channel_get_name(channel)))) {
|
||||
|
@ -1332,6 +1326,8 @@ static int _handle_joingame_command(t_connection * conn, int numparams, char **
|
|||
}
|
||||
eventlog(eventlog_level_debug,__FUNCTION__,"[** WOL **] JOINGAME [Game Options] (%s)",_temp);
|
||||
|
||||
conn_wol_set_ingame(conn,1);
|
||||
|
||||
e = irc_get_listelems(params[0]);
|
||||
if ((e)&&(e[0])) {
|
||||
char const * wolname = irc_convert_ircname(e[0]);
|
||||
|
@ -1366,7 +1362,8 @@ static int _handle_joingame_command(t_connection * conn, int numparams, char **
|
|||
channel_set_max(channel,std::atoi(params[2]));
|
||||
channel_wol_set_game_type(channel,std::atoi(params[3]));
|
||||
channel_wol_set_game_tournament(channel,std::atoi(params[6]));
|
||||
channel_wol_set_game_extension(channel,params[7]);
|
||||
if (params[7])
|
||||
channel_wol_set_game_extension(channel,params[7]);
|
||||
|
||||
message_send_text(conn,message_wol_joingame,conn,_temp); /* we have to send the JOINGAME acknowledgement */
|
||||
wolname=irc_convert_channel(channel);
|
||||
|
|
|
@ -650,14 +650,13 @@ extern int irc_message_format(t_packet * packet, t_message_type type, t_connecti
|
|||
|
||||
channel = conn_get_channel(me);
|
||||
|
||||
if((conn_get_wol(dst) == 1) && (conn_get_clienttag(dst) != CLIENTTAG_WCHAT_UINT))
|
||||
{
|
||||
if((conn_get_wol(dst) == 1) && (conn_get_clienttag(dst) != CLIENTTAG_WCHAT_UINT)) {
|
||||
char temp[MAX_IRC_MESSAGE_LEN];
|
||||
t_clan * clan;
|
||||
unsigned int clanid = 0;
|
||||
std::memset(temp,0,sizeof(temp));
|
||||
|
||||
/**
|
||||
|
||||
/**
|
||||
* For WOLv2 the channel JOIN output must be like the following:
|
||||
* user!WWOL@hostname JOIN :clanID,longIP channelName
|
||||
*/
|
||||
|
@ -675,11 +674,10 @@ extern int irc_message_format(t_packet * packet, t_message_type type, t_connecti
|
|||
std::memset(temp,0,sizeof(temp));
|
||||
|
||||
if (conn_wol_get_ingame(me) == 1) {
|
||||
std::sprintf(temp,"2 %u %u 1 1 %u :%s", channel_get_length(channel), channel_wol_get_game_type(channel), channel_wol_get_game_tournament(channel), irc_convert_channel(channel));
|
||||
std::sprintf(temp,"2 %u %u 1 1 %u :", channel_get_length(channel), channel_wol_get_game_type(channel), channel_wol_get_game_tournament(channel));
|
||||
msg = irc_message_preformat(&from,"JOINGAME",temp,irc_convert_channel(channel));
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
msg = irc_message_preformat(&from,"JOIN","\r",irc_convert_channel(channel));
|
||||
}
|
||||
}
|
||||
|
@ -931,7 +929,6 @@ int irc_send_rpl_namreply_internal(t_connection * c, t_channel const * channel){
|
|||
std::strcat(flg,"+");
|
||||
if ((std::strlen(temp)+((!first)?(1):(0))+std::strlen(flg)+std::strlen(name)+1)<=sizeof(temp)) {
|
||||
if (!first) std::strcat(temp," ");
|
||||
|
||||
if((conn_get_wol(c) == 1)) {
|
||||
if ((channel_wol_get_game_owner(channel) != NULL) && (std::strcmp(channel_wol_get_game_owner(channel),name) == 0)) {
|
||||
std::strcat(temp,"@");
|
||||
|
@ -942,20 +939,22 @@ int irc_send_rpl_namreply_internal(t_connection * c, t_channel const * channel){
|
|||
}
|
||||
if (conn_get_clienttag(c) != CLIENTTAG_WCHAT_UINT) {
|
||||
/* BATTLECLAN Support */
|
||||
char _temp[MAX_IRC_MESSAGE_LEN];
|
||||
std::memset(_temp,0,sizeof(_temp));
|
||||
t_clan * clan = account_get_clan(conn_get_account(m));
|
||||
unsigned int clanid = 0;
|
||||
|
||||
if (clan)
|
||||
clanid = clan_get_clanid(clan);
|
||||
|
||||
std::sprintf(temp,"%s%s,%u,%u",temp,name,clanid,conn_get_addr(m));
|
||||
std::sprintf(_temp,"%s,%u,%u",name,clanid,conn_get_addr(m));
|
||||
std::strcat(temp,_temp);
|
||||
}
|
||||
else {
|
||||
std::sprintf(temp,"%s%s",temp,name);
|
||||
std::strcat(temp,name);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
std::strcat(temp,flg);
|
||||
std::strcat(temp,name);
|
||||
}
|
||||
|
@ -1105,6 +1104,7 @@ extern int irc_send_motd(t_connection * conn)
|
|||
char * line, * formatted_line;
|
||||
char send_line[MAX_IRC_MESSAGE_LEN];
|
||||
char motd_failed = 0;
|
||||
bool first = true;
|
||||
|
||||
if (!conn) {
|
||||
eventlog(eventlog_level_error,__FUNCTION__,"got NULL connection");
|
||||
|
@ -1113,14 +1113,17 @@ extern int irc_send_motd(t_connection * conn)
|
|||
|
||||
tempname = conn_get_loggeduser(conn);
|
||||
|
||||
irc_send(conn,RPL_MOTDSTART,":-");
|
||||
|
||||
if ((filename = prefs_get_motdfile())) {
|
||||
if ((fp = std::fopen(filename,"r"))) {
|
||||
while ((line=file_get_line(fp))) {
|
||||
if ((formatted_line = message_format_line(conn,line))) {
|
||||
formatted_line[0]=' ';
|
||||
std::sprintf(send_line,":-%s",formatted_line);
|
||||
if (first) {
|
||||
irc_send(conn,RPL_MOTDSTART,send_line);
|
||||
first = false;
|
||||
}
|
||||
else
|
||||
irc_send(conn,RPL_MOTD,send_line);
|
||||
xfree(formatted_line);
|
||||
}
|
||||
|
@ -1136,7 +1139,7 @@ extern int irc_send_motd(t_connection * conn)
|
|||
motd_failed = 1;
|
||||
|
||||
if (motd_failed) {
|
||||
irc_send(conn,RPL_MOTD,":- Failed to load motd, sending default motd ");
|
||||
irc_send(conn,RPL_MOTDSTART,":- Failed to load motd, sending default motd ");
|
||||
irc_send(conn,RPL_MOTD,":- ====================================================== ");
|
||||
irc_send(conn,RPL_MOTD,":- http://www.pvpgn.org ");
|
||||
irc_send(conn,RPL_MOTD,":- ====================================================== ");
|
||||
|
|
Loading…
Add table
Reference in a new issue