Totem In 144 (FIX)

Page 1 of 2 12 LastLast
Results 1 to 15 of 25
  1. #1
    Enthusiast coklm2197 is offline
    MemberRank
    Jan 2011 Join Date
    32Posts

    Totem In 144 (FIX)

    My PacketHelper.java

    Search
    if ((item.getPosition() <= -5000) && (item.getPosition() >= -5002)) {
    to
    if ((item.getPosition() <= -5000) && (item.getPosition() >= -5003)) {
    My addCharLook
    public static void addCharLook(MaplePacketLittleEndianWriter mplew, MapleCharacterLook chr, boolean mega, boolean second) {
    mplew.write(second ? chr.getSecondGender() : chr.getGender());
    mplew.write(second ? chr.getSecondSkinColor() : chr.getSkinColor());
    mplew.writeInt(second ? chr.getSecondFace() : chr.getFace());
    mplew.writeInt(chr.getJob());
    mplew.write(mega ? 0 : 1);
    mplew.writeInt(second ? chr.getSecondHair() : chr.getHair());

    final Map<Byte, Integer> myEquip = new LinkedHashMap<>();
    final Map<Byte, Integer> maskedEquip = new LinkedHashMap<>();
    final Map<Byte, Integer> totemEquip = new LinkedHashMap<>();
    final Map<Byte, Integer> equip = second ? chr.getSecondEquips(true) : chr.getEquips(true);
    for (final Entry<Byte, Integer> item : equip.entrySet()) {
    if ((item.getKey()).byteValue() < -127) {
    continue;
    }
    byte pos = (byte) ((item.getKey()).byteValue() * -1);

    if ((pos < 100) && (myEquip.get(Byte.valueOf(pos)) == null)) {
    myEquip.put(Byte.valueOf(pos), item.getValue());
    } else if ((pos > 100) && (pos != 111)) {
    pos = (byte) (pos - 100);
    if (myEquip.get(Byte.valueOf(pos)) != null) {
    maskedEquip.put(Byte.valueOf(pos), myEquip.get(Byte.valueOf(pos)));
    totemEquip.put(Byte.valueOf(pos), item.getValue());
    }
    myEquip.put(Byte.valueOf(pos), item.getValue());
    totemEquip.put(Byte.valueOf(pos), item.getValue());
    } else if (myEquip.get(Byte.valueOf(pos)) != null) {
    maskedEquip.put(Byte.valueOf(pos), item.getValue());
    totemEquip.put(Byte.valueOf(pos), item.getValue());
    }
    }
    for (final Entry<Byte, Integer> totem : chr.getTotems().entrySet()) {
    byte pos = (byte) ((totem.getKey()).byteValue() * -1);
    if (pos < 0 || pos > 2) { //3 totem slots
    continue;
    }
    if (totem.getValue() < 1200000 || totem.getValue() >= 1210000) {
    continue;
    }
    System.out.println(pos);
    System.out.println(totem.getValue());
    totemEquip.put(Byte.valueOf(pos), totem.getValue());
    }

    for (Map.Entry entry : myEquip.entrySet()) {
    int weapon = ((Integer) entry.getValue()).intValue();
    if (GameConstants.getWeaponType(weapon) == (second ? MapleWeaponType.LONG_SWORD : MapleWeaponType.BIG_SWORD)) {
    continue;
    }
    mplew.write(((Byte) entry.getKey()).byteValue());
    mplew.writeInt(((Integer) entry.getValue()).intValue());
    }
    mplew.write(255);

    for (Map.Entry entry : maskedEquip.entrySet()) {
    mplew.write(((Byte) entry.getKey()).byteValue());
    mplew.writeInt(((Integer) entry.getValue()).intValue());
    }
    mplew.write(255);

    for (Map.Entry entry : totemEquip.entrySet()) {
    mplew.write(((Byte) entry.getKey()).byteValue());
    mplew.writeInt(((Integer) entry.getValue()).intValue());
    }
    mplew.write(255); //new v140

    Integer cWeapon = equip.get(Byte.valueOf((byte) -111));
    mplew.writeInt(cWeapon != null ? cWeapon.intValue() : 0);
    Integer Weapon = equip.get(Byte.valueOf((byte) -11));
    mplew.writeInt(Weapon != null ? Weapon.intValue() : 0); //new v139
    boolean zero = GameConstants.isZero(chr.getJob());
    Integer Shield = equip.get(Byte.valueOf((byte) -10));
    mplew.writeInt(!zero && Shield != null ? Shield.intValue() : 0); //new v139
    mplew.write(/*GameConstants.isMercedes(chr.getJob()) ? 1 : */0); // Mercedes/Elf Ears
    mplew.writeZeroBytes(12);
    if (GameConstants.isDemonSlayer(chr.getJob()) || GameConstants.isXenon(chr.getJob()) || GameConstants.isDemonAvenger(chr.getJob())) {
    mplew.writeInt(chr.getFaceMarking());
    } else if (GameConstants.isZero(chr.getJob())) {
    mplew.write(1);
    }
    }
    public static void addInventoryInfo(MaplePacketLittleEndianWriter mplew, MapleCharacter chr) {
    mplew.writeInt(0);
    addPotionPotInfo(mplew, chr);


    //RED stuff:
    mplew.writeInt(0);


    mplew.writeInt(chr.getId());


    mplew.writeInt(0);
    mplew.writeInt(0);
    mplew.writeInt(0);
    mplew.writeInt(0);
    mplew.writeInt(0);
    mplew.writeInt(0);


    mplew.writeInt(0);


    mplew.write(0);
    mplew.write(0);
    mplew.write(0);


    mplew.write(chr.getInventory(MapleInventoryType.EQUIP).getSlotLimit());
    mplew.write(chr.getInventory(MapleInventoryType.USE).getSlotLimit());
    mplew.write(chr.getInventory(MapleInventoryType.SETUP).getSlotLimit());
    mplew.write(chr.getInventory(MapleInventoryType.ETC).getSlotLimit());
    mplew.write(chr.getInventory(MapleInventoryType.CASH).getSlotLimit());


    MapleQuestStatus stat = chr.getQuestNoAdd(MapleQuest.getInstance(122700));
    if ((stat != null) && (stat.getCustomData() != null) && (Long.parseLong(stat.getCustomData()) > System.currentTimeMillis())) {
    mplew.writeLong(getTime(Long.parseLong(stat.getCustomData())));
    } else {
    mplew.writeLong(getTime(-2L));
    }


    MapleInventory iv = chr.getInventory(MapleInventoryType.EQUIPPED);
    final List<Item> equipped = iv.newList();
    Collections.sort(equipped);
    for (Item item : equipped) {
    if ((item.getPosition() < 0) && (item.getPosition() > -100)) {
    addItemPosition(mplew, item, false, false);
    addItemInfo(mplew, item, chr);
    }
    }
    mplew.writeShort(0);
    for (Item item : equipped) {
    if ((item.getPosition() <= -100) && (item.getPosition() > -1000)) {
    addItemPosition(mplew, item, false, false);
    addItemInfo(mplew, item, chr);
    }
    }


    mplew.writeShort(0);
    iv = chr.getInventory(MapleInventoryType.EQUIP);
    for (Item item : iv.list()) {
    addItemPosition(mplew, item, false, false);
    addItemInfo(mplew, item, chr);
    }
    mplew.writeShort(0);
    for (Item item : equipped) {
    if ((item.getPosition() <= -1000) && (item.getPosition() > -1100)) {
    addItemPosition(mplew, item, false, false);
    addItemInfo(mplew, item, chr);
    }
    }
    mplew.writeShort(0);
    for (Item item : equipped) {
    if ((item.getPosition() <= -1100) && (item.getPosition() > -1200)) {
    addItemPosition(mplew, item, false, false);
    addItemInfo(mplew, item, chr);
    }
    }
    mplew.writeShort(0);
    mplew.writeShort(0);
    for (Item item : equipped) {
    if (item.getPosition() <= -1200) {
    addItemPosition(mplew, item, false, false);
    addItemInfo(mplew, item, chr);
    }


    }



    mplew.writeShort(0);
    mplew.writeShort(0);
    mplew.writeShort(0);
    mplew.writeShort(0);
    for (Item item : equipped) {
    if ((item.getPosition() <= -5000) && (item.getPosition() >= -5003)) {
    addItemPosition(mplew, item, false, false);
    addItemInfo(mplew, item, chr);
    }
    }

    mplew.writeShort(0);
    mplew.writeShort(0);
    mplew.writeShort(0);
    mplew.writeShort(0);
    mplew.writeShort(0);


    iv = chr.getInventory(MapleInventoryType.USE);
    for (Item item : iv.list()) {
    addItemPosition(mplew, item, false, false);
    addItemInfo(mplew, item, chr);
    }
    mplew.write(0);
    iv = chr.getInventory(MapleInventoryType.SETUP);
    for (Item item : iv.list()) {
    addItemPosition(mplew, item, false, false);
    addItemInfo(mplew, item, chr);
    }
    mplew.write(0);
    iv = chr.getInventory(MapleInventoryType.ETC);
    for (Item item : iv.list()) {
    if (item.getPosition() < 100) {
    addItemPosition(mplew, item, false, false);
    addItemInfo(mplew, item, chr);
    }
    }
    mplew.write(0);
    iv = chr.getInventory(MapleInventoryType.CASH);
    for (Item item : iv.list()) {
    addItemPosition(mplew, item, false, false);
    addItemInfo(mplew, item, chr);
    }
    mplew.write(0);


    // for (int i = 0; i < chr.getExtendedSlots().size(); i++) {
    // mplew.writeInt(i);
    // mplew.writeInt(chr.getExtendedSlot(i));
    // for (Item item : chr.getInventory(MapleInventoryType.ETC).list()) {
    // if ((item.getPosition() > i * 100 + 100) && (item.getPosition() < i * 100 + 200)) {
    // addItemPosition(mplew, item, false, true);
    // addItemInfo(mplew, item, chr);
    // }
    // }
    // mplew.writeInt(-1);
    // }
    mplew.writeZeroBytes(17);//was17
    }
    Last edited by coklm2197; 28-02-15 at 06:11 AM.


  2. #2
    unknowndog Mallissy is offline
    MemberRank
    May 2011 Join Date
    unknowndogLocation
    493Posts

    Re: Totem In 144 (FIX)

    Do they save? And stay equipped when you change channel?

  3. #3
    Enthusiast coklm2197 is offline
    MemberRank
    Jan 2011 Join Date
    32Posts

    Re: Totem In 144 (FIX)

    Try In MapleCharacter.java

    add
    public void totemfix(){
    Item totem0 = getInventory(MapleInventoryType.EQUIPPED).getItem((byte) -5000);
    Item totem1 = getInventory(MapleInventoryType.EQUIPPED).getItem((byte) -5001);
    Item totem2 = getInventory(MapleInventoryType.EQUIPPED).getItem((byte) -5002);
    if(totem0 != null){
    short dst = getInventory(MapleInventoryType.EQUIP).getNextFreeSlot();
    MapleInventoryManipulator.unequip(c, (byte)-5000, dst);
    MapleInventoryManipulator.equip(c, (byte)-5000, dst);
    return;
    } else if (totem1 != null){
    short dst = getInventory(MapleInventoryType.EQUIP).getNextFreeSlot();
    MapleInventoryManipulator.unequip(c, (byte)-5001, dst);
    MapleInventoryManipulator.equip(c, (byte)-5001, dst);
    return;
    } else if (totem2 != null){
    short dst = getInventory(MapleInventoryType.EQUIP).getNextFreeSlot();
    MapleInventoryManipulator.unequip(c, (byte)-5002, dst);
    MapleInventoryManipulator.equip(c, (byte)-5002, dst);
    return;
    }
    }
    changeMapInternal(to, pto.getPosition(), CField.getWarpToMap(to, pto.getId(), this), null);
    to
    changeMapInternal(to, pto.getPosition(), CField.getWarpToMap(to, pto.getId(), this), null);
    totemfix();
    private void changeMapInternal(final MapleMap to, final Point pos, byte[] warpPacket, final MaplePortal pto) {

    if (deathCount < 1) {
    }
    }
    To
    if (deathCount < 1) {
    }
    totemfix();
    }

  4. #4
    unknowndog Mallissy is offline
    MemberRank
    May 2011 Join Date
    unknowndogLocation
    493Posts

    Re: Totem In 144 (FIX)

    After using your fix I can't even equip them ._.

  5. #5
    Enthusiast coklm2197 is offline
    MemberRank
    Jan 2011 Join Date
    32Posts

    Re: Totem In 144 (FIX)

    My public static void equip
    public static void equip(final MapleClient c, final short src, short dst) {
    final MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
    final MapleCharacter chr = c.getPlayer();
    if (chr == null || (GameConstants.GMS && dst == -55)) {
    return;
    }
    c.getPlayer().getStat().recalcLocalStats(c.getPlayer());
    final PlayerStats statst = c.getPlayer().getStat();
    statst.recalcLocalStats(c.getPlayer());
    Equip source = (Equip) chr.getInventory(MapleInventoryType.EQUIP).getItem(src);
    Equip target;

    if (source == null || source.getDurability() == 0 || GameConstants.isHarvesting(source.getItemId())) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    if (GameConstants.isGMEquip(source.getItemId()) && !c.getPlayer().isStaff()) {
    c.getPlayer().dropMessage(1, "只有遊戲管理員可以使用此裝備.");
    c.getPlayer().removeAll(source.getItemId(), false);
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    //if (GameConstants.isMadeByGM(c, source.getItemId(), src) && !c.getPlayer().isStaff()) {
    // c.getPlayer().dropMessage(1, "You are not allowed to use GM-Made equips.");
    // c.getSession().write(CWvsContext.enableActions());
    // return;
    //}
    if (GameConstants.isOverPoweredEquip(c, source.getItemId(), src) && !c.getPlayer().isStaff()) {
    c.getPlayer().dropMessage(1, "It seems that the item is way too over powered, please report to the Admin if you think that the system is wrong.");
    //c.getPlayer().removeAll(source.getItemId(), false); //System might be wrong
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    if (!c.getPlayer().isGM()) {
    if (source.getItemId() == 1112663 || source.getItemId() == 1112586) {
    c.getPlayer().dropMessage(1, "White Angelic Blessing, and Dark Angelic Blessing are currently not working.");
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    }

    final Map<String, Integer> stats = ii.getEquipStats(source.getItemId());

    if (stats == null) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    if (dst > -1200 && dst < -999 && !GameConstants.isEvanDragonItem(source.getItemId()) && !GameConstants.isMechanicItem(source.getItemId())) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    // } else if ((dst <= -1200 || (dst >= -999 && dst < -99)) && !stats.containsKey("cash")) {
    // c.getSession().write(CWvsContext.enableActions());
    // return;
    // }
    } else if (((dst < -5003) || ((dst >= -999) && (dst < -99))) &&(!stats.containsKey("cash"))) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    }else if (dst > -1400 && dst <= -1300 && c.getPlayer().getAndroid() == null) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    } else if (dst > -5000 && dst <= -1400) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    } else if (dst > -5100 && dst <= -5000 && source.getItemId() / 10000 != 120) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    if (!ii.canEquip(stats, source.getItemId(), chr.getLevel(), chr.getJob(), chr.getFame(), statst.getTotalStr(), statst.getTotalDex(), statst.getTotalLuk(), statst.getTotalInt(), c.getPlayer().getStat().levelBonus, source.getReqLevel())) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    if (GameConstants.isWeapon(source.getItemId()) && dst != -10 && dst != -11) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    if (dst == -18 && !GameConstants.isMountItemAvailable(source.getItemId(), c.getPlayer().getJob())) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    if (dst == -118 && source.getItemId() / 10000 != 190) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    //totem2
    if ((dst <= -5000) && (dst > -5003) && (source.getItemId() / 10000 != 120))
    {
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    if (dst == -59) { //pendant
    MapleQuestStatus stat = c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(GameConstants.PENDANT_SLOT));
    if (stat == null || stat.getCustomData() == null || Long.parseLong(stat.getCustomData()) < System.currentTimeMillis()) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    }
    if (GameConstants.isKatara(source.getItemId()) || source.getItemId() / 10000 == 135) {
    dst = (byte) -10; //shield slot
    }
    if (GameConstants.isEvanDragonItem(source.getItemId()) && (chr.getJob() < 2200 || chr.getJob() > 2218)) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    }

    if (GameConstants.isMechanicItem(source.getItemId()) && (chr.getJob() < 3500 || chr.getJob() > 3512)) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    }

    if (source.getItemId() / 1000 == 1112) { //ring
    for (RingSet s : RingSet.values()) {
    if (s.id.contains(Integer.valueOf(source.getItemId()))) {
    List<Integer> theList = c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).listIds();
    for (Integer i : s.id) {
    if (theList.contains(i)) {
    c.getPlayer().dropMessage(1, "You may not equip this item because you already have a " + (StringUtil.makeEnumHumanReadable(s.name())) + " equipped.");
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    }
    }
    }
    }

    switch (dst) {
    case -6: { // Top
    final Item top = chr.getInventory(MapleInventoryType.EQUIPPED).getItem((byte) -5);
    if (top != null && GameConstants.isOverall(top.getItemId())) {
    if (chr.getInventory(MapleInventoryType.EQUIP).isFull()) {
    c.getSession().write(InventoryPacket.getInventoryFull());
    c.getSession().write(InventoryPacket.getShowInventoryFull());
    return;
    }
    unequip(c, (byte) -5, chr.getInventory(MapleInventoryType.EQUIP).getNextFreeSlot());
    }
    break;
    }
    case -5: {
    final Item top = chr.getInventory(MapleInventoryType.EQUIPPED).getItem((byte) -5);
    final Item bottom = chr.getInventory(MapleInventoryType.EQUIPPED).getItem((byte) -6);
    if (top != null && GameConstants.isOverall(source.getItemId())) {
    if (chr.getInventory(MapleInventoryType.EQUIP).isFull(bottom != null && GameConstants.isOverall(source.getItemId()) ? 1 : 0)) {
    c.getSession().write(InventoryPacket.getInventoryFull());
    c.getSession().write(InventoryPacket.getShowInventoryFull());
    return;
    }
    unequip(c, (byte) -5, chr.getInventory(MapleInventoryType.EQUIP).getNextFreeSlot());
    }
    if (bottom != null && GameConstants.isOverall(source.getItemId())) {
    if (chr.getInventory(MapleInventoryType.EQUIP).isFull()) {
    c.getSession().write(InventoryPacket.getInventoryFull());
    c.getSession().write(InventoryPacket.getShowInventoryFull());
    return;
    }
    unequip(c, (byte) -6, chr.getInventory(MapleInventoryType.EQUIP).getNextFreeSlot());
    }
    break;
    }
    case -10: { // Shield
    Item weapon = chr.getInventory(MapleInventoryType.EQUIPPED).getItem((byte) -11);
    if (GameConstants.isKatara(source.getItemId())) {
    if ((chr.getJob() != 900 && !GameConstants.isDualBlade(chr.getJob())) || weapon == null || !GameConstants.isDagger(weapon.getItemId())) {
    c.getSession().write(InventoryPacket.getInventoryFull());
    c.getSession().write(InventoryPacket.getShowInventoryFull());
    return;
    }
    } else if (weapon != null && GameConstants.isTwoHanded(weapon.getItemId()) && !GameConstants.isSpecialShield(source.getItemId())) {
    if (chr.getInventory(MapleInventoryType.EQUIP).isFull()) {
    c.getSession().write(InventoryPacket.getInventoryFull());
    c.getSession().write(InventoryPacket.getShowInventoryFull());
    return;
    }
    unequip(c, (byte) -11, chr.getInventory(MapleInventoryType.EQUIP).getNextFreeSlot());
    }
    break;
    }
    case -11: { // Weapon
    Item shield = chr.getInventory(MapleInventoryType.EQUIPPED).getItem((byte) -10);
    if (shield != null && GameConstants.isTwoHanded(source.getItemId()) && !GameConstants.isSpecialShield(shield.getItemId())) {
    if (chr.getInventory(MapleInventoryType.EQUIP).isFull()) {
    c.getSession().write(InventoryPacket.getInventoryFull());
    c.getSession().write(InventoryPacket.getShowInventoryFull());
    return;
    }
    unequip(c, (byte) -10, chr.getInventory(MapleInventoryType.EQUIP).getNextFreeSlot());
    }
    break;
    }
    }
    source = (Equip) chr.getInventory(MapleInventoryType.EQUIP).getItem(src); // Equip
    target = (Equip) chr.getInventory(MapleInventoryType.EQUIPPED).getItem(dst); // Currently equipping
    if (source == null) {
    c.getSession().write(CWvsContext.enableActions());
    return;
    }
    short flag = source.getFlag();
    if (stats.get("equipTradeBlock") != null || source.getItemId() / 10000 == 167) { // Block trade when equipped.
    if (!ItemFlag.UNTRADABLE.check(flag)) {
    flag |= ItemFlag.UNTRADABLE.getValue();
    source.setFlag(flag);
    c.getSession().write(InventoryPacket.updateSpecialItemUse_(source, MapleInventoryType.EQUIP.getType(), c.getPlayer()));
    }
    }
    if (source.getItemId() / 10000 == 166) {
    if (source.getAndroid() == null) {
    int uid = MapleInventoryIdentifier.getInstance();
    source.setUniqueId(uid);
    source.setAndroid(MapleAndroid.create(source.getItemId(), uid));
    flag = (short) (flag | ItemFlag.LOCK.getValue());
    flag = (short) (flag | ItemFlag.UNTRADABLE.getValue());
    flag = (short) (flag | ItemFlag.ANDROID_ACTIVATED.getValue());
    source.setFlag(flag);
    c.getSession().write(CWvsContext.InventoryPacket.updateSpecialItemUse_(source, MapleInventoryType.EQUIP.getType(), c.getPlayer()));
    }
    chr.removeAndroid();
    chr.setAndroid(source.getAndroid());
    } else if ((dst <= -1300) && (chr.getAndroid() != null)) {
    chr.setAndroid(chr.getAndroid());
    }
    if (source.getCharmEXP() > 0 && !ItemFlag.CHARM_EQUIPPED.check(flag)) {
    chr.getTrait(MapleTraitType.charm).addExp(source.getCharmEXP(), chr);
    source.setCharmEXP((short) 0);
    flag |= ItemFlag.CHARM_EQUIPPED.getValue();
    source.setFlag(flag);
    c.getSession().write(InventoryPacket.updateSpecialItemUse_(source, GameConstants.getInventoryType(source.getItemId()).getType(), c.getPlayer()));
    }

    chr.getInventory(MapleInventoryType.EQUIP).removeSlot(src);
    if (target != null) {
    chr.getInventory(MapleInventoryType.EQUIPPED).removeSlot(dst);
    }
    source.setPosition(dst);
    chr.getInventory(MapleInventoryType.EQUIPPED).addFromDB(source);
    if (target != null) {
    target.setPosition(src);
    chr.getInventory(MapleInventoryType.EQUIP).addFromDB(target);
    }
    if (GameConstants.isWeapon(source.getItemId())) {
    c.getPlayer().cancelEffectFromBuffStat(MapleBuffStat.BOOSTER);
    c.getPlayer().cancelEffectFromBuffStat(MapleBuffStat.SPIRIT_CLAW);
    c.getPlayer().cancelEffectFromBuffStat(MapleBuffStat.SOULARROW);
    c.getPlayer().cancelEffectFromBuffStat(MapleBuffStat.WK_CHARGE);
    c.getPlayer().cancelEffectFromBuffStat(MapleBuffStat.LIGHTNING_CHARGE);
    }
    if (source.getItemId() / 10000 == 190 || source.getItemId() / 10000 == 191) {
    c.getPlayer().cancelEffectFromBuffStat(MapleBuffStat.MONSTER_RIDING);
    c.getPlayer().cancelEffectFromBuffStat(MapleBuffStat.MECH_CHANGE);
    } else if (GameConstants.isReverseItem(source.getItemId())) {
    // chr.finishAchievement(9);
    } else if (GameConstants.isTimelessItem(source.getItemId())) {
    //chr.finishAchievement(10);
    } else if (stats.containsKey("reqLevel") && stats.get("reqLevel") >= 140) {
    // chr.finishAchievement(41);
    } else if (stats.containsKey("reqLevel") && stats.get("reqLevel") >= 130) {
    //chr.finishAchievement(40);
    } else if (source.getItemId() == 1122017) {
    chr.startFairySchedule(true, true);
    }
    if (source.getState() >= 17) {
    final Map<Skill, SkillEntry> ss = new HashMap<>();
    int[] potentials = {source.getPotential1(), source.getPotential2(), source.getPotential3(), source.getBonusPotential1(), source.getBonusPotential2()};
    for (int i : potentials) {
    if (i > 0) {
    StructItemOption pot = ii.getPotentialInfo(i).get(ii.getReqLevel(source.getItemId()) / 10);
    if (pot != null && pot.get("skillID") > 0) {
    ss.put(SkillFactory.getSkill(PlayerStats.getSkillByJob(pot.get("skillID"), c.getPlayer().getJob())), new SkillEntry((byte) 1, (byte) 0, -1));
    }
    }
    }
    c.getPlayer().changeSkillLevel_Skip(ss, true);
    }
    if (source.getSocketState() > 15) {
    final Map<Skill, SkillEntry> ss = new HashMap<>();
    int[] sockets = {source.getSocket1(), source.getSocket2(), source.getSocket3()};
    for (int i : sockets) {
    if (i > 0) {
    StructItemOption soc = ii.getSocketInfo(i);
    if (soc != null && soc.get("skillID") > 0) {
    ss.put(SkillFactory.getSkill(PlayerStats.getSkillByJob(soc.get("skillID"), c.getPlayer().getJob())), new SkillEntry((byte) 1, (byte) 0, -1));
    }
    }
    }
    c.getPlayer().changeSkillLevel_Skip(ss, true);
    }
    c.getSession().write(InventoryPacket.moveInventoryItem(MapleInventoryType.EQUIP, src, dst, (byte) 2, false, false));
    chr.equipChanged();
    }

  6. #6
    unknowndog Mallissy is offline
    MemberRank
    May 2011 Join Date
    unknowndogLocation
    493Posts

    Re: Totem In 144 (FIX)

    What source is this based on? o_o

  7. #7
    Account Upgraded | Title Enabled! avivii12345 is offline
    MemberRank
    Jan 2012 Join Date
    276Posts

    Re: Totem In 144 (FIX)

    Quote Originally Posted by Mallissy View Post
    What source is this based on? o_o
    I guess that he is using nexusdev

  8. #8
    unknowndog Mallissy is offline
    MemberRank
    May 2011 Join Date
    unknowndogLocation
    493Posts

    Re: Totem In 144 (FIX)

    Quote Originally Posted by avivii12345 View Post
    I guess that he is using nexusdev
    Well he says 144 which is GMS because nexus is 219 xD

  9. #9
    Apprentice v3921358 is offline
    MemberRank
    May 2012 Join Date
    20Posts

    Re: Totem In 144 (FIX)

    Haha,
    I am the author of the totemfix

  10. #10
    unknowndog Mallissy is offline
    MemberRank
    May 2011 Join Date
    unknowndogLocation
    493Posts

    Re: Totem In 144 (FIX)

    Well it doesn't work xD unless I did something wrong >.<

  11. #11
    Apprentice v3921358 is offline
    MemberRank
    May 2012 Join Date
    20Posts

    Re: Totem In 144 (FIX)

    I make the code for my totem in v117
    This is a video then
    .
    sorry for my bad English :)

  12. #12
    unknowndog Mallissy is offline
    MemberRank
    May 2011 Join Date
    unknowndogLocation
    493Posts

    Re: Totem In 144 (FIX)

    well your fix didn't work for gms 144.3 xD They still disapear after changing channels

  13. #13
    (O_o(o_O(O_O)o_O)O_o) Novak is offline
    MemberRank
    Apr 2009 Join Date
    The NetherlandsLocation
    1,120Posts

    Re: Totem In 144 (FIX)

    Quote Originally Posted by Mallissy View Post
    well your fix didn't work for gms 144.3 xD They still disapear after changing channels
    Well, that means that they are still fixed, just not properly stored & loaded, like @xStr0nGx pointed out. So I am sooo going to add this into my "source" xD

  14. #14
    Account Upgraded | Title Enabled! ngnam87 is offline
    MemberRank
    Mar 2013 Join Date
    666Posts

    Re: Totem In 144 (FIX)

    tested on GMS v146.1 and work fine
    and still equiped when change channel (no need to use totemFix() function)
    thanks

  15. #15
    Account Upgraded | Title Enabled! davidling is offline
    MemberRank
    Jul 2011 Join Date
    449Posts

    Re: Totem In 144 (FIX)

    Quote Originally Posted by ngnam87 View Post
    tested on GMS v146.1 and work fine
    and still equiped when change channel (no need to use totemFix() function)
    thanks
    Go and take a look in GMS v146 source/repack. You will found some thing there.



Page 1 of 2 12 LastLast

Advertisement