- Joined
- Apr 27, 2008
- Messages
- 330
- Reaction score
- 370
I've coded Infobus question to Habbolatino/Butterstorm.
Insert into ChatCommandHandler:
Insert into Room.cs:
Insert into Rooms.cs:
Insert into StaticClientMessageHandler.cs:
Insert into SharedPacketLib.cs:
Insert into Events.cs:
Insert into ChatCommandRegister.cs:
after: internal static void InvokeCommand(ChatCommandHandler commandHandler, int commandID)
{
switch (commandID)
{
Find internal string Landscape; in Room.cs:
Add after:
Add to System/commands.ini:
Add to System/commands_register.ini:
Run SQL query:
Screenshot:
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: