View difference between Paste ID: Q9W0z5w6 and EDXT8bwb
SHOW: | | - or go back to the newest paste.
1
package server.rs2.players;
2
3
import java.io.BufferedReader;
4
import java.io.BufferedWriter;
5
import java.io.File;
6
import java.io.FileNotFoundException;
7
import java.io.FileReader;
8
import java.io.FileWriter;
9
import java.io.IOException;
10
11
import com.google.common.collect.Multiset.Entry;
12
13
import server.util.Misc;
14
15
public class PlayerSave {
16
17
	public static int loadGame(Player p, String playerName, String playerPass) {
18
		String line = "";
19
		String token = "";
20
		String token2 = "";
21
		String[] token3 = new String[3];
22
		boolean EndOfFile = false;
23
		int ReadMode = 0;
24
		BufferedReader characterfile = null;
25
		boolean File1 = false;
26
27
		try {
28
			characterfile = new BufferedReader(new FileReader("./Data/characters/" + playerName + ".txt"));
29
			File1 = true;
30
		} catch (FileNotFoundException fileex1) {
31
		}
32
33
		if (File1) {
34
			// new File ("./characters/"+playerName+".txt");
35
		} else {
36
			Misc.println(playerName + ": character file not found.");
37
			p.newPlayer = false;
38
			return 0;
39
		}
40
		try {
41
			line = characterfile.readLine();
42
		} catch (IOException ioexception) {
43
			Misc.println(playerName + ": error loading file.");
44
			return 3;
45
		}
46
		while (EndOfFile == false && line != null) {
47
			line = line.trim();
48
			int spot = line.indexOf("=");
49
			if (spot > -1) {
50
				token = line.substring(0, spot);
51
				token = token.trim();
52
				token2 = line.substring(spot + 1);
53
				token2 = token2.trim();
54
				token3 = token2.split("\t");
55
				switch (ReadMode) {
56
				case 1:
57
					if (token.equals("character-password")) {
58
						if (playerPass.equalsIgnoreCase(token2) || Misc.basicEncrypt(playerPass).equals(token2)
59
								|| Misc.md5Hash(playerPass).equals(token2)) {
60
							playerPass = Misc.basicEncrypt(playerPass);
61
						} else {
62
							return 3;
63
						}
64
					}
65
					break;
66
				case 2:
67
					if (token.equals("barrows")) {
68
						for (int j = 0; j < token3.length; j++) {
69
							p.killedBrother[j] = Boolean.parseBoolean(token3[j]);
70
						}
71
					} else if (token.equals("character-height")) {
72
						p.heightLevel = Integer.parseInt(token2);
73
					} else if (token.equals("character-donator")) {
74
						p.playerDonator = Integer.parseInt(token2);
75
					} else if (token.equals("character-mac")) {
76
                    	p.macAddress = token2;
77
					} else if (token.equals("amount-donated")) {
78
						p.amountDonated = Integer.parseInt(token2);
79
					} else if (token.equals("donation-points")) {
80
						p.donationPoints = Integer.parseInt(token2);
81
					} else if (token.equals("character-posx")) {
82
						p.teleportToX = (Integer.parseInt(token2) <= 0 ? 3210 : Integer.parseInt(token2));
83
					} else if (token.equals("character-posy")) {
84
						p.teleportToY = (Integer.parseInt(token2) <= 0 ? 3424 : Integer.parseInt(token2));
85
					} else if (token.equals("character-rights")) {
86
						p.playerRights = Integer.parseInt(token2);
87
					} else if (token.equals("crystal-bow-shots")) {
88
						p.crystalBowArrowCount = Integer.parseInt(token2);
89
					} else if (token.equals("skull-timer")) {
90
						p.skullTimer = Integer.parseInt(token2);
91
					} else if (token.equals("heal-delay")) {
92
						p.healDelay = Integer.parseInt(token2);
93
					} else if (token.equals("special-amount")) {
94
						p.specAmount = Double.parseDouble(token2);
95
					} else if (token.equals("teleblock-length")) {
96
						p.teleBlockDelay = System.currentTimeMillis();
97
						p.teleBlockLength = Integer.parseInt(token2);
98
					} else if (token.equals("poison")) {
99
						p.poisonDamage = Integer.parseInt(token2);
100
					} else if (token.equals("autoRet")) {
101
						p.autoRet = Integer.parseInt(token2);
102
					} else if (token.equals("flagged")) {
103
						p.accountFlagged = Boolean.parseBoolean(token2);
104
					} else if (token.equals("fightMode")) {
105
						p.fightMode = Integer.parseInt(token2);
106
					} else if (token.equals("playerMagicBook")) {
107
						p.playerMagicBook = Integer.parseInt(token2);
108
					} else if (token.equals("lastLoginDate")) {
109
						p.lastLoginDate = Integer.parseInt(token2);
110
					} else if (token.equals("oldSpec")) {
111
						p.oldSpec = Boolean.parseBoolean(token2);
112
					} else if (token.equals("newSpecialBar")) {
113
						p.newSpecialBar = Boolean.parseBoolean(token2);
114
					} else if (token.equals("isRunning2")) {
115
						p.isRunning = Boolean.parseBoolean(token2);
116
					} else if (token.equals(destroytoggle")) {
117
						p.toggleDrops = Boolean.parseBoolean(token2);
118
					} else if (token.equals("run-energy")) {
119
						p.runEnergy = Integer.parseInt(token2);
120
					} else if (token.equals("brother-info")) {
121
						p.barrowsNpcs[Integer.parseInt(token3[0])][1] = Integer.parseInt(token3[1]);
122
						// } else if (token.equals("selected-coffin")) {
123
						// p.randomCoffin = Integer.parseInt(token2);
124
					} else if (token.equals("barrowskillcount")) {
125
						p.barrowsKillCount = Integer.parseInt(token2);
126
					} else if (token.equals("pc-points")) {
127
						p.pcPoints = Integer.parseInt(token2);
128
					} else if (token.equals("slayerTask")) {
129
						p.slayerTask = Integer.parseInt(token2);
130
					} else if (token.equals("taskAmount")) {
131
						p.taskAmount = Integer.parseInt(token2);
132
					} else if (token.equals("wave")) {
133
						p.waveId = Integer.parseInt(token2);
134
					} else if (token.equals("altar")) {
135
						p.altarPrayed = Integer.parseInt(token2);
136
					} else if (token.equals("splitChat")) {
137
						p.splitChat = Boolean.parseBoolean(token2);
138
					} else if (token.equals("expLock")) {
139
						p.expLock = Boolean.parseBoolean(token2);
140
					} else if (token.equals("wonChallenge")) {
141
						p.wonChallenge = Boolean.parseBoolean(token2);
142
					} else if (token.equals("spiritWave")) {
143
						p.spiritWave = Integer.parseInt(token2);
144
					} else if (token.equals("spiritCount")) {
145
						p.spiritCount = Integer.parseInt(token2);
146
					} else if (token.equals("poison")) {
147
						p.poisonDamage = Integer.parseInt(token2);
148
					} else if (token.equals("lastKilled")) {
149
						p.lastKilledIPs.add(token2);
150
					} else if (token.equals("pvp-points")) {
151
						p.pvpPoints = Integer.parseInt(token2);
152
					} else if (token.equals("pvp-kills")) {
153
						p.pvpKills = Integer.parseInt(token2);
154
					} else if (token.equals("pvp-points")) {
155
						p.pvpPoints = Integer.parseInt(token2);
156
					} else if (token.equals("slayer-points")) {
157
						p.slayerPoints = Integer.parseInt(token2);
158
					} else if (token.equals("barb-points")) {
159
						p.barbPoints = Integer.parseInt(token2);
160
					} else if (token.equals("rfd-points")) {
161
						p.rfdPoints = Integer.parseInt(token2);
162
					} else if (token.equals("rfd-done")) {
163
						p.rfdDone = Integer.parseInt(token2);
164
					} else if (token.equals("dfs_count")) {
165
						p.dfsCount = Integer.parseInt(token2);
166
					} else if (token.equals("fire-cape")) {
167
						p.fireCape = Integer.parseInt(token2);
168
					} else if (token.equals("armadyl-kc")) {
169
						p.Arma = Integer.parseInt(token2);
170
					} else if (token.equals("zamorak-kc")) {
171
						p.Zammy = Integer.parseInt(token2);
172
					} else if (token.equals("saradomin-kc")) {
173
						p.Sara = Integer.parseInt(token2);
174
					} else if (token.equals("bandos-kc")) {
175
						p.Band = Integer.parseInt(token2);
176
					} else if (token.equals("canTrade")) {
177
						p.canTrade = Boolean.parseBoolean(token2);
178
					} else if (token.equals("canDuel")) {
179
						p.canDuel = Boolean.parseBoolean(token2);
180
					} else if (token.equals("lastclanchat")) {
181
						p.lastClanChat = token2;
182
					} else if (token.equals("pouch")) {
183
						for (int j = 0; j < token3.length; j++) {
184
							p.pouch[j] = Integer.parseInt(token3[j]);
185
						}
186
					} else if (token.equals("bankPin")) {
187
						p.bankPin = token2;
188
					} else if (token.equals("setPin")) {
189
						p.setPin = Boolean.parseBoolean(token2);
190
					}
191
					break;
192
				case 3:
193
					if (token.equals("character-equip")) {
194
						p.playerEquipment[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]);
195
						p.playerEquipmentN[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]);
196
					}
197
					break;
198
				case 4:
199
					if (token.equals("character-look")) {
200
						p.playerAppearance[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]);
201
					}
202
					break;
203
				case 5:
204
					if (token.equals("character-skill")) {
205
						p.playerLevel[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]);
206
						p.playerXP[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]);
207
					}
208
					break;
209
				case 6:
210
					if (token.equals("character-item")) {
211
						p.playerItems[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]);
212
						p.playerItemsN[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]);
