Guest User

Untitled

a guest
Jul 21st, 2018
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.96 KB | None | 0 0
  1. package varekd.io;
  2.  
  3. import java.net.InetSocketAddress;
  4. import java.sql.Connection;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.util.ArrayList;
  9. import java.util.HashMap;
  10. import java.util.List;
  11. import java.util.Map;
  12. import varekd.model.Inventory;
  13. import varekd.model.Point;
  14. import varekd.model.Player;
  15. import varekd.model.InvItem;
  16. import varekd.model.PlayerAppearance;
  17. import varekd.model.World;
  18. import varekd.util.Logger;
  19. import varekd.util.Formulae;
  20. import varekd.model.BankItem;
  21. import varekd.Server;
  22. import varekd.model.Bank;
  23. import java.util.Calendar;
  24.  
  25. /**
  26. * Coded at 1AM by a very pissed off varek.
  27. * So don't expect miracles.
  28. * WARNING: NOT THREAD SAFE.
  29. */
  30. public class DBPlayerLoader implements PlayerLoader {
  31. // Statements for saving/loading playerz.
  32. private PreparedStatement queryPlayer, queryUser, updateBan, queryBan, queryloggedin, queryInv, queryBank, querySettings, queryList, updatePlayer, updatePlayernolocs, updateInv, updateBank, updateStats, updateExp, queryExp, queryStats, clearList, saveList, updateAppearance, updateSettings, insertSuspicious;
  33. // This shit is whack. Blocks people who try and log in too fast.
  34. private Map<String, BadPassword> attempts = new HashMap<String, BadPassword>();
  35.  
  36. public DBPlayerLoader() throws SQLException, ClassNotFoundException {
  37. loadStatements();
  38. }
  39.  
  40. public boolean ipBanned(String ip){
  41. try{
  42. ResultSet result = Server.db.getQuery("SELECT * FROM `ipbans` WHERE `ip`=\""+ip+"\"");
  43. if(!result.next()){
  44. return false;
  45. }
  46. if(result.getByte("banned")==1){
  47. return true;
  48. }
  49. return false;
  50. }catch(SQLException sqe){System.out.println("ERROR IN SQL! == "+sqe);}
  51. return false;
  52. }
  53.  
  54. public void loadStatements() throws SQLException {
  55. Connection c = DBConnection.getConnection("playerpersistence");
  56. queryPlayer = c.prepareStatement("SELECT * FROM player INNER JOIN appearance ON appearance.playerid = player.id " +
  57. "WHERE player.username=? AND player.password=SHA1(?)");
  58. queryUser = c.prepareStatement("SELECT * FROM `users` WHERE id=?");
  59. queryloggedin = c.prepareStatement("UPDATE player SET loggedin=? WHERE username=?");
  60. queryInv = c.prepareStatement("SELECT itemid, amount, wielded FROM invitem WHERE playerid=? " +
  61. "ORDER BY position");
  62. queryBank = c.prepareStatement("SELECT itemid, amount FROM bankitem WHERE playerid=? " +
  63. "ORDER BY position");
  64. querySettings = c.prepareStatement("SELECT * FROM setting WHERE playerid=? AND type=?");
  65. queryExp = c.prepareStatement("SELECT exp_attack, exp_defense, exp_strength, exp_hits, exp_ranged, exp_prayer, exp_magic, points FROM exp WHERE user=? ");
  66. queryStats = c.prepareStatement("SELECT attack, defense, strength, hits, ranged, prayer, magic FROM stats WHERE user=? ");
  67. queryList = c.prepareStatement("SELECT playerhash, type FROM playerlist WHERE playerid=?");
  68. updatePlayer = c.prepareStatement("UPDATE player SET " +
  69. "x=?, y=?, fightmode=?, lastlogin=?, lastip=?, lastskulled=?, " +
  70. "changingappearance=?, male=?, combat=?, 5minrule=?, banned=?, kills=?, deaths=?, user=?, clan=?, clanrank=?, muted=?, lastsaidlong=?, lastkilled=?, f2p=?, pin=?, bankreset=? WHERE id=?");
  71. updateBan = c.prepareStatement("UPDATE player SET banned=? WHERE username=?");
  72. queryBan = c.prepareStatement("SELECT group, banned FROM player WHERE username=?");
  73. updatePlayernolocs = c.prepareStatement("UPDATE player SET " +
  74. "fightmode=?, lastlogin=?, lastip=?, lastskulled=?, " +
  75. "changingappearance=?, male=?, combat=?, 5minrule=?, banned=?, kills=?, deaths=?, user=?, clan=?, clanrank=?, muted=?, lastsaidlong=?, lastkilled=?, f2p=?, pin=?, bankreset=? WHERE id=?");
  76.  
  77. updateInv = c.prepareStatement("UPDATE invitem SET itemid=?, amount=?, wielded=? " +
  78. "WHERE playerid=? AND position=?");
  79. updateBank = c.prepareStatement("UPDATE bankitem SET itemid=?, amount=? " +
  80. "WHERE playerid=? AND position=?");
  81. updateExp = c.prepareStatement("UPDATE exp SET exp_attack=?, exp_defense=?, exp_strength=?, exp_hits=?, exp_ranged=?, exp_prayer=?, exp_magic=?, points=? " +
  82. "WHERE user=?");
  83. updateStats = c.prepareStatement("UPDATE stats SET attack=?, defense=?, strength=?, hits=?, ranged=?, prayer=?, magic=? " +
  84. "WHERE user=?");
  85. clearList = c.prepareStatement("DELETE FROM playerlist WHERE playerid=?");
  86. saveList = c.prepareStatement("INSERT INTO playerlist (playerid, playerhash, type) " +
  87. "VALUES (?, ?, ?)");
  88. updateAppearance = c.prepareStatement("UPDATE appearance SET " +
  89. "haircolour=?, topcolour=?, trousercolour=?, skincolour=?, head=?, body=? " +
  90. "WHERE playerid=?");
  91. updateSettings = c.prepareStatement("UPDATE setting SET " +
  92. "bool1=?, bool2=?, bool3=?, bool4=? WHERE type=? AND playerid=?");
  93. insertSuspicious = c.prepareStatement("INSERT INTO suspiciousevent (playerid, value) VALUES (?, ?)");
  94. }
  95.  
  96. /**
  97. * This is a bit of a hack. In case the connections are somehow closed, this method will check that they're okay
  98. * and if they're not okay it re-loads them.
  99. */
  100. private static boolean checkStatements(PreparedStatement... stmnts) {
  101. for (PreparedStatement ps : stmnts) {
  102. try {
  103. if (ps == null || ps.getConnection().isClosed()) {
  104. return false;
  105. }
  106. } catch (SQLException sqe) {
  107. return false;
  108. }
  109. }
  110. return true;
  111. }
  112.  
  113. public byte load(Player p) {
  114. try {
  115. return load0(p);
  116. } catch (Exception e) {
  117. Logger.err("Error loading " + p.getUsername());
  118. Logger.err(e);
  119. e.printStackTrace();
  120. }
  121. return (byte) 17;
  122. }
  123.  
  124. public synchronized byte load0(Player p) throws SQLException {
  125. String ip = ((InetSocketAddress) p.getSession().getRemoteAddress()).getAddress().getHostAddress();
  126. Server.getServer().getThrottleFilter().connectionOk(p.getSession());
  127. if (attempts.containsKey(ip)) {
  128. BadPassword bp = attempts.get(ip);
  129. if (bp.nextAttempt > 0) {
  130. if (System.currentTimeMillis() > bp.nextAttempt) {
  131. attempts.remove(ip);
  132. } else {
  133. return (byte) 7;
  134. }
  135. }
  136. }
  137. if (!checkStatements(queryPlayer, queryUser, queryloggedin, queryInv, queryBank, querySettings, queryExp, queryStats, queryList)) {
  138. loadStatements();
  139. }
  140. queryPlayer.setString(1, p.getUsername());
  141. queryPlayer.setString(2, p.getPassword());
  142. ResultSet resultPlayer = queryPlayer.executeQuery();
  143. if (!resultPlayer.next()) {
  144. BadPassword bp = attempts.get(ip);
  145. if (bp == null || System.currentTimeMillis() - 10 * 60 * 1000 > bp.lastAttempt) {
  146. bp = new BadPassword();
  147. attempts.put(ip, bp);
  148. }
  149. bp.attempt++;
  150. bp.lastAttempt = System.currentTimeMillis();
  151. if (bp.attempt >= Server.getServer().getConf().getInt("security.badpasswordcount")) {
  152. bp.nextAttempt = System.currentTimeMillis() + Server.getServer().getConf().getInt("security.badpassworddelay");
  153. }
  154. return 0x3; //no such user/password
  155. } else {
  156. p.setGroup(resultPlayer.getByte("group"));
  157. p.setKills(resultPlayer.getInt("kills"));
  158. p.setDeaths(resultPlayer.getInt("deaths"));
  159. if (World.getWorld().getPlayer(p.getUsernameHash()) != null) {
  160. return 0x4; //user already logged in
  161. }
  162. long longSinceBanned = System.currentTimeMillis()-resultPlayer.getLong("bantime");
  163. p.lastSaidSomething = resultPlayer.getLong("lastsaidlong");
  164. p.setLastKilled(resultPlayer.getLong("lastkilled"));
  165. p.setBankReset(resultPlayer.getLong("bankreset"));
  166. boolean changing = (resultPlayer.getInt("changing") == 1);
  167. if(changing)
  168. return (byte) 16;
  169. if(resultPlayer.getInt("banned")==2&&longSinceBanned<resultPlayer.getLong("banlong"))
  170. return (byte) 11; //temporarily banned
  171. if(resultPlayer.getInt("banned")==1)
  172. return (byte) 12; //permanently banned
  173. if(ipBanned(p.getCurrentIP()))
  174. return (byte) 13; //IP banned
  175. if (World.getWorld().getOwner(resultPlayer.getInt("owner")) != null)
  176. return (byte) 14; //user already logged in
  177. p.setOwner(resultPlayer.getInt("owner"));
  178. p.setId(resultPlayer.getInt("id"));
  179. p.setClan(resultPlayer.getString("clan"));
  180. p.setClanRank(resultPlayer.getInt("clanrank"));
  181. p.setMuted(resultPlayer.getInt("muted"));
  182. p.setF2P(false);//(resultPlayer.getBoolean("f2p"));
  183. p.setfiveminrule(resultPlayer.getInt("5minrule"));
  184. int x = resultPlayer.getInt("x");
  185. int y = resultPlayer.getInt("y");
  186. int fivex = resultPlayer.getInt("5x");
  187. int fivey = resultPlayer.getInt("5y");
  188. if(p.getfiveminrule()==0){
  189. p.setLocation(Point.location(x, y), true);
  190. }else{
  191. p.setfivex(x);
  192. p.setfivey(y);
  193. p.setLocation(Point.location(fivex, fivey), true);
  194. }
  195. // p.setLocation(Point.location(resultPlayer.getInt("x"), resultPlayer.getInt("y")), true);
  196. p.setFightMode(resultPlayer.getInt("fightmode"));
  197. p.setLastLogin(System.currentTimeMillis());
  198. p.setLastIP(resultPlayer.getString("lastip"));
  199. p.setLastSkulled(resultPlayer.getLong("lastskulled"));
  200. p.setChangingAppearance(resultPlayer.getBoolean("changingappearance"));
  201. p.setMale(resultPlayer.getBoolean("male"));
  202. int owner = resultPlayer.getInt("owner");
  203. queryUser.setInt(1, owner);
  204. ResultSet resultUser = queryUser.executeQuery();
  205. if (!resultUser.next()) {
  206. p.setSubscriptionExpires(0);
  207. System.out.println("Fail");
  208. }else{
  209. p.setSubscriptionExpires(resultUser.getLong("subscribelong"));
  210. }
  211.  
  212. //Inventory
  213. Inventory i = new Inventory(p);
  214. queryInv.setInt(1, resultPlayer.getInt("id"));
  215. ResultSet resultInv = queryInv.executeQuery();
  216. while (resultInv.next()) {
  217. int id = resultInv.getInt(1);
  218. int amount = resultInv.getInt(2);
  219. if (id == -1) {
  220. break;
  221. }
  222. InvItem it = new InvItem(id, amount);
  223. it.setWield(resultInv.getBoolean(3));
  224. i.add(it);
  225. }
  226. p.setInventory(i);
  227.  
  228. //Bank
  229. Bank b = new Bank();
  230. queryBank.setInt(1, p.getId());
  231. ResultSet resultBank = queryBank.executeQuery();
  232. while (resultBank.next()) {
  233. int id = resultBank.getInt(1);
  234. int amount = resultBank.getInt(2);
  235. if (id == -1) {
  236. break;
  237. }
  238. BankItem it = new BankItem(id, amount);
  239. b.addItem(it);
  240. }
  241. ResultSet result = Server.db.getQuery("SELECT pin FROM `player` WHERE `username`=\""+p.getUsername()+"\"");
  242. if(!result.next()){
  243. b.setPin(-1);
  244. }else{
  245. b.setPin(result.getInt("pin"));
  246. }
  247. p.setBank(b);
  248.  
  249. //Settings
  250. querySettings.setInt(1, p.getId());
  251. querySettings.setString(2, "game");
  252. ResultSet gameSettings = querySettings.executeQuery();
  253. gameSettings.next();
  254. p.setGameSetting(0, gameSettings.getBoolean("bool1"));
  255. p.setGameSetting(1, gameSettings.getBoolean("bool2"));
  256. p.setGameSetting(2, gameSettings.getBoolean("bool3"));
  257. p.setGameSetting(3, gameSettings.getBoolean("bool4"));
  258. querySettings.setString(2, "privacy");
  259. ResultSet privacySettings = querySettings.executeQuery();
  260. privacySettings.next();
  261. p.setPrivacySetting(0, privacySettings.getBoolean("bool1"));
  262. p.setPrivacySetting(1, privacySettings.getBoolean("bool2"));
  263. p.setPrivacySetting(2, privacySettings.getBoolean("bool3"));
  264. p.setPrivacySetting(3, privacySettings.getBoolean("bool4"));
  265.  
  266. //Stats
  267. queryExp.setString(1, p.getUsername());
  268. ResultSet resultExp = queryExp.executeQuery();
  269. while (resultExp.next()) {
  270. p.setExp(0, resultExp.getLong(1));
  271. p.setExp(1, resultExp.getLong(2));
  272. p.setExp(2, resultExp.getLong(3));
  273. p.setExp(3, resultExp.getLong(4));
  274. p.setExp(4, resultExp.getLong(5));
  275. p.setExp(5, resultExp.getLong(6));
  276. p.setExp(6, resultExp.getLong(7));
  277. p.setExp(7, resultExp.getLong(8));
  278. p.setMaxStat(0, Formulae.experienceToLevel(resultExp.getLong(1)));
  279. p.setMaxStat(1, Formulae.experienceToLevel(resultExp.getLong(2)));
  280. p.setMaxStat(2, Formulae.experienceToLevel(resultExp.getLong(3)));
  281. p.setMaxStat(3, Formulae.experienceToLevel(resultExp.getLong(4)));
  282. p.setMaxStat(4, Formulae.experienceToLevel(resultExp.getLong(5)));
  283. p.setMaxStat(5, Formulae.experienceToLevel(resultExp.getLong(6)));
  284. p.setMaxStat(6, Formulae.experienceToLevel(resultExp.getLong(7)));
  285. p.setMaxStat(7, Formulae.experienceToLevel(resultExp.getLong(8)));
  286. }
  287.  
  288. queryStats.setString(1, p.getUsername());
  289. ResultSet resultStats = queryStats.executeQuery();
  290. while (resultStats.next()) {
  291. p.setCurStat(0, resultStats.getInt(1));
  292. p.setCurStat(1, resultStats.getInt(2));
  293. p.setCurStat(2, resultStats.getInt(3));
  294. p.setCurStat(3, resultStats.getInt(4));
  295. p.setCurStat(4, resultStats.getInt(5));
  296. p.setCurStat(5, resultStats.getInt(6));
  297. p.setCurStat(6, resultStats.getInt(7));
  298. }
  299. // queryloggedin.setInt(1, 0);
  300. //queryloggedin.setString(2, p.getUsername());
  301. // queryloggedin.executeUpdate();
  302. // Server.db.updateQuery("UPDATE `player` SET `loggedin`=1 WHERE `username`=\""+p.getUsername()+"\"");
  303. Server.db.updateQuery("UPDATE `player` SET `banned`=0 WHERE `username`=\""+p.getUsername()+"\"");
  304. queryList.setInt(1, p.getId());
  305. List<Long> friendsList = new ArrayList<Long>(), ignoreList = new ArrayList<Long>();
  306. ResultSet resultList = queryList.executeQuery();
  307. while (resultList.next()) {
  308. long playerHash = resultList.getLong(1);
  309. String type = resultList.getString(2);
  310. if (type.equals("ignore")) {
  311. ignoreList.add(playerHash);
  312. } else if (type.equals("friend")) {
  313. friendsList.add(playerHash);
  314. }
  315. }
  316. p.setFriendList(friendsList);
  317. p.setIgnoreList(ignoreList);
  318.  
  319. //Appearance
  320. PlayerAppearance pa = new PlayerAppearance(resultPlayer.getInt("haircolour"), resultPlayer.getInt("topcolour"),
  321. resultPlayer.getInt("trousercolour"), resultPlayer.getInt("skincolour"), resultPlayer.getInt("head"),
  322. resultPlayer.getInt("body"));
  323. p.setWornItems(pa.getSprites());
  324. p.setAppearance(pa);
  325.  
  326. Server.getServer().getThrottleFilter().acceptedLogin(p.getSession());
  327. return (p.getGroup() == 2 ? (byte) 25 : (p.getGroup() == 1 ? (byte) 24 : 0x00));
  328. }
  329. }
  330.  
  331. public void save(Player p) {
  332. try {
  333. save0(p);
  334. } catch (Exception e) {
  335. Logger.err("Error loading " + p.getUsername());
  336. Logger.err(e);
  337. }
  338. }
  339.  
  340. public synchronized void save0(Player p) throws SQLException {
  341. int i = 0, x = 0, y = 0;
  342. try {
  343. x = p.getLocation().getX();
  344. y = p.getLocation().getY();
  345. } catch (Exception e) {
  346. }
  347. if (!checkStatements(updatePlayer, updateInv, updateBank, updateStats, updateExp, clearList, saveList, updateAppearance, updateSettings)) {
  348. loadStatements();
  349. }
  350. if(!p.getLocation().in5minroom()){
  351. updatePlayer.setInt(++i, x);
  352. updatePlayer.setInt(++i, y);
  353. updatePlayer.setInt(++i, p.getFightMode());
  354. updatePlayer.setLong(++i, p.getLastLogin());
  355. updatePlayer.setString(++i, p.getCurrentIP());
  356. updatePlayer.setLong(++i, p.getLastSkulled());
  357. updatePlayer.setBoolean(++i, p.isChangingAppearance());
  358. updatePlayer.setBoolean(++i, p.isMale());
  359. updatePlayer.setInt(++i, p.getCombatLevel());
  360. updatePlayer.setInt(++i, p.getfiveminrule());
  361. updatePlayer.setInt(++i, p.getBanned());
  362. updatePlayer.setInt(++i, p.getKills());
  363. updatePlayer.setInt(++i, p.getDeaths());
  364. updatePlayer.setLong(++i, p.getUsernameHash());
  365. updatePlayer.setString(++i, p.getClan());
  366. updatePlayer.setInt(++i, p.getClanRank());
  367. updatePlayer.setInt(++i, p.getMuted());
  368. updatePlayer.setLong(++i, p.lastSaidSomething);
  369. updatePlayer.setLong(++i, p.getLastKilled());
  370. updatePlayer.setBoolean(++i, p.isF2P());
  371. updatePlayer.setInt(++i, p.getBank().getPin());
  372. updatePlayer.setLong(++i, p.getBankReset());
  373. updatePlayer.setInt(++i, p.getId());
  374. updatePlayer.executeUpdate();
  375. }
  376. else{
  377. updatePlayernolocs.setInt(++i, p.getFightMode());
  378. updatePlayernolocs.setLong(++i, p.getLastLogin());
  379. updatePlayernolocs.setString(++i, p.getCurrentIP());
  380. updatePlayernolocs.setLong(++i, p.getLastSkulled());
  381. updatePlayernolocs.setBoolean(++i, p.isChangingAppearance());
  382. updatePlayernolocs.setBoolean(++i, p.isMale());
  383. updatePlayernolocs.setInt(++i, p.getCombatLevel());
  384. updatePlayernolocs.setInt(++i, p.getfiveminrule());
  385. updatePlayernolocs.setInt(++i, p.getBanned());
  386. updatePlayernolocs.setInt(++i, p.getKills());
  387. updatePlayernolocs.setInt(++i, p.getDeaths());
  388. updatePlayernolocs.setLong(++i, p.getUsernameHash());
  389. updatePlayernolocs.setString(++i, p.getClan());
  390. updatePlayernolocs.setInt(++i, p.getClanRank());
  391. updatePlayernolocs.setInt(++i, p.getMuted());
  392. updatePlayernolocs.setLong(++i, p.lastSaidSomething);
  393. updatePlayernolocs.setLong(++i, p.getLastKilled());
  394. updatePlayernolocs.setBoolean(++i, p.isF2P());
  395. updatePlayernolocs.setInt(++i, p.getBank().getPin());
  396. updatePlayernolocs.setLong(++i, p.getBankReset());
  397. updatePlayernolocs.setInt(++i, p.getId());
  398. updatePlayernolocs.executeUpdate();
  399. }
  400. // Server.db.updateQuery("UPDATE `player` SET `loggedin`=0 WHERE `username`=\""+p.getUsername()+"\"");
  401.  
  402. updateInv.setInt(4, p.getId());
  403. for (int slot = 0; slot < 30; slot++) {
  404. InvItem it = p.getInventory().get(slot);
  405. updateInv.setInt(1, it == null ? -1 : it.getId());
  406. updateInv.setInt(2, it == null ? -1 : it.getAmount());
  407. updateInv.setBoolean(3, it == null ? false : it.isWielded());
  408. updateInv.setInt(5, slot);
  409. updateInv.addBatch();
  410. }
  411. updateInv.executeBatch();
  412.  
  413. updateBank.setInt(3, p.getId());
  414. for (int slot = 0; slot < 256; slot++) {
  415. BankItem it = p.getBank().getItem(slot);
  416. updateBank.setInt(1, it == null ? -1 : it.getId());
  417. updateBank.setInt(2, it == null ? -1 : it.getAmount());
  418. updateBank.setInt(4, slot);
  419. updateBank.addBatch();
  420. }
  421. updateBank.executeBatch();
  422.  
  423. updateExp.setString(9, p.getUsername());
  424. updateExp.setLong(1, p.getExp(0));
  425. updateExp.setLong(2, p.getExp(1));
  426. updateExp.setLong(3, p.getExp(2));
  427. updateExp.setLong(4, p.getExp(3));
  428. updateExp.setLong(5, p.getExp(4));
  429. updateExp.setLong(6, p.getExp(5));
  430. updateExp.setLong(7, p.getExp(6));
  431. updateExp.setLong(8, p.getExp(7));
  432. updateExp.addBatch();
  433. updateExp.executeBatch();
  434.  
  435. updateStats.setString(8, p.getUsername());
  436. updateStats.setLong(1, p.getCurStat(0));
  437. updateStats.setLong(2, p.getCurStat(1));
  438. updateStats.setLong(3, p.getCurStat(2));
  439. updateStats.setLong(4, p.getCurStat(3));
  440. updateStats.setLong(5, p.getCurStat(4));
  441. updateStats.setLong(6, p.getCurStat(5));
  442. updateStats.setLong(7, p.getCurStat(6));
  443. updateStats.addBatch();
  444. updateStats.executeBatch();
  445.  
  446. clearList.setInt(1, p.getId());
  447. clearList.executeUpdate();
  448.  
  449. saveList.setInt(1, p.getId());
  450. for (long friend : p.getFriendList()) {
  451. saveList.setLong(2, friend);
  452. saveList.setString(3, "friend");
  453. saveList.addBatch();
  454. }
  455. saveList.executeBatch();
  456. for (long ignore : p.getIgnoreList()) {
  457. saveList.setLong(2, ignore);
  458. saveList.setString(3, "ignore");
  459. saveList.addBatch();
  460. }
  461. saveList.executeBatch();
  462.  
  463. PlayerAppearance pa = p.getAppearance();
  464. updateAppearance.setInt(1, pa.getHairColour());
  465. updateAppearance.setInt(2, pa.getTopColour());
  466. updateAppearance.setInt(3, pa.getTrouserColour());
  467. updateAppearance.setInt(4, pa.getSkinColour());
  468. updateAppearance.setInt(5, pa.getHead());
  469. updateAppearance.setInt(6, pa.getBody());
  470. updateAppearance.setInt(7, p.getId());
  471. updateAppearance.executeUpdate();
  472.  
  473. updateSettings.setInt(6, p.getId());
  474. updateSettings.setString(5, "game");
  475. for (int n = 0; n < 4; n++) {
  476. updateSettings.setBoolean(n + 1, p.getGameSetting(n));
  477. }
  478. updateSettings.addBatch();
  479. updateSettings.setString(5, "privacy");
  480. for (int n = 0; n < 4; n++) {
  481. updateSettings.setBoolean(n + 1, p.getPrivacySetting(n));
  482. }
  483. updateSettings.addBatch();
  484. updateSettings.executeBatch();
  485. }
  486.  
  487. public int getGroup(String name) {
  488. try {
  489. return getGroup0(name);
  490. } catch (Exception e) {
  491. Logger.err("Error loading " + name);
  492. Logger.err(e);
  493. }
  494. return 0;
  495. }
  496.  
  497. public int getGroup0(String name) throws SQLException{
  498. int i = 0;
  499. if (!checkStatements(queryBan)) {
  500. loadStatements();
  501. }
  502. queryBan.setString(++i, name);
  503. ResultSet resultBan = queryBan.executeQuery();
  504. return (int)resultBan.getByte("group");
  505. }
  506. public int getBanned(String name) {
  507. try {
  508. return getBanned0(name);
  509. } catch (Exception e) {
  510. Logger.err("Error loading " + name);
  511. Logger.err(e);
  512. }
  513. return -1;
  514. }
  515. public int getBanned0(String name) throws SQLException{
  516. int i = 0;
  517. if (!checkStatements(queryBan)) {
  518. loadStatements();
  519. }
  520. queryBan.setString(++i, name);
  521. ResultSet resultBan = queryBan.executeQuery();
  522. if(resultBan.next()) {
  523. return (int)resultBan.getByte("banned");
  524. }
  525. return -1;
  526. }
  527. public void ban(String name, int banned) {
  528. try {
  529. ban0(name, banned);
  530. } catch (Exception e) {
  531. Logger.err("Error loading " + name);
  532. Logger.err(e);
  533. }
  534. }
  535. public void ban0(String name, int banned) throws SQLException{
  536. if (!checkStatements(updateBan)) {
  537. loadStatements();
  538. }
  539. updateBan.setByte(1, (byte)banned);
  540. updateBan.setString(2, name);
  541. updateBan.executeUpdate();
  542. }
  543.  
  544. static class BadPassword {
  545.  
  546. int attempt = 0;
  547. long nextAttempt, lastAttempt;
  548. }
  549. }
Add Comment
Please, Sign In to add comment