2015年4月—2024年4月,论坛已建立9周年,欢迎加入QQ群讨论:419848937

npc编写——100%强化

主要是游戏中一些经典任务、游戏资料的科普.
回复
头像
hagcse
Mr.GL
Mr.GL
帖子: 151
注册时间: 2018-02-25 15:50

npc编写——100%强化

帖子 hagcse » 2018-03-10 15:48

這腳本修改於安定強化師

可以利用某道具 每次執行提升1點強化值 沒有爆的機率 每次都是100%

不喜這功能腳本的人 或許可以把強化道具條件設難一點! 因為是 100%的ˇˇ

測試過可執行啦!


和安定值強化師不同的地方是 我這腳本可以點超過安定值!

安定強化師是點一下直接到安定值! 我是執行一次武器就多+1!

其強化條件是 1個可樂 + 10張祝武! S80為20張祝武! S84為30張祝武!

破滅國境所有新裝 都可以強化!

s84! 包含雙必首! 符印都可以強化! ^^


特別注意事項! 這腳本無視於CONFIG裡的強化上限! 也無視你CONFIG所設的安定值! 也無視你CONFIG所設的白武祝武機率!

判斷完全是依照這腳本上的數值 最多(上限)就是強化到 65535 ! (我是設65535)

強化成功率就是固定100% ! 強化之後 +20變+21 +21變+22 依此類推!

強化所需要條件: (我自已預設的)

D武 D防 : 一個可樂+10張D祝武或祝防
C武 C防 : 一個可樂+10張C祝武或祝防
B武 B防 : 一個可樂+10張B祝武或祝防
A武 A防 : 一個可樂+10張A祝武或祝防
S武 S防 : 一個可樂+10張S祝武或祝防
S80武 S80防 : 一個可樂+20張S祝武或祝防
S84武 S84防 : 一個可樂+30張S祝武或祝防

如果需要設定上限的話! 請將下面腳本! 所有看到65535的地方修改到您要強化的上限值即可!

或是自已宣告個MAX = xxxx <==您要強化的上限值

再將MAX 對應到 65535的地方 會比較方便你們修改

代码: 全选

01.import sys  

02.from net.sf.l2j.gameserver.model.quest                       import State  

03.from net.sf.l2j.gameserver.model.quest                       import QuestState  

04.from net.sf.l2j.gameserver.model.quest.jython                import QuestJython as JQuest  

05.from net.sf.l2j.gameserver.model.base                        import Experience  

06.qn = "5201314_Emily"  

07.SmithNpc = 520006      #這裡可以修改你要進行完美強化的NPC編號 我NPC是自訂的 L2裡沒有 520006 這個NPC 請自已修改或自訂  

08.QuestId = 5201314  

09.QuestDesc = "custom"  

10.COLA = 3434         #完美強化時所需要的道具  可以自行在這修改要強化所需的道具編號ID  預設為可樂  

11.COLANUMBER = 1      #完美強化時所需要的道具數量  可以自行在這修改要強化所需道具的數量  預設可樂的數量1個  

12.MAX = 65535         #提供給玩家的完美強化上限值  可以自行在這修改提供給玩家的強化上限  預設為65535  

13.acceptableArmorTypes  = ['Light','Heavy','Magic','Shield','Sigil']  

14.acceptableWeaponTypes = ['Sword','Blunt','Dagger','Bow','Pole','Etc','Fist','Dual Sword','Dual Fist','Big Sword','Big Blunt','Ancient','Crossbow','Rapier','Dual Dagger']  

15.acceptableJewelTypes  = ['None']  

16.HTMLSTART = "00.htm"  

17.HTMLGRATZ = "11.htm"  

18.HTMLCHEAT = "22.htm"  

19.HTMLNOSOP = "33.htm"  

20.class Quest (JQuest) :  

21.  def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)  

22.  def onEvent (self,event,st) :  

23.    if event == "YES" :  

24.                st.playSound("ItemSound.quest_finish")  

25.      st.giveItems(57,1000)  

26.      return "YES.htm"  

27.    if event == "NO" :  

28.                st.playSound("ItemSound.quest_finish")  

29.      st.takeItems(57,1000000)  

30.      st.getPlayer().getStat().removeExpAndSp(0,100000)  

31.      return "NO.htm"  

32.    if event == "choose_item_enchant" :  

33.      st.playSound("ItemSound.quest_accept")  

34.      htmltext = ""  

35.      price = ""  

36.      for Item in st.getPlayer().getInventory().getItems() :  

37.        itemType = Item.getItem().getItemType().toString()  

38.        itemGrade = Item.getItem().getCrystalType()  

39.        itemEnchant = Item.getEnchantLevel()  

40.        if (itemGrade > 0 and not Item.isEquipped()) :  

