最新天堂1私服开机预告 【公告】99天堂发布站2000人QQ交流群 86429772
设为首页 | 加入收藏
首页 家族 文章 工具 优势   战歌
★ ★ ★  ★ ★ ★
  百度一下     360搜索     天堂图档     SEO查询     在线翻译     家族联盟     个性签名
发布游戏     发布家族     广告价格     宣传优势    广告联系     工具下载     技术文章
天堂1私服元寶商城系統 完善版
文章作者:天堂1私服 www.99t1.com 文章来源:天堂1私服发布网 更新时间:12/13/2010 3:51:05 PM 
文章來源引自:http://bbs.99nets.com/thread-747617-1-1.html
聲明:
這個是供JAVA研究愛好者所提供的原碼,請勿使用在商業化上,否則本人一概不負責!!
測試版本:Rev2021
這個是將該篇文章在完整化,雖然說不上原創,但也把一些漏掉的說明補齊,如有更好的歡迎提出,將後補上
1.首先打開Navicat for MySQL後找到SHOP表裡新增一個欄位“yuanbao”,這個欄位是物品賣出的價錢,也就是元寶要賣的價錢。
2.打開l1j\server\server\datatables\ShopTable.java
找到
  1. private final Map<Integer, L1Shop> _allShops = new HashMap<Integer, L1Shop>();
复制代码
在底下加入
  1. private final Map<Integer, Integer> _allItemSells = new HashMap<Integer, Integer>();
