Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[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