41.          if (itemType in acceptableWeaponTypes and itemEnchant < MAX) or (itemType in acceptableArmorTypes and itemEnchant < MAX) or (itemType in acceptableJewelTypes and itemEnchant < MAX) :  

42.            if itemType in acceptableArmorTypes or itemType in acceptableJewelTypes :  

43.              if itemGrade == 1 :                #D 防具  

44.                price = 10                       #安全強化+1 祝福武防所需要的數量  

45.              elif itemGrade == 2 :              #C 防具  

46.                price = 10                       #安全強化+1 祝福武防所需要的數量  

47.              elif itemGrade == 3 :              #B 防具  

48.                price = 10                       #安全強化+1 祝福武防所需要的數量  

49.              elif itemGrade == 4 :              #A 防具  

50.                price = 10                       #安全強化+1 祝福武防所需要的數量  

51.              elif itemGrade == 5 :              #S 防具  

52.                price = 10                       #安全強化+1 祝福武防所需要的數量  

53.              elif itemGrade == 6 :              #S80 防具  

54.                price = 10 * 2                   #安全強化+1 祝福武防所需要的數量  

55.              elif itemGrade == 7 :              #S84 防具  

56.                price = 10 * 3                   #安全強化+1 祝福武防所需要的數量  

57.            elif itemType in acceptableWeaponTypes :  

58.              if itemGrade == 1 :                #D 武器  

59.                price = 10                       #安全強化+1 祝福武防所需要的數量  

60.              elif itemGrade == 2 :              #C 武器  

61.                price = 10                       #安全強化+1 祝福武防所需要的數量  

62.              elif itemGrade == 3 :              #B 武器  

63.                price = 10                       #安全強化+1 祝福武防所需要的數量  

64.              elif itemGrade == 4 :              #A 武器  

65.                price = 10                       #安全強化+1 祝福武防所需要的數量  

66.              elif itemGrade == 5 :              #S 武器  

67.                price = 10                       #安全強化+1 祝福武防所需要的數量  

68.              elif itemGrade == 6 :              #S80 武器  

69.                price = 10 * 2                   #安全強化+1 祝福武防所需要的數量  

70.              elif itemGrade == 7 :              #S84 武器  

71.                price = 10 * 3                   #安全強化+1 祝福武防所需要的數量  

72.            htmltext += "<a action=\"bypass -h Quest 5201314_Emily enchantItem_" + str(Item.getObjectId()) +"\">" + "我要將 +" + str(Item.getEnchantLevel()) + " " + Item.getItem().getName() + " 100% 完美強化<br1> ( 請給我 " + str(COLANUMBER) + " 個<font color=\"FFFF00\">可口可樂</font>及 "+ str(price) + " 張同等的<font color=\"FFFF00\">祝福武防</font>卷 )</a><br1>"  

73.      if htmltext == "" :  

74.        htmltext = "<html><title>綜合管理員</title><body><br><br><br>謎之聲:<br>您的身上道具欄內已經沒有可以強化的物品了</body></html>"  

75.      htmltext = "<html><title>綜合管理員</title><body><br><br><img src=\"L2UI.SquareBlank\" width=293 height=0><br>請您在下列挑選一件想強化的物品唷!<br><br><br><br>" + htmltext + "</body></html>"  

76.    elif event.startswith("enchantItem_") :  

77.      amount = ""  

78.      objId = int(event.replace("enchantItem_", ""))  

79.      Item = st.getPlayer().getInventory().getItemByObjectId(objId)  

80.      if Item and not Item.isEquipped() :  

81.        itemType = Item.getItem().getItemType().toString()  

82.        itemGrade = Item.getItem().getCrystalType()  

83.        itemEnchant = Item.getEnchantLevel()  

84.        if itemGrade > 0 :  

85.          if (itemType in acceptableWeaponTypes and itemEnchant < MAX) or (itemType in acceptableArmorTypes and itemEnchant < MAX) or (itemType in acceptableJewelTypes and itemEnchant < MAX) :  

86.            if itemType in acceptableArmorTypes or itemType in acceptableJewelTypes :  

87.              if itemGrade == 1 :                #D 防具  

88.                Scroll = 6576                    #祝福的防具強化卷軸-D級  

89.                price = 10                       #安全強化+1 祝福武防所需要的數量  

90.              elif itemGrade == 2 :              #C 防具  

91.                Scroll = 6574                    #祝福的防具強化卷軸-C級  

92.                price = 10                       #安全強化+1 祝福武防所需要的數量  

93.              elif itemGrade == 3 :              #B 防具  

94.                Scroll = 6572                    #祝福的防具強化卷軸-B級  

95.                price = 10                       #安全強化+1 祝福武防所需要的數量  

96.              elif itemGrade == 4 :              #A 防具  

97.                Scroll = 6570                    #祝福的防具強化卷軸-A級  

98.                price = 10                       #安全強化+1 祝福武防所需要的數量  

99.              elif itemGrade == 5 :              #S 防具  

100.                Scroll = 6578                    #祝福的防具強化卷軸-S級  

101.                price = 10                       #安全強化+1 祝福武防所需要的數量  

102.              elif itemGrade == 6 :              #S80 防具  

103.                Scroll = 6578                    #祝福的防具強化卷軸-S級  

104.                price = 10 * 2                   #安全強化+1 祝福武防所需要的數量  

105.              elif itemGrade == 7 :              #S84 防具  

106.                Scroll = 6578                    #祝福的防具強化卷軸-S級  

107.                price = 10 * 3                   #安全強化+1 祝福武防所需要的數量  

108.            elif itemType in acceptableWeaponTypes :  

109.              if itemGrade == 1 :                #D 武器  

110.                Scroll = 6575                    #祝福的武器強化卷軸-D級  

111.                price = 10                       #安全強化+1 祝福武防所需要的數量  

112.              elif itemGrade == 2 :              #C 武器  

113.                Scroll = 6573                    #祝福的武器強化卷軸-C級  

114.                price = 10                       #安全強化+1 祝福武防所需要的數量  

115.              elif itemGrade == 3 :              #B 武器  

116.                Scroll = 6571                    #祝福的武器強化卷軸-B級  

117.                price = 10                       #安全強化+1 祝福武防所需要的數量  

118.              elif itemGrade == 4 :              #A 武器  

119.                Scroll = 6569                    #祝福的武器強化卷軸-A級  

120.                price = 10                       #安全強化+1 祝福武防所需要的數量  

121.              elif itemGrade == 5 :              #S 武器  

122.                Scroll = 6577                    #祝福的武器強化卷軸-S級  

123.                price = 10                       #安全強化+1 祝福武防所需要的數量  

124.              elif itemGrade == 6 :              #S80 武器  

125.                Scroll = 6577                    #祝福的武器強化卷軸-S級  

126.                price = 10 * 2                   #安全強化+1 祝福武防所需要的數量  

127.              elif itemGrade == 7 :              #S84 武器  

128.                Scroll = 6577                    #祝福的武器強化卷軸-S級  

129.                price = 10 * 3                   #安全強化+1 祝福武防所需要的數量  

130.            if st.getQuestItemsCount(Scroll) >= price and st.getQuestItemsCount(COLA) >= COLANUMBER :  

131.              Item.setEnchantLevel(itemEnchant + 1)  

132.              st.takeItems(Scroll,price)  

133.              st.playSound("ItemSound.quest_finish")  

134.              st.takeItems(COLA,COLANUMBER)  

135.              htmltext = HTMLGRATZ  

136.            else :  

137.              htmltext = HTMLNOSOP  

138.          else :  

139.            htmltext = HTMLCHEAT  

140.        else :  

141.          htmltext = HTMLCHEAT  

142.      else :  

143.        htmltext = HTMLCHEAT  

144.    return htmltext  

145.  def onTalk (self,npc,player) :  

146.    htmltext = "<html><title>綜合管理員</title><body><br><br><br>謎之聲:<br>您找錯人了唷!</body></html>"  

147.    st = player.getQuestState(qn)  

148.    if not st : return htmltext  

149.    npcId = npc.getNpcId()  

150.    if npcId == SmithNpc :  

151.       htmltext = HTMLSTART  

152.    return htmltext  

153.QUEST = Quest(QuestId,qn,QuestDesc)  

154.QUEST.addStartNpc(SmithNpc)  

155.QUEST.addTalkId(SmithNpc)  
-----------------------------------------------------------------------------------------------------------------------------------
itemEnchant 指的是 取得玩家裝備已經+到多少的資料

Item.setEnchantLevel(itemEnchant + 1) 整句的意思就是取得玩家的強化數值之後 再+1
-----------------------------------------------------------------------------------------------------------------------------------
if event == &quot;YES&quot; :
st.playSound(&quot;ItemSound.quest_finish&quot;)
st.giveItems(57,1000)
return &quot;YES.htm&quot;

if event == &quot;NO&quot; :
st.playSound(&quot;ItemSound.quest_finish&quot;)
st.takeItems(57,1000000)
st.getPlayer().getStat().removeExpAndSp(0,100000)
return &quot;NO.htm&quot;

這一段的htm是可以不寫的
我寫的 yes (繼續強化)會回饋給玩家 1000金幣! no (結束強化)會倒扣金幣與sp...所以用不到的人...可以刪掉...

我想自己寫htm應該沒問題吧0.0
這腳本改至安定強化師爆爆王
不會寫的可以參考安定強化師的htm來寫
图片

回复