【蓝胖子】TXT实战课程,天降财神活动

发表于:昨天 06:00 PM 6

视频课程

​《天降财神活动制作》教案​


​一、教学目标​

  1. ​知识目标​​:掌握游戏中“天降财神”活动的核心制作流程,包括活动规则设计、界面搭建、脚本逻辑(定时器触发、条件判断、奖励发放)及数据表配置。
  2. ​能力目标​​:能独立完成活动界面设计、脚本编写(含全局定时器、多条件判断)、奖励规则配置及功能调试。
  3. ​情感目标​​:理解游戏活动设计的用户导向(如防挂机、提升活跃),培养逻辑思维与问题解决能力(如定时器触发异常排查)。

​二、教学重难点​

  • ​重点​​:活动规则配置(开区天数与等级限制)、全局定时器触发逻辑、多条件判断脚本编写、奖励随机发放实现。
  • ​难点​​:全局定时器与玩家脚本的联动(通过GM指令下发)、多条件判断的逻辑顺序(开区天数与等级的组合验证)、界面倒计时关闭功能实现。

​三、教学准备​

  • ​开发工具​​:游戏引擎(如M2引擎)、脚本编辑器、CSV表格编辑器、VS Code(用于批量编辑表格)。
  • ​辅助材料​​:示例“天降财神”界面模板、预置CSV表(含活动规则:天数、等级、奖励)、常见物品列表(黄宝石、元宝等)。
  • ​学生基础​​:熟悉基础脚本语法(变量、循环、条件判断),了解游戏全局/个人定时器区别及GM指令使用。

​四、教学过程​

​环节1:课程导入(5分钟)​
  • ​提问互动​​:“游戏中常见的限时活动有哪些形式?‘天降财神’这类活动需要满足哪些核心需求?”(引导学生思考:界面交互、触发条件、奖励发放、防挂机)
  • ​明确目标​​:本节课将完成“天降财神”活动的全流程制作,覆盖规则设计→界面搭建→脚本逻辑→调试优化。

​环节2:活动规则与数据表配置(15分钟)​

​目标​​:设计活动规则表,明确触发条件(开区天数、玩家等级)与奖励内容。

  1. ​规则分析​​:

    • ​触发条件​​:开区天数(1天、7天、30天)与玩家等级(15级、22级、38级)组合限制。
    • ​奖励内容​​:随机物品(如黄宝石、元宝),数量与等级/天数挂钩。
  2. ​CSV表配置​​(天降财神.csv):

    开服天数 所需等级 奖励物品ID 奖励数量
    1 15 1001 5
    2 22 1002 10
    7 25 1003 15
    30 38 1004 20

    ​说明​​:后续可扩展更多天数/等级规则,通过“最大行数”实现动态扩展。


​环节3:界面设计与组件搭建(15分钟)​

​目标​​:搭建活动弹出界面,包含物品展示区、抽奖按钮及倒计时提示。

  1. ​界面布局​​:

    • ​背景图​​:选择喜庆风格背景(如bg_treasure.png),调整尺寸适配屏幕(1024×768)。
    • ​标题与提示​​:添加“天降财神”标题(金色字体,30号),下方添加温馨提示(白色字体,20号,如“每日1次抽奖机会,10秒内点击领取”)。
    • ​物品展示区​​:使用列表容器(位置:X=200,Y=150,宽=600,高=300),动态加载奖励物品图标与数量。
    • ​抽奖按钮​​:添加“点击抽奖”按钮(黄色背景,25号字体,位置:底部居中),绑定点击事件。
  2. ​动态组件配置​​:

    • ​物品图标​​:通过循环读取CSV表,动态加载奖励物品图标(如item_1001.png)。
    • ​倒计时提示​​:添加文本组件(如“剩余10秒”),初始隐藏,抽奖后显示并倒计时。

​环节4:脚本逻辑编写(30分钟)​
​子环节4.1:全局定时器触发​
  • ​目标​​:通过全局定时器每分钟触发活动,下发脚本至所有玩家。
  1. ​全局定时器配置​​:

    -- 服务器启动触发(QF)  
    if (IsServerStart()) then  
        -- 开启全局定时器(5号,每60秒执行一次)  
        StartGlobalTimer(5, 60, "天降财神触发");  
    end  
    
    -- 全局定时器回调函数  
    function 天降财神触发()  
        -- 向全服玩家下发GM指令,执行活动脚本  
        GMEX("天降财神开始提问", 0, 0, 0, 0, 0, 0);  
    end
    

    ​说明​​:全局定时器面向服务器,需通过GMEX指令将脚本下发至玩家个人执行。

