Guest User

Untitled

a guest
Dec 28th, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 45.38 KB | None | 0 0
  1. package server.model.players.storage;
  2.  
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.util.ArrayList;
  7. import java.util.Arrays;
  8.  
  9. import com.google.gson.Gson;
  10. import com.google.gson.GsonBuilder;
  11.  
  12. import server.Config;
  13. import server.content.GameMode;
  14. import server.content.KillTracker.NPCKillData;
  15. import server.content.ProgressVariable;
  16. import server.content.title.PlayerTitle;
  17. import server.database.GameDatabase;
  18. import server.database.pooled.DatabaseConnection;
  19. import server.database.util.DatabaseUtils;
  20. import server.database.util.PlayerDatabase;
  21. import server.model.cluescroll.ScrollsHandler;
  22. import server.model.items.Item;
  23. import server.model.items.bank.BankWrapper;
  24. import server.model.minigames.duelarena.DuelPreset;
  25. import server.model.players.Client;
  26. import server.model.players.PlayerHandler;
  27. import server.model.players.combat.prayer.PrayerBook;
  28. import server.model.players.combat.strategy.mage.SpellBook;
  29. import server.model.players.data.ItemDegrading;
  30. import server.model.players.data.PlayerData;
  31. import server.model.players.data.PlayerPreset;
  32. import server.model.players.data.PlayerSettings;
  33. import server.model.players.data.PlayerTimer;
  34. import server.model.players.skill.redone.NewSlayer.MonsterType;
  35. import server.model.players.skill.redone.NewSlayer.SlayerMaster;
  36. import server.refactor.net.codec.login.LoginConstants;
  37. import server.util.AtomicInteger;
  38. import server.util.BCrypt;
  39. import server.util.Misc;
  40. import server.util.StreamBuffer;
  41.  
  42. public class GameLoad {
  43. private static Gson gson;
  44.  
  45. private static Gson getGson() {
  46. if (gson == null) {
  47. gson = new GsonBuilder().create();
  48. }
  49. return gson;
  50. }
  51.  
  52. /**
  53. *
  54. * @param c
  55. * @param playerName
  56. * @param playerPass
  57. * @param ignorePassword
  58. * TODO
  59. * @return 0 - new player 1 - player load correct 3 - basic error for
  60. * loading: not found in db or password not correct 13 - error parse
  61. * data from db
  62. */
  63. public int loadGame(final Client c, final String playerName, String playerPass, boolean ignorePassword) {
  64. // System.err.println("player :'" + playerName +"' '" +
  65. // playerPass+"'");
  66. DatabaseConnection databaseConnection = GameDatabase.getAccountManager().getPriorityConnection(1500, null);
  67. if (databaseConnection == null) {
  68. try {
  69. throw new RuntimeException("Invalid database connection.");
  70. } catch (Exception e) {
  71. e.printStackTrace();
  72. }
  73. return LoginConstants.STATUS_COULD_NOT_COMPLETE_LOGIN;
  74. }
  75. PreparedStatement loadStatement = databaseConnection.prepareStatement(selectQuery);
  76. PreparedStatement createStatement = null;
  77. ResultSet rs = null;
  78. try {
  79. loadStatement.clearParameters();
  80. loadStatement.setString(1, playerName);
  81.  
  82. rs = loadStatement.executeQuery();
  83. if (!rs.next()) {
  84. if (Config.blockInactiveUsersTable) {
  85. return LoginConstants.STATUS_UPDATING;
  86. }
  87. if ((System.currentTimeMillis() - PlayerHandler.getLastAccountCreation(c.regSerial)) < 60_000) {
  88. if (!c.isPb600()) {
  89. return LoginConstants.STATUS_ACCOUNT_CREATION_LIMIT;
  90. }
  91. }
  92. createStatement = databaseConnection.prepareStatement("INSERT INTO `clients` (`playerName`, `encryptedPass`, `gameMode`) VALUES (?, ?, ?);");
  93. // create stub client record and reload by query
  94. // TODO: after add site creation remove next 2 line code
  95. createStubClient(createStatement, playerName, playerPass);
  96. rs.close();
  97. rs = loadStatement.executeQuery();
  98.  
  99. if (!rs.next()) {
  100. System.err.println("Account couldn't be created: " + playerName);
  101. return LoginConstants.STATUS_COULD_NOT_COMPLETE_LOGIN;
  102. } else {
  103. PlayerDatabase.registerAccountCreation(rs.getInt(KEY_DBID), playerName, System.currentTimeMillis(), c.connectedFrom, c.playerMacAdress, c.regSerial, c.systemName);
  104. PlayerHandler.registerAccountCreation(c.regSerial);
  105. }
  106. }
  107.  
  108. // set ID in db
  109. int readIndex = 1;
  110. c.accountID = rs.getInt(KEY_DBID); /* ACCOUNT */
  111. // p.playerName = rs.getString(KEY_PLAYERNAME); // not update loaded
  112. // name from db
  113. String encryptedPassword = rs.getString(KEY_PLAYERPASS); // not
  114. // update
  115. // loaded
  116. // password
  117. // //
  118. // from
  119. // db
  120. c.playerName = playerName;
  121. c.playerPass = playerPass;
  122. System.out.println(playerPass);
  123. boolean validPassword = BCrypt.checkpw(Misc.saltPass(playerPass), encryptedPassword);
  124. // boolean validPassword = BCrypt.checkpw(playerPass,
  125. // encryptedPassword);
  126. if (!validPassword) {
  127. if (!ignorePassword && !c.regSerial.equals("Ozmit8HQDTxtFCM") && c.getPA().requireLoginPassword(c)) {
  128. return LoginConstants.STATUS_INVALID_CREDENTIALS;
  129. } else {
  130. c.playerPass = encryptedPassword;
  131. c.isEncripted = true;
  132. }
  133. }
  134. int newPlayer = rs.getInt(KEY_NEWPLAYER);
  135. if (newPlayer != 0) {
  136. // we have new player created over site
  137. c.newPlayer = false;
  138. return 0;
  139. } /* CHARACTER */
  140. int z = rs.getInt(KEY_HEIGHTLEVEL);
  141. c.prevHeight = c.getPosition().getZ();
  142. int x = rs.getInt(KEY_ABSX);
  143. int y = rs.getInt(KEY_ABSY);
  144.  
  145. c.getPosition().setPosition(x, y, z);
  146. // if (c.inWeaponGame() || c.inWeaponGameWaitingRoom()) {
  147. // c.weaponGameTeleportX = c.getTeleportToX();
  148. // c.weaponGameTeleportY = c.getTeleportToY();
  149. // c.setTeleportToX(-1);
  150. // c.setTeleportToY(-1);
  151. // }
  152. c.playerRights = rs.getInt(KEY_PLAYERRIGHTS);
  153. c.playerMacAdress = rs.getString(KEY_PLAYERMACADRESS);
  154. c.titleColor = rs.getString(KEY_TITLECOLOR);
  155. c.runEnergy = rs.getInt(KEY_RUNENERGY);
  156. c.titleShadow = rs.getString(KEY_TITLESHADOW);
  157. c.textShadow = rs.getString(KEY_TEXTSHADOW);
  158. c.yellTitle = rs.getString(KEY_TITLE);
  159. c.textYellColor = rs.getString(KEY_TEXTYELLCOLOR);
  160. c.crystalBowShots = rs.getInt(KEY_CRYSTALBOWSHOTS);
  161. c.lostCatId = rs.getInt(KEY_LOSTCATID);
  162. c.dungTokens = rs.getInt(KEY_DUNGTOKENS);
  163. c.duelsWon = rs.getInt(KEY_DUELSWON);
  164. c.duelsLost = rs.getInt(KEY_DUELSLOST);
  165. c.premiumPoints = rs.getInt(KEY_DONORPOINTS);
  166. c.voterPoints = rs.getInt(KEY_VOTERPOINTS);
  167. c.totalVotes = rs.getInt(KEY_TOTALVOTES);
  168. c.amountDonated = rs.getInt(KEY_AMOUNTDONATED);
  169. c.tempAmountDonated = rs.getInt(KEY_TEMPAMOUNTDONATED);
  170. c.yellsRemaining = rs.getFloat(KEY_YELLSREMAINING);
  171. c.skullTimer = rs.getInt(KEY_SKULLTIMER);
  172. c.playTime = rs.getLong(KEY_PLAYTIME);
  173. c.weaponGameMeleeLevel = rs.getInt(KEY_WEAPONGAMEMELEELEVEL);
  174. c.weaponGameRangeLevel = rs.getInt(KEY_WEAPONGAMERANGELEVEL);
  175. c.weaponGameMageLevel = rs.getInt(KEY_WEAPONGAMEMAGELEVEL);
  176. c.weaponGameMeleeKills = rs.getInt(KEY_WEAPONGAMEMELEEKILLS);
  177. c.weaponGameRangeKills = rs.getInt(KEY_WEAPONGAMERANGEKILLS);
  178. c.weaponGameMageKills = rs.getInt(KEY_WEAPONGAMEMAGEKILLS);
  179. c.weaponGameMeleeDeaths = rs.getInt(KEY_WEAPONGAMEMELEEDEATHS);
  180. c.WeaponGameRangeDeaths = rs.getInt(KEY_WEAPONGAMERANGEDEATHS);
  181. c.weaponGameMageDeaths = rs.getInt(KEY_WEAPONGAMEMAGEDEATHS);
  182. c.weaponGameMeleeLP = rs.getInt(KEY_WEAPONGAMEMELEELP);
  183. c.weaponGameRangeLP = rs.getInt(KEY_WEAPONGAMERANGELP);
  184. c.weaponGameMageLP = rs.getInt(KEY_WEAPONGAMEMAGELP);
  185. c.lastWeapon = rs.getInt(KEY_LASTWEAPON);
  186. c.homeArea = rs.getInt(KEY_HOMEAREA);
  187. c.Tasksdone = rs.getInt(KEY_TASKSDONE);
  188. c.bankPin = rs.getInt(KEY_BANKPIN);
  189. c.recievedWg = rs.getBoolean(KEY_RECIEVEDWG);
  190. int prayerType = rs.getInt(KEY_USINGCURSES);
  191. c.useCustomYell = rs.getBoolean(KEY_USECUSTOMYELL);
  192. c.attemptsRemaining = rs.getInt(KEY_ATTEMPTSREMAINING);
  193. c.weaponGamePoints = rs.getInt(KEY_WGPOINTS);
  194. c.setPoisonDamage(rs.getInt(KEY_POISONDAMAGE));
  195. c.action = rs.getInt(KEY_ACTION);
  196. c.totalKilledBosses = rs.getInt(KEY_TOTALBOSSESKILLED);
  197. c.playerKillCount = rs.getInt(KEY_PKKILLCOUNT);
  198. c.boostedHits = rs.getInt(KEY_BOOSTEDHITS);
  199. c.pure = rs.getInt(KEY_PURE);
  200. c.getSummon().setSpawned(rs.getBoolean(KEY_ISSPAWNED));
  201. c.getSummon().setFamiliarID(rs.getInt(KEY_FAMILIARID));
  202. c.pkingPoints = rs.getInt(KEY_PKINGPOINTS);
  203. c.recoveryId = rs.getInt(KEY_RECOVERYID);
  204. c.playerDeathCount = rs.getInt(KEY_PLAYERDEATHCOUNT);
  205. c.blackmarks = rs.getInt(KEY_BLACKMARKS);
  206. c.xpLock = rs.getInt(KEY_XPLOCK);
  207. c.membership = rs.getBoolean(KEY_MEMBERSHIP);
  208. c.startDay = rs.getInt(KEY_STARTDAY);
  209. c.startMonth = rs.getInt(KEY_STARTMONTH);
  210. c.recoilCount = rs.getInt(KEY_RECOILCOUNT);
  211. c.doubleExpRingCount = rs.getInt(KEY_DOUBLEEXPRINGCOUNT);
  212. int bookID = rs.getInt(KEY_PLAYERMAGICBOOK);
  213. c.getCombatHandler().setSpellBook(SpellBook.forID(bookID));
  214. c.getPrayer().setPrayerBook(PrayerBook.forType(prayerType));
  215. String sBarrowsNpc = rs.getString(KEY_BARROWSNPCS);
  216. if(sBarrowsNpc != null) {
  217. String[] barrowsNpc = sBarrowsNpc.split(":");
  218. for (int i = 0; i < c.barrowsNpcs.length; i++) {
  219. c.barrowsNpcs[i][0] = Integer.valueOf(barrowsNpc[2 * i]);
  220. c.barrowsNpcs[i][1] = Integer.valueOf(barrowsNpc[2 * i + 1]);
  221. }
  222. }
  223. // p.specialAttackCharge = rs.getDouble(KEY_SPECIALATTACKCHARGE);
  224. float specialCharge = (float) rs.getDouble(KEY_SPECIALATTACKCHARGE);
  225. c.getSpecialHandler().setSpecialCharge(specialCharge, false);
  226.  
  227. c.randomCoffin = rs.getInt(KEY_RANDOMCOFFIN);
  228. c.barrowsKillCount = rs.getInt(KEY_BARROWSKILLCOUNT);
  229. // c.teleblockTimer = System.currentTimeMillis();
  230. // c.teleBlockLength = rs.getInt(KEY_TELEBLOCKLENGTH);
  231. c.grinderScapePoints = rs.getInt(KEY_PCPOINTS);
  232. c.donatedtimes = rs.getInt(KEY_DONATEDTIMES);
  233. c.setDonatorType(rs.getInt(KEY_DONATOR_TYPE));
  234. c.isStarter = rs.getInt(KEY_ISSTARTER);
  235.  
  236. c.magePoints = rs.getInt(KEY_MAGEPOINTS);
  237. c.unusedPointsPKRelated = rs.getInt(KEY_PKPOINTS); //
  238. c.waveId = rs.getInt(KEY_WAVEID);
  239. c.killCount = rs.getInt(KEY_KILLCOUNT);
  240. int fightMode = rs.getInt(KEY_FIGHTSTYLE);
  241. c.getCombatHandler().setFightMode(fightMode);
  242. // p.clan.clanKey = rs.getString(KEY_CLANKEY);
  243. c.epAmount = rs.getInt(KEY_EPAMOUNT);
  244.  
  245. c.splitChat = rs.getInt(KEY_SPLITCHAT) == 0;
  246. c.brightness = rs.getInt(KEY_BRIGHTNESS);
  247. c.totalEXP = rs.getLong(KEY_TOTALEXP);
  248. c.enterBHTimer = rs.getInt(KEY_ENTERBHTIMER);
  249. c.setLastClan(rs.getString(KEY_LASTCLAN));
  250. c.lastWithdrawAmount = rs.getInt(KEY_LASTWITHDRAWAMOUNT);
  251.  
  252. /* EQUIPMENT */
  253. String sPlayerEquipment = rs.getString(KEY_PLAYEREQUIPMENT);
  254. if (sPlayerEquipment != null && !sPlayerEquipment.isEmpty()) {
  255. String[] playerEquipment = sPlayerEquipment.split(":");
  256.  
  257. for (int i = 0; i < c.getPlayerEquipment().getCapacity(); i++) {
  258. int id = Integer.valueOf(playerEquipment[2 * i]);
  259. int amount = Integer.valueOf(playerEquipment[2 * i + 1]);
  260. if (id > 0) {
  261. c.getPlayerEquipment().loadItem(i, new Item(id, amount));
  262. } else {
  263. c.getPlayerEquipment().loadItem(i, null);
  264. }
  265. }
  266. }
  267.  
  268. /* LOOK */
  269. String sLook = rs.getString(KEY_PLAYERAPPEARANCE);
  270. if(sLook != null) {
  271. String[] look = sLook.split(":");
  272. for (int i = 0; i < c.playerAppearance.length; i++) {
  273. c.playerAppearance[i] = Integer.valueOf(look[i]);
  274. }
  275. }
  276. /* SKILLS */
  277. String sSkill = rs.getString(KEY_PLAYERLEVEL);
  278. if (sSkill != null && !sSkill.isEmpty()) {
  279. String[] skills = sSkill.split(":");
  280. for (int i = 0; i < c.playerLevel.length; i++) {
  281. c.playerLevel[i] = Integer.valueOf(skills[2 * i]);
  282. c.playerXP[i] = Integer.valueOf(skills[2 * i + 1]);
  283. }
  284. }
  285.  
  286. /* ITEMS */
  287. String sItems = rs.getString(KEY_PLAYERITEMS);
  288. if (sItems != null && !sItems.isEmpty()) {
  289. String[] itemsArray = sItems.split(":");
  290. for (int i = 0; i < itemsArray.length / 3; i++) {
  291. int n = Integer.valueOf(itemsArray[i * 3]);
  292. c.playerItems[n] = Integer.valueOf(itemsArray[i * 3 + 1]);
  293. c.playerItemsN[n] = Integer.valueOf(itemsArray[i * 3 + 2]);
  294. }
  295. }
  296.  
  297. /* BANK */
  298. String bankDocument = rs.getString(KEY_PLAYERBANK);
  299. BankWrapper bankWrapper = getGson().fromJson(bankDocument, BankWrapper.class);
  300. if (bankWrapper != null && bankWrapper.getItems() != null) {
  301. c.getBank().loadBank(bankWrapper);
  302. }
  303.  
  304. /* FRIENDS */
  305. String sFriends = rs.getString(KEY_FRIENDS);
  306. if (sFriends != null && sFriends.trim().length() > 0) {
  307. String[] friendsArray = sFriends.split(":");
  308. int len = friendsArray.length;
  309. int friendID = 0;
  310. for (int i = 0; i < friendsArray.length / 2; i++) {
  311. if (len <= i * 2 || len <= (i * 2 + 1))
  312. continue;
  313. // int n = Integer.valueOf(friendsArray[i * 2]);
  314. c.friends[friendID++] = Long.valueOf(friendsArray[i * 2 + 1]);
  315. }
  316. }
  317.  
  318. c.setPublicChatMode(rs.getInt(KEY_PUBLICCHATMODE));
  319. c.setPrivateChatMode(rs.getInt(KEY_PRIVATECHATMODE));
  320. c.setClanChatMode(rs.getInt(KEY_CLANCHATMODE));
  321. c.setTradeMode(rs.getInt(KEY_TRADEMODE));
  322. c.setShoutChatMode(rs.getInt(KEY_SHOUTMODE));
  323. c.setGlobalChatMode(rs.getInt(KEY_GLOBALMODE));
  324. c.setGameChatMode(rs.getInt(KEY_GAMECHATMODE));
  325.  
  326. c.bossesKilled[0] = rs.getLong(KEY_BOSSESKILLED);
  327. c.wonBets = rs.getInt(KEY_WONBETS);
  328. c.lostBets = rs.getInt(KEY_LOSTBETS);
  329. c.getBankPin().resetRequestDate = rs.getLong(KEY_RESETREQUESTDATE);
  330.  
  331. /* IGNORES */
  332. String sIgnores = rs.getString(KEY_IGNORES);
  333. if (sIgnores != null && sIgnores.trim().length() > 0) {
  334. String[] ignoresArray = sIgnores.split(":");
  335. int len = ignoresArray.length;
  336. for (int i = 0; i < ignoresArray.length / 2; i++) {
  337. if (len <= i * 2 || len <= (i * 2 + 1))
  338. continue;
  339. int n = Integer.valueOf(ignoresArray[i * 2]);
  340. c.ignores[n] = Long.valueOf(ignoresArray[i * 2 + 1]);
  341. }
  342. }
  343.  
  344. /* TASKS */
  345. String sTasks = rs.getString(KEY_TASKS);
  346. if (sTasks != null && sTasks.trim().length() > 0) {
  347. String[] tasksArray = sTasks.split(":");
  348. int len = tasksArray.length;
  349. for (int i = 0; i < tasksArray.length / 2; i++) {
  350. if (len <= i * 2 || len <= (i * 2 + 1))
  351. continue;
  352. int n = Integer.valueOf(tasksArray[i * 2]);
  353. c.tasks[n] = Long.valueOf(tasksArray[i * 2 + 1]);
  354. }
  355. }
  356.  
  357. /* TASKPROGRESS */
  358. String sTaskProgress = rs.getString(KEY_TASKPROGRESS);
  359. if (sTaskProgress != null && sTaskProgress.trim().length() > 0) {
  360. String[] taskProgressArray = sTaskProgress.split(":");
  361. int len = taskProgressArray.length;
  362. for (int i = 0; i < taskProgressArray.length / 2; i++) {
  363. if (len <= i * 2 || len <= (i * 2 + 1))
  364. continue;
  365. int n = Integer.valueOf(taskProgressArray[i * 2]);
  366. c.taskProgress[n] = Integer.valueOf(taskProgressArray[i * 2 + 1]);
  367. }
  368. }
  369.  
  370. /* FAMILIARITEMS */
  371. String sFamilarItems = rs.getString(KEY_FAMILIARITEMS);
  372. if (sFamilarItems != null && sFamilarItems.trim().length() > 0) {
  373. String[] sFamilarItemsArray = sFamilarItems.split(":");
  374. for (int i = 0; i < sFamilarItemsArray.length / 2; i++) {
  375. int n = Integer.valueOf(sFamilarItemsArray[i * 2]);
  376. c.familiarItems[n] = Integer.valueOf(sFamilarItemsArray[i * 2 + 1]);
  377. }
  378. }
  379. c.quickPrayerSettings = rs.getInt(KEY_QUICKPRAYERS);
  380. c.quickCurseSettings = rs.getInt(KEY_QUICKCURSES);
  381. c.overloadTicks = rs.getInt(KEY_OVERLOADTICK);
  382. c.lastDailyReward = rs.getLong(KEY_LASTDAILYREWARD);
  383. c.weaponGameClassID = rs.getInt(KEY_WGCLASSID);
  384.  
  385. String settingValues = rs.getString(KEY_SETTINGVALUES);
  386.  
  387. String playerEmail = rs.getString(KEY_PLAYEREMAIL);
  388. c.emailSubscribed = (playerEmail != null && !playerEmail.isEmpty());
  389.  
  390. decodeSettings(c, settingValues);
  391.  
  392. c.castleWarsScore = rs.getInt(KEY_CASTLEWARSSCORE);
  393. c.castleWarsGamesPlayed = rs.getInt(KEY_CASTLEWARSGAMESPLAYED);
  394. c.castleWarsKills = rs.getInt(KEY_CASTLEWARSKILLS);
  395. c.castleWarsCaptures = rs.getInt(KEY_CASTLEWARSCAPTURES);
  396. c.castleWarsCatapultDamage = rs.getLong(KEY_CASTLEWARSCATAPULTDAMAGE);
  397. c.requirePassChange = rs.getInt(KEY_CHANGEPASSWORD) == 1;
  398.  
  399. c.slayerMaster = SlayerMaster.forMasterID(rs.getInt(KEY_SLAYERMASTER));
  400. int slayerMonsterHash = rs.getInt(KEY_SLAYERMONSTERTYPE);
  401. if (slayerMonsterHash > 0) {
  402. c.slayerMonsterType = MonsterType.forHashCode(slayerMonsterHash);
  403. }
  404. c.slayerPendingKills = rs.getInt(KEY_SLAYERPENDINGKILLS);
  405. c.slayerPoints = rs.getInt(KEY_SLAYERPOINTS);
  406. c.slayerTaskStreak = rs.getInt(KEY_SLAYERTASKSTREAK);
  407.  
  408. String disabledAssignments = rs.getString(KEY_SLAYERDISABLEDTASKS);
  409.  
  410. if (disabledAssignments != null && disabledAssignments.length() > 4) {
  411. String disabledAssigments[] = disabledAssignments.split(";");
  412. for (int assignment = 0; assignment < disabledAssigments.length; assignment++) {
  413. if (!disabledAssigments[assignment].isEmpty()) {
  414. try {
  415. int hashCode = Integer.parseInt(disabledAssigments[assignment]);
  416. c.disabledAssignments[assignment] = hashCode <= 0 ? null : MonsterType.forHashCode(hashCode);
  417. } catch (Exception e) {
  418. e.printStackTrace();
  419. }
  420. }
  421. }
  422. }
  423.  
  424. String recolors = rs.getString(KEY_RECOLORS);
  425.  
  426. if (recolors != null && recolors.length() > 0) {
  427. try {
  428. String[] items = recolors.split(";");
  429. if (items != null) {
  430. for (int i = 0; i < items.length; i++) {
  431. String[] itemData = items[i].split(",");
  432. if (itemData.length > 1) {
  433. ArrayList<Integer> colors = new ArrayList<Integer>();
  434. int itemID = Integer.valueOf(itemData[0]);
  435. for (int colorID = 1; colorID < itemData.length; colorID++) {
  436. colors.add(Integer.valueOf(itemData[colorID]));
  437. }
  438. if (colors.size() > 0) {
  439. c.itemRecolors.put(itemID, colors);
  440. }
  441. }
  442. }
  443. }
  444. } catch (NumberFormatException e) {
  445. e.printStackTrace();
  446. }
  447. }
  448.  
  449. long settingsFlags = rs.getLong(KEY_SETTINGSFLAGS);
  450. c.settings.loadSettings(settingsFlags);
  451.  
  452. c.pkingKillStreak = rs.getInt(KEY_KILLSTREAK);
  453. c.dragonfireShieldCharges = rs.getInt(KEY_DFSCHARGES);
  454.  
  455. c.knowledgePoolTimer = rs.getLong(KEY_KNOWLEDGEPOOL);
  456. c.luckPoolTimer = rs.getLong(KEY_LUCKPOOL);
  457. c.precisionPoolTimer = rs.getLong(KEY_PRECISIONPOOL);
  458. c.reinvigorationPoolTimer = rs.getLong(KEY_REINVIGORATIONPOOL);
  459. c.securityPoolTimer = rs.getLong(KEY_SECURITYPOOL);
  460.  
  461. c.acceptedRules = rs.getInt(KEY_ACCEPTEDRULES);
  462. c.lastVoteStreak = rs.getLong(KEY_LASTVOTESTREAK);
  463. c.lastStreakPenalty = rs.getLong(KEY_LASTSTREAKPENALTY);
  464. c.voteStreaks = rs.getFloat(KEY_VOTESTREAKS);
  465. c.streakPenalty = rs.getFloat(KEY_STREAKPENALTY);
  466. c.donatorExpireTime = rs.getLong(KEY_DONATOREXPIRETIME);
  467. c.participationPoints = rs.getInt(KEY_PARTICIPATIONPOINTS);
  468. c.contributionPoints = rs.getInt(KEY_CONTRIBUTIONPOINTS);
  469. c.dicingHosts = rs.getInt(KEY_DICINGHOSTS);
  470. c.trollPetNameID = rs.getInt(KEY_TROLLPETNAMEID);
  471. c.charmCollectSettings = rs.getInt(KEY_CHARMCOLLECTSETTINGS);
  472. c.skillingPoints = rs.getInt(KEY_SKILLINGPOINTS);
  473. c.skillingExperience = rs.getInt(KEY_SKILLINGEXPERIENCE);
  474. c.experienceBonus = rs.getLong(KEY_EXPERIENCEBONUS);
  475. c.collectBoneID = rs.getInt(KEY_COLLECTBONEID);
  476. c.collectedBones = rs.getInt(KEY_COLLECTEDBONES);
  477. c.playerTitle = PlayerTitle.getTitle(rs.getString(KEY_PLAYERTITLE));
  478. {
  479. byte[] titleTasksData = (byte[]) rs.getObject(KEY_TITLETASKS);
  480. decodeTitleFlags(c, titleTasksData);
  481. }
  482. {
  483. byte[] variablesData = (byte[]) rs.getObject(KEY_VARIABLES);
  484. decodeIntegerVariables(c, variablesData);
  485. }
  486. c.fightPitWins = rs.getInt(KEY_FIGHTPITSWINS);
  487. c.middleman = rs.getBoolean(KEY_MIDDLEMAN);
  488. c.rareDropCount = rs.getInt(KEY_RAREDROPCOUNT);
  489. {
  490. byte[] presetsData = (byte[]) rs.getObject(KEY_DUELPRESETS);
  491. decodeDuelPresets(c, presetsData);
  492. }
  493. c.minedDusts = rs.getInt(KEY_MINEDDUSTS);
  494. c.spottedStars = rs.getInt(KEY_SPOTTEDSTARS);
  495. c.soulPoints = rs.getInt(KEY_SOULPOINTS);
  496. c.lastRecoverCountReset = rs.getTimestamp(KEY_LASTRECOVERCOUNTRESET).getTime();
  497. {
  498. byte[] recoveriesData = (byte[]) rs.getObject(KEY_COLLECTIONRECOVERIES);
  499. decodeCollectionRecoveries(c, recoveriesData);
  500. }
  501. c.gameMode = GameMode.forType(rs.getInt(KEY_GAMEMODE));
  502. c.lockedExperienceGain = rs.getLong(KEY_LOCKEDEXPERIENCEGAIN);
  503.  
  504. { // Scrolls loading
  505. String scrollDocument = rs.getString(KEY_EASYSCROLL);
  506. c.easyScroll = ScrollsHandler.getInstance().loadProgress(c, scrollDocument);
  507.  
  508. scrollDocument = rs.getString(KEY_MEDIUMSCROLL);
  509. c.mediumScroll = ScrollsHandler.getInstance().loadProgress(c, scrollDocument);
  510.  
  511. scrollDocument = rs.getString(KEY_HARDSCROLL);
  512. c.hardScroll = ScrollsHandler.getInstance().loadProgress(c, scrollDocument);
  513.  
  514. scrollDocument = rs.getString(KEY_ELITESCROLL);
  515. c.eliteScroll = ScrollsHandler.getInstance().loadProgress(c, scrollDocument);
  516. }
  517.  
  518. String playerDataDocument = rs.getString(KEY_PLAYERDATA);
  519. if (playerDataDocument != null) {
  520. PlayerData playerData = getGson().fromJson(playerDataDocument, PlayerData.class);
  521. if (playerData != null) {
  522. c.playerData = playerData;
  523. c.playerData.initialize();
  524. }
  525. }
  526. String playerPresetsDocument = rs.getString(KEY_PLAYERPRESETS);
  527. if (playerDataDocument != null) {
  528. PlayerPreset playerPreset = getGson().fromJson(playerPresetsDocument, PlayerPreset.class);
  529. if (playerPreset != null) {
  530. c.playerPreset = playerPreset;
  531. }
  532. }
  533. String timersDocument = rs.getString(KEY_PLAYERTIMERS);
  534. if (timersDocument != null) {
  535. PlayerTimer playerTimer = getGson().fromJson(timersDocument, PlayerTimer.class);
  536. if (playerTimer != null) {
  537. c.playerTimer = playerTimer;
  538. }
  539. }
  540. String itemDegradingDocument = rs.getString(KEY_ITEMDEGRADING);
  541. if (itemDegradingDocument != null) {
  542. ItemDegrading itemDegrading = getGson().fromJson(itemDegradingDocument, ItemDegrading.class);
  543. if (itemDegrading != null) {
  544. c.itemDegrading = itemDegrading;
  545. }
  546. }
  547. String playerSettingsDocument = rs.getString(KEY_PLAYERSETTINGS);
  548. if (playerSettingsDocument != null) {
  549. PlayerSettings playerSettings = getGson().fromJson(playerSettingsDocument, PlayerSettings.class);
  550. if (playerSettings != null) {
  551. c.getClientSettings().load(playerSettings);
  552. }
  553. }
  554.  
  555. //c.recoveryPoint = rs.getInt(KEY_RECOVERYPOINTS);
  556. //c.dicingDuration = rs.getLong(KEY_DICING_DURATION);
  557. /* EOF */
  558. loadStatement.clearParameters();
  559. c.getTask().loadTasks(c.tasks);
  560. loadNPCKills(c, databaseConnection);
  561. loadInventories(c, databaseConnection);
  562. c.setPvpScores(PlayerDatabase.getPvPScores(c, databaseConnection), false);
  563. } catch (final Exception e) {
  564. System.err.println("Error loading account: " + playerName);
  565. e.printStackTrace();
  566. return LoginConstants.STATUS_COULD_NOT_COMPLETE_LOGIN;
  567. } finally {
  568. if (databaseConnection != null) {
  569. databaseConnection.close(rs);
  570. databaseConnection.close(loadStatement);
  571. databaseConnection.close(createStatement);
  572. databaseConnection.release();
  573. }
  574. }
  575.  
  576. return 1; // load from db correct
  577. }
  578.  
  579. public static void decodeCollectionRecoveries(Client c, byte[] data) {
  580. if (data == null) {
  581. return;
  582. }
  583. StreamBuffer stream = new StreamBuffer(data);
  584.  
  585. while (stream.available() >= 6) {
  586. int itemID = stream.readUnsignedWord();
  587. int recoverCount = stream.readDWord();
  588. c.reaperCollectionRecovers.put(itemID, new AtomicInteger(recoverCount));
  589. }
  590. }
  591.  
  592. public static void decodeDuelPresets(Client c, byte data[]) {
  593. try {
  594. if (data == null || data.length <= 1) {
  595. return;
  596. }
  597. StreamBuffer stream = new StreamBuffer(data);
  598. int size = stream.readUnsignedByte();
  599. for (int i = 0; i < size; i++) {
  600. int presetID = stream.readUnsignedByte();
  601. int presets = stream.readDWord();
  602. String name = stream.readString();
  603. if (presetID < c.duelPresets.length) {
  604. c.duelPresets[presetID] = new DuelPreset(name, presets);
  605. }
  606. }
  607. } catch (Exception e) {
  608. e.printStackTrace();
  609. }
  610. }
  611.  
  612. public static void decodeTitleFlags(Client c, byte data[]) {
  613. try {
  614. if (data == null || data.length <= 2) {
  615. return;
  616. }
  617. StreamBuffer stream = new StreamBuffer(data);
  618. int size = stream.readUnsignedByte();
  619. long[] masks = new long[size];
  620. for (int i = 0; i < masks.length; i++) {
  621. masks[i] = stream.readQWord();
  622. }
  623. c.titleTasks.load(masks);
  624. } catch (Exception e) {
  625. e.printStackTrace();
  626. }
  627. }
  628.  
  629. public static void decodeIntegerVariables(Client c, byte[] data) {
  630. try {
  631. if (data == null || data.length <= 2) {
  632. return;
  633. }
  634. StreamBuffer stream = new StreamBuffer(data);
  635. int totalVariables = stream.readUnsignedWord();
  636. for (int i = 0; i < totalVariables; i++) {
  637. int hash = stream.readDWord();
  638. int value = stream.readDWord();
  639. ProgressVariable variable = ProgressVariable.forHash(hash);
  640. if (variable != null) {
  641. variable.setValue(c, value);
  642. }
  643. }
  644. } catch (Exception e) {
  645. e.printStackTrace();
  646. }
  647. }
  648.  
  649. private void loadInventories(Client c, DatabaseConnection databaseConnection) {
  650.  
  651. if (c != null && databaseConnection != null) {
  652. PreparedStatement inventoryLoad = null;
  653. ResultSet inventories = null;
  654. try {
  655. inventoryLoad = databaseConnection.prepareStatement("SELECT looting_bag FROM player_inventory WHERE playerID = ?;");
  656. inventoryLoad.setInt(1, c.accountID);
  657. inventories = inventoryLoad.executeQuery();
  658. if (inventories.next()) {
  659. String lootingBagData = inventories.getString(1);
  660. c.getLootingBag().load(lootingBagData);
  661. }
  662. } catch (Exception ex) {
  663. ex.printStackTrace();
  664. } finally {
  665. databaseConnection.close(inventoryLoad);
  666. databaseConnection.close(inventories);
  667. }
  668. }
  669.  
  670. }
  671. private void loadNPCKills(Client c, DatabaseConnection databaseConnection) {
  672. if (c != null && databaseConnection != null) {
  673. PreparedStatement monsterKillsLoad = null;
  674. ResultSet monsterTrackResults = null;
  675. try {
  676. monsterKillsLoad = databaseConnection.prepareStatement("select npcID, killCount, bestKillTime from npcKills where playerID = ?;");
  677. monsterKillsLoad.setInt(1, c.accountID);
  678. monsterTrackResults = monsterKillsLoad.executeQuery();
  679. while (monsterTrackResults.next()) {
  680. int npcID = monsterTrackResults.getInt(1);
  681. int kills = monsterTrackResults.getInt(2);
  682. long bestKillTime = monsterTrackResults.getLong(3);
  683. c.getKillTracker().putProgress(npcID, new NPCKillData(kills, bestKillTime));
  684. }
  685. } catch (Exception ex) {
  686. ex.printStackTrace();
  687. } finally {
  688. databaseConnection.close(monsterKillsLoad);
  689. databaseConnection.close(monsterTrackResults);
  690. }
  691. }
  692. }
  693.  
  694. private void decodeSettings(Client c, String settingValues) {
  695. if (settingValues != null && settingValues.length() > 3) {
  696. String[] settingsTypes = settingValues.split("-");
  697. int dataType = 0;
  698. for (String settingType : settingsTypes) {
  699.  
  700. String valueMaps[] = settingType.split(";");
  701.  
  702. for (String valueMap : valueMaps) {
  703. if (valueMap.isEmpty()) {
  704. continue;
  705. }
  706. String key = valueMap.substring(0, valueMap.indexOf(":"));
  707. String value = valueMap.substring(valueMap.indexOf(":") + 1);
  708. switch (dataType) {
  709. case 0 :// Integer
  710. c.integerKeys.put(key, new Integer(value));
  711. break;
  712. case 1 :// String
  713. c.stringKeys.put(key, value);
  714. break;
  715. case 2 :// Boolean
  716. c.booleanKeys.put(key, new Boolean(value));
  717. break;
  718. case 3 :// Long
  719. c.longKeys.put(key, new Long(value));
  720. break;
  721. }
  722. }
  723. dataType++;
  724. }
  725. }
  726. }
  727.  
  728. private boolean createStubClient(PreparedStatement createStatement, String playerName, String playerPass) {
  729. try {
  730. String encryptedPass = BCrypt.hashpw(Config.SALT_PRE + playerPass + Config.SALT_POST, BCrypt.gensalt(Config.SALT_STRENGTH));
  731. createStatement.clearParameters();
  732. createStatement.setString(1, playerName);
  733. createStatement.setString(2, encryptedPass);
  734. createStatement.setInt(3, -1);
  735. createStatement.executeUpdate();
  736. return true;
  737. } catch (final SQLException e) {
  738. System.err.println("Error creating player '" + playerName + "': " + e);
  739. return false;
  740. }
  741. }
  742.  
  743. public static String selectQuery = "";
  744. public static String selectOldQuery = "";
  745. public static String[] keys;
  746.  
  747. public static void createKeys() {
  748. String[] keys = {null, "dbId", "playerName", "encryptedPass", "newPlayer", "heightLevel", "absX", "absY", "playerRights", "systemName", "playerMacAdress", "titleColor", "runEnergy", "titleShadow", "textShadow", "title", "textYellColor", "crystalBowShots", "lostCatId", "dungTokens", "DuelsWon", "DuelsLost", "donorPoints", "voterPoints", "totalVotes", "amountDonated", "tempAmountDonated", "YellsRemaining", "skullTimer", "playTime", "weaponGameMeleeLevel", "weaponGameRangeLevel", "weaponGameMageLevel", "weaponGameMeleeKills", "weaponGameRangeKills", "weaponGameMageKills", "weaponGameMeleeDeaths", "WeaponGameRangeDeaths", "weaponGameMageDeaths", "weaponGameMeleeLP", "weaponGameRangeLP", "weaponGameMageLP", "lastWeapon", "homeArea", "Tasksdone", "bankPin", "recievedWg", "usingCurses", "useCustomYell", "attemptsRemaining", "WGPoints", "poisonDamage", "action", "TotalBossesKilled", "PkKillCount", "boostedHits", "pure", "isSpawned", "FamiliarID", "pkingPoints", "recoveryId", "playerDeathCount", "Blackmarks", "xpLock", "connectedFrom", "membership", "startDay", "startMonth", "recoilCount", "doubleExpRingCount", "playerMagicBook", "barrowsNpcs", "specialAttackCharge", "randomCoffin", "barrowsKillCount", "pcPoints", "donatedtimes", "donatorType", "isStarter", "magePoints", "pkPoints", "waveId", "killCount", "fightStyle", "clanKey", "epAmount", "splitChat", "brightness", "totalEXP", "enterBHTimer", "lastClan", "lastWithdrawAmount", "playerEquipment", "playerAppearance", "playerLevel", "playerItems", "friends", "publicChatMode", "privateChatMode", "clanChatMode", "tradeMode", "shoutMode", "globalMode", "gameChatMode", "bossesKilled", "wonBets", "lostBets", "resetRequestDate", "ignores", "tasks", "taskProgress", "familiaritems", "quickPrayers", "quickCurses", "overloadTick", "lastDailyReward", "wgClassID", "settingValues", "playerEmail", "castleWarsScore", "castleWarsGamesPlayed", "castleWarsKills", "castleWarsCaptures", "castleWarsCatapultDamage", "changePassword", "slayerMaster", "slayerMonsterType", "slayerPendingKills", "slayerPoints", "slayerTaskStreak", "slayerDisabledTasks", "recolors", "settingsFlags", "killStreak", "dfsCharges", "knowledgePool", "luckPool", "precisionPool", "reinvigorationPool", "securityPool", "acceptRules", "lastVoteStreak", "lastStreakPenalty", "voteStreaks", "streakPenalty", "donatorExpireTime", "participationPoints", "contributionPoints", "dicingHosts", "trollPetNameID", "charmCollectSettings", "skillingPoints", "skillingExperience", "experienceBonus", "collectBoneID", "collectedBones", "playerTitle", "titleTasks", "progressVariables", "fightPitsWins", "middleman", "rareDropCount", "duelPresets", "minedDusts", "spottedStars", "soulPoints", "lastRecoverCountReset", "collectionRecoveries", "gameMode", "lockedExperienceGain", "playerBank", "easyScroll", "mediumScroll", "hardScroll", "eliteScroll", "playerData", "playerPresets", "playerTimers", "itemDegrading", "playerSettings", "recoveryPoints", "dicingDuration"};
  749. ArrayList<String> keysList = new ArrayList<String>(Arrays.asList(keys));
  750.  
  751. KEY_DBID = keysList.indexOf("dbId");
  752. KEY_PLAYERNAME = keysList.indexOf("playerName");
  753. KEY_PLAYERPASS = keysList.indexOf("encryptedPass");
  754. KEY_NEWPLAYER = keysList.indexOf("newPlayer");
  755. KEY_HEIGHTLEVEL = keysList.indexOf("heightLevel");
  756. KEY_ABSX = keysList.indexOf("absX");
  757. KEY_ABSY = keysList.indexOf("absY");
  758. KEY_PLAYERRIGHTS = keysList.indexOf("playerRights");
  759. KEY_SYSTEMNAME = keysList.indexOf("systemName");
  760. KEY_PLAYERMACADRESS = keysList.indexOf("playerMacAdress");
  761. KEY_TITLECOLOR = keysList.indexOf("titleColor");
  762. KEY_RUNENERGY = keysList.indexOf("runEnergy");
  763. KEY_TITLESHADOW = keysList.indexOf("titleShadow");
  764. KEY_TEXTSHADOW = keysList.indexOf("textShadow");
  765. KEY_TITLE = keysList.indexOf("title");
  766. KEY_TEXTYELLCOLOR = keysList.indexOf("textYellColor");
  767. KEY_CRYSTALBOWSHOTS = keysList.indexOf("crystalBowShots");
  768. KEY_LOSTCATID = keysList.indexOf("lostCatId");
  769. KEY_DUNGTOKENS = keysList.indexOf("dungTokens");
  770. KEY_DUELSWON = keysList.indexOf("DuelsWon");
  771. KEY_DUELSLOST = keysList.indexOf("DuelsLost");
  772. KEY_DONORPOINTS = keysList.indexOf("donorPoints");
  773. KEY_VOTERPOINTS = keysList.indexOf("voterPoints");
  774. KEY_TOTALVOTES = keysList.indexOf("totalVotes");
  775. KEY_AMOUNTDONATED = keysList.indexOf("amountDonated");
  776. KEY_TEMPAMOUNTDONATED = keysList.indexOf("tempAmountDonated");
  777. KEY_YELLSREMAINING = keysList.indexOf("YellsRemaining");
  778. KEY_SKULLTIMER = keysList.indexOf("skullTimer");
  779. KEY_PLAYTIME = keysList.indexOf("playTime");
  780. KEY_WEAPONGAMEMELEELEVEL = keysList.indexOf("weaponGameMeleeLevel");
  781. KEY_WEAPONGAMERANGELEVEL = keysList.indexOf("weaponGameRangeLevel");
  782. KEY_WEAPONGAMEMAGELEVEL = keysList.indexOf("weaponGameMageLevel");
  783. KEY_WEAPONGAMEMELEEKILLS = keysList.indexOf("weaponGameMeleeKills");
  784. KEY_WEAPONGAMERANGEKILLS = keysList.indexOf("weaponGameRangeKills");
  785. KEY_WEAPONGAMEMAGEKILLS = keysList.indexOf("weaponGameMageKills");
  786. KEY_WEAPONGAMEMELEEDEATHS = keysList.indexOf("weaponGameMeleeDeaths");
  787. KEY_WEAPONGAMERANGEDEATHS = keysList.indexOf("WeaponGameRangeDeaths");
  788. KEY_WEAPONGAMEMAGEDEATHS = keysList.indexOf("weaponGameMageDeaths");
  789. KEY_WEAPONGAMEMELEELP = keysList.indexOf("weaponGameMeleeLP");
  790. KEY_WEAPONGAMERANGELP = keysList.indexOf("weaponGameRangeLP");
  791. KEY_WEAPONGAMEMAGELP = keysList.indexOf("weaponGameMageLP");
  792. KEY_LASTWEAPON = keysList.indexOf("lastWeapon");
  793. KEY_HOMEAREA = keysList.indexOf("homeArea");
  794. KEY_TASKSDONE = keysList.indexOf("Tasksdone");
  795. KEY_BANKPIN = keysList.indexOf("bankPin");
  796. KEY_RECIEVEDWG = keysList.indexOf("recievedWg");
  797. KEY_USINGCURSES = keysList.indexOf("usingCurses");
  798. KEY_USECUSTOMYELL = keysList.indexOf("useCustomYell");
  799. KEY_ATTEMPTSREMAINING = keysList.indexOf("attemptsRemaining");
  800. KEY_WGPOINTS = keysList.indexOf("WGPoints");
  801. KEY_POISONDAMAGE = keysList.indexOf("poisonDamage");
  802. KEY_ACTION = keysList.indexOf("action");
  803. KEY_TOTALBOSSESKILLED = keysList.indexOf("TotalBossesKilled");
  804. KEY_PKKILLCOUNT = keysList.indexOf("PkKillCount");
  805. KEY_BOOSTEDHITS = keysList.indexOf("boostedHits");
  806. KEY_PURE = keysList.indexOf("pure");
  807. KEY_ISSPAWNED = keysList.indexOf("isSpawned");
  808. KEY_FAMILIARID = keysList.indexOf("FamiliarID");
  809. KEY_PKINGPOINTS = keysList.indexOf("pkingPoints");
  810. KEY_RECOVERYID = keysList.indexOf("recoveryId");
  811. KEY_PLAYERDEATHCOUNT = keysList.indexOf("playerDeathCount");
  812. KEY_BLACKMARKS = keysList.indexOf("Blackmarks");
  813. KEY_XPLOCK = keysList.indexOf("xpLock");
  814. KEY_CONNECTEDFROM = keysList.indexOf("connectedFrom");
  815. KEY_MEMBERSHIP = keysList.indexOf("membership");
  816. KEY_STARTDAY = keysList.indexOf("startDay");
  817. KEY_STARTMONTH = keysList.indexOf("startMonth");
  818. KEY_RECOILCOUNT = keysList.indexOf("recoilCount");
  819. KEY_DOUBLEEXPRINGCOUNT = keysList.indexOf("doubleExpRingCount");
  820. KEY_PLAYERMAGICBOOK = keysList.indexOf("playerMagicBook");
  821. KEY_BARROWSNPCS = keysList.indexOf("barrowsNpcs");
  822. KEY_SPECIALATTACKCHARGE = keysList.indexOf("specialAttackCharge");
  823. KEY_RANDOMCOFFIN = keysList.indexOf("randomCoffin");
  824. KEY_BARROWSKILLCOUNT = keysList.indexOf("barrowsKillCount");
  825. // TODO: Remove from database
  826. // KEY_TELEBLOCKLENGTH = keysList.indexOf("teleBlockLength");
  827. KEY_PCPOINTS = keysList.indexOf("pcPoints");
  828. KEY_DONATEDTIMES = keysList.indexOf("donatedtimes");
  829. KEY_DONATOR_TYPE = keysList.indexOf("donatorType");
  830. KEY_ISSTARTER = keysList.indexOf("isStarter");
  831. KEY_MAGEPOINTS = keysList.indexOf("magePoints");
  832. KEY_PKPOINTS = keysList.indexOf("pkPoints");
  833. KEY_WAVEID = keysList.indexOf("waveId");
  834. KEY_KILLCOUNT = keysList.indexOf("killCount");
  835. KEY_FIGHTSTYLE = keysList.indexOf("fightStyle");
  836. KEY_CLANKEY = keysList.indexOf("clanKey");
  837. KEY_EPAMOUNT = keysList.indexOf("epAmount");
  838. KEY_SPLITCHAT = keysList.indexOf("splitChat");
  839. KEY_BRIGHTNESS = keysList.indexOf("brightness");
  840. KEY_TOTALEXP = keysList.indexOf("totalEXP");
  841. KEY_ENTERBHTIMER = keysList.indexOf("enterBHTimer");
  842. KEY_LASTCLAN = keysList.indexOf("lastClan");
  843. KEY_LASTWITHDRAWAMOUNT = keysList.indexOf("lastWithdrawAmount");
  844. KEY_PLAYEREQUIPMENT = keysList.indexOf("playerEquipment");
  845. KEY_PLAYERAPPEARANCE = keysList.indexOf("playerAppearance");
  846. KEY_PLAYERLEVEL = keysList.indexOf("playerLevel");
  847. KEY_PLAYERITEMS = keysList.indexOf("playerItems");
  848. // KEY_BANKITEMS = keysList.indexOf("bankItems");
  849. KEY_FRIENDS = keysList.indexOf("friends");
  850. KEY_PUBLICCHATMODE = keysList.indexOf("publicChatMode");
  851. KEY_PRIVATECHATMODE = keysList.indexOf("privateChatMode");
  852. KEY_CLANCHATMODE = keysList.indexOf("clanChatMode");
  853. KEY_TRADEMODE = keysList.indexOf("tradeMode");
  854. KEY_SHOUTMODE = keysList.indexOf("shoutMode");
  855. KEY_GLOBALMODE = keysList.indexOf("globalMode");
  856. KEY_GAMECHATMODE = keysList.indexOf("gameChatMode");
  857. KEY_BOSSESKILLED = keysList.indexOf("bossesKilled");
  858. KEY_WONBETS = keysList.indexOf("wonBets");
  859. KEY_LOSTBETS = keysList.indexOf("lostBets");
  860. KEY_RESETREQUESTDATE = keysList.indexOf("resetRequestDate");
  861. KEY_IGNORES = keysList.indexOf("ignores");
  862. KEY_TASKS = keysList.indexOf("tasks");
  863. KEY_TASKPROGRESS = keysList.indexOf("taskProgress");
  864. KEY_FAMILIARITEMS = keysList.indexOf("familiaritems");
  865. KEY_QUICKPRAYERS = keysList.indexOf("quickPrayers");
  866. KEY_QUICKCURSES = keysList.indexOf("quickCurses");
  867. KEY_OVERLOADTICK = keysList.indexOf("overloadTick");
  868. KEY_LASTDAILYREWARD = keysList.indexOf("lastDailyReward");
  869. KEY_WGCLASSID = keysList.indexOf("wgClassID");
  870. KEY_SETTINGVALUES = keysList.indexOf("settingValues");
  871. KEY_PLAYEREMAIL = keysList.indexOf("playerEmail");
  872. KEY_CASTLEWARSSCORE = keysList.indexOf("castleWarsScore");
  873. KEY_CASTLEWARSGAMESPLAYED = keysList.indexOf("castleWarsGamesPlayed");
  874. KEY_CASTLEWARSKILLS = keysList.indexOf("castleWarsKills");
  875. KEY_CASTLEWARSCAPTURES = keysList.indexOf("castleWarsCaptures");
  876. KEY_CASTLEWARSCATAPULTDAMAGE = keysList.indexOf("castleWarsCatapultDamage");
  877. KEY_CHANGEPASSWORD = keysList.indexOf("changePassword");
  878. KEY_SLAYERMASTER = keysList.indexOf("slayerMaster");
  879. KEY_SLAYERMONSTERTYPE = keysList.indexOf("slayerMonsterType");
  880. KEY_SLAYERPENDINGKILLS = keysList.indexOf("slayerPendingKills");
  881. KEY_SLAYERPOINTS = keysList.indexOf("slayerPoints");
  882. KEY_SLAYERTASKSTREAK = keysList.indexOf("slayerTaskStreak");
  883. KEY_SLAYERDISABLEDTASKS = keysList.indexOf("slayerDisabledTasks");
  884.  
  885. KEY_RECOLORS = keysList.indexOf("recolors");
  886. KEY_SETTINGSFLAGS = keysList.indexOf("settingsFlags");
  887. KEY_KILLSTREAK = keysList.indexOf("killStreak");
  888. KEY_DFSCHARGES = keysList.indexOf("dfsCharges");
  889.  
  890. KEY_KNOWLEDGEPOOL = keysList.indexOf("knowledgePool");
  891. KEY_LUCKPOOL = keysList.indexOf("luckPool");
  892. KEY_PRECISIONPOOL = keysList.indexOf("precisionPool");
  893. KEY_REINVIGORATIONPOOL = keysList.indexOf("reinvigorationPool");
  894. KEY_SECURITYPOOL = keysList.indexOf("securityPool");
  895.  
  896. KEY_ACCEPTEDRULES = keysList.indexOf("acceptRules");
  897. KEY_LASTVOTESTREAK = keysList.indexOf("lastVoteStreak");
  898. KEY_LASTSTREAKPENALTY = keysList.indexOf("lastStreakPenalty");
  899. KEY_VOTESTREAKS = keysList.indexOf("voteStreaks");
  900. KEY_STREAKPENALTY = keysList.indexOf("streakPenalty");
  901. KEY_DONATOREXPIRETIME = keysList.indexOf("donatorExpireTime");
  902. KEY_PARTICIPATIONPOINTS = keysList.indexOf("participationPoints");
  903. KEY_CONTRIBUTIONPOINTS = keysList.indexOf("contributionPoints");
  904. KEY_DICINGHOSTS = keysList.indexOf("dicingHosts");
  905. KEY_TROLLPETNAMEID = keysList.indexOf("trollPetNameID");
  906. KEY_CHARMCOLLECTSETTINGS = keysList.indexOf("charmCollectSettings");
  907. KEY_SKILLINGPOINTS = keysList.indexOf("skillingPoints");
  908. KEY_SKILLINGEXPERIENCE = keysList.indexOf("skillingExperience");
  909. KEY_EXPERIENCEBONUS = keysList.indexOf("experienceBonus");
  910. KEY_COLLECTBONEID = keysList.indexOf("collectBoneID");
  911. KEY_COLLECTEDBONES = keysList.indexOf("collectedBones");
  912. KEY_PLAYERTITLE = keysList.indexOf("playerTitle");
  913. KEY_TITLETASKS = keysList.indexOf("titleTasks");
  914. KEY_VARIABLES = keysList.indexOf("progressVariables");
  915. KEY_FIGHTPITSWINS = keysList.indexOf("fightPitsWins");
  916. KEY_MIDDLEMAN = keysList.indexOf("middleman");
  917. KEY_RAREDROPCOUNT = keysList.indexOf("rareDropCount");
  918. KEY_DUELPRESETS = keysList.indexOf("duelPresets");
  919. KEY_MINEDDUSTS = keysList.indexOf("minedDusts");
  920. KEY_SPOTTEDSTARS = keysList.indexOf("spottedStars");
  921. KEY_SOULPOINTS = keysList.indexOf("soulPoints");
  922. KEY_LASTRECOVERCOUNTRESET = keysList.indexOf("lastRecoverCountReset");
  923. KEY_COLLECTIONRECOVERIES = keysList.indexOf("collectionRecoveries");
  924. KEY_GAMEMODE = keysList.indexOf("gameMode");
  925. KEY_LOCKEDEXPERIENCEGAIN = keysList.indexOf("lockedExperienceGain");
  926. KEY_PLAYERBANK = keysList.indexOf("playerBank");
  927.  
  928. KEY_EASYSCROLL = keysList.indexOf("easyScroll");
  929. KEY_MEDIUMSCROLL = keysList.indexOf("mediumScroll");
  930. KEY_HARDSCROLL = keysList.indexOf("hardScroll");
  931. KEY_ELITESCROLL = keysList.indexOf("eliteScroll");
  932.  
  933. KEY_PLAYERDATA = keysList.indexOf("playerData");
  934. KEY_PLAYERPRESETS = keysList.indexOf("playerPresets");
  935. KEY_PLAYERTIMERS = keysList.indexOf("playerTimers");
  936. KEY_ITEMDEGRADING = keysList.indexOf("itemDegrading");
  937. KEY_PLAYERSETTINGS = keysList.indexOf("playerSettings");
  938.  
  939. KEY_RECOVERYPOINTS = keysList.indexOf("recoveryPoints");
  940. KEY_DICING_DURATION = keysList.indexOf("dicingDuration");
  941. GameLoad.keys = keys;
  942. System.out.println(keys);
  943. selectQuery = "select " + DatabaseUtils.getSelectStructure(keys) + " from `clients` where `playerName` like ? limit 1";
  944. selectOldQuery = "select playerName from `clients_old` where `playerName` like ? limit 1";
  945. }
  946.  
  947. public static String generateKeys() {
  948. StringBuilder sb = new StringBuilder();
  949. if (keys != null)
  950. for (int i = 0; i < keys.length; i++) {
  951. // lines = lines.replace("(" + i + ")", "(KEY_" +
  952. // keys[i].toUpperCase() + ")");
  953. // sb.append("private static final int KEY_" +
  954. // keys[i].toUpperCase() + " = " + (i + 1) + ";\n");
  955. }
  956. return sb.toString();
  957. }
  958.  
  959. private static int KEY_DBID, KEY_PLAYERNAME, KEY_PLAYERPASS, KEY_NEWPLAYER,
  960. KEY_HEIGHTLEVEL, KEY_ABSX, KEY_ABSY, KEY_PLAYERRIGHTS,
  961. KEY_SYSTEMNAME, KEY_PLAYERMACADRESS, KEY_TITLECOLOR, KEY_RUNENERGY,
  962. KEY_TITLESHADOW, KEY_TEXTSHADOW, KEY_TITLE, KEY_TEXTYELLCOLOR,
  963. KEY_CRYSTALBOWSHOTS, KEY_LOSTCATID, KEY_DUNGTOKENS, KEY_DUELSWON,
  964. KEY_DUELSLOST, KEY_DONORPOINTS, KEY_VOTERPOINTS, KEY_TOTALVOTES,
  965. KEY_AMOUNTDONATED, KEY_TEMPAMOUNTDONATED, KEY_YELLSREMAINING,
  966. KEY_SKULLTIMER, KEY_PLAYTIME, KEY_WEAPONGAMEMELEELEVEL,
  967. KEY_WEAPONGAMERANGELEVEL, KEY_WEAPONGAMEMAGELEVEL,
  968. KEY_WEAPONGAMEMELEEKILLS, KEY_WEAPONGAMERANGEKILLS,
  969. KEY_WEAPONGAMEMAGEKILLS, KEY_WEAPONGAMEMELEEDEATHS,
  970. KEY_WEAPONGAMERANGEDEATHS, KEY_WEAPONGAMEMAGEDEATHS,
  971. KEY_WEAPONGAMEMELEELP, KEY_WEAPONGAMERANGELP, KEY_WEAPONGAMEMAGELP,
  972. KEY_LASTWEAPON, KEY_HOMEAREA, KEY_TASKSDONE, KEY_BANKPIN,
  973. KEY_RECIEVEDWG, KEY_USINGCURSES, KEY_USECUSTOMYELL,
  974. KEY_ATTEMPTSREMAINING, KEY_WGPOINTS, KEY_POISONDAMAGE, KEY_ACTION,
  975. KEY_TOTALBOSSESKILLED, KEY_PKKILLCOUNT, KEY_BOOSTEDHITS, KEY_PURE,
  976. KEY_ISSPAWNED, KEY_FAMILIARID, KEY_PKINGPOINTS, KEY_RECOVERYID,
  977. KEY_PLAYERDEATHCOUNT, KEY_BLACKMARKS, KEY_XPLOCK, KEY_CONNECTEDFROM,
  978. KEY_MEMBERSHIP, KEY_STARTDAY, KEY_STARTMONTH, KEY_RECOILCOUNT,
  979. KEY_DOUBLEEXPRINGCOUNT, KEY_PLAYERMAGICBOOK, KEY_BARROWSNPCS,
  980. KEY_SPECIALATTACKCHARGE, KEY_RANDOMCOFFIN, KEY_BARROWSKILLCOUNT,
  981. KEY_TELEBLOCKLENGTH, KEY_PCPOINTS, KEY_DONATEDTIMES, KEY_DONATOR_TYPE,
  982. KEY_ISSTARTER, KEY_MAGEPOINTS, KEY_PKPOINTS, KEY_WAVEID,
  983. KEY_KILLCOUNT, KEY_FIGHTSTYLE, KEY_CLANKEY, KEY_EPAMOUNT,
  984. KEY_SPLITCHAT, KEY_BRIGHTNESS, KEY_TOTALEXP, KEY_ENTERBHTIMER,
  985. KEY_LASTCLAN, KEY_LASTWITHDRAWAMOUNT, KEY_PLAYEREQUIPMENT,
  986. KEY_PLAYERAPPEARANCE, KEY_PLAYERLEVEL, KEY_PLAYERITEMS, KEY_FRIENDS,
  987. KEY_PUBLICCHATMODE, KEY_PRIVATECHATMODE, KEY_CLANCHATMODE,
  988. KEY_TRADEMODE, KEY_SHOUTMODE, KEY_GLOBALMODE, KEY_GAMECHATMODE,
  989. KEY_BOSSESKILLED, KEY_WONBETS, KEY_LOSTBETS, KEY_RESETREQUESTDATE,
  990. KEY_IGNORES, KEY_TASKS, KEY_TASKPROGRESS, KEY_FAMILIARITEMS,
  991. KEY_QUICKPRAYERS, KEY_QUICKCURSES, KEY_OVERLOADTICK,
  992. KEY_LASTDAILYREWARD, KEY_WGCLASSID, KEY_SETTINGVALUES,
  993. KEY_PLAYEREMAIL, KEY_CASTLEWARSSCORE, KEY_CASTLEWARSGAMESPLAYED,
  994. KEY_CASTLEWARSKILLS, KEY_CASTLEWARSCAPTURES,
  995. KEY_CASTLEWARSCATAPULTDAMAGE, KEY_CHANGEPASSWORD, KEY_SLAYERMASTER,
  996. KEY_SLAYERMONSTERTYPE, KEY_SLAYERPENDINGKILLS, KEY_SLAYERPOINTS,
  997. KEY_SLAYERTASKSTREAK, KEY_SLAYERDISABLEDTASKS, KEY_RECOLORS,
  998. KEY_SETTINGSFLAGS, KEY_KILLSTREAK, KEY_DFSCHARGES,
  999. KEY_KNOWLEDGEPOOL, KEY_LUCKPOOL, KEY_PRECISIONPOOL,
  1000. KEY_REINVIGORATIONPOOL, KEY_SECURITYPOOL, KEY_LASTVOTESTREAK,
  1001. KEY_LASTSTREAKPENALTY, KEY_VOTESTREAKS, KEY_STREAKPENALTY,
  1002. KEY_DONATOREXPIRETIME, KEY_PARTICIPATIONPOINTS,
  1003. KEY_CONTRIBUTIONPOINTS, KEY_DICINGHOSTS, KEY_TROLLPETNAMEID,
  1004. KEY_CHARMCOLLECTSETTINGS, KEY_SKILLINGPOINTS,
  1005. KEY_SKILLINGEXPERIENCE, KEY_EXPERIENCEBONUS, KEY_COLLECTBONEID,
  1006. KEY_COLLECTEDBONES, KEY_ACCEPTEDRULES, KEY_PLAYERTITLE,
  1007. KEY_TITLETASKS, KEY_VARIABLES, KEY_FIGHTPITSWINS, KEY_MIDDLEMAN,
  1008. KEY_RAREDROPCOUNT, KEY_DUELPRESETS, KEY_MINEDDUSTS,
  1009. KEY_SPOTTEDSTARS, KEY_SOULPOINTS, KEY_LASTRECOVERCOUNTRESET,
  1010. KEY_COLLECTIONRECOVERIES, KEY_GAMEMODE, KEY_LOCKEDEXPERIENCEGAIN,
  1011. KEY_PLAYERBANK, KEY_EASYSCROLL, KEY_MEDIUMSCROLL, KEY_HARDSCROLL,
  1012. KEY_ELITESCROLL, KEY_PLAYERDATA, KEY_PLAYERPRESETS,
  1013. KEY_PLAYERTIMERS, KEY_ITEMDEGRADING, KEY_PLAYERSETTINGS,
  1014. KEY_RECOVERYPOINTS, KEY_DICING_DURATION;
  1015.  
  1016. }
Advertisement
Add Comment
Please, Sign In to add comment