天堂2单机论坛

 找回密码
 立即注册
查看: 170|回复: 5

聊聊智能AI修改代碼

[复制链接]
  • TA的每日心情
    开心
    17 小时前
  • 签到天数: 649 天

    [LV.9]以坛为家II

    120

    主题

    854

    帖子

    9426

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    9426
    发表于 2025-9-27 23:33:28 | 显示全部楼层 |阅读模式
    智能AI修改代碼的確好樣的,但感覺也是要交智商稅的。
    要它幫修改個任務代碼,修修改改測試任務搞了一整天才搞完美的一個任務
    340++個任務不是要一年多?
    真他媽的智能AI整就不能一次到位搞好...
    或許我給的要求不太完整吧..

    因代碼字節太长大約有三万多个字節发不出來
    修改後的代碼

    1. # 任務名稱:成為收集者的路 (任務ID: 417)
    2. # 任務目標:完成狩獵任務並收集畫像物品,獲得掠奪者之戒及額外獎勵(金幣、經驗值、技能點、閃耀勳章)
    3. # 版本:優化版 (提高可讀性、減少重複邏輯、簡化條件判斷、統一格式)
    4. # 作者:原版作者未知、優化 by Grok (修正錯誤、添加全面中文註釋、確保 Jython 2.1/2.2 相容)
    5. # 說明:玩家從收藏家皮皮開始任務(需矮人工匠、等級19+),與米恩、恰里、布隆克、吉門普、多瑪、勞特、托萊互動,完成狩獵和收集任務,最終獲得掠奪者之戒及可選獎勵。任務不可重複。
    6. # Jython:兼容舊版 Jython(2.1/2.2):使用舊式語法,避免三元運算子、f-string、新式異常捕捉和伺服器特定模塊。
    7. # 修復記錄:修正三元運算子錯誤(第297行),改用 if-else;將 bypass 值改為 htm 文件名(如 "30557_01.htm")
    8. # 修復多瑪對話次序(第一次顯示 30556-01.htm);修復蜜熊生成問題);修正 f-string 錯誤(第448行等),改用 % 格式化;

    9. # === 導入模塊 ===
    10. import sys  # 系統模塊,用於管理 Python 運行環境
    11. from lineage.game.model.quest import State  # 任務狀態類,定義任務階段(如開始、進行中、完成)
    12. from lineage.game.model.quest import QuestState  # 任務狀態管理類,用來追蹤玩家的任務進度(如條件值)
    13. from lineage.game.model.quest.jython import QuestJython as JQuest  # Lineage 任務基類,提供任務基本方法如 onTalk、onEvent

    14. # === 任務基本配置 ===
    15. qn = "417_PathToScavenger"  # 任務名稱,用於遊戲內標識和狀態追蹤
    16. MIN_LEVEL = 19  # 最低等級要求,玩家等級低於此無法開始任務
    17. PLAYER_CLASS_ID = 0x35  # 所需職業ID:矮人工匠 (Artisan)
    18. SCAVENGER_CLASS_ID = 0x36  # 目標職業ID:收集者 (Scavenger)
    19. HONEY_JAR_NEEDED = 5  # 需收集5個蜂蜜罐
    20. BEAD_NEEDED = 20  # 需收集20個珠子
    21. DELIVERY_COUNT_NEEDED = 3  # 需完成3次送貨任務

    22. # === NPC ID 配置 ===
    23. # 定義每個 NPC 的 ID 和名稱,附帶中文註釋說明其作用
    24. NPCS = {
    25.     "PIPI": 30524,    # 收藏家皮皮,任務起始 NPC,負責發放推薦函
    26.     "MION": 30519,    # 雜貨商人米恩,分配隨機送貨任務並提供多瑪位置
    27.     "CHALIS": 30517,  # 防具商人恰里,接受斧頭並給予酬勞
    28.     "ZIMENF": 30538,  # 大地神官吉門普,接受藥水並給予酬勞
    29.     "BRONK": 30525,   # 鐵匠師傅布隆克,接受鐵塊並給予酬勞
    30.     "TOMA": 30556,    # 大師多瑪,負責蜂蜜和珠子收集任務
    31.     "ROUT": 30316,    # 倉庫管理員勞特,負責交換卷軸並給予戒指
    32.     "TORAI": 30557    # 托萊,負責交換魅魔內衣
    33. }

    34. # === 怪物 ID 配置 ===
    35. # 定義每個怪物的 ID 和名稱,附帶中文註釋說明其作用
    36. MOBS = {
    37.     "HUNTER_BEAR": 20777,       # 狩獵熊,直接掉落蜂蜜罐(5% 機率)
    38.     "HONEY_BEAR": 27058,        # 蜜熊(未使用,因伺服器不支持動態生成)改為直接掉落蜂蜜罐
    39.     "HUNTER_TARANTULA": 20403,  # 獵人狼蛛,提供珠子(需掠奪,機率60%)
    40.     "PLUNDER_TARANTULA": 20508  # 掠食者狼蛛,提供珠子(需掠奪,機率50%)
    41. }

    42. # === 任務物品 ID 配置 ===
    43. # 定義每個任務物品的 ID 和名稱,附帶中文註釋說明其用途
    44. ITEMS = {
    45.     "RING_OF_RAVEN": 1642,      # 掠奪者之戒,任務完成的主要獎勵
    46.     "PIPIS_LETTER": 1643,       # 皮皮的推薦函,起始物品,用於找米恩
    47.     "ROUTS_TP_SCROLL": 1644,    # 勞特的移動卷軸,用於傳送托萊
    48.     "SUCCUBUS_UNDIES": 1645,    # 魅魔內衣,交換物品,用於完成任務
    49.     "MIONS_LETTER": 1646,       # 米恩的信,用於找多瑪
    50.     "BRONKS_INGOT": 1647,       # 布隆克的錠塊,送貨任務物品
    51.     "SHARILS_AXE": 1648,        # 恰里的斧頭,送貨任務物品
    52.     "ZIMENFS_POTION": 1649,     # 吉門普的藥水,送貨任務物品
    53.     "BRONKS_PAY": 1650,         # 布隆克的酬勞
    54.     "CHALIS_PAY": 1651,         # 恰里的酬勞
    55.     "ZIMENFS_PAY": 1652,        # 吉門普的酬勞
    56.     "BEAR_PIC": 1653,           # 熊畫像,用於收集蜂蜜
    57.     "TARANTULA_PIC": 1654,      # 狼蛛畫像,用於收集珠子
    58.     "HONEY_JAR": 1655,          # 蜂蜜罐,需5個,從狩獵熊掉落
    59.     "BEAD": 1656,               # 珠子,需20個,從狼蛛掠奪
    60.     "BEAD_PARCEL": 1657,        # 珠子包裹,用於給勞特
    61.     "ADENA": 57,                # 金幣,額外獎勵
    62.     "GMEDAL": 6393              # 閃耀勳章,可選額外獎勵(活動道具)
    63. }

    64. # === 獎勵配置 ===
    65. # 定義任務完成時的獎勵數量,使用常量便於未來調整
    66. REWARD_ADENA_COUNT = 163800  # 金幣數量,設為 1850,設為 0 表示不給予
    67. REWARD_EXP = 320534          # 經驗值,設為 4254,設為 0 表示不給予
    68. REWARD_SP = 35412            # 技能點,設為 335,設為 0 表示不給予
    69. REWARD_GMEDAL_COUNT = 10   # 閃耀勳章數量,設為 10,設為 0 表示不給予

    70. # === 對話 HTML 文件名 ===
    71. # 定義每個對話對應的 HTML 文件名,附帶中文註釋說明其用途
    72. # 對應目錄中的 htm 文件,移除通用常量,整合到 NPC 特定文件
    73. DIALOG_FILES = {
    复制代码

    原本的代碼


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    回复

    使用道具 举报

  • TA的每日心情
    开心
    17 小时前
  • 签到天数: 649 天

    [LV.9]以坛为家II

    120

    主题

    854

    帖子

    9426

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    9426
     楼主| 发表于 2025-9-27 23:36:12 | 显示全部楼层
    import sys
    from lineage.game.model.quest import State
    from lineage.game.model.quest import QuestState
    from lineage.game.model.quest.jython import QuestJython as JQuest

    qn = "417_PathToScavenger"

    RING_OF_RAVEN = 1642
    PIPIS_LETTER = 1643
    ROUTS_TP_SCROLL = 1644
    SUCCUBUS_UNDIES = 1645
    MIONS_LETTER = 1646
    BRONKS_INGOT = 1647
    CHALIS_AXE = 1648
    ZIMENFS_POTION = 1649
    BRONKS_PAY = 1650
    CHALIS_PAY = 1651
    ZIMENFS_PAY = 1652
    BEAR_PIC = 1653
    TARANTULA_PIC = 1654
    HONEY_JAR = 1655
    BEAD = 1656
    BEAD_PARCEL = 1657

    class Quest (JQuest) :

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

    def onEvent (self,event,st) :
        htmltext = event
        level = st.getPlayer().getLevel()
        classId = st.getPlayer().getClassId().getId()
        if event == "1" :
              st.set("id","0")
              if level >= 19 and classId == 0x35 and st.getQuestItemsCount(RING_OF_RAVEN) == 0 :
                st.set("cond","1")
                st.setState(STARTED)
                st.playSound("ItemSound.quest_accept")
                st.giveItems(PIPIS_LETTER,1)
                htmltext = "30524-05.htm"
              elif classId != 0x35 :
                    if classId == 0x36 :
                      htmltext = "30524-02a.htm"
                    else:
                      htmltext = "30524-08.htm"
              elif level < 19 and classId == 0x35 :
                    htmltext = "30524-02.htm"
              elif level >= 19 and classId == 0x35 and st.getQuestItemsCount(RING_OF_RAVEN) == 1 :
                    htmltext = "30524-04.htm"
        elif event == "30519_1" :
            if st.getQuestItemsCount(PIPIS_LETTER):
                st.takeItems(PIPIS_LETTER,1)
                st.set("cond","2")
                n = st.getRandom(3)
                if n == 0:
                  htmltext = "30519-02.htm"
                  st.giveItems(ZIMENFS_POTION,1)
                elif n == 1:
                  htmltext = "30519-03.htm"
                  st.giveItems(CHALIS_AXE,1)
                elif n == 2:
                  htmltext = "30519-04.htm"
                  st.giveItems(BRONKS_INGOT,1)
            else:
                htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>"
        elif event == "30519_2" :
              htmltext = "30519-06.htm"
        elif event == "30519_3" :
              htmltext = "30519-07.htm"
              st.set("id",str(st.getInt("id")+1))
        elif event == "30519_4" :
                n = st.getRandom(2)
                if n == 0:
                  htmltext = "30519-06.htm"
                if n == 1:
                  htmltext = "30519-11.htm"
        elif event == "30519_5" :
            if st.getQuestItemsCount(ZIMENFS_POTION) or st.getQuestItemsCount(CHALIS_AXE) or st.getQuestItemsCount(BRONKS_INGOT):
              if st.getInt("id") / 10 < 2 :
                htmltext = "30519-07.htm"
                st.set("id",str(st.getInt("id")+1))
              elif st.getInt("id") / 10 >= 2 and st.getInt("cond") == 0 :
                  htmltext = "30519-09.htm"
                  if st.getInt("id") / 10 < 3 :
                    st.set("id",str(st.getInt("id")+1))
              elif st.getInt("id") / 10 >= 3 and st.getInt("cond") > 0 :
                  htmltext = "30519-10.htm"
                  st.giveItems(MIONS_LETTER,1)
                  st.takeItems(CHALIS_AXE,1)
                  st.takeItems(ZIMENFS_POTION,1)
                  st.takeItems(BRONKS_INGOT,1)
            else:
                htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>"
        elif event == "30519_6" :
            if st.getQuestItemsCount(ZIMENFS_PAY) or st.getQuestItemsCount(CHALIS_PAY) or st.getQuestItemsCount(BRONKS_PAY):
                n = st.getRandom(3)
                st.takeItems(ZIMENFS_PAY,1)
                st.takeItems(CHALIS_PAY,1)
                st.takeItems(BRONKS_PAY,1)
                if n == 0:
                  htmltext = "30519-02.htm"
                  st.giveItems(ZIMENFS_POTION,1)
                elif n == 1:
                  htmltext = "30519-03.htm"
                  st.giveItems(CHALIS_AXE,1)
                elif n == 2:
                  htmltext = "30519-04.htm"
                  st.giveItems(BRONKS_INGOT,1)
            else:
                htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>"
        elif event == "30316_1" :
            if st.getQuestItemsCount(BEAD_PARCEL):
              htmltext = "30316-02.htm"
              st.takeItems(BEAD_PARCEL,1)
              st.giveItems(ROUTS_TP_SCROLL,1)
              st.set("cond","10")
            else:
                htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>"
        elif event == "30316_2" :
            if st.getQuestItemsCount(BEAD_PARCEL):
              htmltext = "30316-03.htm"
              st.takeItems(BEAD_PARCEL,1)
              st.giveItems(ROUTS_TP_SCROLL,1)
              st.set("cond","10")
            else:
                htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>"
        elif event == "30557_1" :
              htmltext = "30557-02.htm"
        elif event == "30557_2" :
            if st.getQuestItemsCount(ROUTS_TP_SCROLL):
              htmltext = "30557-03.htm"
              st.takeItems(ROUTS_TP_SCROLL,1)
              st.giveItems(SUCCUBUS_UNDIES,1)
              st.set("cond","11")
            else:
                htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>"
        return htmltext
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-2-14 21:41
  • 签到天数: 189 天

    [LV.7]常住居民III

    14

    主题

    263

    帖子

    2339

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    2339
    发表于 2025-9-28 09:28:39 | 显示全部楼层
    AI修改代码,虽然有问题,但是写代码思路,还是有很多值得借鉴的地方,也会很省很多时间。他会帮你架起代码结构,功能实现思路等,我们只需要修改部分错误就行。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2025-10-23 12:04
  • 签到天数: 49 天

    [LV.5]常住居民I

    2

    主题

    341

    帖子

    620

    积分

    高级会员

    Rank: 4

    积分
    620
    发表于 2025-9-28 11:53:20 | 显示全部楼层
    最近也使用ai修改代碼,翻譯註解中文還行,其他正確性還有待努力
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-2-27 14:33
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    2

    主题

    44

    帖子

    805

    积分

    高级会员

    Rank: 4

    积分
    805
    发表于 2025-9-28 13:21:09 | 显示全部楼层
    对代码一窍不通的我,昨天玩梦幻西游单机,居然帮我搞定了一个定制装备的代码,当然后面再让它弄,就弄不好了。总体还是有帮助的。
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-3-21 20:30
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    2

    主题

    24

    帖子

    27

    积分

    新手上路

    Rank: 1

    积分
    27
    发表于 2025-9-28 21:48:56 | 显示全部楼层
    修改部分还行,或者看看什么意思还是有帮助的
    回复

    使用道具 举报

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

    本版积分规则

    QQ|Archiver|手机版|监狱|天堂2单机论坛 ( 粤ICP备20030366号 )

    GMT+8, 2025-11-1 18:11 , Processed in 0.059506 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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