骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买霸主CDKEY 购买战帆CDKEY
查看: 288|回复: 3

[功能与代码] WSE2的保底伤害lua脚本

[复制链接]

1

主题

41

回帖

18

积分

随仆

Rank: 1

UID
3223690
第纳尔
139
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2021-2-27
鲜花(0) 鸡蛋(0)
发表于 2026-8-29 13:53:16 | 显示全部楼层 |阅读模式
本帖最后由 llkkp 于 2026-9-1 11:12 编辑

好像很少人用WSE2,分享一下自己写的简单脚本。

仅仅只在WSE2启动生效!(文件解压之后,把lua丢进模组目录里(比如C:\SteamLibrary\steamapps\common\MountBlade Warband\Modules\Viking Conquest)
WSE2最新版本已经测试生效(https://github.com/Ruslan-700/WSE2-Releases/releases/tag/v1.1.5.1

WSE2 Lua: 所有战场命中伤害保底 1 点:


function hitCond()
    return true
end

function hitHandler()
    local damage = game.store_trigger_param_3(0)
    if not damage or damage >= 1 then return end
    game.set_trigger_result(1)
    return 1
end


玩家击杀增加属性:


local ProcChance = 100            -- 击杀后获得的概率(%)
local StrengthBonus = 1          -- 每次增加的值

math.randomseed(os.time())

function attackerIsPlayer()
    local attacker = game.store_trigger_param_2(0)
    local playerId = game.get_player_agent_no(0)
    return attacker == playerId
end

function lifeSteal()
    -- 概率加力量(同时加魅力)0=力量,1=敏捷,2=智力,3=魅力)
    local strGained = false
    if math.random(1, 100) <= ProcChance then
        if game.troop_raise_attribute then
            local ok, err = pcall(game.troop_raise_attribute, 0, 0, StrengthBonus)
            if ok then
                strGained = true
                pcall(game.troop_raise_attribute, 0, 3, StrengthBonus) -- 加魅力
            else
                print("[ERROR] troop_raise_attribute failed:", err)
            end
        else
            print("[ERROR] game.troop_raise_attribute not found")
        end
    end
end

-- 全部模板注册
for i = 0, game.getNumTemplates() - 1 do
    game.addTrigger(i, -26.0, 0, 0, attackerIsPlayer, lifeSteal)
end





玩家击杀敌随机增加金钱:

math.randomseed(os.time())

function addPlayerGold(amount)
    if game.troop_add_gold then
        game.troop_add_gold(0, amount)
    else
        game.execute_operation("troop_add_gold", 0, amount)
    end
end

function attackerIsPlayer()
    local attacker = game.store_trigger_param_2(0)
    local playerId = game.get_player_agent_no(0)
    return attacker == playerId
end

function lifeStealGoldOnly()
    local randomGold = math.random(50, 5000)
    local goldOk, _ = pcall(addPlayerGold, randomGold)
    if goldOk then
        game.display_message("+" .. randomGold .. " Gold", 0x00FF00)
    end
end

for i = 0, game.getNumTemplates() - 1 do
    game.addTrigger(i, -26.0, 0, 0, attackerIsPlayer, lifeStealGoldOnly)
end

game.display_message("Lua: 击 杀 加 钱 已 加 载 ", 0x00FF00)




玩家击杀增加属性.zip

83.75 KB, 下载次数: 9

玩家击杀加钱.zip

83.7 KB, 下载次数: 7

战场命中伤害保底.zip

83.48 KB, 下载次数: 14

0

主题

91

回帖

27

积分

随仆

Rank: 1

UID
298784
第纳尔
727
精华
0
互助
0
荣誉
0
贡献
0
魅力
2
注册时间
2010-8-18
鲜花(0) 鸡蛋(0)
发表于 3 天前 | 显示全部楼层
厉害了  正需要 膜拜

5

主题

3170

回帖

988

积分

骑士

Rank: 4Rank: 4

UID
86936
第纳尔
12866
精华
0
互助
5
荣誉
1
贡献
0
魅力
71
注册时间
2008-8-10

原版正版勋章战团正版勋章元老骑士勋章汉匈决战正版勋章维京征服正版勋章霸主正版勋章

鲜花(66) 鸡蛋(1)
发表于 昨天 17:10 | 显示全部楼层
LZ大佬,请问如何在WSE2里,调用自己写的Lua脚本?

1

主题

41

回帖

18

积分

随仆

Rank: 1

UID
3223690
第纳尔
139
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2021-2-27
鲜花(0) 鸡蛋(0)
 楼主| 发表于 昨天 18:13 | 显示全部楼层
英勇的苹果 发表于 2026-9-14 17:10
LZ大佬,请问如何在WSE2里,调用自己写的Lua脚本?

编辑main.lua就行
如果你不想把脚本写在这个文件里面,那就比较麻烦,需要单个模组一个一个改修改模组文件,然后再调用。
所以还是建议直接编辑main.lua就好,这样大部分的模组都能通用
现在主要lua还是做一些在战场里战斗中触发的比较方便
game.addTrigger(i, -26.0, 0, 0比如这一段,就是在战场里击杀时触发
用记事本打开header_operations.py里面可以看到很多WSE2的接口
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2026-9-15 03:49 , Processed in 0.081871 second(s), 23 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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