Thread: [Dementhium] Cheap fix to load password from the character files

Page 1 of 3 123 LastLast
Results 1 to 10 of 28
  1. #1 [Dementhium] Cheap fix to load password from the character files 
    Doctor p - Sweet Shop

    Join Date
    Apr 2007
    Age
    28
    Posts
    6,835
    Thanks given
    150
    Thanks received
    584
    Rep Power
    2595
    Fucking tired of people asking me how to do this.

    Code:
    package org.dementhium.io;
    
    import java.nio.ByteBuffer;
    
    import org.dementhium.model.World;
    import org.dementhium.model.definition.PlayerDefinition;
    import org.dementhium.model.player.Player;
    import org.dementhium.mysql.VBIntegration;
    import org.dementhium.net.GameSession;
    import org.dementhium.util.BufferUtils;
    import org.dementhium.util.Constants;
    import org.jboss.netty.buffer.ChannelBuffer;
    import org.jboss.netty.buffer.ChannelBuffers;
    
    
    /**
     * Class that handles player loading
     * @author 'Mystic Flow
     */
    public final class PlayerLoader extends FileUtilities {
    
    	public static final String DIRECTORY = "data/games/";
    	public static final String EXTENSION = ".bin";
    
    	public class PlayerLoadResult {
    
    		private final Player player;
    		private final int returnCode;
    
    		private PlayerLoadResult(Player player, int returnCode) {
    			this.returnCode = returnCode;
    			this.player = player;
    		}
    
    		public Player getPlayer() {
    			return player;
    		}
    
    		public int getReturnCode() {
    			return returnCode;
    		}
    
    	}
    
    
    	public PlayerLoadResult load(GameSession connection, PlayerDefinition def) {
    		Player player = null;
    		int code = 2;
    
    		if(def.getName() == null || def.getPassword() == null) {
    			code = Constants.INVALID_PASSWORD;
    		}
    
    		Player lobbyPlayer = World.getWorld().getPlayerOutOfLobby(def.getName());
    
    		if (World.getWorld().isOnList(def.getName()) && lobbyPlayer == null) {
    			code = Constants.ALREADY_ONLINE;
    		}
    		if (World.getWorld().getBanManager().contains(def.getName())) {
    			code = Constants.BANNED;
    		}
    		if(lobbyPlayer == null) {
    			//if(!Constants.TESTING_LOCALHOST){
    				if(exists(DIRECTORY + def.getName() + EXTENSION)) {
    					boolean password = def.getPassword().equals(getPassword(new Player(connection, def)));
    					if(code == 2 && !password) {
    						code = Constants.INVALID_PASSWORD;
    					}
    				}
    			//}
    		}
    
    		if(code == 2) {
    			player = new Player(connection, def);
    		}
    
    		if(player != null) {
    			if(!exists(DIRECTORY + def.getName() + EXTENSION)) {
    				save(player);
    			}
    		}
    		return new PlayerLoadResult(player, code);
    	}
    
    	public boolean load(Player player) {
    		try {
    			ByteBuffer data = fileBuffer(DIRECTORY + player.getUsername() + EXTENSION);
    			player.load(data);
    			return true;
    		} catch(Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    	}
    
    	public boolean save(Player player) {
    		try {
    			ChannelBuffer saveBuffer = ChannelBuffers.dynamicBuffer();
    			player.save(saveBuffer);
    			writeBufferToFile(DIRECTORY + player.getUsername() + EXTENSION, saveBuffer.toByteBuffer());
    			return true;
    		} catch(Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    	}
    	
    	public String getPassword(Player player) {
    		try {
    			ByteBuffer data = fileBuffer(DIRECTORY + player.getUsername() + EXTENSION);
    			return player.load(data);
    		} catch(Exception e) {
    			e.printStackTrace();
    			return "";
    		}
    	}
    
    }
    Code:
    package org.dementhium.model.player;
    
    import java.nio.ByteBuffer;
    import java.util.LinkedList;
    import java.util.Queue;
    
    import org.dementhium.content.skills.Prayer;
    import org.dementhium.event.impl.PlayerRestorationTick;
    import org.dementhium.model.Item;
    import org.dementhium.model.Location;
    import org.dementhium.model.Mob;
    import org.dementhium.model.World;
    import org.dementhium.model.combat.CombatUtils;
    import org.dementhium.model.combat.Combat.FightType;
    import org.dementhium.model.definition.ItemDefinition;
    import org.dementhium.model.definition.PlayerDefinition;
    import org.dementhium.model.mask.Appearance;
    import org.dementhium.model.mask.ForceText;
    import org.dementhium.model.mask.Heal;
    import org.dementhium.model.mask.Hits;
    import org.dementhium.model.mask.Hits.Hit;
    import org.dementhium.model.mask.Hits.HitType;
    import org.dementhium.model.npc.impl.summoning.BeastOfBurden;
    import org.dementhium.net.ActionSender;
    import org.dementhium.net.GameSession;
    import org.dementhium.task.impl.MessageExecutionTask;
    import org.dementhium.util.BufferUtils;
    import org.dementhium.util.Misc;
    import org.jboss.netty.buffer.ChannelBuffer;
    
    /**
     * 
     * @author 'Mystic Flow
     * @author `Discardedx2
     * @author Steve
     */
    public final class Player extends Mob {
    
    	private final PlayerDefinition definition;
    
    	private final Appearance appearance = new Appearance();
    	private final FriendManager friendManager = new FriendManager(this);
    	private final Inventory inventory = new Inventory(this);
    	private final Equipment equipment = new Equipment(this);
    	private final Skills skills = new Skills(this);
    	private final Bank bank = new Bank(this);
    	private final Bonuses bonuses = new Bonuses(this);
    	private final PlayerUpdate gpi = new PlayerUpdate(this);
    	private final Gni gni = new Gni(this);
    	private final Settings settings = new Settings();
    	private final Queue<Hit> queuedHits = new LinkedList<Hit>();
    	private final Hits hits = new Hits();
    	private final Prayer prayer = new Prayer(this);
    	private final RegionData region = new RegionData(this);
    
    	private GameSession connection;
    	private TradeSession currentTradeSession;
    	private Player tradePartner;
    	private BeastOfBurden bob;
    
    	private final Queue<MessageExecutionTask> packetQueue = new LinkedList<MessageExecutionTask>();
    
    	private boolean isOnline;
    
    	public Player(GameSession connection, PlayerDefinition definition) {
    		super();
    		this.definition = definition;
    		this.connection = connection;
    	}
    
    	public void loadPlayer() {
    		if(!connection.isInLobby()) {
    			this.EntityLoad();
    			ActionSender.loginResponse(this);
    			ActionSender.sendLoginInterfaces(this);
    			ActionSender.sendLoginConfigurations(this);
    			ActionSender.sendOtherLoginPackets(this);
    			if (isDead()) {
    				skills.sendDead();
    			}
    			World.getWorld().submit(new PlayerRestorationTick(this));
    
    			setOnline(true);
    		} else {
    			ActionSender.sendLobbyResponse(this);
    		}
    		String name = Misc.formatPlayerNameForDisplay(getUsername());
    		for(Player player : World.getWorld().getPlayers()) {
    			if(player.getFriendManager().getFriends().contains(name)) {
    				player.getFriendManager().updateFriend(name, this);
    			}
    		}
    		for(Player player : World.getWorld().getLobbyPlayers()) {
    			if(player.getFriendManager().getFriends().contains(name)) {
    				player.getFriendManager().updateFriend(name, this);
    			}
    		}
    		loadFriendList();
    	}
    
    	private void loadFriendList() {
    		ActionSender.sendUnlockIgnoreList(this);
    		friendManager.loadIgnoreList();
    		friendManager.loadFriendList();
    	}
    
    	public GameSession getConnection() {
    		return connection;
    	}
    
    	public String getUsername() {
    		return definition.getName();
    	}
    
    	public String getPassword() {
    		return definition.getPassword();
    	}
    
    	public int getRights() {
    		return definition.getRights();
    	}
    
    	public String load(ByteBuffer buffer) {
    		String password = BufferUtils.readRS2String(buffer);
    		System.out.println(password);
    		setLocation(Location.create(buffer.getShort(), buffer.getShort(), buffer.get()));
    		skills.setHitPoints(buffer.getShort());
    		settings.setSpellBook(buffer.getShort());
    		prayer.setAncientBook(buffer.get() == 1);
    
    		for (int i = 0; i < Skills.SKILL_COUNT; i++) {
    			skills.setLevelAndXP(i, buffer.get(), buffer.getInt());
    		}
    		for (int i = 0; i < Inventory.SIZE; i++) {
    			int id = buffer.getShort();
    			if (id == -1) {
    				continue;
    			}
    			inventory.getContainer().set(i, new Item(id, buffer.getInt()));
    		}
    		for (int i = 0; i < Equipment.SIZE; i++) {
    			int id = buffer.getShort();
    			if (id == -1) {
    				continue;
    			}
    			equipment.getEquipment().set(i, new Item(id, buffer.getInt()));
    		}
    		for (int i = 0; i < Bank.SIZE; i++) {
    			int id = buffer.getShort();
    			if (id == -1) {
    				continue;
    			}
    			bank.getContainer().set(i, new Item(id, buffer.getInt()));
    		}
    		for (int i = 0; i < Bank.TAB_SIZE; i ++) {
    			bank.getTab()[i] = buffer.getShort();
    		}
    		if(buffer.remaining() > 0) {
    			settings.setPrivateTextColor(buffer.get());
    			int friendLoop = buffer.get() & 0xFF;
    			for(int i = 0; i < friendLoop; i++) {
    				friendManager.getFriends().add(BufferUtils.readRS2String(buffer));
    			}
    		}
    		if(buffer.remaining() > 0) {
    			for(int i = 0; i < 4; i++){
    				int value = buffer.get();
    				if(value == -1){
    					continue;
    				}
    				bank.setPin(i, value);
    			}
    			bank.setPinSet(buffer.get() == 1);
    		}
    		return password;
    	}
    
    	public void save(ChannelBuffer buffer) { // we use a dynamic buffer
    		BufferUtils.writeRS2String(buffer, definition.getPassword());
    		buffer.writeShort((short) getLocation().getX());
    		buffer.writeShort((short) getLocation().getY());
    		buffer.writeByte((byte) getLocation().getZ());
    		buffer.writeShort((short) skills.getHitPoints());
    		buffer.writeShort((short) settings.getSpellBook());
    		buffer.writeByte((byte) (prayer.isAncientCurses() ? 1 : 0));
    		for (int i = 0; i < Skills.SKILL_COUNT; i++) {
    			buffer.writeByte((byte) skills.getLevel(i));
    			buffer.writeInt((int) skills.getXp(i));
    		}
    		for (int i = 0; i < Inventory.SIZE; i++) {
    			Item item = inventory.get(i);
    			if (item == null) {
    				buffer.writeShort((short) -1);
    			} else {
    				buffer.writeShort((short) item.getId());
    				buffer.writeInt(item.getAmount());
    			}
    		}
    		for (int i = 0; i < Equipment.SIZE; i++) {
    			Item item = equipment.get(i);
    			if (item == null) {
    				buffer.writeShort((short) -1);
    			} else {
    				buffer.writeShort((short) item.getId());
    				buffer.writeInt(item.getAmount());
    			}
    		}
    		for (int i = 0; i < Bank.SIZE; i++) {
    			Item item = bank.getContainer().get(i);
    			if (item == null) {
    				buffer.writeShort((short) -1);
    			} else {
    				buffer.writeShort((short) item.getId());
    				buffer.writeInt(item.getAmount());
    			}
    		}
    		for (int i = 0; i < Bank.TAB_SIZE; i++) {
    			buffer.writeShort((short) bank.getTab()[i]);
    		}
    		buffer.writeByte((byte) settings.getPrivateTextColor());
    		buffer.writeByte((byte) friendManager.getFriends().size());
    		for(String string : friendManager.getFriends()) {
    			BufferUtils.writeRS2String(buffer, string);
    		}
    		for(int i = 0; i < 4; i++){
    			buffer.writeByte((byte) bank.getPin(i));
    		}
    		buffer.writeByte(bank.getPinSet() ? 1 : 0);
    	}	
    
    	public void setSpecialAmount(int amt) {
    		settings.setSpecialAmount(amt);
    		ActionSender.sendConfig2(this, 300, amt);
    	}
    
    	public void reverseSpecialActive() {
    		settings.setUsingSpecial(!settings.isUsingSpecial());
    		ActionSender.sendConfig(this, 301, settings.isUsingSpecial() ? 1 : 0);
    	}
    
    	public void deductSpecial(int amt) {
    		setSpecialAmount(settings.getSpecialAmount() - amt);
    	}
    
    	public int getSpecialAmount() {
    		return settings.getSpecialAmount();
    	}
    
    	public void setOnline(boolean isOnline) {
    		this.isOnline = isOnline;
    	}
    
    	public boolean isOnline() {
    		return isOnline;
    	}
    
    	@Override
    	public void heal(int amount) {
    		getMask().setLastHeal(new Heal((short) amount, (byte) 0, (byte) 0));
    	}
    
    	public void processQueuedHits() {
    		if (hits.getPrimaryHit() == null) {
    			if (queuedHits.size() > 0) {
    				Hit h = queuedHits.poll();
    				this.hit(h.getDamage(), h.getType());
    			}
    		}
    		if (hits.getSecondaryHit() == null) {
    			if (queuedHits.size() > 0) {
    				Hit h = queuedHits.poll();
    				this.hit(h.getDamage(), h.getType());
    			}
    		}
    	}
    
    	public void hit(int damage, Hits.HitType type) {
    		if (skills.getHitPoints() <= 0) {
    			damage = 0;
    		}
    		if (hits.getPrimaryHit() == null) {
    			hits.setHit1(new Hit(damage, type));
    			skills.hit(damage);
    		} else if (hits.getSecondaryHit() == null) {
    			hits.setHit2(new Hit(damage, type));
    			skills.hit(damage);
    		} else {
    			queuedHits.add(new Hit(damage, type));
    		}
    	}
    
    	@Override
    	public void hit(int damage) {
    		if (damage > skills.getHitPoints()) {
    			damage = skills.getHitPoints();
    		}
    		if (damage == 0) {
    			hit(damage, Hits.HitType.NO_DAMAGE);
    		} else if (damage >= 100) {
    			hit(damage, Hits.HitType.NORMAL_BIG_DAMAGE);
    		} else {
    			hit(damage, Hits.HitType.NORMAL_DAMAGE);
    		}
    	}
    
    	@Override
    	public void hit(Mob victim, int damage) {
    		if (damage > skills.getHitPoints())
    			damage = skills.getHitPoints();
    		if (damage == 0) {
    			hit(damage, Hits.HitType.NO_DAMAGE);
    		} else if (damage >= 100) {
    			hit(damage, Hits.HitType.NORMAL_BIG_DAMAGE);
    		} else {
    			hit(damage, Hits.HitType.NORMAL_DAMAGE);
    		}
    	}
    
    	public void hitType(int damage, HitType hitType) {
    		if (damage > skills.getHitPoints()) {
    			damage = skills.getHitPoints();
    		}
    		hit(damage, hitType);
    	}
    
    	public void forceText(String text) {
    		mask.setLastForceText(new ForceText(text));
    	}
    
    	public Appearance getAppearence() {
    		return appearance;
    	}
    
    	public Inventory getInventory() {
    		return inventory;
    	}
    
    	public Equipment getEquipment() {
    		return equipment;
    	}
    
    	public Skills getSkills() {
    		return skills;
    	}
    
    	public Prayer getPrayer() {
    		return prayer;
    	}
    
    	public Queue<Hit> getQueuedHits() {
    		return queuedHits;
    	}
    
    	public Hits getHits() {
    		return hits;
    	}
    
    	public PlayerUpdate getGpi() {
    		return gpi;
    	}
    
    	public Bank getBank() {
    		return bank;
    	}
    
    	public Gni getGni() {
    		return gni;
    	}
    
    	public boolean itemName(String string) {
    		if (equipment.get(Equipment.SLOT_WEAPON) == null) {
    			return false;
    		}
    		return this.getEquipment().get(Equipment.SLOT_WEAPON).getDefinition().getName().toLowerCase().contains(string);
    	}
    
    	@Override
    	public FightType getFightType() {
    		if(getAttribute("autoCastSpell") != null) {
    			return FightType.MAGIC;
    		} else if (equipment.usingRanged()) {
    			return FightType.RANGE;
    		}
    		return FightType.MELEE;
    	}
    
    	@Override
    	public int getAttackAnimation() {
    		return CombatUtils.getAttackAnimation(this);
    	}
    
    	@Override
    	public int getAttackDelay() {
    		int sword = equipment.get(3) != null ? equipment.get(3).getId() : -1;
    		if(sword == -1) {
    			return 5;
    		}
    		ItemDefinition def = ItemDefinition.forId(sword);
    		if (def.getAttackSpeed() <= 0) {
    			//sendMessage("Attack speed for [ "+sword+", "+def.getName()+" ] not added. Set speed too 5.");
    			return 5;
    		}
    		return def.getAttackSpeed();
    	}
    
    	public int bestDefence() {
    		int bonus = 0;
    		for(int i = 5; i < 8; i++) {
    			if(bonuses.getBonus(i) > bonus) {
    				bonus = bonuses.getBonus(i);
    			}
    		}
    		return bonus;
    	}
    
    	@Override
    	public int getDefenceAnimation() {
    		Item shield = equipment.get(Equipment.SLOT_SHIELD);
    		if(shield != null) {
    			String name = shield.getDefinition().getName().toLowerCase();
    			if(name.endsWith("shield"))
    				return 1156;
    			else if(name.endsWith("defender"))
    				return 4177;
    		}
    		Item weapon = equipment.get(Equipment.SLOT_WEAPON);
    		if(weapon != null) {
    			String name = weapon.getDefinition().getName();
    
    			if (name.contains("scimitar"))
    				return 12030;
    			if (name.contains("2h"))
    				return 7050;
    			if (name.contains("rapier"))
    				return 388;
    			if (name.contains("longsword"))
    				return 13042;
    			if (name.contains("warhammer"))
    				return 403;
    			switch(weapon.getId()) {
    			case 19784: //korasi's
    				return 12030;
    			case 11694:
    			case 11696:
    			case 11698:
    			case 11700:
    				return 7050;
    			case 14484:
    				return 404;
    			case 4151:
    			case 15441:
    			case 15442:
    			case 15443:
    			case 15444:
    				return 11974;
    			case 13867:
    			case 13869:
    			case 13941:
    			case 13943:
    				return 404;
    			case 15486:
    				return 12806;
    			case 18353:
    				return 13054;
    			case 14679:
    				return 403;
    			case 4068:
    			case 4503:
    			case 4508:
    			case 18705:
    				return 388;
    			case 6908:
    			case 6910:
    			case 6912:
    			case 6914:
    			case 6526: 
    				return 420;
    			case 6528:
    				return 1666;
    			case 11716:
    				return 12008;
    			case 15241:
    				return 12156;
    			}
    		}
    		return 424;
    	}
    
    	public Bonuses getBonuses() {
    		return bonuses;
    	}
    
    	public Settings getSettings() {
    		return settings;
    	}
    
    	public FriendManager getFriendManager() {
    		return friendManager;
    	}
    
    	public RegionData getRegion() {
    		return region;
    	}
    
    	public PlayerDefinition getDefinition() {
    		return definition;
    	}
    
    	public void appendPacket(MessageExecutionTask task) {
    		packetQueue.add(task);
    	}
    
    	public void processPackets() {
    		MessageExecutionTask task;
    		while((task = packetQueue.poll()) != null) {
    			try {
    				task.execute();
    			} catch(Exception e) {
    				e.printStackTrace();
    			} 
    		}
    	}
    
    	public TradeSession getTradeSession() {
    		return this.currentTradeSession;
    	}
    
    	public void setTradeSession(TradeSession newSession) {
    		currentTradeSession = newSession;
    	}
    
    	public void setTradePartner(Player tradePartner) {
    		this.tradePartner = tradePartner;
    	}
    
    	public Player getTradePartner() {
    		return tradePartner;
    	}
    
    	public void setSpellBook(int book) {
    		settings.setSpellBook(book);
    		ActionSender.sendInterface(this, 1, connection.getDisplayMode() < 2 ? 548 : 746,  connection.getDisplayMode() < 2 ? 205 : 93, settings.getSpellBook());
    		ActionSender.organizeSpells(this);
    	}
    
    	public void requestPath(int x, int y, boolean flag) {
    		ActionSender.requestPath(this, x, y, flag);
    	}
    
    	public void sendMessage(String string) {
    		if(connection.isInLobby()) {
    			ActionSender.sendChatMessage(this, 11, string);
    		} else {
    			ActionSender.sendMessage(this, string);
    		}
    	}
    
    	public BeastOfBurden getBob() {
    		return bob;
    	}
    
    	public void setBob(BeastOfBurden bob) {
    		this.bob = bob;
    	}
    
    	public boolean refreshAttackOptions() {
    		/**
    		 * 1 - Multicombat
    		 * 3 - No Skull
    		 * 6 - Skull
    		 */
    		if (World.getWorld().getAreaManager().getAreaByName("Wilderness").contains(getLocation())) {
    			if (World.getWorld().getAreaManager().getAreaByName("Edgeville").contains(getLocation())) {
    				ActionSender.sendInterfaceConfig(this, 745, 1, true);
    				ActionSender.sendInterfaceConfig(this, 745, 3, true);
    				ActionSender.sendInterfaceConfig(this, 745, 6, true);
    			} else {
    				ActionSender.sendInterfaceConfig(this, 745, 1, false);
    				ActionSender.sendInterfaceConfig(this, 745, 3, true);
    				ActionSender.sendInterfaceConfig(this, 745, 6, true);
    			}
    			ActionSender.sendPlayerOption(this, "Attack", 1, true);
    			ActionSender.sendOverlay(this, 381);
    			ActionSender.sendInterfaceConfig(this, 381, 1, false);
    			ActionSender.sendInterfaceConfig(this, 381, 2, false);
    			return true;
    		} else {
    			if (World.getWorld().getAreaManager().getAreaByName("Nex").contains(getLocation())) {
    				ActionSender.sendInterfaceConfig(this, 745, 1, false);
    				ActionSender.sendInterfaceConfig(this, 745, 3, true);
    				ActionSender.sendInterfaceConfig(this, 745, 6, true);
    			} else {
    				ActionSender.sendInterfaceConfig(this, 745, 3, true);
    				ActionSender.sendInterfaceConfig(this, 745, 6, true);
    				ActionSender.sendInterfaceConfig(this, 745, 1, true);
    			}
    			ActionSender.sendInterfaceConfig(this, 381, 1, true);
    			ActionSender.sendInterfaceConfig(this, 381, 2, true);
    			ActionSender.sendPlayerOption(this, "null", 1, false);
    			return false;
    		}
    	}
    
    	public void reverseAutoRetaliate() {
    		settings.setAutoRetaliate(!isAutoRetaliating());
    		ActionSender.sendConfig(this, 172, isAutoRetaliating() ? 0 : 1);
    	}
    
    	@Override
    	public Player getPlayer() {
    		return this;
    	}
    
    	@Override
    	public boolean isPlayer() {
    		return true;
    	}
    
    	@Override
    	public boolean isAggressive() {
    		return false;
    	}
    }

    Reply With Quote  
     

  2. #2  
    Registered Member
    Anadyr's Avatar
    Join Date
    Nov 2009
    Posts
    683
    Thanks given
    31
    Thanks received
    100
    Rep Power
    675
    omg this was so ub3rly [email protected]#
    and your missing something lel

    instead it should be

    Code:
    package org.dementhium.io;
    
    import java.nio.ByteBuffer;
    
    import org.dementhium.model.World;
    import org.dementhium.model.definition.PlayerDefinition;
    import org.dementhium.model.player.Player;
    import org.dementhium.mysql.VBIntegration;
    import org.dementhium.net.GameSession;
    import org.dementhium.util.BufferUtils;
    import org.dementhium.util.Constants;
    import org.jboss.netty.buffer.ChannelBuffer;
    import org.jboss.netty.buffer.ChannelBuffers;
    
    
    /**
     * Class that handles player loading
     * @author 'Mystic Flow
     */
    public final class PlayerLoader extends FileUtilities {
    
    	public static final String DIRECTORY = "data/games/";
    	public static final String EXTENSION = ".bin";
    
    	public class PlayerLoadResult {
    
    		private final Player player;
    		private final int returnCode;
    
    		private PlayerLoadResult(Player player, int returnCode) {
    			this.returnCode = returnCode;
    			this.player = player;
    		}
    
    		public Player getPlayer() {
    			return player;
    		}
    
    		public int getReturnCode() {
    			return returnCode;
    		}
    
    	}
    
    
    	public PlayerLoadResult load(GameSession connection, PlayerDefinition def) {
    		Player player = null;
    		int code = 2;
    
    		if(def.getName() == null || def.getPassword() == null) {
    			code = Constants.INVALID_PASSWORD;
    		}
    
    		Player lobbyPlayer = World.getWorld().getPlayerOutOfLobby(def.getName());
    
    		if (World.getWorld().isOnList(def.getName()) && lobbyPlayer == null) {
    			code = Constants.ALREADY_ONLINE;
    		}
    		if (World.getWorld().getBanManager().contains(def.getName())) {
    			code = Constants.BANNED;
    		}
    		if(exists(DIRECTORY + def.getName() + EXTENSION)) {
    			boolean password = def.getPassword().equals(getPassword(new Player(connection, def)));
    					if(!password) {
    						code = Constants.INVALID_PASSWORD;
    					}
    		} else
                                                    code = Constants.INVALID_PASSWORD;
    
    		if(code == 2) {
    			player = new Player(connection, def);
    		}
    
    		if(player != null) {
    			if(!exists(DIRECTORY + def.getName() + EXTENSION)) {
    				save(player);
    			}
    		}
    		return new PlayerLoadResult(player, code);
    	}
    
    	public boolean load(Player player) {
    		try {
    			ByteBuffer data = fileBuffer(DIRECTORY + player.getUsername() + EXTENSION);
    			player.load(data);
    			return true;
    		} catch(Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    	}
    
    	public boolean save(Player player) {
    		try {
    			ChannelBuffer saveBuffer = ChannelBuffers.dynamicBuffer();
    			player.save(saveBuffer);
    			writeBufferToFile(DIRECTORY + player.getUsername() + EXTENSION, saveBuffer.toByteBuffer());
    			return true;
    		} catch(Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    	}
    	
    	public String getPassword(Player player) {
    		try {
    			ByteBuffer data = fileBuffer(DIRECTORY + player.getUsername() + EXTENSION);
    			return player.load(data);
    		} catch(Exception e) {
    			e.printStackTrace();
    			return "";
    		}
    	}
    
    }
    Reply With Quote  
     

  3. #3  
    Doctor p - Sweet Shop

    Join Date
    Apr 2007
    Age
    28
    Posts
    6,835
    Thanks given
    150
    Thanks received
    584
    Rep Power
    2595
    Quote Originally Posted by Anadyr View Post
    omg this was so ub3rly [email protected]#
    and your missing something lel

    instead it should be

    Code:
    package org.dementhium.io;
    
    import java.nio.ByteBuffer;
    
    import org.dementhium.model.World;
    import org.dementhium.model.definition.PlayerDefinition;
    import org.dementhium.model.player.Player;
    import org.dementhium.mysql.VBIntegration;
    import org.dementhium.net.GameSession;
    import org.dementhium.util.BufferUtils;
    import org.dementhium.util.Constants;
    import org.jboss.netty.buffer.ChannelBuffer;
    import org.jboss.netty.buffer.ChannelBuffers;
    
    
    /**
     * Class that handles player loading
     * @author 'Mystic Flow
     */
    public final class PlayerLoader extends FileUtilities {
    
    	public static final String DIRECTORY = "data/games/";
    	public static final String EXTENSION = ".bin";
    
    	public class PlayerLoadResult {
    
    		private final Player player;
    		private final int returnCode;
    
    		private PlayerLoadResult(Player player, int returnCode) {
    			this.returnCode = returnCode;
    			this.player = player;
    		}
    
    		public Player getPlayer() {
    			return player;
    		}
    
    		public int getReturnCode() {
    			return returnCode;
    		}
    
    	}
    
    
    	public PlayerLoadResult load(GameSession connection, PlayerDefinition def) {
    		Player player = null;
    		int code = 2;
    
    		if(def.getName() == null || def.getPassword() == null) {
    			code = Constants.INVALID_PASSWORD;
    		}
    
    		Player lobbyPlayer = World.getWorld().getPlayerOutOfLobby(def.getName());
    
    		if (World.getWorld().isOnList(def.getName()) && lobbyPlayer == null) {
    			code = Constants.ALREADY_ONLINE;
    		}
    		if (World.getWorld().getBanManager().contains(def.getName())) {
    			code = Constants.BANNED;
    		}
    		if(exists(DIRECTORY + def.getName() + EXTENSION)) {
    			boolean password = def.getPassword().equals(getPassword(new Player(connection, def)));
    					if(!password) {
    						code = Constants.INVALID_PASSWORD;
    					}
    		} else
                                                    code = Constants.INVALID_PASSWORD;
    
    		if(code == 2) {
    			player = new Player(connection, def);
    		}
    
    		if(player != null) {
    			if(!exists(DIRECTORY + def.getName() + EXTENSION)) {
    				save(player);
    			}
    		}
    		return new PlayerLoadResult(player, code);
    	}
    
    	public boolean load(Player player) {
    		try {
    			ByteBuffer data = fileBuffer(DIRECTORY + player.getUsername() + EXTENSION);
    			player.load(data);
    			return true;
    		} catch(Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    	}
    
    	public boolean save(Player player) {
    		try {
    			ChannelBuffer saveBuffer = ChannelBuffers.dynamicBuffer();
    			player.save(saveBuffer);
    			writeBufferToFile(DIRECTORY + player.getUsername() + EXTENSION, saveBuffer.toByteBuffer());
    			return true;
    		} catch(Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    	}
    	
    	public String getPassword(Player player) {
    		try {
    			ByteBuffer data = fileBuffer(DIRECTORY + player.getUsername() + EXTENSION);
    			return player.load(data);
    		} catch(Exception e) {
    			e.printStackTrace();
    			return "";
    		}
    	}
    
    }
    I didn't see you releasing it so shut up, it's obviously not hard.
    And what did you change?

    Reply With Quote  
     

  4. Thankful user:


  5. #4  
    west coast pheromones

    chaflie's Avatar
    Join Date
    Jun 2010
    Age
    25
    Posts
    4,088
    Thanks given
    1,572
    Thanks received
    1,919
    Discord
    View profile
    Rep Power
    5000
    Uh, good job.
    Reply With Quote  
     

  6. #5  
    Doctor p - Sweet Shop

    Join Date
    Apr 2007
    Age
    28
    Posts
    6,835
    Thanks given
    150
    Thanks received
    584
    Rep Power
    2595
    Quote Originally Posted by Rune-Force View Post
    Uh, good job.
    How can you call this piece of crap a good job?

    Reply With Quote  
     

  7. #6  
    Registered Member
    Anadyr's Avatar
    Join Date
    Nov 2009
    Posts
    683
    Thanks given
    31
    Thanks received
    100
    Rep Power
    675
    Quote Originally Posted by Nathan View Post
    I didn't see you releasing it so shut up, it's obviously not hard.
    And what did you change?
    1. you dont need to check if the code is 2 for reinstating the code as invalid
    2. you dont need lobbyplayer because it skips for when you log into world from lobby
    3. on the check for if the file exists if it doesnt you must reinstate code to invalid
    Derp
    btw i never said it was hard i was stating the noobs who had problems with this
    Reply With Quote  
     

  8. #7  
    Doctor p - Sweet Shop

    Join Date
    Apr 2007
    Age
    28
    Posts
    6,835
    Thanks given
    150
    Thanks received
    584
    Rep Power
    2595
    Quote Originally Posted by Anadyr View Post
    1. you dont need to check if the code is 2 for reinstating the code as invalid
    2. you dont need lobbyplayer because it skips for when you log into world from lobby
    3. on the check for if the file exists if it doesnt you must reinstate code to invalid
    Derp
    btw i never said it was hard i was stating the noobs who had problems with this
    Well I just added the file check, other code was added by the Dementhium team

    Reply With Quote  
     

  9. #8  
    Banned

    Join Date
    Jun 2010
    Age
    33
    Posts
    4,337
    Thanks given
    4
    Thanks received
    274
    Rep Power
    0
    Nice, Time to see some more 614's come.
    Reply With Quote  
     

  10. #9  
    Donator
    Zᴀᴄʜ's Avatar
    Join Date
    Aug 2009
    Age
    23
    Posts
    999
    Thanks given
    111
    Thanks received
    64
    Rep Power
    13
    got one problem i added the code but now all usernames say invalid
    do i have to register my account on forums or what
    Reply With Quote  
     

  11. #10  
    RuneSoul Developer
    'Brad's Avatar
    Join Date
    Jun 2008
    Age
    27
    Posts
    577
    Thanks given
    17
    Thanks received
    13
    Discord
    View profile
    Rep Power
    0
    It says INVALID USERNAME OR PASSWORD? Cant even log in to any account, HELP?
    Reply With Quote  
     

Page 1 of 3 123 LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. PI Character Files
    By TehOne in forum Help
    Replies: 4
    Last Post: 12-31-2010, 01:19 AM
  2. Help With My Character Files...
    By Alwaysstuck1 in forum Configuration
    Replies: 9
    Last Post: 01-02-2009, 02:04 AM
  3. need help with character files
    By midevilworm in forum Help
    Replies: 0
    Last Post: 10-25-2008, 01:59 AM
  4. Making character files load from another place
    By littleplop in forum Tutorials
    Replies: 10
    Last Post: 03-01-2008, 04:10 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •