查看: 361|回复: 2

转贴:转职

[复制链接]

3

主题

155

帖子

587

积分

高级会员

Rank: 4

积分
587
发表于 2023-10-27 17:48:29 | 显示全部楼层 |阅读模式
【Java教學】轉職

核心部分

1.首先修改
l1j.server.server.clientpackets.C_RequestCreateChar.java

找到

pc.resetBaseMr();
pc.setElfAttr(0);


下面加入

//各職業選擇分類職業系列天使de淚+ ssississi指導
pc.setZyxZxl(0);
// end


2.修改
l1j.server.server.model.Instance.L1PcInstance.java

找到

public int getElfAttr() {
return _elfAttr;
}

public void setElfAttr(int i) {
_elfAttr = i;
}

下面新增

//各職業選擇分類職業系列天使de淚+ ssississi指導
private int _zyxZxl; //

public int getZyxZxl() {
return _zyxZxl;
}

public void setZyxZxl(int i) {
_zyxZxl = i;
}
// end


3.修改

l1j.server.server.storage.mysql.MySqlCharacterStorage.java

找到

pc.setElfAttr(rs.getInt("ElfAttr"));


下面增加

//各職業選擇分類職業系列天使de淚+ ssississi指導
pc.setZyxZxl(rs.getInt("ZyxZxl"));
//end


再找到

.prepareStatement("INSERT INTO characters SET account_name=?,objid=?,char_name=?,level=?,Exp=?,MaxHp=?,CurHp=?,MaxMp=?,CurMp=?,Ac=?,Str= ?,Con=?,Dex=?,Cha=?,Intel=?,Wis=?,Status=?,Class=?,Sex=?,Type=?,Heading=?,LocX=?,LocY=?, MapID=?,Food=?,Lawful=?,Title=?,ClanID=?,Clanname=?,BonusStatus=?,ElixirStatus=?,ElfAttr=?,PKcount=?,ExpRes=?,PartnerID=?,AccessLevel= ?,OnlineStatus=?,HomeTownID=?,Contribution=?,Pay=?,HellTime=?,Banned=?,Karma=?,LastPk=?");

這段改成

.prepareStatement("INSERT INTO characters SET account_name=?,objid=?,char_name=?,level=?,Exp=?,MaxHp=?,CurHp=?,MaxMp=?,CurMp=?,Ac=?,Str= ?,Con=?,Dex=?,Cha=?,Intel=?,Wis=?,Status=?,Class=?,Sex=?,Type=?,Heading=?,LocX=?,LocY=?, MapID=?,Food=?,Lawful=?,Title=?,ClanID=?,Clanname=?,BonusStatus=?,ElixirStatus=?,ElfAttr=?,ZyxZxl=?,PKcount=?,ExpRes=?,PartnerID= ?,AccessLevel=?,OnlineStatus=?,HomeTownID=?,Contribution=?,Pay=?,HellTime=?,Banned=?,Karma=?,LastPk=?");


接下來再找到

pstm.setInt(++i, pc.getElfAttr());


下面加入

//各職業選擇分類職業系列天使de淚+ ssississi指導
pstm.setInt(++i, pc.getZyxZxl());
//end


在接著找到

.prepareStatement("UPDATE characters SET level=?,Exp=?,MaxHp=?,CurHp=?,MaxMp=?,CurMp=?,Ac=?,Str=?,Con=?,Dex=?,Cha=? ,Intel=?,Wis=?,Status=?,Class=?,Sex=?,Type=?,Heading=?,LocX=?,LocY=?,MapID=?,Food=?,Lawful=?,Title =?,ClanID=?,Clanname=?,BonusStatus=?,ElixirStatus=?,ElfAttr=?,PKcount=?,ExpRes=?,PartnerID=?,AccessLevel=?,OnlineStatus=?,HomeTownID=?,Contribution=? ,HellTime=?,Banned=?,Karma=?,LastPk=? WHERE objid=?");


把這段改成

.prepareStatement("UPDATE characters SET level=?,Exp=?,MaxHp=?,CurHp=?,MaxMp=?,CurMp=?,Ac=?,Str=?,Con=?,Dex=?,Cha=? ,Intel=?,Wis=?,Status=?,Class=?,Sex=?,Type=?,Heading=?,LocX=?,LocY=?,MapID=?,Food=?,Lawful=?,Title =?,ClanID=?,Clanname=?,BonusStatus=?,ElixirStatus=?,ElfAttr=?,ZyxZxl=?,PKcount=?,ExpRes=?,PartnerID=?,AccessLevel=?,OnlineStatus=?,HomeTownID=? ,Contribution=?,HellTime=?,Banned=?,Karma=?,LastPk=? WHERE objid=?");


