美工GM 版主
文章數 : 646 注冊日期 : 2021-09-23
| 主題: [核心]java核心修改 能力值,經驗值 周一 10月 04, 2021 10:45 pm | |
| 首先能力值需要改3個檔案 calcexp C_RequestLoginToServer C_RequestAttr 先說一下新版現在能力值最高隻能點到127超過會變1,所以別設定超過127唷!
calcexp修改位置
if((l1pcinstance.get_baseStr() +
l1pcinstance.get_baseDex() +
l1pcinstance.get_baseCon() +
l1pcinstance.get_baseInt() +
l1pcinstance.get_baseWis() +
l1pcinstance.get_baseCha()) < 150)←這邊150是
你所有能力值總數,如果你要最高可以點到
127的話就127*6=762所以那邊就填762
C_RequestLoginToServer修改位置
if((l1pcinstance.get_baseStr() +
l1pcinstance.get_baseDex() +
l1pcinstance.get_baseCon() +
l1pcinstance.get_baseInt() +
l1pcinstance.get_baseWis() +
l1pcinstance.get_baseCha()) < 150)←這邊跟
clacexp一樣150表示全能力值總數
C_RequestAttr修改位置,上面兩個都是改總互
值這邊是每種能力最高
if(l1pcinstance.get_baseStr() < 25)←str是力量,
25表示最多點到25你隻要改你想要最高限定即可!
if(l1pcinstance.get_baseDex() < 25)←dex敏捷
if(l1pcinstance.get_basecon() < 25)←con體質
if(l1pcinstance.get_baseint() < 25)←int智力
if(l1pcinstance.get_basewis() < 25)←wis精神
if(l1pcinstance.get_basecha() < 25)←魅力
====================以下為經驗值核心修改====================
經驗值要修改核心是clacexp
原始檔,我舉例一段出來解釋唷
if(char_level >= 70 && char_level <= 74)←這邊
表示70等到74等的99.99%
exppenalty = 1.0/4.0;←表示上述等級間所
的到經驗值都必須除4
else←結尾 if為頭 else為尾
if(char_level >= 75 && char_level <= 78)←75-78
之間
exppenalty = 1.0/8.0;←表示上述期間得到經驗值除以8
else
然後到固定等級以後,原始碼開始走向每升一及改一次所需經驗
if(char_level == 79)←79級0%-100%
exppenalty = 1.0/16.0;←所得到經驗值除以16
else
if(char_level == 80)←80級0%-100%
exppenalty = 1.0/32.0;←所得到經驗值除以
32
else
if(char_level == 81))←81級0%-100%
exppenalty = 1.0/64.0;←所得到經驗值除以
64
else
後面還有很多就省略了
所以才會讓大家都很難練因為到99級好像要把所得到經驗除以100萬吧
if(char_level >= 65 && char_level <= 74)←65級0%-74級100%
exppenalty = 1.0/1.5;←所得到經驗值除以1.5
else
if(char_level >= 75 && char_level <= 84)←75級0%-84級100%
exppenalty = 1.0/2.0;←所得到經驗值除以2TW
else
if(char_level >= 85 && char_level <= 94)←85級0%-94級100%
exppenalty = 1.0/3.0;←所得到經驗值除以3
else
就這樣改了因該不算難拉,給大家參考看看唷!
希望能幫到你們唷!
NPC攻速(修改)
基本上用的是467,因為至少467上面mobskill db比較完整這篇主要是解決施放魔法npc死了還一直攻擊
如果是使用467以上版本的還有出現此問題在
往下看吧...
更改:
L1NpcInstance.java
搜索public void attackTarget
最下麵
if(skill == 0).....//省略
useSkill(target, skill);
_sleep_time = calcSleepTime
(get_atkspeed()); //補上此行
_sleep_time是用來在每次NPC做完一次動作之後,如攻擊或移動
會停止多久再做下個動作,原本在一般攻擊的時候有加入
但是在使用skill時卻沒有,也就是說有可能skill用完馬上接普攻,中間沒間斷
或是skill沒有間隔時間了化 那就會狂放技能,
但是技能圖表顯示都有固定的時間,發的太快就
會導緻死了動作還沒做完的情況
使用轉生藥水,會廣播,並有天使
修改:C_RequestItemUSe
搜尋:if(k == 43000)-
找到後,仔細看,會有這段
l1pcinstance.sendPackets(new S_ServerMessage(822, ""));
在這段下麵加上程式碼
broadcastToAll(("\\fZ→恭喜")+("【")+
(l1pcinstance.get_name())+("】")+("轉生←"));
說明一下:
l1pcinstance.get_name()),意思就是,使用該道具的玩家ID,也就是當喝下去時
就會顯示:→恭喜【線上GM】轉生←
要出現的文字,可以自己更改
至於,要喝下轉生藥水,會出現天使,要怎麽改
沒記錯,原本是這樣:
l1pcinstance.sendPackets(new S_SkillSound(j, 191));
l1pcinstance.broadcastPacket(new S_SkillSound(j, 191));
這段程式也是在,轉生藥水那邊,仔細找找,隻要將191這個數字,改成39440
l1pcinstance.sendPackets(new S_SkillSound(j, 3944));
l1pcinstance.broadcastPacket(new S_SkillSound(j, 3944));
兩個都要改喔!這樣子,喝下去,就會變成天使出現的圖案!
[教學]打死指定怪物~系統廣播
首先~你要先加入廣播功能
在L1Attack.class最下面~有個privateXX上方加入,還有[ i ]內空格自行刪除
private void broadcastToAll(String s)
L1PcInstance al1pcinstance[] =
L1World.getInstance().getAllPlayers();
S_SystemMessage s_systemmessage = new
S_SystemMessage(s);
for(int i = 0; i < al1pcinstance.length; i++)
al1pcinstance[ i ].sendPackets
(s_systemmessage);
以上~在衝武防廣播就有了~所以大家應該知道
首先尋找private int PcNpcDamageCalc()
然後在return (int)dmg;上面貼上下面的指令
以下為打贏指定怪物廣播
if(dmg >= targetNpc.get_currentHp() && 這邊請看"附注")
broadcastToAll((newStringBuilder()).append
("玩家【").append(player.get_name()).append("】
打贏了怪物【").append(targetNpc.get_name
()).append("】").toString());
括弧裡面都是廣播之文字~請自行更改所需
附注~targetNpc.getNpcTemplate().get_npcId() >=
45681 && targetNpc.getNpcTemplate().get_npcId
() <= 45684~這樣的設定~就是打贏四大龍會顯示
怪物編號大於等於45681小於等於45684~如
果要改指定怪物~自己改編號吧
targetNpc.getNpcTemplate().get_npcId() == 怪物編號
這個功能~你們也可以套用在攻城部分
給個條件式如下~
if(player.get_classId() == 0 || player.get_classId() == 1)
當職業是公主或是王子~才會發動
if(dmg >= targetNpc.get_currentHp() &&
targetNpc.getNpcTemplate().get_npcId() == 守護者之塔或是王冠的怪物編號)
最後一刀打死守護者之塔的王族才會廣播
broadcastToAll((newStringBuilder()).append("玩家
【").append(player.get_name()).append("】所領導的
【").append(player.getClanname()).append("】
血盟 取得了亞丁城").toString()); | |
|