213
					}
214
					break;
215
				case 7:
216
					if (token.equals("character-bank")) {
217
						p.bankItems[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]);
218
						p.bankItemsN[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]);
219
					}
220
					break;
221
				case 8:
222
					if (token.equals("character-friend")) {
223
						p.friends[Integer.parseInt(token3[0])] = Long.parseLong(token3[1]);
224
					}
225
					break;
226
				case 9:
227
					/*
228
					 * if (token.equals("character-ignore")) {
229
					 * ignores[Integer.parseInt(token3[0])] =
230
					 * Long.parseLong(token3[1]); }
231
					 */
232
					break;
233
				case 10:
234
					if (token.equals("character-degrade")) {
235
						p.degradables.add(Integer.parseInt(token3[0]), Integer.parseInt(token3[1]));
236
					}
237
					break;
238
				}
239
			} else {
240
				if (line.equals("[ACCOUNT]")) {
241
					ReadMode = 1;
242
				} else if (line.equals("[CHARACTER]")) {
243
					ReadMode = 2;
244
				} else if (line.equals("[EQUIPMENT]")) {
245
					ReadMode = 3;
246
				} else if (line.equals("[LOOK]")) {
247
					ReadMode = 4;
248
				} else if (line.equals("[SKILLS]")) {
249
					ReadMode = 5;
250
				} else if (line.equals("[ITEMS]")) {
251
					ReadMode = 6;
252
				} else if (line.equals("[BANK]")) {
253
					ReadMode = 7;
254
				} else if (line.equals("[FRIENDS]")) {
255
					ReadMode = 8;
256
				} else if (line.equals("[IGNORES]")) {
257
					ReadMode = 9;
258
				} else if (line.equals("[DEGRADE]")) {
259
					ReadMode = 10;
260
				} else if (line.equals("[EOF]")) {
261
					try {
262
						characterfile.close();
263
					} catch (IOException ioexception) {
264
					}
265
					return 1;
266
				}
267
			}