​子环节4.2:活动条件判断与界面弹出​
  • ​目标​​:检测玩家开服天数与等级,符合条件则弹出活动界面。
  1. ​条件判断逻辑​​:

    -- 仅当玩家满足条件时执行  
    if (CheckCondition()) then  
        -- 弹出活动界面(自定义按钮101)  
        ShowButton(101, "天降财神界面", 300, 200);  
        -- 初始化倒计时(10秒)  
        StartCountdown(10, "关闭界面");  
    else  
        ShowMessage("未满足活动条件!");  
    end  
    
    -- 条件判断函数(开服天数与等级)  
    function CheckCondition()  
        local openDays = GetGlobalVar("G12"); -- 获取开服天数(全局变量G12每日+1)  
        local playerLevel = GetLevel(); -- 获取玩家等级  
    
        -- 读取活动规则表(天降财神.csv)  
        local ruleTable = ReadCSV("天降财神");  
        local maxRow = GetTableMaxRow(ruleTable);  
    
        -- 遍历规则表,匹配当前开服天数  
        for i = 1, maxRow do  
            local row = ruleTable[i];  
            local requiredDays = row[1]; -- 开服天数条件  
            local requiredLevel = row[2]; -- 所需等级条件  
    
            -- 匹配天数与等级  
            if (openDays == requiredDays and playerLevel >= requiredLevel) then  
                return true; -- 符合条件  
            end  
        end  
        return false; -- 不符合条件  
    end
    
​子环节4.3:抽奖逻辑与奖励发放​
  • ​目标​​:玩家点击抽奖后,随机发放奖励并关闭界面。
  1. ​抽奖逻辑​​:

    -- 点击抽奖按钮事件  
    if (GetClickButtonID() == 101) then  
        local ruleTable = ReadCSV("天降财神");  
        local maxRow = GetTableMaxRow(ruleTable);  
    
        -- 生成随机奖励行数(1~maxRow)  
        local randomRow = Rand(1, maxRow);  
        local rewardItemID = ruleTable[randomRow][3]; -- 奖励物品ID  
        local rewardCount = ruleTable[randomRow][4]; -- 奖励数量  
    
        -- 发放奖励  
        GiveItem(rewardItemID, rewardCount);  
        ShowMessage("恭喜获得:"..GetItemName(rewardItemID).."×"..rewardCount);  
    
        -- 关闭活动界面  
        DeleteButton(101);  
        StopCountdown(); -- 停止倒计时  
    end
    
​子环节4.4:倒计时与界面关闭​
  • ​目标​​:10秒内未点击抽奖则自动关闭界面。
  1. ​倒计时逻辑​​:

    -- 倒计时函数(剩余时间,回调)  
    function StartCountdown(seconds, callback)  
        SetTimer(1, seconds, function()  
            if (seconds > 0) then  
                UpdateCountdownText(seconds); -- 更新倒计时文本  
                StartCountdown(seconds - 1, callback);  
            else  
                callback(); -- 时间到,执行关闭  
            end  
        end);  
    end  
    
    -- 更新倒计时文本  
    function UpdateCountdownText(seconds)  
        local text = "剩余"..seconds.."秒";  
        SetButtonText(102, text); -- 假设102是倒计时文本组件ID  
    end  
    
    -- 关闭界面回调  
    function CloseInterface()  
        DeleteButton(101); -- 删除抽奖按钮  
        DeleteButton(102); -- 删除倒计时文本  
    end
    

​环节5:调试与常见问题(10分钟)​
  • ​问题1​​:全局定时器未触发→检查定时器索引(0~4是否被占用),确认StartGlobalTimer参数正确(索引、间隔、回调)。
  • ​问题2​​:条件判断失败→打印openDaysplayerLevel,确认CSV表规则与变量名(如G12是否为开服天数)。
  • ​问题3​​:奖励未发放→检查GiveItem参数(物品ID、数量),确认CSV表奖励物品存在。
  • ​调试技巧​​:使用Print()函数输出关键变量(如Print(openDays)),逐步排查逻辑错误。

​环节6:课堂练习与总结(5分钟)​
  • ​练习任务​​:在教师指导下,尝试修改活动规则(如增加“开服15天需40级”),并调试运行。
  • ​总结​​:“天降财神”活动的核心是“规则驱动+定时器联动+玩家交互”,需关注触发条件的准确性(天数与等级)和用户体验(倒计时提示)。

​板书设计​​:

天降财神活动流程:  
规则设计(CSV表) → 界面搭建(背景/按钮/倒计时) → 脚本逻辑(定时器触发→条件判断→抽奖→奖励) → 调试优化

​课后反思​​:通过实操演示与问题调试,学生需掌握全局定时器与玩家脚本的联动,后续可扩展至“限时活动”“跨服活动”等复杂功能。

收藏
送赞
分享

发表回复