天堂特效天堂私服
Would you like to react to this message? Create an account in a few clicks or log in to continue.


補丁設計、版本販售、DB修改、天堂私服
 
首頁常見問題搜尋Latest images會員列表會員群組登入會員註冊

 

 [核心]java核心修改 能力值,經驗值

向下 
發表人內容
美工GM
版主
版主
美工GM


文章數 : 646
注冊日期 : 2021-09-23

[核心]java核心修改 能力值,經驗值 Empty
發表主題: [核心]java核心修改 能力值,經驗值   [核心]java核心修改 能力值,經驗值 Empty周一 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());
回頂端 向下
https://lineage888.666forum.com
 
[核心]java核心修改 能力值,經驗值
回頂端 
1頁(共1頁)

這個論壇的權限:無法 在這個版面回復文章
天堂特效天堂私服 :: 【教學相關資料】-
前往: