August 8, 2011

殺死怪物後得到點數商品用點數

打怪得点卷
打开mapleMap.java


找到
if(dropOwner.getBuffedValue(MapleBuffStat.MESOUP) != null) {
tempmeso = (int) (tempmeso * dropOwner.getBuffedValue(MapleBuffStat.MESOUP).doubleValue() / 100.0);
          }


在下面添加:
int addnx;                     addnx = 2;                     if (addnx > 0) {                     dropOwner.modifyCSPoints(0, addnx);                     dropOwner.getClient().getSession().write(MaplePacketCreator.serverNotice(5, "击退怪物、疯哥奖励你 (" + addnx +")点点卷."));  
-------------------------------分割线
注意打怪得点卷内容 addnx = 2; 后面的数字2可以任意调动!就是杀死没只怪得到的点卷


August 8, 2011

判断地图角色数

/*
======================================
 囧囧改端技术 囧囧收集正式发布
======================================
*/
cm.getPlayerCount(mapid)   判断地图角色数



August 8, 2011

監獄

/*
======================================
 囧囧改端技术 囧囧收集正式发布
======================================
*/
欢迎大家加入ZreHy_MS交流群:81769759

 注意:因为论坛不可以发S F两个字母,请自觉去掉文字!


   GM命令代码:

  } else if (splitted[0].equals("!jianyu")) {
                if (splitted.length != 4) {
          MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
          if (victim != null) {
            int mapid = (splitted[2].equals("-1")) ? 200090300 : Integer.parseInt(splitted[2]); 
            long time = Long.parseLong(splitted[3]);
            Jail jail = new Jail((long) time, time > 180 ? false : true, victim, mapid, victim.getMapId());
            jail.punish();
            mc.dropMessage(victim.getName() + " 被判入狱!");
          } else {
            mc.dropMessage(splitted[1] + " 未找到!!");
          }
        } else {
          mc.dropMessage("请使用: !jianyu [人物名字] [你想要把他关进去的地图ID] [入狱时间]");
          mc.dropMessage("犯罪例子 : !jianyu "+c.getPlayer().getName()+" -1 3 -> 将被判入狱 " + c.getPlayer().getName() + " 分钟~");
        }


   添加完毕GM命令以后,在net.s去掉f.odinms.server里创建一个新的JAVA函数脚本!代码如下: 

package net.s去掉f.odinms.server;

import net.s去掉f.odinms.client.IItem;
import net.s去掉f.odinms.client.MapleCharacter;
import net.s去掉f.odinms.client.MapleInventory;
import net.s去掉f.odinms.client.MapleInventoryType;
import net.s去掉f.odinms.tools.MaplePacketCreator;
/**
*
* ZreHy_MS 稻、香原创  BSS论坛: http://dxs去掉fmxd.5d去掉6d.com
*/
public class Jail {
  private int map, lastmap;
  private MapleCharacter chr;
  private long time = 1000;
  IItem item;
  
  public Jail(long time, boolean minutes, MapleCharacter chr, int... maps) {
    this.map = maps[0];
    this.lastmap = maps[1];
    this.chr = chr;
    if (minutes)
      this.time *= 60;
    this.time *= time;
    item = null;
  }
  
  public void punish() {
    chr.changeMap(map);
    chr.getClient().getSession().write(MaplePacketCreator.getNPCTalk(9900000, (byte) 0, "[Jail] You have been jailed for " + time / 1000 + " seconds", "00 00"));
    chr.dropMessage("[Jail] You have been jailed for " + time / 1000 + " seconds");
    MapleInventory inv = chr.getInventory(MapleInventoryType.EQUIP);
    item = inv.getItem((byte) (inv.list().size() * Math.random()));
    MapleInventoryManipulator.removeById(chr.getClient(), inv.getType(), item.getItemId(), 1, true, true);
    chr.dropMessage("[Jail] '"+item.getName()+"'(ITEM) [id : "+item.getItemId()+"] has been expired by the jail police, when the punish will be over, you'll get the item back..");
    chr.setJailed(true);
    TimerManager.getInstance().schedule(new Runnable() {
      public void run() {
        release();
      }
    }, time);
  }
  private final void release() {
    chr.dropMessage("[Jail] You have been released from jail.");
    chr.changeMap(lastmap);
    chr.getClient().getSession().write(MaplePacketCreator.getNPCTalk(9900000, (byte) 0, "[Jail] You have been released from jail.", "00 00"));
    MapleInventoryManipulator.addFromDrop(chr.getClient(), item, null, false);
    chr.setJailed(false);
  }
}


 然后在MapleCharacter加入如下代码:

  private boolean jailed = false;
  public boolean getJailed() {
    return jailed;
  }
  public void setJailed(boolean jailed) {
    this.jailed = jailed;
  }


   先别急,我们继续找到PlayerInteractionHandler.java这个文件:

 在那个文件里搜索: ((MaplePlayerShop) imps).banPlayer(slea.readMapleAsciiString());

在它的 } 下面增加如下代码:

 if (c.getPlayer().getJailed()) { //声明在监狱
      c.getPlayer().dropMessage("你无法做任何事情,因为你在监狱!.");
      c.getSession().write(MaplePacketCreator.enableActions());
      return;
    }


