+void fourwins_reply(struct fourwins_game *game, const char *text, ...) {
+ struct ClientSocket *client = game->textbot;
+ struct fourwins_guest *guest;
+ int guest_count = 0;
+ for(guest = game->guests; guest; guest = guest->next) {
+ guest_count++;
+ }
+ struct ChanUser *chanusers[guest_count + 2];
+ chanusers[0] = game->player[0];
+ chanusers[1] = game->player[1];
+ guest_count = 0;
+ for(guest = game->guests; guest; guest = guest->next) {
+ chanusers[2 + (guest_count++)] = guest->chanuser;
+ }
+ int i;
+ guest_count += 2;
+ for(i = 0; i < guest_count; i++) {
+ const char *reply_format = get_language_string(chanusers[i]->user, text);
+ if(reply_format == NULL)
+ reply_format = text;
+ char formatBuf[MAXLEN];
+ sprintf(formatBuf, "NOTICE %s :[4WINS] %s", chanusers[i]->user->nick, reply_format);
+ va_list arg_list;
+ char sendBuf[MAXLEN];
+ int pos;
+ if (!(client->flags & SOCKET_FLAG_CONNECTED)) return;
+ sendBuf[0] = '\0';
+ va_start(arg_list, text);
+ pos = vsnprintf(sendBuf, MAXLEN - 2, formatBuf, arg_list);
+ va_end(arg_list);
+ if (pos < 0 || pos > (MAXLEN - 2)) pos = MAXLEN - 2;
+ sendBuf[pos] = '\n';
+ sendBuf[pos+1] = '\0';
+ write_socket(client, sendBuf, pos+1);
+ }
+}
+