最後找到

pstm.setInt(++i, pc.getElfAttr());


//各職業選擇分類職業系列天使de淚+ ssississi指導
pstm.setInt(++i, pc.getZyxZxl());
//end


4.修改

l1j.server.server.clientpackets.C_RequestNPCAction.java

找到

// ElfAttr:0.無屬性,1.地屬性,2.火屬性,4.水屬性,8.風屬性
else if (s.equalsIgnoreCase("fire")) //エルフの屬性變更“火の系列を習う”
{
if (pc.isElf()) {
if (pc.getElfAttr() != 0) {
return;
}
pc.setElfAttr(2);
pc.save(); // DBにキャラクター情報を書き迂む
pc.sendPackets(new S_SkillIconGFX(15, 1)); //體の隅々に火の精靈力が染みこんできます。
htmlid = ""; //ウィンドウを消す
}
}

上面增加

//各職業選擇分類職業系列天使de淚+ ssississi指導
else if (s.equalsIgnoreCase("longshen")) //騎士
{
if (pc.getZyxZxl() != 0) {
return;
}
pc.setZyxZxl(1);
pc.save(); //存進DB
pc.sendPackets(new S_SystemMessage("你成為了騎士-黑暗系列!"));
htmlid = "";
}
else if (s.equalsIgnoreCase("kuangao")) //騎士
{
if (pc.getZyxZxl() != 0) {
return;
}
pc.setZyxZxl(2);
pc.save(); //存進DB
pc.sendPackets(new S_SystemMessage("你成為了騎士-光明系列!"));
htmlid = "";
}
// end


上面這裡註意了:pc.setZyxZxl(1);這裡面的數值要注意了,

1. 2. 3.到時候記住到DB時候隻是記這個數字的!

用法:
比如:

//靈魂昇華藥水
} else if(itemId == 51021){
if (pc.isKnight() && pc.getZyxZxl() == 2) {//這裡就是定義要騎士-光明系列才額可以使用,這裡的2就是對應上面的數字
if(pc.hasSkillEffect(77000) == true) {
pc.sendPackets(new S_SystemMessage("您已經使用過靈魂魔法了!"));
}else {
pc.setSkillEffect(77000,60*1000);
pc.setAdvenHp(pc.getBaseMaxHp() / 4);
pc.setAdvenMp(pc.getBaseMaxMp() / 4);
pc.addMaxHp(pc.getAdvenHp());
pc.addMaxMp(pc.getAdvenMp());
pc.sendPackets(new S_SkillSound(pcObjid, 1608));
pc.broadcastPacket(new S_SkillSound(pcObjid, 1608));
pc.sendPackets(new S_SystemMessage("身體感受到細微的變化。"));
pc.getInventory().removeItem(l1iteminstance, 1);
}
} else pc.sendPackets(new S_SystemMessage("你不是騎士-狂傲系列或者勇士淚光不足!"));
}


以上是核心部分修改完成了!

DB
接下來就是DB

Db的characters檔案在ElfAttr前面增加一個ZyxZxl檔案!就OK啦!

新增的名稱為ZyxZxl類型為int長度為10十進位為0允許空不到勾

DB也完成了! !


對話檔補丁
下面也是我的一個例子而已:

名稱命名為VKxz002-h.html
台灣的朋友就可以命名為VKxz003-c.html

對話檔
<body>
<font fg=ffffff><p align=left>吉薩斯:</p></font>
<br>
<p>在那個多個職業裡,如果說選擇勇士,那你會毫不猶豫選擇騎士吧?
<p>沒錯,他們擁有強大的攻擊力,擁有堅固的防守!
<p>你喜歡什麼類型?
<p>你可以選擇其中一種,攻擊或防守!
<p>騎士-黑暗系列=攻擊型
<p>騎士-光明系列=防守型
<br><br>
<a action="longshen">學習騎士-黑暗系列職業</a><br>
<a action="kuangao">學習騎士-光明系列職業</a><br>
<br>
<img src="#331" link="VKxz002"></img>
</body>
我要说一句 收起回复
回复

使用道具 举报

3

主题

155

帖子

587

积分

高级会员

Rank: 4

积分
587
 楼主| 发表于 2023-10-27 17:49:19 | 显示全部楼层
转贴,行不行不知道阿,
我要说一句 收起回复
回复 支持 反对

使用道具 举报

0

主题

45

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2023-10-28 14:26:55 | 显示全部楼层

谢谢大大分享
我要说一句 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表