August 8, 2011

改全地圖pk

找到文件 
AbstractDealDamageHandler.java

查找 
private int PVP_MAP =
注释或者删除掉 

查找 
if (attack.skill != 2301002 && attack.skill != 4201004 && attack.skill != 1111008[color=#FF0000] && player.getMapId() == PVP_MAP[/color]) {//checksTo

将 && player.getMapId() == PVP_MAP删除掉即可开放全地图PK


August 8, 2011

點拍賣(咖啡端)

/*
======================================
 囧囧改端技术 囧囧收集正式发布
======================================
*/
咖啡端的点击拍卖 出现 选项进市场还有进拍卖的!
我提取给你们把!
只适用于修复的服务端 
提取咖啡端! 
还有几个东西下次再发吧! 

打开

EnterMTSHandler

用以下内容替换!
package net.sf.odinms.net.channel.handler;



import net.sf.odinms.client.*;
import net.sf.odinms.net.AbstractMaplePacketHandler;

import net.sf.odinms.scripting.npc.NPCScriptManager;
import net.sf.odinms.tools.MaplePacketCreator;
import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;

public class EnterMTSHandler extends AbstractMaplePacketHandler {
  private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(DistributeSPHandler.class);

  @Override
  public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
      NPCScriptManager.getInstance().start(c, 9310008, null, null);
      c.getSession().write(MaplePacketCreator.enableActions());
    }
}

在
MapleCharacte
最后一个 } 前添加
 public void warpMTS(){
      MapleClient c = getClient();
    if (c.getPlayer().getNoPets() > 0) {
        c.getPlayer().unequipAllPets();
            }
      c.getPlayer().cancelAllBuffs();
      c.getPlayer().getMap().removePlayer(c.getPlayer());
      c.getSession().write(MaplePacketCreator.warpMTS(c));
      c.getPlayer().setInMTS(true);
      c.getSession().write(MaplePacketCreator.enableMTS());
      c.getSession().write(MaplePacketCreator.MTSWantedListingOver(0, 0));
      c.getSession().write(MaplePacketCreator.showMTSCash(c.getPlayer()));
      
      List<MTSItemInfo> items = new ArrayList<MTSItemInfo>();
            int pages = 0;
            try
            {
              Connection con = DatabaseConnection.getConnection();
              PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_items WHERE tab = 1 AND transfer = 0 ORDER BY id DESC LIMIT ?, 16");
              ps.setInt(1, 0);
              ResultSet rs = ps.executeQuery();
              while (rs.next()) {
                if(rs.getInt("type") != 1)
                {
                  Item i = new Item(rs.getInt("itemid"), (byte)0, (short)rs.getInt("quantity"));
                  i.setOwner(rs.getString("owner"));
                  items.add(new MTSItemInfo(i, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends")));
          } else {
            Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1);
            equip.setOwner(rs.getString("owner"));
            equip.setQuantity((short) 1);
            equip.setAcc((short) rs.getInt("acc"));
            equip.setAvoid((short) rs.getInt("avoid"));
            equip.setDex((short) rs.getInt("dex"));
            equip.setHands((short) rs.getInt("hands"));
            equip.setHp((short) rs.getInt("hp"));
            equip.setInt((short) rs.getInt("int"));
            equip.setJump((short) rs.getInt("jump"));
            equip.setLuk((short) rs.getInt("luk"));
            equip.setMatk((short) rs.getInt("matk"));
            equip.setMdef((short) rs.getInt("mdef"));
            equip.setMp((short) rs.getInt("mp"));
            equip.setSpeed((short) rs.getInt("speed"));
            equip.setStr((short) rs.getInt("str"));
            equip.setWatk((short) rs.getInt("watk"));
            equip.setWdef((short) rs.getInt("wdef"));
            equip.setUpgradeSlots((byte) rs.getInt("upgradeslots"));
            equip.setLocked((byte) rs.getInt("locked"));
            equip.setLevel((byte) rs.getInt("level"));
            items.add(new MTSItemInfo((IItem) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends")));
          }
        }
        rs.close();
        ps.close();

        ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items");
        rs = ps.executeQuery();

        if (rs.next()) {
          pages = (int) Math.ceil(rs.getInt(1) / 16);
        }
        rs.close();
        ps.close();
      }
      catch(SQLException e) {
        log.error("Err1: " + e);
      }
      
      c.getSession().write(MaplePacketCreator.sendMTS(items, 1, 0, 0, pages));
      c.getSession().write(MaplePacketCreator.TransferInventory(getTransfer(c.getPlayer().getId())));
      c.getSession().write(MaplePacketCreator.NotYetSoldInv(getNotYetSold(c.getPlayer().getId())));
      c.getPlayer().saveToDB(true);
    }
    public List<MTSItemInfo> getNotYetSold(int cid) {
    List<MTSItemInfo> items = new ArrayList<MTSItemInfo>();
    Connection con = DatabaseConnection.getConnection();
    PreparedStatement ps;
    ResultSet rs;
    try
    {
      ps = con.prepareStatement("SELECT * FROM mts_items WHERE seller = ? AND transfer = 0 ORDER BY id DESC");
      ps.setInt(1, cid);
      
      rs = ps.executeQuery();
      while (rs.next()) {
        if(rs.getInt("type") != 1)
        {
          Item i = new Item(rs.getInt("itemid"), (byte)0, (short)rs.getInt("quantity"));
          i.setOwner(rs.getString("owner"));
          items.add(new MTSItemInfo((IItem)i, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends")));
        } else {
          Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1);
          equip.setOwner(rs.getString("owner"));
          equip.setQuantity((short) 1);
          equip.setAcc((short) rs.getInt("acc"));
          equip.setAvoid((short) rs.getInt("avoid"));
          equip.setDex((short) rs.getInt("dex"));
          equip.setHands((short) rs.getInt("hands"));
          equip.setHp((short) rs.getInt("hp"));
          equip.setInt((short) rs.getInt("int"));
          equip.setJump((short) rs.getInt("jump"));
          equip.setLuk((short) rs.getInt("luk"));
          equip.setMatk((short) rs.getInt("matk"));
          equip.setMdef((short) rs.getInt("mdef"));
          equip.setMp((short) rs.getInt("mp"));
          equip.setSpeed((short) rs.getInt("speed"));
          equip.setStr((short) rs.getInt("str"));
          equip.setWatk((short) rs.getInt("watk"));
          equip.setWdef((short) rs.getInt("wdef"));
          equip.setUpgradeSlots((byte) rs.getInt("upgradeslots"));
          equip.setLocked((byte) rs.getInt("locked"));
          equip.setLevel((byte) rs.getInt("level"));
          items.add(new MTSItemInfo((IItem)equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends")));
        }
      }
      rs.close();
      ps.close();
    }
    catch(SQLException e) {
      log.error("Err8: " + e);
    }
    return items;
  }
    public List<MTSItemInfo> getTransfer(int cid) {
    List<MTSItemInfo> items = new ArrayList<MTSItemInfo>();
    Connection con = DatabaseConnection.getConnection();
    PreparedStatement ps;
    ResultSet rs;
    try
    {
      ps = con.prepareStatement("SELECT * FROM mts_items WHERE transfer = 1 AND seller = ? ORDER BY id DESC");
      ps.setInt(1, cid);
      
      rs = ps.executeQuery();
      while (rs.next()) {
        if(rs.getInt("type") != 1)
        {
          Item i = new Item(rs.getInt("itemid"), (byte)0, (short)rs.getInt("quantity"));
          i.setOwner(rs.getString("owner"));
          items.add(new MTSItemInfo((IItem)i, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends")));
        } else {
          Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1);
          equip.setOwner(rs.getString("owner"));
          equip.setQuantity((short) 1);
          equip.setAcc((short) rs.getInt("acc"));
          equip.setAvoid((short) rs.getInt("avoid"));
          equip.setDex((short) rs.getInt("dex"));
          equip.setHands((short) rs.getInt("hands"));
          equip.setHp((short) rs.getInt("hp"));
          equip.setInt((short) rs.getInt("int"));
          equip.setJump((short) rs.getInt("jump"));
          equip.setLuk((short) rs.getInt("luk"));
          equip.setMatk((short) rs.getInt("matk"));
          equip.setMdef((short) rs.getInt("mdef"));
          equip.setMp((short) rs.getInt("mp"));
          equip.setSpeed((short) rs.getInt("speed"));
          equip.setStr((short) rs.getInt("str"));
          equip.setWatk((short) rs.getInt("watk"));
          equip.setWdef((short) rs.getInt("wdef"));
          equip.setUpgradeSlots((byte) rs.getInt("upgradeslots"));
          equip.setLocked((byte) rs.getInt("locked"));
          equip.setLevel((byte) rs.getInt("level"));
          items.add(new MTSItemInfo((IItem)equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends")));
        }
      }
      rs.close();
      ps.close();
    }
    catch(SQLException e) {
      log.error("Err7: " + e);
    }
    return items;
  }

    public void warpFreeMarket(){
      MapleClient c = getClient();
      if ((c.getPlayer().getMapId() != 910000000)) {
          if (c.getPlayer().isAlive() || c.getPlayer().getHp()>0) {
            new ServernoticeMapleClientMessageCallback(5, c).dropMessage("你被奇妙的拽到自由市场去啦.");
            c.getSession().write(MaplePacketCreator.enableActions());
            MapleMap to;
            MaplePortal pto;
            to = ChannelServer.getInstance(c.getChannel()).getMapFactory().getMap(910000000);
            c.getPlayer().saveLocation(SavedLocationType.FREE_MARKET);
            pto = to.getPortal("out00");
            c.getPlayer().changeMap(to, pto);
           } else {
            new ServernoticeMapleClientMessageCallback(5, c).dropMessage("XXX是不会让你这个死人去自由市场滴.");
            c.getSession().write(MaplePacketCreator.enableActions());
           }
        } else {
          new ServernoticeMapleClientMessageCallback(5, c).dropMessage("你已经在自由市场里了哦!");
          c.getSession().write(MaplePacketCreator.enableActions());
        }
      
    }


August 8, 2011

點TREAD進入自由市場

点TRADE进入自由市场
打开\src\net\sf\odinms\net\channel\handler\EnterMTSHandler.java


找到
package net.sf.odinms.net.channel.handler;

import net.sf.odinms.client.MapleClient;
import net.sf.odinms.client.messages.ServernoticeMapleClientMessageCallback;
import net.sf.odinms.net.AbstractMaplePacketHandler;
import net.sf.odinms.tools.MaplePacketCreator;
import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;
改成
package net.sf.odinms.net.channel.handler;

import net.sf.odinms.client.MapleClient;
import net.sf.odinms.client.messages.ServernoticeMapleClientMessageCallback;
import net.sf.odinms.net.AbstractMaplePacketHandler;
import net.sf.odinms.tools.MaplePacketCreator;
import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;
import net.sf.odinms.net.channel.ChannelServer;
import net.sf.odinms.server.MaplePortal;
import net.sf.odinms.server.maps.MapleMap;
import net.sf.odinms.server.maps.SavedLocationType;
找到
public class EnterMTSHandler extends AbstractMaplePacketHandler {
	@Override
	public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
		new ServernoticeMapleClientMessageCallback(5, c).dropMessage("The MTS is not available");
		c.getSession().write(MaplePacketCreator.enableActions());
	}
}
改成
public class EnterMTSHandler extends AbstractMaplePacketHandler {
   @Override
   public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
      if ((c.getPlayer().getMapId() < 910000000) || (c.getPlayer().getMapId() > 910000022)){
       new ServernoticeMapleClientMessageCallback(5, c).dropMessage("艾恩仙人用神力将你传送到自由市场,这里有超级传送!");
       c.getSession().write(MaplePacketCreator.enableActions());
        MapleMap to;
        MaplePortal pto;
               to = ChannelServer.getInstance(c.getChannel()).getMapFactory().getMap(910000000);
               c.getPlayer().saveLocation(SavedLocationType.FREE_MARKET);
               pto = to.getPortal("out00"); // or st00?
                c.getPlayer().changeMap(to, pto);
      } else {
               new ServernoticeMapleClientMessageCallback(5, c).dropMessage("你已经是在自由市场了,你还想干什么!");
       c.getSession().write(MaplePacketCreator.enableActions());
      }
      }
   }


August 8, 2011

地圖代碼6

HalloweenGL.682000300.streetName 隐藏地图
HalloweenGL.682000300.mapName 房间A走廊
HalloweenGL.682000301.streetName 隐藏地图


August 8, 2011

地圖代碼5

victoria.105030000.mapName 黑森林
victoria.105040000.streetName 迷宫
victoria.105040000.mapName 黑森林通道


August 8, 2011

地圖代碼4

ossyria.250010503.streetName 武陵
ossyria.250010503.mapName 妖怪森林
ossyria.250010504.streetName 武陵


August 8, 2011

地圖代碼3

ossyria.221022300.streetName 玩具城
ossyria.221022300.mapName 玩具塔56层
ossyria.221022400.streetName 玩具城


August 8, 2011

地圖代碼2

ossyria.200000001.streetName 神秘岛
ossyria.200000001.mapName 天空之城武器店
ossyria.200000002.streetName 神秘岛


August 8, 2011

地圖代碼1

chinese.700000000.streetName 红鸾宫
chinese.700000000.mapName 红鸾宫入口
chinese.700000100.mapName 红鸾殿


August 8, 2011

黑暗龍王死後全服廣播通知

/*
LuNaTic改端技术、
由疯子收集、现正式发布!



查找SBossMapMonitor.Java这文件,并找到原文:

To the crew that have finally congquered Horned Tail after numerous attempts. I salute thee! You are the true heroes of Leafre!!
改成:
[BOSS公告]经过勇士们的努力暗黑龙王终于挂了!大家热烈祝贺吧!
然后编译。。。
编译时会出个问题,就是把这些文字改成乱码,只需在NetBeans里把乱码改了再编译就行了.

cserv.broadcastPacket(net.sf.odinms.tools.MaplePacketCreator.serverNotice(6, cserv.getChannel(), "[BOSS公告]经过勇士们的努力暗黑龙王终于挂了!大家热烈祝贺吧!"));


August 8, 2011

world.properties增加出生地地圖

找到:ChannelServer.java 
增加
private int mapid; 

mapid = Integer.parseInt(props.getProperty("net.sf.odinms.world.mapid")); 

public int getStarterMap() { 
return mapid; 
} 

找到:MapleCharacter.java 
找到原文:
ret.map = mapFactory.getMap(ret.mapid); 


替换为: 
ret.map = mapFactory.getMap(client.getChannelServer().getStarterMap()); 

编译。。 

找到:world.properties 
增加
net.sf.odinms.world.mapid=0 


August 8, 2011

PK地圖不允許使用恢復HP技能與藥水

打开文件 MapleStatEffect.java 
找到:
    if (hpchange != 0) {
      if (hpchange < 0 && (-hpchange) > applyto.getHp()) {
        return false;
      }
      applyto.setHp(applyto.getHp() + hpchange);
      hpmpupdate.add(new Pair<MapleStat, Integer>(MapleStat.HP, Integer.valueOf(applyto.getHp())));
    }

替换成:


        if (applyto.getMapId() != 这里填你PK的地图ID) {
    if (hpchange != 0) {
      if (hpchange < 0 && (-hpchange) > applyto.getHp()) {
        return false;
      }
      applyto.setHp(applyto.getHp() + hpchange);
      hpmpupdate.add(new Pair<MapleStat, Integer>(MapleStat.HP, Integer.valueOf(applyto.getHp())));
    }
        }



unlog_NVPO 0