268
			try {
269
				line = characterfile.readLine();
270
			} catch (IOException ioexception1) {
271
				EndOfFile = true;
272
			}
273
		}
274
		try {
275
			characterfile.close();
276
		} catch (IOException ioexception) {
277
		}
278
		return 13;
279
	}
280
281
	/**
282
	 * Saving
283
	 **/
284
	public static boolean saveGame(Player p) {
285
		if (!p.saveFile || p.newPlayer || !p.saveCharacter) {
286
			// System.out.println("first");
287
			return false;
288
		}
289
		if (p.playerName == null || PlayerHandler.players[p.playerId] == null) {
290
			// System.out.println("second");
291
			return false;
292
		}
293
		p.playerName = p.playerName2;
294
		int tbTime = (int) (p.teleBlockDelay - System.currentTimeMillis() + p.teleBlockLength);
295
		if (tbTime > 300000 || tbTime < 0) {
296
			tbTime = 0;
297
		}
298
299
		BufferedWriter characterfile = null;
300
		try {
301
			characterfile = new BufferedWriter(new FileWriter("./Data/characters/" + p.playerName + ".txt"));
302
303
			/* ACCOUNT */
304
			characterfile.write("[ACCOUNT]", 0, 9);
305
			characterfile.newLine();
306
			characterfile.write("character-username = ", 0, 21);
307
			characterfile.write(p.playerName, 0, p.playerName.length());
308
			characterfile.newLine();
309
			characterfile.write("character-password = ", 0, 21);
310
			String passToWrite = Misc.md5Hash(p.playerPass);
311
			characterfile.write(passToWrite, 0, passToWrite.length());
312
			characterfile.newLine();
313
			characterfile.newLine();
314
315
			/* CHARACTER */
316
			characterfile.write("[CHARACTER]", 0, 11);
317
			characterfile.newLine();
318
			characterfile.write("character-mac = ", 0, 16);
319
			characterfile.write(p.getMacAddress(), 0, p.getMacAddress().length());
320
			characterfile.newLine();
321
			characterfile.write("character-height = ", 0, 19);
322
			characterfile.write(Integer.toString(p.heightLevel), 0, Integer.toString(p.heightLevel).length());
323
			characterfile.newLine();
324
			characterfile.write("character-posx = ", 0, 17);
325
			characterfile.write(Integer.toString(p.absX), 0, Integer.toString(p.absX).length());
326
			characterfile.newLine();
327
			characterfile.write("character-posy = ", 0, 17);
328
			characterfile.write(Integer.toString(p.absY), 0, Integer.toString(p.absY).length());
329
			characterfile.newLine();
330
			characterfile.write("character-rights = ", 0, 19);
331
			characterfile.write(Integer.toString(p.playerRights), 0, Integer.toString(p.playerRights).length());
332
			characterfile.newLine();
333
			characterfile.write("character-donator = ", 0, 20);
334
			characterfile.write(Integer.toString(p.playerDonator), 0, Integer.toString(p.playerDonator).length());
335
			characterfile.newLine();
336
			characterfile.write("amount-donated = ", 0, 17);
337
			characterfile.write(Integer.toString(p.amountDonated), 0, Integer.toString(p.amountDonated).length());
338
			characterfile.newLine();
339
			characterfile.write("donation-points = ", 0, 18);
340
			characterfile.write(Integer.toString(p.donationPoints), 0, Integer.toString(p.donationPoints).length());
341
			characterfile.newLine();
342
			characterfile.write("crystal-bow-shots = ", 0, 20);
343
			characterfile.write(Integer.toString(p.crystalBowArrowCount), 0,
344
					Integer.toString(p.crystalBowArrowCount).length());
345
			characterfile.newLine();
346
			characterfile.write("skull-timer = ", 0, 14);
347
			characterfile.write(Integer.toString(p.skullTimer), 0, Integer.toString(p.skullTimer).length());
348
			characterfile.newLine();
349
			characterfile.write("heal-delay = ", 0, 13);
350
			characterfile.write(Integer.toString(p.healDelay), 0, Integer.toString(p.healDelay).length());
351
			characterfile.newLine();
352
			characterfile.write("playerMagicBook = ", 0, 18);
353
			characterfile.write(Integer.toString(p.playerMagicBook), 0, Integer.toString(p.playerMagicBook).length());
354
			characterfile.newLine();
355
			characterfile.write("special-amount = ", 0, 17);
356
			characterfile.write(Double.toString(p.specAmount), 0, Double.toString(p.specAmount).length());
357
			characterfile.newLine();
358
			characterfile.write("teleblock-length = ", 0, 19);
359
			characterfile.write(Integer.toString(tbTime), 0, Integer.toString(tbTime).length());
360
			characterfile.newLine();
361
			characterfile.write("poison = ", 0, 9);
362
			characterfile.write(Integer.toString(p.poisonDamage), 0, Integer.toString(p.poisonDamage).length());
363
			characterfile.newLine();
364
			characterfile.write("slayerTask = ", 0, 13);
365
			characterfile.write(Integer.toString(p.slayerTask), 0, Integer.toString(p.slayerTask).length());
366
			characterfile.newLine();
367
			characterfile.write("taskAmount = ", 0, 13);
368
			characterfile.write(Integer.toString(p.taskAmount), 0, Integer.toString(p.taskAmount).length());
369
			characterfile.newLine();
370
			characterfile.write("autoRet = ", 0, 10);
371
			characterfile.write(Integer.toString(p.autoRet), 0, Integer.toString(p.autoRet).length());
372
			characterfile.newLine();
373
			characterfile.write("flagged = ", 0, 10);
374
			characterfile.write(Boolean.toString(p.accountFlagged), 0, Boolean.toString(p.accountFlagged).length());
375
			characterfile.newLine();
376
			characterfile.write("fightMode = ", 0, 12);
377
			characterfile.write(Integer.toString(p.fightMode), 0, Integer.toString(p.fightMode).length());
378
			characterfile.newLine();
379
			characterfile.write("barrowskillcount = ", 0, 19);
380
			characterfile.write(Integer.toString(p.barrowsKillCount), 0, Integer.toString(p.barrowsKillCount).length());
381
			characterfile.newLine();
382
			// characterfile.write("selected-coffin = ", 0, 18);
383
			// characterfile.write(Integer.toString(p.randomCoffin), 0, Integer
384
			// .toString(p.randomCoffin).length());
385
			// characterfile.newLine();
386
			for (int b = 0; b < p.barrowsNpcs.length; b++) {
387
				characterfile.write("brother-info = ", 0, 15);
388
				characterfile.write(Integer.toString(b), 0, Integer.toString(b).length());
389
				characterfile.write("	", 0, 1);
390
				characterfile.write(
391
						p.barrowsNpcs[b][1] <= 1 ? Integer.toString(0) : Integer.toString(p.barrowsNpcs[b][1]), 0,
392
						Integer.toString(p.barrowsNpcs[b][1]).length());
393
				characterfile.newLine();
394
			}
395
			characterfile.write("lastLoginDate = ", 0, 16);
396
			characterfile.write(Integer.toString(p.lastLoginDate), 0, Integer.toString(p.lastLoginDate).length());
397
			characterfile.newLine();
398
			characterfile.write("isRunning2 = ", 0, 13);
399
			characterfile.write(Boolean.toString(p.isRunning), 0, Boolean.toString(p.isRunning).length());
400
			characterfile.newLine();
401
			characterfile.write("destroytoggle = ", 0, 16);
402
			characterfile.write(Boolean.toString(p.toggleDrops), 0, Boolean.toString(p.toggleDrops).length());
403
			characterfile.newLine();
404
			characterfile.write("oldSpec = ", 0, 10);
405
			characterfile.write(Boolean.toString(p.oldSpec), 0, Boolean.toString(p.oldSpec).length());
406
			characterfile.newLine();
407
			characterfile.write("newSpecialBar = ", 0, 16);
408
			characterfile.write(Boolean.toString(p.newSpecialBar), 0, Boolean.toString(p.newSpecialBar).length());
409
			characterfile.newLine();
410
			characterfile.write("run-energy = ", 0, 13);
411
			characterfile.write(Integer.toString(p.runEnergy), 0, Integer.toString(p.runEnergy).length());
412
			characterfile.newLine();
413
			characterfile.write("wave = ", 0, 7);
414
			characterfile.write(Integer.toString(p.waveId), 0, Integer.toString(p.waveId).length());
415
			characterfile.newLine();
416
			characterfile.write("altar = ", 0, 8);
417
			characterfile.write(Integer.toString(p.altarPrayed), 0, Integer.toString(p.altarPrayed).length());
418
			characterfile.newLine();
419
			characterfile.write("splitChat = ", 0, 12);
420
			characterfile.write(Boolean.toString(p.splitChat), 0, Boolean.toString(p.splitChat).length());
421
			characterfile.newLine();
422
			characterfile.write("expLock = ", 0, 10);
423
			characterfile.write(Boolean.toString(p.expLock), 0, Boolean.toString(p.expLock).length());
424
			characterfile.newLine();
425
			characterfile.write("wonChallenge = ", 0, 15);
426
			characterfile.write(Boolean.toString(p.wonChallenge), 0, Boolean.toString(p.wonChallenge).length());
427
			characterfile.newLine();
428
			characterfile.write("spiritWave = ", 0, 13);
429
			characterfile.write(Integer.toString(p.spiritWave), 0, Integer.toString(p.spiritWave).length());
430
			characterfile.newLine();
431
			characterfile.write("spiritCount = ", 0, 14);
432
			characterfile.write(Integer.toString(p.spiritCount), 0, Integer.toString(p.spiritCount).length());
433
			characterfile.newLine();
434
			characterfile.write("pc-points = ", 0, 12);
435
			characterfile.write(Integer.toString(p.pcPoints), 0, Integer.toString(p.pcPoints).length());
436
			characterfile.newLine();
437
			if (!p.lastKilledIPs.isEmpty()) {
438
				for (String s : p.lastKilledIPs) {
439
					characterfile.write("lastKilled = ", 0, 13);
440
					characterfile.write(s, 0, s.length());
441
					characterfile.newLine();
442
				}
443
			}
444
			characterfile.write("pvp-points = ", 0, 13);
445
			characterfile.write(Integer.toString(p.pvpPoints), 0, Integer.toString(p.pvpPoints).length());
446
			characterfile.newLine();
447
			characterfile.write("pvp-kills = ", 0, 12);
448
			characterfile.write(Integer.toString(p.pvpKills), 0, Integer.toString(p.pvpKills).length());
449
			characterfile.newLine();
450
			characterfile.write("slayer-points = ", 0, 16);
451
			characterfile.write(Integer.toString(p.slayerPoints), 0, Integer.toString(p.slayerPoints).length());
452
			characterfile.newLine();
453
			characterfile.write("barb-points = ", 0, 14);
454
			characterfile.write(Integer.toString(p.barbPoints), 0, Integer.toString(p.barbPoints).length());
455
			characterfile.newLine();
456
			characterfile.write("rfd-points = ", 0, 13);
457
			characterfile.write(Integer.toString(p.rfdPoints), 0, Integer.toString(p.rfdPoints).length());
458
			characterfile.newLine();
459
			characterfile.write("rfd-done = ", 0, 11);
460
			characterfile.write(Integer.toString(p.rfdDone), 0, Integer.toString(p.rfdDone).length());
461
			characterfile.newLine();
462
			characterfile.write("dfs_count = ", 0, 12);
463
			characterfile.write(Integer.toString(p.dfsCount), 0, Integer.toString(p.dfsCount).length());
464
			characterfile.newLine();
465
			characterfile.write("fire-cape = ", 0, 12);
466
			characterfile.write(Integer.toString(p.fireCape), 0, Integer.toString(p.fireCape).length());
467
			characterfile.newLine();
468
469
			characterfile.write("armadyl-kc = ", 0, 13);
470
			characterfile.write(Integer.toString(p.Arma), 0, Integer.toString(p.Arma).length());
471
			characterfile.newLine();
472
			characterfile.write("zamorak-kc = ", 0, 13);
473
			characterfile.write(Integer.toString(p.Zammy), 0, Integer.toString(p.Zammy).length());
474
			characterfile.newLine();
475
			characterfile.write("saradomin-kc = ", 0, 15);
476
			characterfile.write(Integer.toString(p.Sara), 0, Integer.toString(p.Sara).length());
477
			characterfile.newLine();
478
			characterfile.write("bandos-kc = ", 0, 12);
479
			characterfile.write(Integer.toString(p.Band), 0, Integer.toString(p.Band).length());
480
			characterfile.newLine();
481
			characterfile.write("canTrade = ", 0, 11);
482
			characterfile.write(Boolean.toString(p.canTrade), 0, Boolean.toString(p.canTrade).length());
483
			characterfile.newLine();
484
			characterfile.write("canDuel = ", 0, 10);
485
			characterfile.write(Boolean.toString(p.canDuel), 0, Boolean.toString(p.canDuel).length());
486
			characterfile.newLine();
487
			characterfile.write("lastclanchat = ", 0, 15);
488
			characterfile.write(p.lastClanChat, 0, p.lastClanChat.length());
489
			characterfile.newLine();
490
			characterfile.write("pouch = ", 0, 8);
491
			characterfile.write(p.pouch[0] + "\t" + p.pouch[1] + "\t" + p.pouch[2] + "\t" + p.pouch[3]);
492
			characterfile.newLine();
493
			characterfile.write("bankPin = ", 0, 10);
494
			characterfile.write(p.bankPin, 0, p.bankPin.length());
495
			characterfile.newLine();
496
			characterfile.write("setPin = ", 0, 9);
497
			characterfile.write(Boolean.toString(p.setPin), 0, Boolean.toString(p.setPin).length());
498
			characterfile.newLine();
499
			/* EQUIPMENT */
500
			characterfile.newLine();
501
			characterfile.write("[EQUIPMENT]", 0, 11);
502
			characterfile.newLine();
503
			for (int i = 0; i < p.playerEquipment.length; i++) {
504
				characterfile.write("character-equip = ", 0, 18);
505
				characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
506
				characterfile.write("	", 0, 1);
507
				characterfile.write(Integer.toString(p.playerEquipment[i]), 0,
508
						Integer.toString(p.playerEquipment[i]).length());
509
				characterfile.write("	", 0, 1);
510
				characterfile.write(Integer.toString(p.playerEquipmentN[i]), 0,
511
						Integer.toString(p.playerEquipmentN[i]).length());
512
				characterfile.write("	", 0, 1);
513
				characterfile.newLine();
514
			}
515
			characterfile.newLine();
516
517
			/* LOOK */
518
			characterfile.write("[LOOK]", 0, 6);
519
			characterfile.newLine();
520
			for (int i = 0; i < p.playerAppearance.length; i++) {
521
				characterfile.write("character-look = ", 0, 17);
522
				characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
523
				characterfile.write("	", 0, 1);
524
				characterfile.write(Integer.toString(p.playerAppearance[i]), 0,
525
						Integer.toString(p.playerAppearance[i]).length());
526
				characterfile.newLine();
527
			}
528
			characterfile.newLine();
529
530
			/* SKILLS */
531
			characterfile.write("[SKILLS]", 0, 8);
532
			characterfile.newLine();
533
			for (int i = 0; i < p.playerLevel.length; i++) {
534
				characterfile.write("character-skill = ", 0, 18);
535
				characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
536
				characterfile.write("	", 0, 1);
537
				characterfile.write(Integer.toString(p.playerLevel[i]), 0, Integer.toString(p.playerLevel[i]).length());
538
				characterfile.write("	", 0, 1);
539
				characterfile.write(Integer.toString(p.playerXP[i]), 0, Integer.toString(p.playerXP[i]).length());
540
				characterfile.newLine();
541
			}
542
			characterfile.newLine();
543
544
			/* ITEMS */
545
			characterfile.write("[ITEMS]", 0, 7);
546
			characterfile.newLine();
547
			for (int i = 0; i < p.playerItems.length; i++) {
548
				if (p.playerItems[i] > 0) {
549
					characterfile.write("character-item = ", 0, 17);
550
					characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
551
					characterfile.write("	", 0, 1);
552
					characterfile.write(Integer.toString(p.playerItems[i]), 0,
553
							Integer.toString(p.playerItems[i]).length());
554
					characterfile.write("	", 0, 1);
555
					characterfile.write(Integer.toString(p.playerItemsN[i]), 0,
556
							Integer.toString(p.playerItemsN[i]).length());
557
					characterfile.newLine();
558
				}
559
			}
560
			characterfile.newLine();
561
562
			/* BANK */
563
			characterfile.write("[BANK]", 0, 6);
564
			characterfile.newLine();
565
			for (int i = 0; i < p.bankItems.length; i++) {
566
				if (p.bankItems[i] > 0) {
567
					characterfile.write("character-bank = ", 0, 17);
568
					characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
569
					characterfile.write("	", 0, 1);
570
					characterfile.write(Integer.toString(p.bankItems[i]), 0, Integer.toString(p.bankItems[i]).length());
571
					characterfile.write("	", 0, 1);
572
					characterfile.write(Integer.toString(p.bankItemsN[i]), 0,
573
							Integer.toString(p.bankItemsN[i]).length());
574
					characterfile.newLine();
575
				}
576
			}
577
			characterfile.newLine();
578
			/* FRIENDS */
579
			characterfile.write("[FRIENDS]", 0, 9);
580
			characterfile.newLine();
581
			for (int i = 0; i < p.friends.length; i++) {
582
				if (p.friends[i] > 0) {
583
					characterfile.write("character-friend = ", 0, 19);
584
					characterfile.write(Integer.toString(i), 0, Integer.toString(i).length());
585
					characterfile.write("	", 0, 1);
586
					characterfile.write("" + p.friends[i]);
587
					characterfile.newLine();
588
				}
589
			}
590
			characterfile.newLine();
591
592
			/* IGNORES */
593
			/*
594
			 * characterfile.write("[IGNORES]", 0, 9); characterfile.newLine();
595
			 * for (int i = 0; i < ignores.length; i++) { if (ignores[i] > 0) {
596
			 * characterfile.write("character-ignore = ", 0, 19);
597
			 * characterfile.write(Integer.toString(i), 0,
598
			 * Integer.toString(i).length()); characterfile.write("	", 0, 1);
599
			 * characterfile.write(Long.toString(ignores[i]), 0,
600
			 * Long.toString(ignores[i]).length()); characterfile.newLine(); } }
601
			 * characterfile.newLine();
602
			 */
603
			characterfile.write("[DEGRADE]");
604
			characterfile.newLine();
605
			for (Entry<Integer> it : p.degradables.entrySet()) {
606
				characterfile.write("character-degrade = ");
607
				characterfile.write(it.getElement() + "\t" + it.getCount());
608
				characterfile.newLine();
609
			}
610
			characterfile.newLine();
611
			/* EOF */
612
			characterfile.write("[EOF]");
613
			characterfile.newLine();
614
			characterfile.newLine();
615
			characterfile.close();
616
		} catch (IOException ioexception) {
617
			Misc.println(p.playerName + ": error writing file.");
618
			return false;
619
		}
620
		return true;
621
	}
