리니지 운영자상점추가 소스

리니지 운영자상점추가 소스

홈 > 개발존 > 개발 팁/정보
개발 팁/정보
GW5yBT2.png

리니지 운영자상점추가 소스

1 개발전문가 0 4374

프리서버 오픈소스 리니지 운영자 상점 추가

 

L1NpcShopSwitch.java 를 command\excutor 에 넣고 
나비켓 command 테이블에 영자상점 9999 L1NpcShopSwitch
S_Gmcommand.java 에 영자상점 추가

-------------------------------------------------------

datatable 경로에 NpcShopTable.java 넣는다
NpcShopSystem.java 를 GameSystem 에 . 파일첨부
NpcShopSpawnTable.java 를 datatables에 . 파일첨부
L1NpcShopInstance.java 를 Model.Instance에 . 파일첨부
L1NpcShop.java 를 templates에 . 파일첨부
S_PrivateShopforNpc 를 serverpacket 에

---------------------------------------------

server\server\templates\L1Shopitem.java에

private final int _packCount; //검색후 아래에

private final int _enchant;
 
private int _count;  //추가

 

그리구 밑에 인수

이런식으로 변경
 public L1ShopItem(int itemId, int price, int packCount, int enchant) {
  _itemId = itemId;
  _item = ItemTable.getInstance().getTemplate(itemId);
  _price = price;
  _packCount = packCount;
  _enchant = enchant;
  _count = 1;
 }
---------------------


 public int getPackCount() {
  return _packCount;  <--이부분 밑에 아래식으로 넣음
 }

 public int getEnchant() {
  return _enchant;
 }

 public int getCount(){
  return _count;
 }
 
 public void setCount(int i) {
  _count = i;
 }

----------------------

ShopTable.java 에 보면 에러가 2군데 

private L1Shop loadShop(int npcId, ResultSet rs) throws SQLException { <---검색

item = new L1ShopItem(itemId, sellingPrice, packCount, 0); 뒤에 , 0 을 넣어줌.두군데

----------------------

 

GameServer.java에
import l1j.server.GameSystem.NpcShopSystem;
import l1j.server.server.datatables.NpcShopTable;
임포트 하고


 HomeTownController.getInstance();  //검색

  NpcShopTable.getInstance();
  NpcShopSystem.getInstance();   //추가

------------------------

C_ShopAndWarehouse.java


import l1j.server.server.datatables.NpcShopTable; <--임포트

 


검색 -->  if(size != 0 && npcImpl.equalsIgnoreCase("L1Merchant"))  
      buyItemFromShop(pc, npcId, size);
 if(size != 0 && npcImpl.equalsIgnoreCase("L1NpcShop")){
     buyItemFromNpcShop(pc, npcId, size);
  break;
 }  //이런식으로 변경

 if(size != 0 && isPrivateShop)           
     buyItemFromPrivateShop(pc, findObject, size);
 break;

 


buyItemFromPrivateShop <--검색 이위에다가

/** 영자 상점 엔피씨 샵에서 구입 */
 private void buyItemFromNpcShop(L1PcInstance pc, int npcId, int size){
  L1Shop shop = NpcShopTable.getInstance().get(npcId);
  L1ShopBuyOrderList orderList = shop.newBuyOrderList();
  int itemNumber; long itemcount;
  
  for (int i = 0; i < size; i++) {
   itemNumber = readD();
   itemcount = readD();
   if(itemcount <= 0) {
    return;
   }
   if(size >= 2){ //동시에 다른물건을 살수없게 2개가 선택된다면,
    pc.sendPackets(new S_SystemMessage("\\fY한번에 서로 다른아이템을 구입할수없습니다."));
    return;
   }
   if(pc.getMapId() == 360){//오렌시장을 잡템만 가능하게했기때문에, 오렌시장에선 15개씩 수량 이상 안사지게   
    if(itemcount > 15) {
     pc.sendPackets(new S_SystemMessage("\\fY최대구매수량 : 잡템류(15개씩) / 장비류(1개씩)"));
     return;
    }
   } 
   orderList.add(itemNumber, (int)itemcount , pc); 
  }
  int bugok = orderList.BugOk();
  if (bugok == 0){
   shop.sellItems(pc, orderList);
      //백섭복사 방지 수량성버그방지
         pc.saveInventory();
      //백섭복사 방지 수량성버그방지
  }
 }

------------------------

C_ShopList.java
import l1j.server.server.model.Instance.L1NpcShopInstance; 임포트
import l1j.server.server.serverpackets.S_PrivateShopforNpc; 임포트 


if (pc.isGhost()) { return; } <--검색  아래처럼 변경

  if (pc.isGhost()) { return; }
  L1Object obj = L1World.getInstance().findObject(objectId);
  
    if(obj instanceof L1PcInstance)
     pc.sendPackets(new S_PrivateShop(pc, objectId, type));
     else if(obj instanceof L1NpcShopInstance)
       pc.sendPackets(new S_PrivateShopforNpc(pc, objectId, type));
      else
       return;
      }

 

L1Shop.java

// 고대의 금화 상인 (트릭)
  if(getNpcId() == 4208001){  검색해서 위에

// 영자쫄따구 엔피씨 상점 
    if(getNpcId() >= 8000000){ //해당 번호 위부터 전부 인식
     if(!NoTaxEnsureSell(pc, orderList)){
      return;
     }
     
     NpcShopSellItems(pc.getInventory(), orderList);
     return;
    
    }

------------------------

Shop_npc 와 Spanwlist_npc_shop 를 배치해주고 npc 테이블에 상점들 추가

예 ) 8000001 영자상점 영자상점 무인상점 L1NpcShop 5869 99 0 0 -10000 18 14 16 6 15 60 0 3276  0 0 0 0 0 0 0 0 0 0 0 0 0  0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0

0 댓글