Merge pull request #17 from CodeForFame/master

Bug Fixes
This commit is contained in:
CodeForFame 2011-07-22 12:27:45 -07:00
commit c8312b5298
12 changed files with 863 additions and 917 deletions

View File

@ -1,7 +1,7 @@
-- MoparRSC DB Structure
--
-- ------------------------------------------------------
-- Server version 5.1.49-1ubuntu8.1
-- Server version 5.1.49-1ubuntu8.1-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
@ -20,42 +20,24 @@
CREATE DATABASE IF NOT EXISTS moparclassic;
USE moparclassic;
CREATE TABLE `moparclassic`.`bans` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(200) DEFAULT NULL,
`ip` varchar(255) DEFAULT NULL,
`email` varchar(80) DEFAULT NULL,
`message` varchar(255) DEFAULT NULL,
`expire` int(10) unsigned DEFAULT NULL,
`ban_creator` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `bans_username_idx` (`username`(25))
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`categories` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cat_name` varchar(80) NOT NULL DEFAULT 'New Category',
`disp_position` int(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`censoring` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`search_for` varchar(60) NOT NULL DEFAULT '',
`replace_with` varchar(60) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`config` (
`conf_name` varchar(255) NOT NULL DEFAULT '',
`conf_value` text,
PRIMARY KEY (`conf_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Definition of table `moparclassic`.`drops`
--
DROP TABLE IF EXISTS `moparclassic`.`drops`;
CREATE TABLE `moparclassic`.`drops` (
`id` int(11) DEFAULT NULL,
`item` varchar(255) DEFAULT NULL,
`amount` int(11) DEFAULT NULL,
`weight` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`dupe_data`
--
DROP TABLE IF EXISTS `moparclassic`.`dupe_data`;
CREATE TABLE `moparclassic`.`dupe_data` (
`user` varchar(255) NOT NULL,
`userhash` varchar(255) NOT NULL,
@ -63,92 +45,33 @@ CREATE TABLE `moparclassic`.`dupe_data` (
`time` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`error_reports`
--
DROP TABLE IF EXISTS `moparclassic`.`error_reports`;
CREATE TABLE `moparclassic`.`error_reports` (
`data` text,
`email` varchar(255) DEFAULT NULL,
`ip` varchar(255) DEFAULT NULL,
`unix` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`forum_perms` (
`group_id` int(10) NOT NULL DEFAULT '0',
`forum_id` int(10) NOT NULL DEFAULT '0',
`read_forum` tinyint(1) NOT NULL DEFAULT '1',
`post_replies` tinyint(1) NOT NULL DEFAULT '1',
`post_topics` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`group_id`,`forum_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`forums` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`forum_name` varchar(80) NOT NULL DEFAULT 'New forum',
`forum_desc` text,
`redirect_url` varchar(100) DEFAULT NULL,
`moderators` text,
`num_topics` mediumint(8) unsigned NOT NULL DEFAULT '0',
`num_posts` mediumint(8) unsigned NOT NULL DEFAULT '0',
`last_post` int(10) unsigned DEFAULT NULL,
`last_post_id` int(10) unsigned DEFAULT NULL,
`last_poster` varchar(200) DEFAULT NULL,
`sort_by` tinyint(1) NOT NULL DEFAULT '0',
`disp_position` int(10) NOT NULL DEFAULT '0',
`cat_id` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
--
-- Definition of table `moparclassic`.`gp_count`
--
DROP TABLE IF EXISTS `moparclassic`.`gp_count`;
CREATE TABLE `moparclassic`.`gp_count` (
`unixtime` varchar(255) DEFAULT NULL,
`amount` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`groups` (
`g_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`g_title` varchar(50) NOT NULL DEFAULT '',
`g_user_title` varchar(50) DEFAULT NULL,
`g_moderator` tinyint(1) NOT NULL DEFAULT '0',
`g_mod_edit_users` tinyint(1) NOT NULL DEFAULT '0',
`g_mod_rename_users` tinyint(1) NOT NULL DEFAULT '0',
`g_mod_change_passwords` tinyint(1) NOT NULL DEFAULT '0',
`g_mod_ban_users` tinyint(1) NOT NULL DEFAULT '0',
`g_read_board` tinyint(1) NOT NULL DEFAULT '1',
`g_view_users` tinyint(1) NOT NULL DEFAULT '1',
`g_post_replies` tinyint(1) NOT NULL DEFAULT '1',
`g_post_topics` tinyint(1) NOT NULL DEFAULT '1',
`g_edit_posts` tinyint(1) NOT NULL DEFAULT '1',
`g_delete_posts` tinyint(1) NOT NULL DEFAULT '1',
`g_delete_topics` tinyint(1) NOT NULL DEFAULT '1',
`g_set_title` tinyint(1) NOT NULL DEFAULT '1',
`g_search` tinyint(1) NOT NULL DEFAULT '1',
`g_search_users` tinyint(1) NOT NULL DEFAULT '1',
`g_send_email` tinyint(1) NOT NULL DEFAULT '1',
`g_post_flood` smallint(6) NOT NULL DEFAULT '30',
`g_search_flood` smallint(6) NOT NULL DEFAULT '30',
`g_email_flood` smallint(6) NOT NULL DEFAULT '60',
PRIMARY KEY (`g_id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`invites` (
`owner` varchar(255) NOT NULL DEFAULT '',
`code` varchar(255) NOT NULL DEFAULT '',
`time` int(10) unsigned NOT NULL DEFAULT '0',
`invites` varchar(255) NOT NULL DEFAULT '1',
`email` varchar(255) NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`irc_online` (
`username` varchar(255) NOT NULL,
`rank` int(1) DEFAULT NULL,
PRIMARY KEY (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`irc_stats` (
`username` varchar(255) NOT NULL,
`messages` int(10) DEFAULT NULL,
`modes` int(10) DEFAULT NULL,
`kicks` int(10) DEFAULT NULL,
`kicked` int(10) DEFAULT NULL,
`lastTimeSpoken` bigint(11) DEFAULT NULL,
`joins` int(10) DEFAULT NULL,
`parts` int(10) DEFAULT NULL,
`randomstring` text,
`moderatedchan` int(10) DEFAULT NULL,
PRIMARY KEY (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`items`
--
DROP TABLE IF EXISTS `moparclassic`.`items`;
CREATE TABLE `moparclassic`.`items` (
`id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
@ -157,41 +80,22 @@ CREATE TABLE `moparclassic`.`items` (
`stackable` varchar(255) DEFAULT NULL,
`wieldable` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`logins` (
`id` int(10) DEFAULT NULL,
`login_ip` varchar(15) DEFAULT NULL,
`time` int(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`messages` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`owner` int(10) NOT NULL DEFAULT '0',
`subject` varchar(120) NOT NULL DEFAULT '',
`message` text,
`sender` varchar(120) NOT NULL DEFAULT '',
`sender_id` int(10) NOT NULL DEFAULT '0',
`posted` int(10) NOT NULL DEFAULT '0',
`sender_ip` varchar(120) NOT NULL DEFAULT '0.0.0.0',
`smileys` tinyint(1) NOT NULL DEFAULT '1',
`status` tinyint(1) NOT NULL DEFAULT '0',
`showed` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `messages_owner_idx` (`owner`)
) ENGINE=MyISAM AUTO_INCREMENT=23964 DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`online` (
`user_id` int(10) unsigned NOT NULL DEFAULT '1',
`ident` varchar(200) NOT NULL DEFAULT '',
`logged` int(10) unsigned NOT NULL DEFAULT '0',
`idle` tinyint(1) NOT NULL DEFAULT '0',
`last_post` int(10) unsigned DEFAULT NULL,
`last_search` int(10) unsigned DEFAULT NULL,
UNIQUE KEY `online_user_id_ident_idx` (`user_id`,`ident`(25)),
KEY `online_ident_idx` (`ident`(25)),
KEY `online_logged_idx` (`logged`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;
--
-- Definition of table `moparclassic`.`online_count`
--
DROP TABLE IF EXISTS `moparclassic`.`online_count`;
CREATE TABLE `moparclassic`.`online_count` (
`unixtime` varchar(255) DEFAULT NULL,
`online` int(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_bank`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_bank`;
CREATE TABLE `moparclassic`.`pk_bank` (
`user` varchar(255) DEFAULT NULL,
`id` int(10) unsigned NOT NULL,
@ -202,6 +106,11 @@ CREATE TABLE `moparclassic`.`pk_bank` (
KEY `amount` (`amount`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_banlog`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_banlog`;
CREATE TABLE `moparclassic`.`pk_banlog` (
`user` varchar(255) DEFAULT NULL,
`staff` varchar(255) DEFAULT NULL,
@ -210,6 +119,12 @@ CREATE TABLE `moparclassic`.`pk_banlog` (
KEY `time` (`time`),
KEY `user` (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_curstats`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_curstats`;
CREATE TABLE `moparclassic`.`pk_curstats` (
`user` varchar(255) NOT NULL,
`cur_attack` int(5) unsigned NOT NULL DEFAULT '1',
@ -235,6 +150,11 @@ CREATE TABLE `moparclassic`.`pk_curstats` (
KEY `user` (`user`)
) ENGINE=MyISAM AUTO_INCREMENT=350943 DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_experience`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_experience`;
CREATE TABLE `moparclassic`.`pk_experience` (
`user` varchar(255) NOT NULL,
`exp_attack` int(10) unsigned NOT NULL DEFAULT '0',
@ -278,18 +198,35 @@ CREATE TABLE `moparclassic`.`pk_experience` (
KEY `user` (`user`)
) ENGINE=MyISAM AUTO_INCREMENT=350943 DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_friends`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_friends`;
CREATE TABLE `moparclassic`.`pk_friends` (
`user` varchar(255) NOT NULL,
`friend` varchar(255) NOT NULL,
KEY `user` (`user`),
KEY `friend` (`friend`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_ignores`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_ignores`;
CREATE TABLE `moparclassic`.`pk_ignores` (
`user` varchar(255) NOT NULL,
`ignore` varchar(255) NOT NULL,
KEY `ignore` (`ignore`),
KEY `user` (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_invitems`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_invitems`;
CREATE TABLE `moparclassic`.`pk_invitems` (
`user` varchar(255) NOT NULL,
`id` int(10) unsigned NOT NULL,
@ -299,17 +236,34 @@ CREATE TABLE `moparclassic`.`pk_invitems` (
KEY `user` (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_ipbans`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_ipbans`;
CREATE TABLE `moparclassic`.`pk_ipbans` (
`ip` varchar(15) NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`ip`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Definition of table `moparclassic`.`pk_kills`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_kills`;
CREATE TABLE `moparclassic`.`pk_kills` (
`user` varchar(255) NOT NULL,
`type` tinyint(1) NOT NULL DEFAULT '0',
`killed` varchar(45) NOT NULL,
`time` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_logins`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_logins`;
CREATE TABLE `moparclassic`.`pk_logins` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user` varchar(45) NOT NULL,
@ -317,8 +271,13 @@ CREATE TABLE `moparclassic`.`pk_logins` (
`ip` varchar(15) NOT NULL DEFAULT '0.0.0.0',
PRIMARY KEY (`id`),
KEY `ip` (`ip`)
) ENGINE=MyISAM AUTO_INCREMENT=4254489 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;
) ENGINE=MyISAM AUTO_INCREMENT=4254616 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;
--
-- Definition of table `moparclassic`.`pk_market`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_market`;
CREATE TABLE `moparclassic`.`pk_market` (
`owner` int(10) NOT NULL,
`item_id` int(10) NOT NULL,
@ -326,6 +285,12 @@ CREATE TABLE `moparclassic`.`pk_market` (
`selling_price` int(10) NOT NULL,
PRIMARY KEY (`owner`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_mutelog`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_mutelog`;
CREATE TABLE `moparclassic`.`pk_mutelog` (
`user` varchar(255) NOT NULL,
`staff` varchar(255) NOT NULL,
@ -333,6 +298,12 @@ CREATE TABLE `moparclassic`.`pk_mutelog` (
`report_id` int(11) NOT NULL,
`duration` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_online`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_online`;
CREATE TABLE `moparclassic`.`pk_online` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user` varchar(45) NOT NULL,
@ -342,6 +313,12 @@ CREATE TABLE `moparclassic`.`pk_online` (
`world` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC COMMENT='InnoDB free: 9216 kB';
--
-- Definition of table `moparclassic`.`pk_players`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_players`;
CREATE TABLE `moparclassic`.`pk_players` (
`user` varchar(255) NOT NULL,
`username` varchar(255) NOT NULL DEFAULT '',
@ -393,6 +370,11 @@ CREATE TABLE `moparclassic`.`pk_players` (
KEY `user` (`user`)
) ENGINE=MyISAM AUTO_INCREMENT=350944 DEFAULT CHARSET=latin1 COMMENT='InnoDB free: 9216 kB';
--
-- Definition of table `moparclassic`.`pk_quests`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_quests`;
CREATE TABLE `moparclassic`.`pk_quests` (
`id` int(11) DEFAULT NULL,
`stage` int(11) DEFAULT NULL,
@ -400,6 +382,11 @@ CREATE TABLE `moparclassic`.`pk_quests` (
KEY `user` (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_reports`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_reports`;
CREATE TABLE `moparclassic`.`pk_reports` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`from` varchar(255) NOT NULL,
@ -418,6 +405,12 @@ CREATE TABLE `moparclassic`.`pk_reports` (
`sendToMod` int(11) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4340 DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_reports_comments`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_reports_comments`;
CREATE TABLE `moparclassic`.`pk_reports_comments` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`report_id` int(10) NOT NULL,
@ -426,6 +419,12 @@ CREATE TABLE `moparclassic`.`pk_reports_comments` (
`text` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4222 DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_stat_reduction`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_stat_reduction`;
CREATE TABLE `moparclassic`.`pk_stat_reduction` (
`user` int(10) NOT NULL,
`account` varchar(255) NOT NULL,
@ -434,6 +433,12 @@ CREATE TABLE `moparclassic`.`pk_stat_reduction` (
`voucher` varchar(255) DEFAULT NULL,
`time` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_tradelog`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_tradelog`;
CREATE TABLE `moparclassic`.`pk_tradelog` (
`from` varchar(255) DEFAULT NULL,
`to` varchar(255) DEFAULT NULL,
@ -448,6 +453,11 @@ CREATE TABLE `moparclassic`.`pk_tradelog` (
KEY `tradelog_time` (`time`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_worlds`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_worlds`;
CREATE TABLE `moparclassic`.`pk_worlds` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`location` varchar(45) NOT NULL,
@ -455,182 +465,6 @@ CREATE TABLE `moparclassic`.`pk_worlds` (
`port` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;
CREATE TABLE `moparclassic`.`posts` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`poster` varchar(200) NOT NULL DEFAULT '',
`poster_id` int(10) unsigned NOT NULL DEFAULT '1',
`poster_ip` varchar(39) DEFAULT NULL,
`poster_email` varchar(80) DEFAULT NULL,
`message` text,
`hide_smilies` tinyint(1) NOT NULL DEFAULT '0',
`posted` int(10) unsigned NOT NULL DEFAULT '0',
`edited` int(10) unsigned DEFAULT NULL,
`edited_by` varchar(200) DEFAULT NULL,
`topic_id` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `posts_topic_id_idx` (`topic_id`),
KEY `posts_multi_idx` (`poster_id`,`topic_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`ranks` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`rank` varchar(50) NOT NULL DEFAULT '',
`min_posts` mediumint(8) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`reports` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`post_id` int(10) unsigned NOT NULL DEFAULT '0',
`topic_id` int(10) unsigned NOT NULL DEFAULT '0',
`forum_id` int(10) unsigned NOT NULL DEFAULT '0',
`reported_by` int(10) unsigned NOT NULL DEFAULT '0',
`created` int(10) unsigned NOT NULL DEFAULT '0',
`message` text,
`zapped` int(10) unsigned DEFAULT NULL,
`zapped_by` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `reports_zapped_idx` (`zapped`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`reputation` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL DEFAULT '0',
`from_user_id` int(10) unsigned NOT NULL DEFAULT '0',
`time` int(10) unsigned NOT NULL DEFAULT '0',
`post_id` int(10) unsigned NOT NULL DEFAULT '0',
`reason` text NOT NULL,
`rep_plus` tinyint(1) unsigned NOT NULL DEFAULT '0',
`rep_minus` tinyint(1) unsigned NOT NULL DEFAULT '0',
`topics_id` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `rep_post_id_idx` (`post_id`),
KEY `rep_multi_user_id_idx` (`topics_id`,`from_user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=15940 DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`search_cache` (
`id` int(10) unsigned NOT NULL DEFAULT '0',
`ident` varchar(200) NOT NULL DEFAULT '',
`search_data` mediumtext,
PRIMARY KEY (`id`),
KEY `search_cache_ident_idx` (`ident`(8))
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`search_matches` (
`post_id` int(10) unsigned NOT NULL DEFAULT '0',
`word_id` int(10) unsigned NOT NULL DEFAULT '0',
`subject_match` tinyint(1) NOT NULL DEFAULT '0',
KEY `search_matches_word_id_idx` (`word_id`),
KEY `search_matches_post_id_idx` (`post_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`search_words` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`word` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
PRIMARY KEY (`word`),
KEY `search_words_id_idx` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`stats` (
`date` int(10) unsigned NOT NULL DEFAULT '0',
`posts` varchar(255) NOT NULL DEFAULT '',
`users` varchar(255) NOT NULL DEFAULT '',
`players` varchar(255) NOT NULL DEFAULT '',
`active_users` varchar(255) NOT NULL DEFAULT '',
`active_players` varchar(255) NOT NULL DEFAULT '',
`topics` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`stats_2` (
`logins` int(5) DEFAULT NULL,
`unique_logins` int(5) DEFAULT NULL,
`updated` int(11) DEFAULT NULL,
`hits` int(5) DEFAULT NULL,
`unique_hits` int(5) DEFAULT NULL,
`alexa_rank` int(5) DEFAULT NULL,
`kills` int(5) DEFAULT NULL,
`total_kills` int(5) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`subs` (
`user_id` int(10) DEFAULT NULL,
`months` int(10) DEFAULT NULL,
`google_no` varchar(255) DEFAULT NULL,
`redeem` int(10) DEFAULT NULL,
`status` int(5) DEFAULT NULL,
`order_time` int(10) DEFAULT NULL,
`last_time` int(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`subscriptions` (
`user_id` int(10) unsigned NOT NULL DEFAULT '0',
`topic_id` int(10) unsigned NOT NULL DEFAULT '0',
`forum_id` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`user_id`,`topic_id`,`forum_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`topics` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`poster` varchar(200) NOT NULL DEFAULT '',
`subject` varchar(255) NOT NULL DEFAULT '',
`posted` int(10) unsigned NOT NULL DEFAULT '0',
`first_post_id` int(10) unsigned NOT NULL DEFAULT '0',
`last_post` int(10) unsigned NOT NULL DEFAULT '0',
`last_post_id` int(10) unsigned NOT NULL DEFAULT '0',
`last_poster` varchar(200) DEFAULT NULL,
`num_views` mediumint(8) unsigned NOT NULL DEFAULT '0',
`num_replies` mediumint(8) unsigned NOT NULL DEFAULT '0',
`closed` tinyint(1) NOT NULL DEFAULT '0',
`sticky` tinyint(1) NOT NULL DEFAULT '0',
`moved_to` int(10) unsigned DEFAULT NULL,
`forum_id` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `topics_forum_id_idx` (`forum_id`),
KEY `topics_moved_to_idx` (`moved_to`),
KEY `topics_last_post_idx` (`last_post`),
KEY `topics_first_post_id_idx` (`first_post_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`group_id` int(10) unsigned NOT NULL DEFAULT '3',
`username` varchar(200) NOT NULL DEFAULT '',
`password` varchar(40) NOT NULL DEFAULT '',
`email` varchar(80) NOT NULL DEFAULT '',
`title` varchar(50) DEFAULT NULL,
`realname` varchar(40) DEFAULT NULL,
`url` varchar(100) DEFAULT NULL,
`jabber` varchar(80) DEFAULT NULL,
`icq` varchar(12) DEFAULT NULL,
`msn` varchar(80) DEFAULT NULL,
`aim` varchar(30) DEFAULT NULL,
`yahoo` varchar(30) DEFAULT NULL,
`location` varchar(30) DEFAULT NULL,
`signature` text,
`disp_topics` tinyint(3) unsigned DEFAULT NULL,
`disp_posts` tinyint(3) unsigned DEFAULT NULL,
`email_setting` tinyint(1) NOT NULL DEFAULT '1',
`notify_with_post` tinyint(1) NOT NULL DEFAULT '0',
`auto_notify` tinyint(1) NOT NULL DEFAULT '0',
`show_smilies` tinyint(1) NOT NULL DEFAULT '1',
`show_img` tinyint(1) NOT NULL DEFAULT '1',
`show_img_sig` tinyint(1) NOT NULL DEFAULT '1',
`show_avatars` tinyint(1) NOT NULL DEFAULT '1',
`show_sig` tinyint(1) NOT NULL DEFAULT '1',
`timezone` float NOT NULL DEFAULT '0',
`dst` tinyint(1) NOT NULL DEFAULT '0',
`time_format` tinyint(1) NOT NULL DEFAULT '0',
`date_format` tinyint(1) NOT NULL DEFAULT '0',
`language` varchar(25) NOT NULL DEFAULT 'English',
`style` varchar(25) NOT NULL DEFAULT 'Air',
`num_posts` int(10) unsigned NOT NULL DEFAULT '0',
`last_post` int(10) unsigned DEFAULT NULL,
`last_search` int(10) unsigned DEFAULT NULL,
`last_email_sent` int(10) unsigned DEFAULT NULL,
`registered` int(10) unsigned NOT NULL DEFAULT '0',
`registration_ip` varchar(39) NOT NULL DEFAULT '0.0.0.0',
`last_visit` int(10) unsigned NOT NULL DEFAULT '0',
`admin_note` varchar(30) DEFAULT NULL,
`activate_string` varchar(80) DEFAULT NULL,
`activate_key` varchar(8) DEFAULT NULL,
`sub_expires` int(10) unsigned DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `users_username_idx` (`username`(25)),
KEY `users_registered_idx` (`registered`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

View File

@ -18,8 +18,26 @@
<entry key="members">false</entry>
<entry key="f2pwildy">true</entry>
<entry key="expRate">4.0</entry>
<entry key="subExpRate">4.0</entry>
<!-- The minimum level required for the player to get the non-combat bonus
XP for being in the wilderness -->
<entry key="wild-non-combat-min-level">999</entry>
<!-- The following two are rates that are added to the player's XP rate -->
<entry key="wild-non-combat-bonus">0</entry>
<entry key="wild-combat-bonus">0</entry>
<!-- The amount of time (in ms) that a player must stand still in the wild
(without being in combat) before they can log out. The message will say they
must wait x seconds. -->
<entry key="wild-stand-still-time">10000</entry>
<!-- If true, a message will be sent to all online players when someone
reaches the max level for a skill -->
<entry key="max-level-congrats">false</entry>
<!-- Separate names by commas -->
<entry key="pmods">None</entry>
@ -27,7 +45,7 @@
<entry key="admins">None</entry>
<entry key="ip-ban-removal-delay">1800000</entry>
<entry key="os-level-blocking">true</entry>
<entry key="os-level-blocking">false</entry>
<entry key="os-level-block-command">sudo route add -host ${ip} reject</entry>
<entry key="os-level-unblock-command">sudo route del -host ${ip} reject</entry>
<entry key="application-level-blocking">true</entry>
@ -44,8 +62,9 @@
This uses a LRUMap, and only has a limited number of entries, so only the
most active IPs will be stored at a time. -->
<entry key="connection-throttle">5</entry>
<!-- The amount of time (in ms) after a connection is closed that the count is kept.
This is used to throttle spam logging. -->
<entry key="connection-throttle-remove-delay">180000</entry>
<!-- Every 100 minutes -->
<entry key="garbage-collect-interval">6000000</entry>

View File

@ -28,17 +28,20 @@ public class Config {
public static boolean members, f2pWildy, APPLICATION_LEVEL_BLOCKING;
public static double expRate, subExpRate;
public static double expRate, subExpRate, WILD_NON_COMBAT_BONUS,
WILD_COMBAT_BONUS;
public static String[] pmods, mods, admins;
public static int IP_BAN_REMOVAL_DELAY;
public static int GARBAGE_COLLECT_INTERVAL;
public static int SAVE_INTERVAL;
public static int IP_BAN_REMOVAL_DELAY, GARBAGE_COLLECT_INTERVAL,
SAVE_INTERVAL;
public static String DATE_FORMAT, BLOCK_COMMAND, UNBLOCK_COMMAND,
ALERT_CONFIG, COMMAND_CONFIG;
public static int CONNECTION_THROTTLE_SIZE;
public static int CONNECTION_THROTTLE_SIZE,
WILD_LEVEL_FOR_NON_COMBAT_BONUS, WILD_STAND_STILL_TIME,
DELAY_REMOVAL;
public static boolean OS_LEVEL_BLOCKING, APPLICATION_LEVEL_THROTTLE_ALERT,
OS_LEVEL_THROTTLE_ALERT, OS_LEVEL_UNBLOCK_FAILED_ALERT;
OS_LEVEL_THROTTLE_ALERT, OS_LEVEL_UNBLOCK_FAILED_ALERT,
CONGRATS_FOR_MAX_LEVEL;
static {
loadEnv();
@ -102,6 +105,8 @@ public class Config {
.getProperty("os-level-blocking-throttle-alert"));
OS_LEVEL_UNBLOCK_FAILED_ALERT = Boolean.parseBoolean(props
.getProperty("os-level-blocking-unblock-failed-alert"));
DELAY_REMOVAL = Integer.parseInt(props
.getProperty("connection-throttle-remove-delay"));
GARBAGE_COLLECT_INTERVAL = Integer.parseInt(props
.getProperty("garbage-collect-interval"));
@ -112,6 +117,17 @@ public class Config {
ALERT_CONFIG = props.getProperty("alert-config");
COMMAND_CONFIG = props.getProperty("command-config");
WILD_STAND_STILL_TIME = Integer.parseInt(props
.getProperty("wild-stand-still-time"));
WILD_LEVEL_FOR_NON_COMBAT_BONUS = Integer.parseInt(props
.getProperty("wild-non-combat-min-level"));
WILD_NON_COMBAT_BONUS = Double.parseDouble(props
.getProperty("wild-non-combat-bonus"));
WILD_COMBAT_BONUS = Double.parseDouble(props
.getProperty("wild-combat-bonus"));
CONGRATS_FOR_MAX_LEVEL = Boolean.parseBoolean(props
.getProperty("max-level-congrats"));
props.clear();
Constants.GameServer.MOTD = "@yel@Welcome to @whi@"

View File

@ -79,6 +79,12 @@ public class Formulae {
private static Random r = new Random();
public static final int[] runeIDs = { 31, 32, 33, 34, 35, 36, 37, 38, 40,
41, 42, 46, 619, 825 };
/**
* Safe packets:<br>
* PlayerAppearanceUpdater<br>
* FollowRequest<br>
* InvUseOnItem<br>
*/
public static final int[] safePacketIDs = { 70, 123, 128, 255 };
public static final String[] statArray = { "attack", "defense", "strength",
"hits", "ranged", "prayer", "magic", "cooking", "woodcut",

View File

@ -1,34 +0,0 @@
package org.moparscape.msc.gs;
import java.util.Map;
import org.apache.commons.collections.map.LRUMap;
/**
* A basic cache backed by a {@link LRUMap}.
*
* @author CodeForFame
*
*/
public class Cache<K, V> {
private Map<K, V> cache;
public Cache() {
this(100);
}
@SuppressWarnings("unchecked")
public Cache(int size) {
cache = new LRUMap(size);
}
public V get(K key) {
return cache.get(key);
}
public void put(K key, V value) {
cache.put(key, value);
}
}

View File

@ -7,25 +7,34 @@ import org.apache.mina.common.IoFilter;
import org.apache.mina.common.IoSession;
import org.apache.mina.filter.BlacklistFilter;
import org.moparscape.msc.config.Config;
import org.moparscape.msc.gs.Instance;
import org.moparscape.msc.gs.event.SingleEvent;
import org.moparscape.msc.gs.util.Cache;
public class ConnectionFilter extends BlacklistFilter {
private Cache<InetSocketAddress, Integer> connections = new Cache<InetSocketAddress, Integer>(
private Cache<String, Integer> connections = new Cache<String, Integer>(
Config.CONNECTION_THROTTLE_SIZE);
public void sessionCreated(IoFilter.NextFilter nextFilter, IoSession session) {
final SocketAddress sa = session.getRemoteAddress();
if (sa != null && sa instanceof InetSocketAddress) {
final InetSocketAddress a = (InetSocketAddress) sa;
if (IPBanManager.isBlocked(a)) {
final String host = a.getAddress().getHostAddress();
if (IPBanManager.isBlocked(host)) {
block(a.getAddress());
session.close();
return;
}
final Integer val = connections.get(a);
final Integer retVal = connections
.put(a, val == null ? 1 : val + 1);
if (retVal != null && retVal > Config.CONENCTION_THROTTLE_THRESHOLD) {
Integer val;
synchronized (connections) {
val = connections.get(host);
connections.put(host, val == null ? 1 : val + 1);
}
if (val != null
&& val + 1 >= Config.CONENCTION_THROTTLE_THRESHOLD && !IPBanManager.isBlocked(host)) {
IPBanManager.block(host);
block(a.getAddress());
session.close();
return;
}
}
@ -37,14 +46,42 @@ public class ConnectionFilter extends BlacklistFilter {
final SocketAddress sa = session.getRemoteAddress();
if (sa != null && sa instanceof InetSocketAddress) {
final InetSocketAddress a = (InetSocketAddress) sa;
final Integer val = connections.get(a);
final Integer retVal = connections
.put(a, val == null ? 1 : val + 1);
if (retVal != null
&& retVal - 1 <= Config.CONENCTION_THROTTLE_THRESHOLD) {
unblock(a.getAddress());
final Integer val;
synchronized (connections) {
val = connections.get(a.getAddress().getHostAddress());
}
if (val != null) {
if (Config.DELAY_REMOVAL > 0) {
Instance.getDelayedEventHandler().add(
new SingleEvent(null, Config.DELAY_REMOVAL) {
public void action() {
unblock(a);
}
});
} else {
unblock(a);
}
}
}
super.sessionClosed(nextFilter, session);
}
private void unblock(InetSocketAddress a) {
final String host = a.getAddress().getHostAddress();
final Integer val;
synchronized (connections) {
val = connections.get(host);
if (val == 1) {
connections.remove(host);
} else {
connections.put(host, val - 1);
}
}
if (val != null && val - 1 < Config.CONENCTION_THROTTLE_THRESHOLD) {
if (IPBanManager.isBlocked(a))
IPBanManager.unblock(a);
unblock(a.getAddress());
}
}
}

View File

@ -15,13 +15,12 @@ import org.moparscape.msc.gs.db.DataRequestHandler
object IPBanManager extends Blocker {
override def isBlocked(ip: String) = {
var v = false
if (Config.APPLICATION_LEVEL_BLOCKING)
v = ApplicationLevelBlocking.isBlocked(ip)
if (Config.OS_LEVEL_BLOCKING)
v = v || OSLevelBlocking.isBlocked(ip)
v
override def isBlocked(ip: String): Boolean = {
if (Config.APPLICATION_LEVEL_BLOCKING && ApplicationLevelBlocking.isBlocked(ip))
return true
if (Config.OS_LEVEL_BLOCKING && OSLevelBlocking.isBlocked(ip))
return true
return false
}
def isBlocked(ip: SocketAddress): Boolean = {
@ -113,7 +112,7 @@ private object ApplicationLevelBlocking extends Blocker {
private val events = Server.getServer().getEngine().getEventHandler()
override def isBlocked(ip: String) = {
blocked.contains(ip)
blocked.contains(ip) || throttled.contains(ip)
}
override def block(ip: String) = {
@ -185,7 +184,7 @@ private object OSLevelBlocking extends Blocker {
private val events = Server.getServer().getEngine().getEventHandler()
override def isBlocked(ip: String) = {
blocked.contains(ip)
blocked.contains(ip) || throttled.contains(ip)
}
override def throttle(ip: String) {

View File

@ -13,7 +13,7 @@ import org.moparscape.msc.config.Config;
import org.moparscape.msc.gs.Instance;
import org.moparscape.msc.gs.connection.PacketQueue;
import org.moparscape.msc.gs.connection.RSCPacket;
import org.moparscape.msc.gs.connection.filter.OSLevelBlocking;
import org.moparscape.msc.gs.connection.filter.IPBanManager;
import org.moparscape.msc.gs.event.DelayedEvent;
import org.moparscape.msc.gs.model.ActiveTile;
import org.moparscape.msc.gs.model.Npc;
@ -228,7 +228,7 @@ public final class GameEngine extends Thread {
if (player.getUsername() == null && p.getID() != 32
&& p.getID() != 77 && p.getID() != 0) {
final String ip = player.getCurrentIP();
OSLevelBlocking.throttle(ip);
IPBanManager.throttle(ip);
continue;
}
PacketHandler handler = packetHandlers.get(p.getID());

View File

@ -584,6 +584,12 @@ public final class Player extends Mob {
}
}
/**
* This method acts as a throttle for packets, and adds them to a list.<br>
* If the player sends more than 20 packets per second they're disconnected (60 packets per 3000ms)
*
* @param p - the packet to add...
*/
public void addPacket(RSCPacket p) {
long now = GameEngine.getTime();
if (now - lastCount > 3000) {
@ -591,7 +597,7 @@ public final class Player extends Mob {
packetCount = 0;
}
if (!DataConversions.inArray(Formulae.safePacketIDs, p.getID())
&& packetCount++ >= 60) {
&& ++packetCount >= 60) {
destroy(false);
}
if (lastPackets.size() >= 60) {
@ -653,14 +659,14 @@ public final class Player extends Mob {
public boolean canLogout() {
if (this != null && this.location != null
&& this.location.inWilderness()) {
if (GameEngine.getTime() - this.getLastMoved() < 10000) {
if (GameEngine.getTime() - this.getLastMoved() < Config.WILD_STAND_STILL_TIME) {
getActionSender()
.sendMessage(
"You must stand peacefully in one place for 10 seconds!");
"You must stand peacefully in one place for " + Config.WILD_STAND_STILL_TIME + " seconds!");
return false;
}
}
return !isBusy() && GameEngine.getTime() - getCombatTimer() > 10000;
return !isBusy() && GameEngine.getTime() - getCombatTimer() > Config.WILD_STAND_STILL_TIME;
}
public boolean canReport() {
@ -1564,7 +1570,6 @@ public final class Player extends Mob {
return wrongwords;
}
// incExp
public int ignoreCount() {
return ignoreList.size();
}
@ -1600,13 +1605,8 @@ public final class Player extends Mob {
}
}
if (combat && i < 3
&& (combatStyleToIndex() != i && getCombatStyle() != 0)) { // fix
// for
// accidental
// exp
// in
// other
// stats?
&& (combatStyleToIndex() != i && getCombatStyle() != 0)) {
// fix for accidental exp in other stats?
return;
}
@ -1617,9 +1617,9 @@ public final class Player extends Mob {
if (getLocation().wildernessLevel() > 1) {
if (combat)
exprate = exprate * 2;
if (getLocation().wildernessLevel() > 10 && !combat)
exprate = exprate * 2;
exprate += Config.WILD_COMBAT_BONUS;
if (getLocation().wildernessLevel() > Config.WILD_LEVEL_FOR_NON_COMBAT_BONUS && !combat)
exprate += Config.WILD_NON_COMBAT_BONUS;
}
exp[i] += amount * exprate;
@ -1633,7 +1633,7 @@ public final class Player extends Mob {
incCurStat(i, advanced);
incMaxStat(i, advanced);
int stat = this.getMaxStat(i);
if (stat == 99) {
if (stat == 99 && Config.CONGRATS_FOR_MAX_LEVEL) {
for (Player p : world.getPlayers()) {
if (p != null) {
p.getActionSender()

View File

@ -12,16 +12,15 @@ import org.apache.commons.collections.map.LRUMap;
*/
public class Cache<K, V> {
private final Map<K, V> cache;
private Map<K, V> cache;
public Cache() {
this(100);
}
@SuppressWarnings("unchecked")
// Commons and their failure to support generics...
public Cache(int maxSize) {
cache = new LRUMap(maxSize);
public Cache(int size) {
cache = new LRUMap(size);
}
public V get(K key) {
@ -32,4 +31,16 @@ public class Cache<K, V> {
return cache.put(key, value);
}
public V remove(K key) {
return cache.remove(key);
}
public V remove(K key, V value) {
V v = cache.get(key);
if(v.equals(value)) {
return cache.remove(value);
}
return null;
}
}

View File

@ -8,33 +8,30 @@ import java.util.HashMap;
import org.moparscape.msc.ls.Server;
import org.moparscape.msc.ls.util.DataConversions;
public class PlayerSave {
public static final String[] statArray = { "attack", "defense", "strength",
"hits", "ranged", "prayer", "magic", "cooking", "woodcut", "fletching", "fishing",
"firemaking", "crafting", "smithing", "mining", "herblaw", "agility", "thieving" };
"hits", "ranged", "prayer", "magic", "cooking", "woodcut",
"fletching", "fishing", "firemaking", "crafting", "smithing",
"mining", "herblaw", "agility", "thieving" };
public static PlayerSave loadPlayer(long user) {
PlayerSave save = new PlayerSave(user);
ResultSet result;
try {
result = Server.db.getQuery("SELECT r.*, u.username AS owner_username, u.group_id as gid, u.sub_expires as subexp FROM `pk_players` AS r INNER JOIN `users` AS u ON u.id=r.owner WHERE `user`='" + save.getUser() + "'");
result = Server.db
.getQuery("SELECT * FROM `pk_players` WHERE `user`='"
+ save.getUser() + "'");
if (!result.next()) {
return save;
}
long eventcd = result.getLong("eventcd");
@SuppressWarnings("unused")
int subexp = result.getInt("subexp");
long subexp = result.getLong("sub_expires");
@SuppressWarnings("unused")
long now = System.currentTimeMillis() / 1000;
int sowner = result.getInt("owner");
if (result.getInt("gid") == 8) {
save.setOwner(sowner, Integer.parseInt("5"), result.getLong("subexp"));
} else {
save.setOwner(sowner, result.getInt("group_id"), result.getLong("subexp"));
}
save.setOwner(sowner, result.getInt("group_id"), subexp);
save.setMuted(result.getLong("muted"));
/*
* if(subexp - now < 1) {
@ -43,21 +40,37 @@ public class PlayerSave {
* result.getLong("subexp")); }
*/
save.setLogin(result.getLong("login_date"), DataConversions.IPToLong(result.getString("login_ip")));
save.setLogin(result.getLong("login_date"),
DataConversions.IPToLong(result.getString("login_ip")));
save.setLocation(result.getInt("x"), result.getInt("y"));
save.setFatigue(result.getInt("fatigue"));
save.setCombatStyle((byte) result.getInt("combatstyle"));
save.setPrivacy(result.getInt("block_chat") == 1, result.getInt("block_private") == 1, result.getInt("block_trade") == 1, result.getInt("block_duel") == 1);
save.setSettings(result.getInt("cameraauto") == 1, result.getInt("onemouse") == 1, result.getInt("soundoff") == 1, result.getInt("showroof") == 1, result.getInt("autoscreenshot") == 1, result.getInt("combatwindow") == 1);
save.setPrivacy(result.getInt("block_chat") == 1,
result.getInt("block_private") == 1,
result.getInt("block_trade") == 1,
result.getInt("block_duel") == 1);
save.setSettings(result.getInt("cameraauto") == 1,
result.getInt("onemouse") == 1,
result.getInt("soundoff") == 1,
result.getInt("showroof") == 1,
result.getInt("autoscreenshot") == 1,
result.getInt("combatwindow") == 1);
save.setAppearance((byte) result.getInt("haircolour"), (byte) result.getInt("topcolour"), (byte) result.getInt("trousercolour"), (byte) result.getInt("skincolour"), (byte) result.getInt("headsprite"), (byte) result.getInt("bodysprite"), result.getInt("male") == 1, result.getInt("skulled"));
save.setAppearance((byte) result.getInt("haircolour"),
(byte) result.getInt("topcolour"),
(byte) result.getInt("trousercolour"),
(byte) result.getInt("skincolour"),
(byte) result.getInt("headsprite"),
(byte) result.getInt("bodysprite"),
result.getInt("male") == 1, result.getInt("skulled"));
save.setQuestPoints(result.getInt("quest_points"));
result = Server.db.getQuery("SELECT * FROM `pk_experience` WHERE `user`='" + save.getUser() + "'");
result = Server.db
.getQuery("SELECT * FROM `pk_experience` WHERE `user`='"
+ save.getUser() + "'");
if (!result.next()) {
return save;
}
@ -65,7 +78,9 @@ public class PlayerSave {
save.setExp(i, result.getInt("exp_" + statArray[i]));
}
result = Server.db.getQuery("SELECT * FROM `pk_curstats` WHERE `user`='" + save.getUser() + "'");
result = Server.db
.getQuery("SELECT * FROM `pk_curstats` WHERE `user`='"
+ save.getUser() + "'");
if (!result.next()) {
return save;
}
@ -73,49 +88,64 @@ public class PlayerSave {
save.setLvl(i, result.getInt("cur_" + statArray[i]));
}
result = Server.db.getQuery("SELECT id,amount,wielded FROM `pk_invitems` WHERE `user`='" + save.getUser() + "' ORDER BY `slot` ASC");
result = Server.db
.getQuery("SELECT id,amount,wielded FROM `pk_invitems` WHERE `user`='"
+ save.getUser() + "' ORDER BY `slot` ASC");
while (result.next()) {
save.addInvItem(result.getInt("id"), result.getInt("amount"), result.getInt("wielded") == 1);
save.addInvItem(result.getInt("id"), result.getInt("amount"),
result.getInt("wielded") == 1);
}
result = Server.db.getQuery("SELECT id,amount FROM `pk_bank` WHERE `user`='" + save.getUser() + "' ORDER BY `slot` ASC");
result = Server.db
.getQuery("SELECT id,amount FROM `pk_bank` WHERE `user`='"
+ save.getUser() + "' ORDER BY `slot` ASC");
while (result.next()) {
save.addBankItem(result.getInt("id"), result.getInt("amount"));
}
result = Server.db.getQuery("SELECT friend FROM `pk_friends` WHERE `user`='" + save.getUser() + "'");
result = Server.db
.getQuery("SELECT friend FROM `pk_friends` WHERE `user`='"
+ save.getUser() + "'");
while (result.next()) {
save.addFriend(result.getLong("friend"));
}
result = Server.db.getQuery("SELECT `ignore` FROM `pk_ignores` WHERE `user`='" + save.getUser() + "'");
result = Server.db
.getQuery("SELECT `ignore` FROM `pk_ignores` WHERE `user`='"
+ save.getUser() + "'");
while (result.next()) {
save.addIgnore(result.getLong("ignore"));
}
result = Server.db.getQuery("SELECT * FROM `pk_quests` WHERE `user`='" + save.getUser() + "'");
result = Server.db
.getQuery("SELECT * FROM `pk_quests` WHERE `user`='"
+ save.getUser() + "'");
while (result.next()) {
save.setQuestStage(result.getInt("id"), result.getInt("stage"));
}
save.setEventCD(eventcd);
} catch (SQLException e) {
Server.error("SQL Exception Loading " + DataConversions.hashToUsername(user) + ": " + e.getMessage());
Server.error("SQL Exception Loading "
+ DataConversions.hashToUsername(user) + ": "
+ e.getMessage());
}
return save;
}
private long eventcd = 0;
private long muted;
private ArrayList<BankItem> bankItems = new ArrayList<BankItem>();
private boolean blockChat, blockPrivate, blockTrade, blockDuel;
private boolean cameraAuto, oneMouse, soundOff, showRoof, autoScreenshot, combatWindow;
private boolean cameraAuto, oneMouse, soundOff, showRoof, autoScreenshot,
combatWindow;
private int combat, skillTotal;
private byte combatStyle;
private long[] exp = new long[18];
private int fatigue;
private ArrayList<Long> friendList = new ArrayList<Long>();
private byte hairColour, topColour, trouserColour, skinColour, headSprite, bodySprite;
private byte hairColour, topColour, trouserColour, skinColour, headSprite,
bodySprite;
private ArrayList<Long> ignoreList = new ArrayList<Long>();
private ArrayList<InvItem> invItems = new ArrayList<InvItem>();
@ -340,63 +370,88 @@ public class PlayerSave {
try {
String query;
Server.db.updateQuery("DELETE FROM `pk_bank` WHERE `user`='" + user + "'");
Server.db.updateQuery("DELETE FROM `pk_bank` WHERE `user`='" + user
+ "'");
if (bankItems.size() > 0) {
query = "INSERT INTO `pk_bank`(`user`, `id`, `amount`, `slot`) VALUES";
int slot = 0;
for (BankItem item : bankItems) {
query += "('" + user + "', '" + item.getID() + "', '" + item.getAmount() + "', '" + (slot++) + "'),";
query += "('" + user + "', '" + item.getID() + "', '"
+ item.getAmount() + "', '" + (slot++) + "'),";
}
Server.db.updateQuery(query.substring(0, query.length() - 1));
}
Server.db.updateQuery("DELETE FROM `pk_invitems` WHERE `user`='" + user + "'");
Server.db.updateQuery("DELETE FROM `pk_invitems` WHERE `user`='"
+ user + "'");
ResultSet result = Server.db.getQuery("Select 1 FROM `pk_players` WHERE `user`='" + user + "' AND `owner`='" + owner + "'");
ResultSet result = Server.db
.getQuery("Select 1 FROM `pk_players` WHERE `user`='"
+ user + "' AND `owner`='" + owner + "'");
if (!result.next())
return false;
Server.db.updateQuery("UPDATE `pk_players` SET `combat`=" + combat + ", skill_total=" + skillTotal + ", `x`=" + x + ", `y`='" + y + "', `fatigue`='" + fatigue + "', `haircolour`=" + hairColour + ", `topcolour`=" + topColour + ", `trousercolour`=" + trouserColour + ", `skincolour`=" + skinColour + ", `headsprite`=" + headSprite + ", `bodysprite`=" + bodySprite + ", `male`=" + (male ? 1 : 0) + ", `skulled`=" + skulled + ", `combatstyle`=" + combatStyle + ", `quest_points`=" + questPoints + " WHERE `user`='" + user + "'");
Server.db.updateQuery("UPDATE `pk_players` SET `combat`=" + combat
+ ", skill_total=" + skillTotal + ", `x`=" + x + ", `y`='"
+ y + "', `fatigue`='" + fatigue + "', `haircolour`="
+ hairColour + ", `topcolour`=" + topColour
+ ", `trousercolour`=" + trouserColour + ", `skincolour`="
+ skinColour + ", `headsprite`=" + headSprite
+ ", `bodysprite`=" + bodySprite + ", `male`="
+ (male ? 1 : 0) + ", `skulled`=" + skulled
+ ", `combatstyle`=" + combatStyle + ", `quest_points`="
+ questPoints + " WHERE `user`='" + user + "'");
query = "UPDATE `pk_experience` SET ";
for (int i = 0; i < 18; i++)
query += "`exp_" + statArray[i] + "`=" + exp[i] + ",";
Server.db.updateQuery(query.substring(0, query.length() - 1) + " WHERE `user`='" + user + "'");
Server.db.updateQuery(query.substring(0, query.length() - 1)
+ " WHERE `user`='" + user + "'");
query = "UPDATE `pk_curstats` SET ";
for (int i = 0; i < 18; i++)
query += "`cur_" + statArray[i] + "`=" + lvl[i] + ",";
Server.db.updateQuery(query.substring(0, query.length() - 1) + " WHERE `user`='" + user + "'");
Server.db.updateQuery(query.substring(0, query.length() - 1)
+ " WHERE `user`='" + user + "'");
if (invItems.size() > 0) {
query = "INSERT INTO `pk_invitems`(`user`, `id`, `amount`, `wielded`, `slot`) VALUES";
int slot = 0;
for (InvItem item : invItems)
query += "('" + user + "', '" + item.getID() + "', '" + item.getAmount() + "', '" + (item.isWielded() ? 1 : 0) + "', '" + (slot++) + "'),";
query += "('" + user + "', '" + item.getID() + "', '"
+ item.getAmount() + "', '"
+ (item.isWielded() ? 1 : 0) + "', '" + (slot++)
+ "'),";
Server.db.updateQuery(query.substring(0, query.length() - 1));
}
Server.db.updateQuery("DELETE FROM `pk_quests` WHERE `user`='" + user + "'");
Server.db.updateQuery("DELETE FROM `pk_quests` WHERE `user`='"
+ user + "'");
query = "INSERT INTO `pk_quests` (`user`, `id`, `stage`) VALUES";
java.util.Set<Integer> keys = questStage.keySet();
for (int id : keys)
query += "('" + user + "', '" + id + "', '" + questStage.get(id) + "'),";
query += "('" + user + "', '" + id + "', '"
+ questStage.get(id) + "'),";
Server.db.updateQuery(query.substring(0, query.length() - 1));
Server.db.updateQuery("UPDATE `pk_players` SET eventcd='" + getEventCD() + "' WHERE user='" + user + "'");
Server.db.updateQuery("UPDATE `pk_players` SET eventcd='"
+ getEventCD() + "' WHERE user='" + user + "'");
return true;
} catch (SQLException e) {
e.printStackTrace();
Server.error(e);
return false;
}
}
public void setAppearance(byte hairColour, byte topColour, byte trouserColour, byte skinColour, byte headSprite, byte bodySprite, boolean male, long skulled) {
public void setAppearance(byte hairColour, byte topColour,
byte trouserColour, byte skinColour, byte headSprite,
byte bodySprite, boolean male, long skulled) {
this.hairColour = hairColour;
this.topColour = topColour;
this.trouserColour = trouserColour;
@ -478,7 +533,8 @@ public class PlayerSave {
this.subExpires = subExpires;
}
public void setPrivacy(boolean blockChat, boolean blockPrivate, boolean blockTrade, boolean blockDuel) {
public void setPrivacy(boolean blockChat, boolean blockPrivate,
boolean blockTrade, boolean blockDuel) {
this.blockChat = blockChat;
this.blockPrivate = blockPrivate;
this.blockTrade = blockTrade;
@ -510,7 +566,9 @@ public class PlayerSave {
questStage.put(index, stage);
}
public void setSettings(boolean cameraAuto, boolean oneMouse, boolean soundOff, boolean showRoof, boolean autoScreenshot, boolean combatWindow) {
public void setSettings(boolean cameraAuto, boolean oneMouse,
boolean soundOff, boolean showRoof, boolean autoScreenshot,
boolean combatWindow) {
this.cameraAuto = cameraAuto;
this.oneMouse = oneMouse;
this.soundOff = soundOff;

View File

@ -68,7 +68,7 @@ public class PlayerLoginHandler implements PacketHandler {
byte returnVal = 0;
try {
ResultSet result = Server.db.getQuery("SELECT r.pass, r.banned, r.owner, u.group_id, b.id AS b_id FROM `pk_players` AS r INNER JOIN `users` AS u ON u.id=r.owner LEFT JOIN `bans` AS b on (b.username LIKE u.username OR b.ip LIKE '" + ip + "') WHERE `user`='" + user + "'");
ResultSet result = Server.db.getQuery("SELECT banned, owner, group_id FROM `pk_players` WHERE `user` = '" + user + "'");
if (!result.next()) {
return 2;
}
@ -76,12 +76,12 @@ public class PlayerLoginHandler implements PacketHandler {
return 2;
}
if (result.getInt("banned") == 1 || result.getInt("b_id") != 0) {
if (result.getInt("banned") == 1) {
System.out.println("Banned player: " + DataConversions.hashToUsername(user) + " trying to login.");
return 6;
}
if (result.getInt("group_id") == 1 || result.getInt("group_id") == 2) {
if (result.getInt("group_id") >= 5) {
returnVal = 99;
}