复制代码
找到
  1. private L1Shop loadShop(int npcId, ResultSet rs) throws SQLException {
复制代码
改成和下面一樣
  1. private L1Shop loadShop(int npcId, ResultSet rs) throws SQLException {
  2. List<L1ShopItem> sellingList = new ArrayList<L1ShopItem>();
  3. List<L1ShopItem> purchasingList = new ArrayList<L1ShopItem>();
  4. while (rs.next()) {
  5. int itemId = rs.getInt("item_id");
  6. int sellingPrice = rs.getInt("selling_price");
  7. int purchasingPrice = rs.getInt("purchasing_price");
  8. int packCount = rs.getInt("pack_count");
  9. packCount = packCount == 0 ? 1 : packCount;
  10. int yuanbao = rs.getInt("yuanbao");//add liumy

  11. switch(npcId){
  12. case 70068:case 70020:
  13. case 70024:case 70032:
  14. case 80075:
  15. continue;
  16. default:
  17. break;
  18. }

  19. if(0 <= sellingPrice){
  20. if(_allItemSells.get(itemId)==null){
  21. _allItemSells.put(itemId, sellingPrice/2);
  22. }else if(_allItemSells.get(itemId)<sellingPrice/2){
  23. _allItemSells.put(itemId, sellingPrice/2);
  24. }
  25. }else{ //-1
  26. if(0 <= purchasingPrice){
  27. if(_allItemSells.get(itemId)==null){
  28. _allItemSells.put(itemId, purchasingPrice);
  29. }else if(_allItemSells.get(itemId)<purchasingPrice){
  30. _allItemSells.put(itemId, purchasingPrice);
  31. }
  32. }
  33. }

  34. if (0 <= sellingPrice && 0 >= yuanbao ) {
  35. L1ShopItem item = new L1ShopItem(itemId, sellingPrice,
  36. packCount);
  37. sellingList.add(item);
  38. }
  39. if (0 <= purchasingPrice && 0 >= yuanbao ) {
  40. L1ShopItem item = new L1ShopItem(itemId, purchasingPrice,
  41. packCount);
  42. purchasingList.add(item);
  43. }
  44. if (0 < yuanbao ) { //add liumy
  45. L1ShopItem item = new L1ShopItem(itemId, yuanbao,
  46. packCount);
  47. sellingList.add(item);
  48. }//add liumy end
  49. }
  50. return new L1Shop(npcId, sellingList, purchasingList);
  51. }
复制代码
3,打開l1j\server\server\model\shop\L1Shop.java
找到
  1. private boolean ensureSell(L1PcInstance pc, L1ShopBuyOrderList orderList) {
复制代码
改成和下面一樣
  1. private boolean ensureSell(L1PcInstance pc, L1ShopBuyOrderList orderList) {
  2. int price = orderList.getTotalPriceTaxIncluded();
  3. // オーバーフローチェック
  4. if (!IntRange.includes(price, 0, 2000000000)) {
  5. // 總販賣価格は%dアデナを超過できません。
  6. pc.sendPackets(new S_ServerMessage(904, \"2000000000\"));
  7. return false;
  8. }
  9. // 購入できるかチェック
  10. //add liumy
  11. int bb;
  12. if (_npcId >= 990000 && _npcId <= 995000) { //元寶商城專用NPC的ID
  13. bb =61019; //元寶物品編號item_id
  14. }else{
  15. bb =L1ItemId.ADENA;
  16. }//add liumy
  17. if (!pc.getInventory().checkItem(bb, price)) {
  18. //l1j.eric.gui.J_Main.getInstance().addConsolPost(\"\"+price);
  19. // \\f1アデナが不足しています。
  20. if (L1ItemId.ADENA == bb){ //add liumy
  21. pc.sendPackets(new S_ServerMessage(189));
  22. }else{
  23. //pc.sendPackets(new S_SystemMessage(\"元寶不足\"));//add liumy
  24. pc.sendPackets(new S_ServerMessage(189));
  25. }
  26. return false;
  27. }
  28. // 重量チェック
  29. int currentWeight = pc.getInventory().getWeight() * 1000;
  30. if (currentWeight + orderList.getTotalWeight() > pc.getMaxWeight() * 1000) {
复制代码
再找到
  1. private void sellItems(L1PcInventory inv, L1ShopBuyOrderList orderList) {
复制代码
改成
  1. private void sellItems(L1PcInventory inv, L1ShopBuyOrderList orderList) {
  2. //add liumy
  3. int bb;
  4. if (_npcId >= 990000 && _npcId <= 995000) {
  5. bb =61019; //元寶物品編號item_id
  6. }else{
  7. bb =L1ItemId.ADENA;
  8. }
  9. if (!inv.consumeItem(bb, orderList
  10. .getTotalPriceTaxIncluded())) {
  11. throw new IllegalStateException(\"購入に必要なアデナを消費できませんでした。\");
  12. }
  13. for (L1ShopBuyOrder order : orderList.getList()) {
复制代码
大致上完成JAVA編修的工作,目前還不能使用,回到Navicat for MySQL上
4.再次打開npc表,新增加一筆資料,npcid填上990000(編號990000~995000都可以使用)
name、nameid就是NPC的名子 note是備註欄沒意義,給自己看而已、impl填L1Merchant、gfxid是NPC圖檔編號(如果不知道填啥,就填98(潘朵拉))
剩下就沒那麼重要,自己就摸索看看吧

5.打開npcaction表,新增加一筆資料,npcid填990000、normal_action填cold1其餘就不用理他

6.打開shop表,這裡開始是販賣道具清單的地方
npc_id填我們剛剛新增的990000、item_id填道具id(這裡就是賣的東西的item_id)、order_id(這裡是販賣清單順序,由0開始,順序填錯就沒辦法正常顯示)
yuanbao(這個就是元寶數)

7.打開spawnlist_npc表為伺服器正式在地圖上顯示,id是這張表的編號,不能夠重複,所以移到最後一頁最後一筆id在加1就是新的id
count是數量,填1就好;npc_templateid是剛剛新加的NPC,這裡填990000;locX和locY是座標(這個就請你用gm查座標),mapid是地圖編號(也是用GM帳號查地圖編號),heading是npc面向哪方,共八個方位數值由(0~7)自己試試看吧

8.打開etcitem表來新增一個叫元寶的道具,item_id填入61019(由前方源碼得知所使用的編號),後3格就是名稱,剩下的就可以抄我的值沒關系

增加好了以後就已經完成元寶商NPC的新增
浏览次数:64
最新文章
· 批次檔ServerStart.bat的java啟動...
· 各種對話檔的介紹說明...
· 新增经验娃娃 核心修改...
· 100%武器卷製作...
· 核心文件功能詳解...
· 天堂私服270...
· 请注意,一定要看,发布游戏的亲们清注意...
· 八月广告优惠规则...
· 99天堂更好域名为99t1.cc...
· 热烈庆祝99天堂发布站成立4周年...
热门文章
· 天堂1私服哥唱的是寂寞...
· 天堂1私服核心內的java檔案相關內容分析...
· 教你創造 NPC 、販賣物品...
· 天堂1私服“见与不见”都是一种修行...
· 详细的私服架设教程...
· 99天堂1私服发布站祝大家新年快乐...
· 坏像有一种可能将物质转化之前用光束入言淌传的技拙...
· 天堂1私服添加和删掉NPC的方法...
· 天堂1私服新版l1jdb目录解析...
· 天堂1私服部分新水龙魔法编码...
· 天堂1私服怪物被攻擊後,對自己和組隊內的玩家顯示血...
· 天堂1私服元寶商城系統 完善版...
· 永恒塔防5月14日更新 新服“银月之城”火爆开启...
· 天堂1私服架设三宝...
关于我们广告联系更多天堂1私服网站帮助友情连接
Copyright 2008-2010 Www.99t1.cc 天堂1私服 All Rights Reserved (注:本站只接受官方授权游戏广告,非官方授权游戏请办理广告业务之前告知本站)
拒绝盗版游戏 注意自我保护 谨防受骗上当 适度游戏益脑 沉迷游戏伤身 合理安排时间 享受健康生活 品牌商标,文字,形象及内容归 Www.99t1.cc 天堂1私服发布站 版权所有,任何组织或个人未经 Www.99t1.cc 天堂1私服发布站 同意,不得使用和传播
本站所有游戏均来自网络版权归游戏业主所有,如果无意之中侵犯了您的版权,请来信告知,本站将在3个工作日内删除.联系邮箱:[email protected]
*注释:本站发布所有游戏信息,均来自互联网,与本站无关,请玩家仔细辨认游戏信息的真实性,避免上当受骗. 苏ICP备12011632号-1