顯示具有 經驗 標籤的文章。 顯示所有文章
顯示具有 經驗 標籤的文章。 顯示所有文章

2014年6月6日 星期五

【Java教學】新增組隊等級限制

新增組隊等級限制


修改

C_CreateParty.java 

加入 


// 限制玩家組隊等級 
import l1j.server.Config; 
// 限制玩家組隊等級 end 


搜尋 

L1PcInstance targetPc = (L1PcInstance) temp; 


下面加入 

// 限制玩家組隊等級 
// 低組低 
            if (pc.getLevel() <= Config.Party_Lv && targetPc.getLevel() <= Config.Party_Lv) { 
              pc.sendPackets(new S_ServerMessage(166, "等級尚未達到 " + (Config.Party_Lv + 1) + " 級,所以無法組隊")); 
              targetPc.sendPackets(new S_ServerMessage(166, "等級尚未達到 " + (Config.Party_Lv + 1) + " 級,所以無法組隊")); 
            } 
// 低組高 
            if (pc.getLevel() <= Config.Party_Lv && targetPc.getLevel() > Config.Party_Lv) {  
              pc.sendPackets(new S_ServerMessage(166, "等級尚未達到 " + (Config.Party_Lv + 1) + " 級,所以無法組隊")); 
              targetPc.sendPackets(new S_ServerMessage(166, "對方等級尚未達到 " + (Config.Party_Lv + 1) + " 級,所以無法組隊")); 
            } 
// 高組低 
            if (pc.getLevel() > Config.Party_Lv && targetPc.getLevel() <= Config.Party_Lv) { 
              pc.sendPackets(new S_ServerMessage(166, "對方等級尚未達到 " + (Config.Party_Lv + 1) + " 級,所以無法組隊")); 
              targetPc.sendPackets(new S_ServerMessage(166, "等級尚未達到 " + (Config.Party_Lv + 1) + " 級,所以無法組隊")); 
            } 
// 限制玩家組隊等級 end 


搜尋 