622
623
	/**
624
	 * Tells us whether or not the player exists for the specified name.
625
	 *
626
	 * @param name
627
	 * @return
628
	 */
629
	public static boolean playerExists(String name) {
630
		File file = new File("./Data/characters/" + name + ".txt");
631
		return file.exists();
632
	}
633
634
	/**
635
	 * Tells use whether or not the specified name has the friend added.
636
	 *
637
	 * @param name
638
	 * @param friend
639
	 * @return
640
	 */
641
	public static boolean isFriend(String name, String friend) {
642
		long nameLong = Misc.playerNameToInt64(friend);
643
		long[] friends = getFriends(name);
644
		if (friends != null && friends.length > 0) {
645
			for (int index = 0; index < friends.length; index++) {
646
				if (friends[index] == nameLong) {
647
					return true;
648
				}
649
			}
650
		}
651
		return false;
652
	}
653
654
	/**
655
	 * Returns a characters friends in the form of a long array.
656
	 *
657
	 * @param name
658
	 * @return
659
	 */
660
	public static long[] getFriends(String name) {
661
		String line = "";
662
		String token = "";
663
		String token2 = "";
664
		String[] token3 = new String[3];
665
		boolean end = false;
666
		int readMode = 0;
667
		BufferedReader file = null;
668
		boolean file1 = false;
669
		long[] readFriends = new long[200];
670
		long[] friends = null;
671
		int totalFriends = 0;
672
		try {
673
			file = new BufferedReader(new FileReader("./Data/characters/" + name + ".txt"));
674
			file1 = true;
675
		} catch (FileNotFoundException fileex1) {
676
		}
677
678
		if (file1) {
679
			new File("./Data/characters/" + name + ".txt");
680
		} else {
681
			return null;
682
		}
683
		try {
684
			line = file.readLine();
685
		} catch (IOException ioexception) {
686
			return null;
687
		}
688
		while (end == false && line != null) {
689
			line = line.trim();
690
			int spot = line.indexOf("=");
691
			if (spot > -1) {
692
				token = line.substring(0, spot);
693
				token = token.trim();
694
				token2 = line.substring(spot + 1);
695
				token2 = token2.trim();
696
				token3 = token2.split("\t");
697
				switch (readMode) {
698
				case 0:
699
					if (token.equals("character-friend")) {
700
						readFriends[Integer.parseInt(token3[0])] = Long.parseLong(token3[1]);
701
						totalFriends++;
702
					}
703
					break;
704
				}
705
			} else {
706
				if (line.equals("[FRIENDS]")) {
707
					readMode = 0;
708
				} else if (line.equals("[EOF]")) {
709
					try {
710
						file.close();
711
					} catch (IOException ioexception) {
712
					}
713
				}
714
			}
715
			try {
716
				line = file.readLine();
717
			} catch (IOException ioexception1) {
718
				end = true;
719
			}
720
		}
721
		try {
722
			if (totalFriends > 0) {
723
				friends = new long[totalFriends];
724
				for (int index = 0; index < totalFriends; index++) {
725
					friends[index] = readFriends[index];
726
				}
727
				return friends;
728
			}
729
			file.close();
730
		} catch (IOException ioexception) {
731
		}
732
		return null;
733
	}
734
735
	public static void appendData(String file, String text) {
736
		BufferedWriter bw = null;
737
		try {
738
			FileWriter fileWriter = new FileWriter(file, true);
739
			bw = new BufferedWriter(fileWriter);
740
			bw.write(text);
741
			bw.newLine();
742
			bw.flush();
743
			bw.close();
744
			fileWriter = null;
745
			bw = null;
746
		} catch (Exception exception) {
747
			System.out.println("Critical error while writing data: " + file);
748
		}
749
	}
750
751
}