• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

[Habbolatino/Butterstorm] Infobus questions 100%

Status
Not open for further replies.
Skilled Illusionist
Joined
Apr 27, 2008
Messages
330
Reaction score
370
I've coded Infobus question to Habbolatino/Butterstorm.

Insert into ChatCommandHandler:

Code:
 internal void startquestion()
        {
            try
            {
                Room Room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
                DataTable Data = null;
                int QuestionId = int.Parse(Params[1]);
                Room.CurrentPollId = QuestionId;
                string Question;


                using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
                {
                    dbClient.setQuery("SELECT question FROM infobus_questions WHERE id = '" + QuestionId + "' LIMIT 1");
                    Question = dbClient.getString();
                }


                using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
                {

                    dbClient.setQuery("SELECT * FROM infobus_answers WHERE question_id = '" + QuestionId + "'");
                    Data = dbClient.getTable();

                }

                ServerMessage InfobusQuestion = new ServerMessage(2600);
                InfobusQuestion.AppendString(Question);
                InfobusQuestion.AppendInt32(Data.Rows.Count);
                if (Data != null)
                {
                    foreach (DataRow Row in Data.Rows)
                    {
                        InfobusQuestion.AppendInt32((int)Row["id"]);
                        InfobusQuestion.AppendString((string)Row["answer_text"]);
                    }
                }
                Room.SendMessage(InfobusQuestion);



                Thread Infobus = new Thread(delegate() { Room.ShowResults(Room, QuestionId, Session); });
                Infobus.Start();
            }
            catch
            {
                Session.SendNotif("Wrong syntax.");
            //Room.HasThread.Add((uint)QuestionId, Infobus);
            }

        }

Insert into Room.cs:

Code:
public static void ShowResults(Room Room, int QuestionId, GameClient Session)
        {
            try
            {
                Thread.Sleep(30000);
                string Question;
                DataTable Data = null;
                using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
                {
                    dbClient.setQuery("SELECT question FROM infobus_questions WHERE id = '" + QuestionId + "' LIMIT 1");
                    Question = dbClient.getString();
                }


                using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
                {
                    dbClient.setQuery("SELECT * FROM infobus_answers WHERE question_id = '" + QuestionId + "'");
                    Data = dbClient.getTable();

                }

                ServerMessage InfobusQuestion = new ServerMessage(3042);
                InfobusQuestion.AppendString(Question);
                InfobusQuestion.AppendInt32(Data.Rows.Count);
                if (Data != null)
                {
                    foreach (DataRow Row in Data.Rows)
                    {
                        int ResultCount;
                        InfobusQuestion.AppendInt32((int)Row["id"]);
                        InfobusQuestion.AppendString((string)Row["answer_text"]);
                        using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
                        {
                            dbClient.setQuery("SELECT COUNT(*) FROM infobus_results WHERE answer_id = '" + (int)Row["id"] + "' AND question_id = '" + QuestionId + "'");
                            ResultCount = dbClient.getInteger();
                        }
                        InfobusQuestion.AppendInt32(ResultCount);
                    }
                }
                int AnswerUserCount;
                using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
                {
                    dbClient.setQuery("SELECT COUNT(*) FROM infobus_results WHERE question_id = '" + QuestionId + "'");
                    AnswerUserCount = dbClient.getInteger();
                }
                InfobusQuestion.AppendInt32(AnswerUserCount);
                Room.SendMessage(InfobusQuestion);

                using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
                {
                    dbClient.setQuery("DELETE FROM infobus_results WHERE question_id = '" + QuestionId + "'");
                    dbClient.runQuery();
                }
            }
            catch(Exception e)
            {
                Logging.WriteLine("ERR: " + e.Message);
            }
        }

Insert into Rooms.cs:

Code:
  internal void AnswerInfobusPoll()
        {
            Room Room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
            int AnswerId = Request.PopWiredInt32();
            int QuestionId = Room.CurrentPollId;
            DataTable Data = null;

            using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
            {
            dbClient.setQuery("SELECT * FROM infobus_answers WHERE question_id = '" + QuestionId + "'");
            Data = dbClient.getTable();

            dbClient.setQuery("INSERT INTO `infobus_results` (`question_id`, `answer_id`) VALUES ('" + QuestionId + "', '" + Data.Rows[AnswerId - 1]["id"] + "')");
                dbClient.insertQuery();

            }


        }

Insert into StaticClientMessageHandler.cs:

Code:
handlers.Add(Incoming.AnswerQuestion, new StaticRequestHandler(SharedPacketLib.AnswerQuestion));

Insert into SharedPacketLib.cs:

Code:
internal static void AnswerQuestion(GameClientMessageHandler handler)
        {
            handler.AnswerInfobusPoll();
        }

Insert into Events.cs:

Code:
public static int AnswerQuestion = 1251;

Insert into ChatCommandRegister.cs:
after: internal static void InvokeCommand(ChatCommandHandler commandHandler, int commandID)
{
switch (commandID)
{

Code:
 case 77:
                    {
                        commandHandler.startquestion();
                        break;
                    }

Find internal string Landscape; in Room.cs:

Add after:

Code:
public int CurrentPollId;

Add to System/commands.ini:

Code:
[startquestion]
startquestion.minrank=7
startquestion.description=start question
startquestion.prefix=(qid)
startquestion.input=startquestion
startquestion.clubs=

Add to System/commands_register.ini:

Code:
startquestion=77

Run SQL query:

Code:
/*
Navicat MySQL Data Transfer

Source Server         : localhost_3306b
Source Server Version : 50133
Source Host           : localhost:3306
Source Database       : sorsadb

Target Server Type    : MYSQL
Target Server Version : 50133
File Encoding         : 65001

Date: 2012-09-20 14:00:23
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `infobus_answers`
-- ----------------------------
DROP TABLE IF EXISTS `infobus_answers`;
CREATE TABLE `infobus_answers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `question_id` int(11) NOT NULL DEFAULT '0',
  `answer_text` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of infobus_answers
-- ----------------------------
INSERT INTO `infobus_answers` VALUES ('1', '1', 'Awesome');
INSERT INTO `infobus_answers` VALUES ('2', '1', 'Nice');
INSERT INTO `infobus_answers` VALUES ('3', '1', 'Poor');

-- ----------------------------
-- Table structure for `infobus_questions`
-- ----------------------------
DROP TABLE IF EXISTS `infobus_questions`;
CREATE TABLE `infobus_questions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `question` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of infobus_questions
-- ----------------------------
INSERT INTO `infobus_questions` VALUES ('1', 'What do you think about this?');

-- ----------------------------
-- Table structure for `infobus_results`
-- ----------------------------
DROP TABLE IF EXISTS `infobus_results`;
CREATE TABLE `infobus_results` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `question_id` int(11) NOT NULL,
  `answer_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of infobus_results
-- ----------------------------

Screenshot:

=dj.matias= - [Habbolatino/Butterstorm] Infobus questions 100% - RaGEZONE Forums
 
Experienced Elementalist
Joined
Feb 21, 2012
Messages
207
Reaction score
24
Thankyou so much, now I finally understand how this works.

+1
 
Skilled Illusionist
Joined
Oct 19, 2010
Messages
391
Reaction score
70
what about caching *.* so much mysql usage anyway thanks for this open-source stuff!
we need more of this stuff :D

yeah, caching would be better...but it's easy to add that code :)
 
Newbie Spellweaver
Joined
Feb 4, 2012
Messages
49
Reaction score
7
None of the Habbolatino emulators work for me.. Give me a link to download one please? :L
 
Junior Spellweaver
Joined
Jan 19, 2011
Messages
119
Reaction score
5
I thought you were busy with mannequins...

Anyway great release.
 
Junior Spellweaver
Joined
Oct 23, 2011
Messages
112
Reaction score
25
I have 6 Errors but i can´t fix them.



Can someone help me?
 
Status
Not open for further replies.
Back
Top