Vv引擎官方论坛

搜索
查看: 1615|回复: 2

[脚本发布] lua捐献类型脚本

[复制链接]
  • TA的每日心情
    开心
    2024-10-24 22:30
  • 签到天数: 41 天

    [LV.5]常住居民I

    28

    主题

    93

    帖子

    1215

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    1215
    发表于 2024-8-6 22:47:49 | 显示全部楼层 |阅读模式
                                           


                                        此脚本只有捐献功能,没有属性触发功能
    触发函数需要自行解决




    function main(Npc, Actor)
        -- 定义捐献排行模板
        local S = [[
        <Text:爵 位 捐 献 说 明|
        243#国王:全属性+7,HP,MP+7%,爆率增加1.0人物死亡爆率减少60%^
        58#亲王:全属性+6,HP,MP+6%,爆率增加0.7,人物死亡爆率减少55%^
        241#公爵:全属性+5,HP,MP+5%,爆率增加0.5,人物死亡爆率减少50%^
        168#侯爵:全属性+4,HP,MP+4%,爆率增加0.4,人物死亡爆率减少40%^
        180#伯爵:全属性+3,HP,MP+3%,爆率增加0.3,人物死亡爆率减少30%^
        224#子爵:全属性+2,HP,MP+2%,爆率增加0.2,人物死亡爆率减少20%^
        222#男爵:全属性+1,HP,MP+1%,爆率增加0.1,人物死亡爆率减少10%^
        :80:0{FCOLOR=250;FSIZE=14;FNAME=黑体}>\
       <──────────────────────────────/SCOLOR=150>\
       <★ 爵位捐献系统可以大大提升您的知名度!/SCOLOR=150>\
       <★ 每次捐献必须高于100元宝才可以进入捐献!/SCOLOR=150>\
       <★ 当捐献元宝最低数额达到/SCOLOR=150><600/SCOLOR=150><时!/SCOLOR=150>\
       <★ 会自动给予[男爵]爵位与相应的隐藏属性,还有绚丽的称号!/SCOLOR=150>\  \
      <>               <Text:★为了避免玩家上头!:10:0{FCOLOR=250;FSIZE=14;FNAME=黑体}>\  \
       <★ 当捐献元宝到达[5000]颗时,将自动获得[国王]/SCOLOR=150>\
       <★ 爵位属性与相应得隐藏属性!/SCOLOR=150>\   \
        <★ 国王爵位/SCOLOR=249>   上榜名单[<$str(S0)>]       捐献金额[<$str(D0)>] \
        <★ 侯爵爵位/SCOLOR=249>   上榜名单[<$str(S1)>]       捐献金额[<$str(D1)>] \
        <★ 伯爵爵位/SCOLOR=249>   上榜名单[<$str(S2)>]       捐献金额[<$str(D2)>] \
        <★ 子爵爵位/SCOLOR=249>   上榜名单[<$str(S3)>]       捐献金额[<$str(D3)>] \
        <★ 男爵爵位/SCOLOR=249>   上榜名单[<$str(S4)>]       捐献金额[<$str(D4)>] \
        <&Text:我要捐款:20:290{FCOLOR=250;FSIZE=12;FNAME=黑体}/@@InPutInteger1>
        <&Text:当前捐献金额:<$str(U1)>:200:290{FCOLOR=230;FSIZE=12;FNAME=黑体}>

        --vvlib:VarA
        -- 初始化排行榜数据,如果没有上榜人员,则设置为'暂无人员上榜'和'暂无元宝数据'
        for i = 0, 5 do
            if vvlib:VarA(i) == '' then
                --Actor:VarS(i,vvlib:VarA(i))
                --Actor:VarN(i,vvlib:VarG(i))
                Actor:VarS(i, '暂无人员上榜')
                Actor:VarD(i, '暂无元宝数据')
            elseif vvlib:VarA(i) ~= '' then
                Actor:VarS(i, vvlib:VarA(i))
                Actor:VarD(i, vvlib:VarG(i))
            end
        end
        vvlib:OpenMerchantBigDlg(Actor, 14, 402, 1, 4, 0, 0, 1, 400, 0, 1)    --盛大原有素材Prguse.wzl==14
        Npc:Say(Actor, '', S, false)
    end

    function InPutInteger1(Npc, Actor)
       --检测输入得数字是否大于100
        if Actor:VarN(1) >= 100 then
            -- 检查玩家是否有足够的元宝进行捐献
            if Actor:CheckMoney(2, Actor:VarN(1)) then
                Actor:DecGameGold(Actor:VarN(1))                -- 从玩家那里扣除捐献的元宝
                local UBianLian = Actor:VarU(1) + Actor:VarN(1) -- 更新玩家的总捐献金额
                Actor:VarU(1, UBianLian)
                main(Npc, Actor)                                -- 重新显示捐献排行模板和更新后的捐献金额
                JianCeGameGold(Npc, Actor)                      -- 更新捐献排行榜
            else
                Npc:MessageBox(Actor, 'ぐ【失败】:您身上元宝不足' .. Actor:VarN(1) .. '个!')
            end
        else
            Npc:MessageBox(Actor, 'ぐ【失败】:最少捐献100元宝!')
        end
    end

    function JianCeGameGold(Npc, Actor)
        -- 获取当前玩家的总捐献金额
        local JxGameGold = Actor:VarU(1)
        -- 创建一个临时表来存储排行榜数据
        local PaiNameList = {}
        for i = 0, 4 do
            local name = vvlib:VarA(i)
            local gold = vvlib:VarG(i)
            table.insert(PaiNameList, {name = name, gold = gold})
        end
        -- 检查当前玩家是否已经在排行榜上
        local PaiHangBang = false
        for _, PaiMing in ipairs(PaiNameList) do
            if PaiMing.name == Actor.CharName then
                PaiMing.gold = JxGameGold -- 更新玩家的捐献金额
                PaiHangBang = true
                break
            end
        end
        -- 如果当前玩家不在排行榜上,则将其添加到排行榜
        if not PaiHangBang then
            table.insert(PaiNameList, {name = Actor.CharName, gold = JxGameGold})
        end
        -- 对排行榜列表按捐献金额降序排序
        table.sort(PaiNameList, function(a, b) return a.gold > b.gold end)
        -- 更新排行榜数据
        for i = 0, 4 do
            local PaiMing = PaiNameList[i + 1]
            if PaiMing then
                vvlib:VarA(i, PaiMing.name) -- 设置第i名的玩家名字
                vvlib:VarG(i, PaiMing.gold) -- 设置第i名的玩家捐献金额
            else
                vvlib:VarA(i, '') -- 如果排行榜位置为空,设置为空字符串
                vvlib:VarG(i, '') -- 如果排行榜位置为空,设置为空字符串
            end
        end
        main(Npc, Actor) -- 更新捐献排行界面
    end


    本帖子中包含更多资源

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

    x
    回复

    使用道具 举报

  • TA的每日心情

    2024-8-17 08:26
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    5

    主题

    43

    帖子

    516

    积分

    高级会员

    Rank: 4

    积分
    516
    发表于 2024-8-8 10:47:11 | 显示全部楼层
    屌·······················
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-9-25 18:29
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    0

    主题

    6

    帖子

    126

    积分

    注册会员

    Rank: 2

    积分
    126
    发表于 2024-9-16 14:48:40 | 显示全部楼层
      能不能发个新版引擎
    回复

    使用道具 举报

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

    本版积分规则

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