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

100%强化npc编写教程

主要是游戏中一些经典任务、游戏资料的科普.
回复
头像
天堂之手
Mr.GL
Mr.GL
帖子: 263
注册时间: 2018-02-24 21:37

100%强化npc编写教程

帖子 天堂之手 » 2018-03-14 16:14

這腳本修改於安定強化師  

可以利用某道具 每次執行提升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的地方 會比較方便你們修改 





import sys 
from net.sf.l2j.gameserver.model.quest                       import State 
from net.sf.l2j.gameserver.model.quest                       import QuestState 
from net.sf.l2j.gameserver.model.quest.jython                import QuestJython as JQuest 
from net.sf.l2j.gameserver.model.base                        import Experience 

qn = "5201314_Emily" 

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

COLA = 3434         #完美強化時所需要的道具  可以自行在這修改要強化所需的道具編號ID  預設為可樂 
COLANUMBER = 1      #完美強化時所需要的道具數量  可以自行在這修改要強化所需道具的數量  預設可樂的數量1個 
MAX = 65535         #提供給玩家的完美強化上限值  可以自行在這修改提供給玩家的強化上限  預設為65535 

acceptableArmorTypes  = ['Light','Heavy','Magic','Shield','Sigil'] 
acceptableWeaponTypes = ['Sword','Blunt','Dagger','Bow','Pole','Etc','Fist','Dual Sword','Dual Fist','Big Sword','Big Blunt','Ancient','Crossbow','Rapier','Dual Dagger'] 
acceptableJewelTypes  = ['None'] 

HTMLSTART = "00.htm" 
HTMLGRATZ = "11.htm" 
HTMLCHEAT = "22.htm" 
HTMLNOSOP = "33.htm" 

class Quest (JQuest) : 

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

  def onEvent (self,event,st) : 
    if event == "YES" : 
                st.playSound("ItemSound.quest_finish") 
      st.giveItems(57,1000) 
      return "YES.htm" 

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

    if event == "choose_item_enchant" : 
      st.playSound("ItemSound.quest_accept") 
      htmltext = "" 
      price = "" 
      for Item in st.getPlayer().getInventory().getItems() : 
        itemType = Item.getItem().getItemType().toString() 
        itemGrade = Item.getItem().getCrystalType() 
        itemEnchant = Item.getEnchantLevel() 
        if (itemGrade > 0 and not Item.isEquipped()) : 

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

            if itemType in acceptableArmorTypes or itemType in acceptableJewelTypes : 

              if itemGrade == 1 :                #D 防具 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 2 :              #C 防具 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 3 :              #B 防具 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 4 :              #A 防具 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 5 :              #S 防具 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 6 :              #S80 防具 
                price = 10 * 2                   #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 7 :              #S84 防具 
                price = 10 * 3                   #安全強化+1 祝福武防所需要的數量 

            elif itemType in acceptableWeaponTypes : 

              if itemGrade == 1 :                #D 武器 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 2 :              #C 武器 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 3 :              #B 武器 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 4 :              #A 武器 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 5 :              #S 武器 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 6 :              #S80 武器 
                price = 10 * 2                   #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 7 :              #S84 武器 
                price = 10 * 3                   #安全強化+1 祝福武防所需要的數量 

            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>" 
      if htmltext == "" : 
        htmltext = "<html><title>綜合管理員</title><body><br><br><br>謎之聲:<br>您的身上道具欄內已經沒有可以強化的物品了</body></html>" 
      htmltext = "<html><title>綜合管理員</title><body><br><br><img src=\"L2UI.SquareBlank\" width=293 height=0><br>請您在下列挑選一件想強化的物品唷!<br><br><br><br>" + htmltext + "</body></html>" 
    elif event.startswith("enchantItem_") : 
      amount = "" 

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

      Item = st.getPlayer().getInventory().getItemByObjectId(objId) 
      if Item and not Item.isEquipped() : 

        itemType = Item.getItem().getItemType().toString() 
        itemGrade = Item.getItem().getCrystalType() 
        itemEnchant = Item.getEnchantLevel() 

        if itemGrade > 0 : 

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

            if itemType in acceptableArmorTypes or itemType in acceptableJewelTypes : 

              if itemGrade == 1 :                #D 防具 
                Scroll = 6576                    #祝福的防具強化卷軸-D級 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 2 :              #C 防具 
                Scroll = 6574                    #祝福的防具強化卷軸-C級 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 3 :              #B 防具 
                Scroll = 6572                    #祝福的防具強化卷軸-B級 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 4 :              #A 防具 
                Scroll = 6570                    #祝福的防具強化卷軸-A級 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 5 :              #S 防具 
                Scroll = 6578                    #祝福的防具強化卷軸-S級 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 6 :              #S80 防具 
                Scroll = 6578                    #祝福的防具強化卷軸-S級 
                price = 10 * 2                   #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 7 :              #S84 防具 
                Scroll = 6578                    #祝福的防具強化卷軸-S級 
                price = 10 * 3                   #安全強化+1 祝福武防所需要的數量 

            elif itemType in acceptableWeaponTypes : 

              if itemGrade == 1 :                #D 武器 
                Scroll = 6575                    #祝福的武器強化卷軸-D級 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 2 :              #C 武器 
                Scroll = 6573                    #祝福的武器強化卷軸-C級 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 3 :              #B 武器 
                Scroll = 6571                    #祝福的武器強化卷軸-B級 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 4 :              #A 武器 
                Scroll = 6569                    #祝福的武器強化卷軸-A級 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 5 :              #S 武器 
                Scroll = 6577                    #祝福的武器強化卷軸-S級 
                price = 10                       #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 6 :              #S80 武器 
                Scroll = 6577                    #祝福的武器強化卷軸-S級 
                price = 10 * 2                   #安全強化+1 祝福武防所需要的數量 
              elif itemGrade == 7 :              #S84 武器 
                Scroll = 6577                    #祝福的武器強化卷軸-S級 
                price = 10 * 3                   #安全強化+1 祝福武防所需要的數量 

            if st.getQuestItemsCount(Scroll) >= price and st.getQuestItemsCount(COLA) >= COLANUMBER : 
              Item.setEnchantLevel(itemEnchant + 1) 
              st.takeItems(Scroll,price) 
              st.playSound("ItemSound.quest_finish") 
              st.takeItems(COLA,COLANUMBER) 
              htmltext = HTMLGRATZ 
            else : 
              htmltext = HTMLNOSOP 
          else : 
            htmltext = HTMLCHEAT 
        else : 
          htmltext = HTMLCHEAT 
      else : 
        htmltext = HTMLCHEAT 
    return htmltext 

  def onTalk (self,npc,player) : 
    htmltext = "<html><title>綜合管理員</title><body><br><br><br>謎之聲:<br>您找錯人了唷!</body></html>" 
    st = player.getQuestState(qn) 
    if not st : return htmltext 
    npcId = npc.getNpcId() 
    if npcId == SmithNpc : 
       htmltext = HTMLSTART 
    return htmltext 

QUEST = Quest(QuestId,qn,QuestDesc) 

QUEST.addStartNpc(SmithNpc) 
QUEST.addTalkId(SmithNpc) 

----------------------------------------------------------------------------------------------------------------------------------- 
itemEnchant 指的是 取得玩家裝備已經+到多少的資料  

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

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

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

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

回复