fixed crash if some strange admins simul bots in unregistered channels
[NeonServV5.git] / src / bot_NeonServ.c
index 9ec41e4445c9acab73606ca377c60e881fdd2a5a..3700d4bb03bc5de11aac2f8840fd8dbed1b3a200 100644 (file)
@@ -1,5 +1,5 @@
 /* bot_NeonServ.c - NeonServ v5.3
- * Copyright (C) 2011  Philipp Kreil (pk910)
+ * Copyright (C) 2011-2012  Philipp Kreil (pk910)
  * 
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -344,7 +344,7 @@ static const struct default_language_entry msgtab[] = {
     {"NS_NICKLIST_NICK", "Nick"},
     {"NS_NICKLIST_STATE", "State"},
     {"NS_NICKLIST_ACCESS", "Access"},
-    {"NS_NICKLIST_SYNC", "use `nicklist sync` to fix all red and orange entrys in the list above (add opped users with 200 and voiced with 100 access)"},
+    {"NS_NICKLIST_SYNC", "use `nicklist sync` to fix all red and orange entrys in the list above (add opped users with %d and voiced with %d access)"},
     {"NS_SETBOT_UNKNOWN", "`%d` is an unknown botid."}, /* {ARGS: 50} */
     {"NS_SETBOT_HEADER", "$bSettings for botid `%d`:$b"}, /* {ARGS: 50} */
     {"NS_SETBOT_SETTING", "$b%s$b is an unknown bot setting."}, /* {ARGS: "strangeSetting"} */
@@ -364,6 +364,7 @@ static const struct default_language_entry msgtab[] = {
     {"NS_MODCMD_SETTING", "$b%s$b is an unknown modcmd setting."}, /* {ARGS: "strangeSetting"} */
     {"NS_MODCMD_HEADER", "$bSettings for command %s:$b"}, /* {ARGS: "access"} */
     {"NS_MODCMD_OUTRANKED", "$b%s$b outranks you. (required access: %d)"}, /* {ARGS: "die", 1000} */
+    {"NS_MODCMD_STATIC_FLAG", "This Flag is added statically. It can't be modified manually."},
     {NULL, NULL}
 };
 
@@ -424,7 +425,10 @@ static void neonserv_trigger_callback(int clientid, struct ChanNode *chan, char
     }
     printf_mysql_query("SELECT `trigger`, `defaulttrigger` FROM `bot_channels` LEFT JOIN `bots` ON `botid` = `bots`.`id` WHERE `chanid` = '%d' AND `botclass` = '%d'", chan->channel_id, BOTID);
     res = mysql_use();
-    row = mysql_fetch_row(res);
+    if(!(row = mysql_fetch_row(res))) {
+        strcpy(trigger, "+");
+        return;
+    }
     if(row[0] && *row[0])
         strcpy(trigger, row[0]);
     else
@@ -449,7 +453,7 @@ static void start_bots() {
         connect_socket(client);
     }
     
-    printf_mysql_query("SELECT `command`, `function`, `parameters`, `global_access`, `chan_access` FROM `bot_binds` WHERE `botclass` = '%d'", BOTID);
+    printf_mysql_query("SELECT `command`, `function`, `parameters`, `global_access`, `chan_access`, `flags` FROM `bot_binds` WHERE `botclass` = '%d'", BOTID);
     res2 = mysql_use();
     while ((row = mysql_fetch_row(res2)) != NULL) {
         if(bind_cmd_to_command(BOTID, row[0], row[1])) {
@@ -462,6 +466,8 @@ static void start_bots() {
             if(row[4]) {
                 bind_set_channel_access(BOTID, row[0], row[4]);
             }
+            if(strcmp(row[5], "0"))
+                bind_set_bind_flags(BOTID, row[0], atoi(row[5]));
         }
     }
     bind_unbound_required_functions(BOTID);