Thread: [Ruse] Compilation of bug fixes

Page 1 of 7 123 ... LastLast
Results 1 to 10 of 66
  1. #1 [Ruse] Compilation of bug fixes 
    Banned

    Join Date
    Jul 2015
    Posts
    607
    Thanks given
    520
    Thanks received
    660
    Rep Power
    0
    All bug fixes for Ruse that I do will be found here. This will allow everyone to keep their Ruse bases as bug-free as possible!

    This thread is updated regularly, so make sure to check back on it if you use Ruse as a base!

    Spoiler for npc-agression:

    Npcs who are dragged far out of their 'home-areas' stop autoretaliate.
    To fix, replace these two methods in NPCMovementCoordinator:

    Code:
    public void sequence() {
    		if (coordinateState == CoordinateState.HOME && !coordinator.isCoordinate())
    			return;
    		switch (coordinateState) {
    		case HOME:
    			
    			if (npc.getCombatBuilder().isBeingAttacked() || npc.getCombatBuilder().isAttacking())
    				return;
    			
    			if (npc.getMovementQueue().isMovementDone()) {
    				if (Misc.getRandom(10) <= 1) {
    					Position pos = generateLocalPosition();
    					if(pos != null) {
    						npc.getMovementQueue().walkStep(pos.getX(), pos.getY());
    					}
    				}
    			}
    			
    			break;
    		case AWAY:
    			npc.getCombatBuilder().reset(true);
    			PathFinder.findPath(npc, npc.getDefaultPosition().getX(), npc.getDefaultPosition().getY(), true, 1, 1);
    			break;
    		}
    	}
    
    	public void updateCoordinator() {
    		if (coordinateState == CoordinateState.HOME && !coordinator.isCoordinate())
    			return;
    		int deltaX = npc.getPosition().getX() - npc.getDefaultPosition().getX();
    		int deltaY = npc.getPosition().getY() - npc.getDefaultPosition().getY();
    		
    		if((deltaX > coordinator.getRadius()) || (deltaY > coordinator.getRadius())) {
    			if(Location.ignoreFollowDistance(npc) || npc.getMovementQueue().getFollowCharacter() != null || npc.getCombatBuilder().isAttacking() || npc.getCombatBuilder().isBeingAttacked()) {
    				return;
    			}
    			coordinateState = CoordinateState.AWAY;
    		} else {
    			coordinateState = CoordinateState.HOME;
    		}
    	}


    Spoiler for attack-styles:

    When changing weapons, attack styles mess up. An example of this is whip > dds..
    To fix, open up WeaponInterfaces.java and replace void assign with this one:

    Code:
    public static void assign(Player player, Item item) {
    		WeaponInterface weapon;
    		FightType fightStyle;
    
    		fightStyle = player.getFightType();
    		
    		if(item == null || item.getId() == -1) {
    			weapon = WeaponInterface.UNARMED;
    		} else {
    			weapon = interfaces.get(item.getId());
    		}
    		
    		if(weapon == null)
    			weapon = WeaponInterface.UNARMED;
    
    		if (weapon == WeaponInterface.UNARMED) {
    			player.getPacketSender().sendTabInterface(0, weapon.getInterfaceId());
    			player.getPacketSender().sendString(weapon.getNameLineId(), "Unarmed");
    			player.setWeapon(WeaponInterface.UNARMED);
    		} else if (weapon == WeaponInterface.CROSSBOW) {
    			player.getPacketSender().sendString(weapon.getNameLineId() - 1, "Weapon: ");
    		} else if (weapon == WeaponInterface.WHIP) {
    			player.getPacketSender().sendString(weapon.getNameLineId() - 1, "Weapon: ");
    		}
    
    		player.getPacketSender().sendItemOnInterface(
    				weapon.getInterfaceId() + 1, 200, item.getId());
    		player.getPacketSender().sendTabInterface(0,
    				weapon.getInterfaceId());
    		player.getPacketSender().sendString(
    				weapon.getNameLineId(), item.getDefinition().getName());
    		player.setWeapon(weapon);
    		CombatSpecial.assign(player);
    		CombatSpecial.updateBar(player);
    
    		for (FightType type : weapon.getFightType()) {
    			if (type.getStyle() == player.getFightType().getStyle()) {
    				player.setFightType(type);
    				player.getPacketSender().sendConfig(player.getFightType().getParentId(), player.getFightType().getChildId());
    				return;
    			}
    		}
    		
    		int fightTypeIndex = 0;
    		
    		if(fightStyle != null) { //Fix for weapon style changes
    			if(fightStyle.getChildId() < weapon.getFightType().length) {
    				fightTypeIndex = fightStyle.getChildId();
    			}
    		}
    
    		player.setFightType(player.getWeapon().getFightType()[fightTypeIndex]);
    		player.getPacketSender().sendConfig(player.getFightType().getParentId(), player.getFightType().getChildId());
    	}


    Spoiler for combat:

    Quote Originally Posted by Swiffy View Post
    Not going to release the fix for the unsynched combat system since people have paid for it, but I'll point you in the right directions;

    • The game engine's cycle rate should be changed back from 200ms to 600ms again, this can be done via the constant field in GameSettings
    • All combat classes shouldn't be ran by tasks, using process would actually be better since ticking becomes impossible when using tasks
    • Food delay should be changed from 1300 to 1100 ms


    ..etc, common sense really


    Spoiler for Summoning improvements&more:

    Since a lot of people have been wanting to buy this lately, I've decided to release it instead.

    Summoning was never finished properly in Ruse. Players can kill their own familiars and more. Familiars don't aid properly in combat either. To fix that, simply follow this snippet.

    First of all, open CombatFactory and find this in the checkHook boolean:
    Code:
    			if(npc.isSummoningNpc() && ((Player)entity).getLocation() != Location.WILDERNESS) {
    				((Player)entity).getPacketSender().sendMessage("You can only attack familiars in the wilderness.");
    				entity.getCombatBuilder().reset(true);
    				return false;
    			}
    Replace that small part of code with this:

    Code:
    			if(npc.isSummoningNpc()) {
    				Player player = ((Player)entity);
    				if(player.getLocation() != Location.WILDERNESS) {
    					player.getPacketSender().sendMessage("You can only attack familiars in the wilderness.");
    					player.getCombatBuilder().reset(true);
    					return false;
    				} else if(npc.getLocation() != Location.WILDERNESS) {
    					player.getPacketSender().sendMessage("That familiar is not in the wilderness.");
    					player.getCombatBuilder().reset(true);
    					return false;
    				}
    				/** DEALING DMG TO THEIR OWN FAMILIAR **/
    				if(player.getSummoning().getFamiliar() != null && player.getSummoning().getFamiliar().getSummonNpc() != null && player.getSummoning().getFamiliar().getSummonNpc().getIndex() == npc.getIndex()) {
    					return false;
    				}
    			}
    Now scroll down a little bit until you find this (in the same method):
    Code:
    		if (victim.getCombatBuilder().getLastAttacker() != null && !Location.inMulti(entity) && victim.getCombatBuilder().isBeingAttacked() && !victim.getCombatBuilder().getLastAttacker().equals(
    				entity)) {
    			if (entity.isPlayer())
    				((Player) entity).getPacketSender().sendMessage(
    						"They are already under attack!");
    			entity.getCombatBuilder().reset(true);
    			return false;
    		}
    Replace it with this:

    Code:
    if(!(entity.isNpc() && ((NPC)entity).isSummoningNpc())) {
    			boolean allowAttack = false;
    			if (victim.getCombatBuilder().getLastAttacker() != null && !Location.inMulti(entity) && victim.getCombatBuilder().isBeingAttacked() && !victim.getCombatBuilder().getLastAttacker().equals(entity)) {
    				
    				if(victim.getCombatBuilder().getLastAttacker().isNpc()) {
    					NPC npc = (NPC)victim.getCombatBuilder().getLastAttacker();
    					if(npc.isSummoningNpc()) {
    						if(entity.isPlayer()) {
    							Player player = (Player)entity;
    							if(player.getSummoning().getFamiliar() != null && player.getSummoning().getFamiliar().getSummonNpc() != null && player.getSummoning().getFamiliar().getSummonNpc().getIndex() == npc.getIndex()) {
    								allowAttack = true;
    							}
    						}
    					}
    				}
    				
    				if(!allowAttack) {
    					if (entity.isPlayer())
    						((Player) entity).getPacketSender().sendMessage(
    								"They are already under attack!");
    					entity.getCombatBuilder().reset(true);
    					return false;
    				}
    			}
    		}
    Next, open up your Summoning.java and replace your entire processFamiliar method with this one:
    Code:
    public void processFamiliar() {
    		final NPC n = familiar.getSummonNpc();
    		TaskManager.submit(new Task(1, n, true) {
    			int clockTimer = 2;
    			@Override
    			protected void execute() {
    
    				if(familiar == null || n == null || n.getConstitution() <= 0 || !n.isRegistered() || player.getConstitution() <= 0 || !player.isRegistered()) {
    					unsummon(true, true);
    					stop();
    					return;
    				}
    
    				boolean underAttack = player.getCombatBuilder().isBeingAttacked() && player.getCombatBuilder().getLastAttacker() != null && player.getCombatBuilder().getLastAttacker().getCombatBuilder().getVictim() != null && player.getCombatBuilder().getLastAttacker().getCombatBuilder().getVictim() == player;
    				boolean attacking = player.getCombatBuilder().isAttacking(); 
    				if(!familiar.isPet() && n.getDefinition().isAttackable() && (underAttack || attacking)) {
    					if(n.getLocation() != Location.WILDERNESS || Location.inMulti(player)) {
    						n.setSummoningCombat(true);
    						n.getCombatBuilder().attack(attacking ? player.getCombatBuilder().getVictim() : player.getCombatBuilder().getLastAttacker());
    						n.setEntityInteraction(n.getCombatBuilder().getVictim());
    					}
    				} else {
    					if(n.getCombatBuilder().isAttacking()) {
    						n.getCombatBuilder().reset(true);
    					}
    					n.setSummoningCombat(false);
    					n.setEntityInteraction(player);
    					n.getMovementQueue().setFollowCharacter(player);
    				}
    				if(!familiar.isPet()) {
    					if(clockTimer >= 2) {
    						if(familiar.getDeathTimer() > 0) {
    							familiar.setDeathTimer(getFamiliar().getDeathTimer() - 1);
    							if(familiar.getDeathTimer() == 60)
    								player.getPacketSender().sendMessage("@red@Warning: Your familiar will fade away in one minute.");
    							player.getPacketSender().sendString(54043, ""+Summoning.getTimer(familiar.getDeathTimer() > 0 ? familiar.getDeathTimer() : 0));
    							//	player.getPacketSender().sendString(54024, ""+SummoningData.calculateScrolls(player));
    						} else {
    							unsummon(true, true);
    							stop();
    							player.getPacketSender().sendMessage("Your summoning familiar has died.");
    						}
    						clockTimer = 0;
    					}
    					clockTimer++;
    				}
    			}
    		});
    	}
    There you go, your familiars should now properly aid you when fighting other entities and you've also fixed a few bugs.


    Spoiler for Barrage-Gmaul-Abuse:
    Link:http://www.rune-server.org/runescape...age-abuse.html
    Fix:

    CombatSpecial, find:
    Code:
    if (spec == CombatSpecial.STAFF_OF_LIGHT && player.hasStaffOfLightEffect()) {
    				player.getPacketSender().sendMessage("You are already being protected by the Staff of Light!");
    				return;
    			}
    Replace with:
    Code:
    if(spec != CombatSpecial.STAFF_OF_LIGHT && player.isAutocast()) {
    				Autocasting.resetAutocast(player, true);
    			} else if (spec == CombatSpecial.STAFF_OF_LIGHT && player.hasStaffOfLightEffect()) {
    				player.getPacketSender().sendMessage("You are already being protected by the Staff of Light!");
    				return;
    			}
    Autocasting, replace the following method with mine:
    Code:
    public static void resetAutocast(Player p, boolean clientReset) {
    		if(clientReset)
    			p.getPacketSender().sendAutocastId(-1);
    		p.setAutocast(false);
    		p.setAutocastSpell(null);
    		p.setCastSpell(null);
    		p.getPacketSender().sendConfig(108, 3);
    	}



    Spoiler for freeze-spells-fix:

    Freeze spells prevented players' location from updating.
    To fix, open MovementQueue and replace void sequence with this:

    Code:
    public void sequence() {
    		
    		boolean movement = !lockMovement && !character.isFrozen();
    		
    		if(movement) {
    			Point walkPoint = null;
    			Point runPoint = null;
    
    			walkPoint = points.poll();
    			if(isRunToggled()) {
    				runPoint = points.poll();
    			}
    
    			if(character.isNeedsPlacement()) {
    				reset();
    				return;
    			}
    
    			if(walkPoint != null && walkPoint.direction != Direction.NONE) {
    
    				if (followCharacter != null) {
    					if (walkPoint.equals(followCharacter.getPosition())) {
    						return;
    					} else {
    						if(!followCharacter.getMovementQueue().isRunToggled()) {
    							if(character.getPosition().isWithinDistance(followCharacter.getPosition(), 2)) {
    								runPoint = null;
    							}
    						}
    					}
    				}
    
    				if(!isPlayer && !character.getCombatBuilder().isAttacking()) {
    					if(((NPC)character).isSummoningNpc() && !((NPC)character).summoningCombat()) {
    						if(!canWalk(character.getPosition(), walkPoint.position, character.getSize())) {
    							return;
    						}
    					}
    				}
    
    				character.setPosition(walkPoint.position);
    				character.setPrimaryDirection(walkPoint.direction);
    				character.setLastDirection(walkPoint.direction);
    			}
    			if(runPoint != null && runPoint.direction != Direction.NONE) {
    				if (followCharacter != null) {
    					if (walkPoint.equals(followCharacter.getPosition())) {
    						return;
    					}
    				}
    				character.setPosition(runPoint.position);
    				character.setSecondaryDirection(runPoint.direction);
    				character.setLastDirection(runPoint.direction);
    				if(isPlayer) {
    					handleRegionChange();
    				}
    			}
    		}
    
    		if(isPlayer) {
    			Locations.process(character);
    			EnergyHandler.processPlayerEnergy((Player)character);
    		}
    	}


    Spoiler for multi-spells-bug:

    Multi-spells attacking targets whom should not be attacked.
    To fix, replace finishCast in CombatAncientSpell with this one:
    Code:
     @Override
        public void finishCast(Character cast, Character castOn, boolean accurate,
            int damage) {
    
            // The spell wasn't accurate, so do nothing.
            if (!accurate || damage <= 0) {
                return;
            }
    
            // Do the spell effect here.
            spellEffect(cast, castOn, damage);
    
            // The spell doesn't support multiple targets or we aren't in a
            // multicombat zone, so do nothing.
            if (spellRadius() == 0 || !Locations.Location.inMulti(castOn)) {
                return;
            }
    
            // We passed the checks, so now we do multiple target stuff.
            Iterator<? extends Character> it = null;
            if (cast.isPlayer() && castOn.isPlayer()) {
                it = ((Player) cast).getLocalPlayers().iterator();
            } else if (cast.isPlayer() && castOn.isNpc()) {
                it = ((Player) cast).getLocalNpcs().iterator();
            } else if (cast.isNpc() && castOn.isNpc()) {
                it = World.getNpcs().iterator();
            } else if (cast.isNpc() && castOn.isPlayer()) {
                it = World.getPlayers().iterator();
            }
    
            for (Iterator<? extends Character> $it = it; $it.hasNext();) {
                Character next = $it.next();
    
                if (next == null) {
                    continue;
                }
                
                if(next.isNpc()) {
                	NPC n = (NPC)next;
                	if(!n.getDefinition().isAttackable() || n.isSummoningNpc()) {
                		continue;
                	}
                } else {
                	Player p = (Player)next;
                	if(p.getLocation() != Location.WILDERNESS || !Location.inMulti(p)) {
                		continue;
                	}
                }
                
    
                if (next.getPosition().isWithinDistance(castOn.getPosition(),
                    spellRadius()) && !next.equals(cast) && !next.equals(castOn) && next.getConstitution() > 0 && next.getConstitution() > 0) {
                    cast.getCurrentlyCasting().endGraphic().ifPresent(next::performGraphic);
                    int calc = Misc.inclusiveRandom(0, maximumHit());
                    next.dealDamage(new Hit(calc, Hitmask.RED, CombatIcon.MAGIC));
                    next.getCombatBuilder().addDamage(cast, calc);
                    spellEffect(cast, next, calc);
                }
            }
        }


    Spoiler for Clanchat-interface-fix:

    So in the released Ruse version, the clanchat editing interface is invisible. To fix that, simply replace the following method in RSInterface:

    Code:
    public static void editClan(TextDrawingArea[] tda) {
    		RSInterface tab = addTabInterface(40172);
    		addSpriteLoader(47251, 736);
    		addHoverSpriteLoaderButton(47252, 726, 150, 35, "Set name", 22222, 47253, 1);
    		addHoveredSpriteLoaderButton(47253, 150, 35, 47254, 727);
    		addHoverSpriteLoaderButton(47255, 726, 150, 35, "Anyone", -1,
    				47256, 1);
    		addHoveredSpriteLoaderButton(47256, 150, 35, 47257, 727);
    
    		addHoverButton(48000, "b", 1, 150, 35, "Only me", -1, 47999, 1);
    		addHoverButton(48001, "b", 1, 150, 35, "General+", -1, 47999, 1);
    		addHoverButton(48002, "b", 1, 150, 35, "Captain+", -1, 47999, 1);
    		addHoverButton(48003, "b", 1, 150, 35, "Lieutenant+", -1, 47999, 1);
    		addHoverButton(48004, "b", 1, 150, 35, "Sergeant+", -1, 47999, 1);
    		addHoverButton(48005, "b", 1, 150, 35, "Corporal+", -1, 47999, 1);
    		addHoverButton(48006, "b", 1, 150, 35, "Recruit+", -1, 47999, 1);
    		addHoverButton(48007, "b", 1, 150, 35, "Any friends", -1, 47999, 1);
    
    		addHoverSpriteLoaderButton(47258, 726, 150, 35, "Anyone", -1,
    				47259, 1);
    		addHoveredSpriteLoaderButton(47259, 150, 35, 17260, 727);
    
    		addHoverButton(48010, "b", 1, 150, 35, "Only me", -1, 47999, 1);
    		addHoverButton(48011, "b", 1, 150, 35, "General+", -1, 47999, 1);
    		addHoverButton(48012, "b", 1, 150, 35, "Captain+", -1, 47999, 1);
    		addHoverButton(48013, "b", 1, 150, 35, "Lieutenant+", -1, 47999, 1);
    		addHoverButton(48014, "b", 1, 150, 35, "Sergeant+", -1, 47999, 1);
    		addHoverButton(48015, "b", 1, 150, 35, "Corporal+", -1, 47999, 1);
    		addHoverButton(48016, "b", 1, 150, 35, "Recruit+", -1, 47999, 1);
    		addHoverButton(48017, "b", 1, 150, 35, "Any friends", -1, 47999, 1);
    
    		addHoverSpriteLoaderButton(47261, 726, 150, 35, "Only me", -1,
    				47262, 1);
    		addHoveredSpriteLoaderButton(47262, 150, 35, 47263, 727);
    
    		// addHoverButton(48020, "b", 1, 150, 35, "Only me", -1, 47999, 1);
    		addHoverButton(48021, "b", 1, 150, 35, "General+", -1, 47999, 1);
    		addHoverButton(48022, "b", 1, 150, 35, "Captain+", -1, 47999, 1);
    		addHoverButton(48023, "b", 1, 150, 35, "Lieutenant+", -1, 47999, 1);
    		addHoverButton(48024, "b", 1, 150, 35, "Sergeant+", -1, 47999, 1);
    		addHoverButton(48025, "b", 1, 150, 35, "Corporal+", -1, 47999, 1);
    		addHoverButton(48026, "b", 1, 150, 35, "Recruit+", -1, 47999, 1);
    
    		addHoverSpriteLoaderButton(47267, 737, 16, 16, "Close", -1,
    				47268, 1);
    		addHoveredSpriteLoaderButton(47268, 16, 16, 47269, 738);
    
    		addText(47800, "Clan name:", tda, 0, 0xff981f, false, true);
    		addText(47801, "Who can enter chat?", tda, 0, 0xff981f, false, true);
    		addText(47812, "Who can talk in chat?", tda, 0, 0xff981f, false, true);
    		addText(47813, "Who can kick from chat?", tda, 0, 0xff981f, false, true);
    		addText(47814, "Name", tda, 0, 0xffffff, true, true);
    		addText(47815, "Anyone", tda, 0, 0xffffff, true, true);
    		addText(47816, "Anyone", tda, 0, 0xffffff, true, true);
    		addText(47817, "Only me", tda, 0, 0xffffff, true, true);
    		tab.totalChildren(40);
    		tab.child(0, 47251, 180, 15);
    		tab.child(1, 47252, 190, 47 + 20);
    		tab.child(2, 47253, 190, 47 + 20);
    		tab.child(3, 47267, 327, 22);
    		tab.child(4, 47268, 327, 22);
    		tab.child(5, 48000, 190, 87 + 25);
    		tab.child(6, 48001, 190, 87 + 25);
    		tab.child(7, 48002, 190, 87 + 25);
    		tab.child(8, 48003, 190, 87 + 25);
    		tab.child(9, 48004, 190, 87 + 25);
    		tab.child(10, 48005, 190, 87 + 25);
    		tab.child(11, 48006, 190, 87 + 25);
    		tab.child(12, 48007, 190, 87 + 25);
    		tab.child(13, 47255, 190, 87 + 25);
    		tab.child(14, 47256, 190, 87 + 25);
    		tab.child(15, 48010, 190, 128 + 30);
    		tab.child(16, 48011, 190, 128 + 30);
    		tab.child(17, 48012, 190, 128 + 30);
    		tab.child(18, 48013, 190, 128 + 30);
    		tab.child(19, 48014, 190, 128 + 30);
    		tab.child(20, 48015, 190, 128 + 30);
    		tab.child(21, 48016, 190, 128 + 30);
    		tab.child(22, 48017, 190, 128 + 30);
    		tab.child(23, 47258, 190, 128 + 30);
    		//tab.child(24, 47259, 190, 128 + 30);
    		// tab.child(25, 48020, 25, 168+35);
    		tab.child(24, 48021, 190, 168 + 35);
    		tab.child(25, 48022, 190, 168 + 35);
    		tab.child(26, 48023, 190, 168 + 35);
    		tab.child(27, 48024, 190, 168 + 35);
    		tab.child(28, 48025, 190, 168 + 35);
    		tab.child(29, 48026, 190, 168 + 35);
    		tab.child(30, 47261, 190, 168 + 35);
    		tab.child(31, 47262, 190, 168 + 35);
    		tab.child(32, 47800, 238, 54 + 20);
    		tab.child(33, 47801, 215, 95 + 25);
    		tab.child(34, 47812, 215, 136 + 30);
    		tab.child(35, 47813, 215, 177 + 35);
    		tab.child(36, 47814, 265, 54 + 20 + 12);
    		tab.child(37, 47815, 265, 95 + 25 + 12);
    		tab.child(38, 47816, 265, 136 + 30 + 12);
    		tab.child(39, 47817, 265, 177 + 35 + 12);
    
    	}
    
    public static void addHoverSpriteLoaderButton(int i, int spriteId,
    					int width, int height, String text, int contentType, int hoverOver,
    					int aT) {// hoverable
    				// button
    				RSInterface tab = addTabInterface(i);
    				tab.id = i;
    				tab.parentID = i;
    				tab.type = 5;
    				tab.atActionType = aT;
    				tab.contentType = contentType;
    				tab.opacity = 0;
    				tab.hoverType = hoverOver;
    				tab.disabledSprite = SpriteLoader.sprites[spriteId];
    				tab.enabledSprite = SpriteLoader.sprites[spriteId];
    				tab.width = width;
    				tab.height = height;
    				tab.tooltip = text;
    			}
    
    			public static void addHoveredSpriteLoaderButton(int i, int w,
    					int h, int IMAGEID, int spriteId) {
    				RSInterface tab = addTabInterface(i);
    				tab.parentID = i;
    				tab.id = i;
    				tab.type = 0;
    				tab.atActionType = 0;
    				tab.width = w;
    				tab.height = h;
    				tab.interfaceShown = true;
    				tab.opacity = 0;
    				tab.hoverType = -1;
    				tab.scrollMax = 0;
    				tab.disabledSprite = SpriteLoader.sprites[spriteId];
    				tab.enabledSprite = SpriteLoader.sprites[spriteId];
    				tab.totalChildren(1);
    				tab.child(0, IMAGEID, 0, 0);
    			}
    Reply With Quote  
     


  2. #2  
    Registered Member

    Join Date
    Nov 2013
    Posts
    746
    Thanks given
    187
    Thanks received
    459
    Rep Power
    5000
    Thanks a lot for this

    Attached image


    Attached image

    Reply With Quote  
     

  3. #3  
    Super Donator

    StanDev's Avatar
    Join Date
    Apr 2014
    Posts
    660
    Thanks given
    82
    Thanks received
    255
    Rep Power
    592
    Goodjob gab
    Reply With Quote  
     

  4. #4  
    Banned

    Join Date
    Jul 2015
    Posts
    607
    Thanks given
    520
    Thanks received
    660
    Rep Power
    0
    Redid the thread, made it a compilation of bug fixes. Will keep it updated!
    Reply With Quote  
     

  5. #5  
    The One And Only

    Niceman's Avatar
    Join Date
    Jun 2010
    Posts
    297
    Thanks given
    274
    Thanks received
    81
    Rep Power
    1050
    Very nice Gab





    Reply With Quote  
     

  6. #6  
    Registered Member
    Stanaveli's Avatar
    Join Date
    Aug 2014
    Posts
    1,490
    Thanks given
    184
    Thanks received
    653
    Rep Power
    1338
    Some familiars are non-combatic and can't be attacked anywhere on the world. Not sure if your system has support for that but maybe you should add it in.

    Goodjob on this nonetheless
    Keep your head up.



    Reply With Quote  
     

  7. #7  
    Banned

    Join Date
    Jul 2015
    Posts
    607
    Thanks given
    520
    Thanks received
    660
    Rep Power
    0
    Quote Originally Posted by Stanaveli View Post
    Some familiars are non-combatic and can't be attacked anywhere on the world. Not sure if your system has support for that but maybe you should add it in.

    Goodjob on this nonetheless
    that's added already
    Reply With Quote  
     

  8. #8  
    Banned

    Join Date
    Nov 2015
    Posts
    377
    Thanks given
    97
    Thanks received
    75
    Rep Power
    0
    Thanks! :3
    Reply With Quote  
     

  9. #9  
    Registered Member
    Join Date
    Dec 2013
    Posts
    79
    Thanks given
    85
    Thanks received
    2
    Rep Power
    11
    Thank you.

    Maybe you could tell me how to fix that:
    for example i add 10m to a well of goodwill and when i go to shop and click on add x it shows me 10000000, how could i fix?
    Sorry for bad english i think you know what i mean.... If not just let me know.

    Reply With Quote  
     

  10. #10  
    Banned

    Join Date
    Jul 2015
    Posts
    607
    Thanks given
    520
    Thanks received
    660
    Rep Power
    0
    Quote Originally Posted by tonic View Post
    Thank you.

    Maybe you could tell me how to fix that:
    for example i add 10m to a well of goodwill and when i go to shop and click on add x it shows me 10000000, how could i fix?
    Sorry for bad english i think you know what i mean.... If not just let me know.
    That's not a bug lol. Open Settings and disable "Save Input"
    Reply With Quote  
     

Page 1 of 7 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. NPC's face you in combat!
    By Pkitten in forum Tutorials
    Replies: 73
    Last Post: 11-28-2008, 05:36 PM
  2. summoning orb in HD fullscreen [508]
    By mige5 in forum Help
    Replies: 1
    Last Post: 11-25-2008, 09:14 PM
  3. summoning orb in fullscreen [508]
    By mige5 in forum Configuration
    Replies: 9
    Last Post: 11-03-2008, 05:20 PM
  4. Aids in the server.
    By helloder in forum Tutorials
    Replies: 40
    Last Post: 08-03-2008, 08:03 AM
  5. Replies: 19
    Last Post: 01-24-2008, 11:15 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
  •