if (pc.isInParty()) { 


上面加入 

// 限制玩家組隊等級 
            if (pc.getLevel() > Config.Party_Lv && targetPc.getLevel() > Config.Party_Lv) { 
// 限制玩家組隊等級 end 


搜尋 

targetPc.sendPackets(new S_Message_YN(953, pc.getName())); 


下面加入 

// 限制玩家組隊等級 
} 
// 限制玩家組隊等級 end 


修改

CalcExp.java 

搜尋 

                  if (party_level > 0) { 
                    dist = ((ptMembers[cnt].getLevel() * ptMembers[cnt] 
                          .getLevel()) / party_level); 
                  } 


把這段修改為 

// 限制玩家組隊等級 
                  if (party_level > Config.Party_Lv) { 
                    dist = ((ptMembers[cnt].getLevel() * ptMembers[cnt] 
                          .getLevel()) / party_level); 
                  } else { 
                    party_exp = 0;  
                  } 
// 限制玩家組隊等級 end 


修改

Config.java 

搜尋 

public static int DEFAULT_CHARACTER_SLOT; 


下面加入 

// 限制玩家組隊等級 
  public static int Party_Lv; 
// 限制玩家組隊等級 end 


搜尋 

        DEFAULT_CHARACTER_SLOT = Integer.parseInt(altSettings.getProperty( 
              "DefaultCharacterSlot", "6")); 


下面加入 

// 限制玩家組隊等級 
        Party_Lv = Integer.parseInt(altSettings.getProperty( 
              "PartyLv", "5")); 
// 限制玩家組隊等級 end 


搜尋 

      } else if (pName.equalsIgnoreCase("DefaultCharacterSlot")) { 
        DEFAULT_CHARACTER_SLOT = Integer.valueOf(pValue); 


下面加入 

// 限制玩家組隊等級 
      } else if (pName.equalsIgnoreCase("PartyLv")) { 
        Party_Lv = Integer.parseInt(pValue); 
// 限制玩家組隊等級 end 


修改

altsettings.properties 

最下面新增 

#------------------------------------------------------------- 
#玩家等級高於多少 才能組隊 等級低於設定值 就算組隊 獲得的經驗值為0 
#不限制玩家等級 則設定為 = 0 
PartyLv = 5 
#------------------------------------------------------------- 

2014年6月2日 星期一

【Java教學】線上一段時間給獲得經驗

線上一段時間給獲得經驗


1.
打開
l1j.server.server.clientpackets.clogintoserver.java  

查找

if (pc.getLevel() >= 51 && pc.getLevel() - 50 > pc.getBonusStats())

在上面貼上下面的代瑪  

//end 
 
//add
線上經驗  
if (!pc.hasSkillEffect(7902)){ 
 
pc.setSkillEffect(7902, config.jytime*1000); 
 
 
//add
線上經驗  



2.
打開
l1j.server.server.model.skill.l1skilltemer.java  

查找

else if (skillId == COOKING_1_0_N || skillId == COOKING_1_0_S) 

上面貼上  

//add
經驗  
else if (skillId == 7902) 
 
 

L1PcInstance pc = (L1PcInstance) cha; 
 
// L1PcInstance l1character = null; //
自動生成的  
L1PcInstance l1pcinstance24 = (L1PcInstance)cha; 
 
if ((cha instanceof L1PcInstance) && l1pcinstance24.getExp() <= 1111111111){ 
 
l1pcinstance24.setExp(l1pcinstance24.getExp() + Config.jy); 
 
l1pcinstance24.setSkillEffect(7902, Config.jytime*1000);//
單位:秒  
pc.sendPackets(new S_SystemMessage("
獲得神的祝福"));  
 
 
//add
經驗
  


3,
config.java  

添加

public static boolean fdjy; //TODO 是否開啟給經驗  
public static int jy; //TODO
設定數量  
public static int jytime; //TODO
設定時間  


找到

NPC_DELETION_TIME = Integer.parseInt(altSettings.getProperty(  
"NpcDeletionTime", "10")); 
 



下面加上下面的代瑪  

//TODO
 線上一段時間給經驗  
fdjy = Boolean.parseBoolean(altSettings.getProperty( 
 
"fdjy", "false")); 
 
jy = Integer.parseInt(altSettings.getProperty( 
 
"jy", "10")); 
 
jytime = Integer.parseInt(altSettings.getProperty( 
 
"jytime", "100")); 
 





4.
打開CONFIG資料夾下altsettings.properties  

添加  

#
──────────────────  

#
線上一段時間給獲得經驗  
#
是否開啟  
fdjy = true 
 
#
設定物品  
jy = 403080 
 
#
設定時間(單位: 
jytime = 100 
 

#
────────────────── 


2013年6月1日 星期六

【Java教學】【★★★★★】經驗加倍藥水總整合

由於新手可能爬文都只爬到部分章節~或是之前範例程式碼(只有寫出200%其它要自己新增)
也或許近日小弟一直被詢問到此類問題,故發出此篇教學~希望能解決大家的困擾~也能暫緩讓小弟休息一下!
小弟只是將部分散亂的章節重新再整理一遍而已並非原創,然而原創我也不知道是哪位大大~


廢話不多說~我直接講重點~!!

整合的地方為CITEMUSE整段程式碼整合,不需要再寫入一堆else if(itemId==xxx) !!

進入教學:


****O**P**Q**L**O****【【步驟1】】********************

server/server/model/skill/L1SkillId.java

直接拉到最下面 在最後 } 的上面加入以下

public static final int EDD1 = 991000; //經驗1.5
public static final int EDD2 = 991001; //
經驗2
public static final int EDD3 = 991002; //
經驗3

再來左上角找到儲存~按下去!


****O**P**Q**L**O****【【步驟2】】********************

server/server/clientpackets/C_itemUSe.java

搜尋 import static l1j.server.server.model.skill.L1SkillId.WIND_WALK;

在下方加入

import static l1j.server.server.model.skill.L1SkillId.EDD1;
import static l1j.server.server.model.skill.L1SkillId.EDD2;
import static l1j.server.server.model.skill.L1SkillId.EDD3;


****O**P**Q**L**O****【【步驟3】】********************

server/server/clientpackets/C_itemUSe.java

搜尋 else if (itemId == L1ItemId.POTION_OF_HEALING


在上方加入:
} else if (itemId >= 999000&&itemId<=999002) { // 經驗加倍藥水(150%~300%)整合目標1
                       if (pc.hasSkillEffect(EDD1) == false
                              && pc.hasSkillEffect(EDD2) == false
                              && pc.hasSkillEffect(EDD3) == false) { //
確認經驗加倍狀態
                        int time = 60 * 60 * 1000; //
設置時間為60
                       int effect = itemId-8000; //
節省程式碼輸入的重點 整合目標2
                       pc.sendPackets(new S_SkillSound(pcObjid, 7013)); //
右上角經驗圖示(目前只找到20%的圖)
                        pc.broadcastPacket(new S_SkillSound(pcObjid, 7013, time));
                        pc.setSkillEffect(effect, time); //
增加魔法狀態(effect:道具編號-8000=狀態編號)
                        pc.getInventory().removeItem(l1iteminstance, 1); //
移除物品
                        pc.sendPackets(new S_SystemMessage("
狩獵獲取經驗上升了!"));
                      
               } else{
                        pc.sendPackets(new S_SystemMessage("經驗加倍效果已存在
"));
                      }
                            }


****O**P**Q**L**O****【【步驟4】】********************

server/server/model/L1SkillTimer.java

搜尋 } else if (skillId == STATUS_CHAT_PROHIBITED) { // チャット禁止
           if (cha instanceof L1PcInstance) {
               L1PcInstance pc = (L1PcInstance) cha;
               pc.sendPackets(new S_ServerMessage(288)); // チャットができるようになりました。

           }
再下方加入:

        } else if (skillId >= EDD1 && skillId <= EDD3) { // 經驗狀態
           if (cha instanceof L1PcInstance) {
           L1PcInstance pc = (L1PcInstance) cha;
           pc.sendPackets(new S_SystemMessage("
獲取經驗恢復正常!"));
           }
         

****O**P**Q**L**O****【【步驟5】】********************

server/server/utils/CalcExp.java

import java.util.ArrayList; 上方匯入宣告

import static l1j.server.server.model.skill.L1SkillId.EDD1;
import static l1j.server.server.model.skill.L1SkillId.EDD2;
import static l1j.server.server.model.skill.L1SkillId.EDD3;


****O**P**Q**L**O****【【步驟6】】********************

server/server/utils/CalcExp.java

搜尋 double expup = 1; 在下方插入

double DEXP = 1.0;

然後在下面的

if (pc.gasSkillEffect(XXXXXXXXXXXXXXXXXX

的上方加入以下

                  if (pc.hasSkillEffect(EDD1)) { DEXP = 1.5; }
            if (pc.hasSkillEffect(EDD2)) { DEXP = 2; }
            if (pc.hasSkillEffect(EDD3)) { DEXP = 3; }


****O**P**Q**L**O****【【步驟7】】********************

server/server/utils/CalcExp.java

搜尋 iint add_exp = (int) (exp * exppenalty * 

exp * 後方加入 DEXP*


存檔~編譯核心~

****O**P**Q**L**O****【【步驟8】】********************

將附件 etcitem 中的經驗卷軸複製貼上你DB中的 etcitem
(注意小弟的沒有裝上"打寶公告"~所以請自行調整)

http://bbs.djorz.com/job.php?action=download&pid=tpc&tid=194424&aid=26870

重新啟動伺服器~完成上線測試吧!!


****O**P**Q**L**O****【【完成】】********************


ectitem下載