第二章天龙八部lua学习-兑换,扣除

本文介绍了Lua在游戏开发中的应用,涉及点数兑换机制、CDK验证函数(如x888899_AskNewUserCard)以及对话框和提示的实现,包括元宝、绑元和红利的兑换方法,以及常用的提示函数x888899_NotifyFailBox和x888899_NotifyFail。
摘要由CSDN通过智能技术生成

上一期给大家分享了一些文件的基础知识, 本来想继续分享一下但是又觉得对于新人来说意义不大, 干脆直接开始讲lua吧,本次先分享一下几个最常见的

目录 :

​ 一: 点数兑换,CDK介绍

​ 二: 提示和对话框提示,

一: 点数兑换,CDK介绍

上个文章已经提到了充值的路径Public\Data\Script\event\prize\eprize.lua

该文件主要可以分成两部分

  1. CDK相关的验证和回调 : 比如常用的财富卡,武圣卡之类的或者是,或者一些物品CDK
  2. 兑换回调
1.初识Lua

既然我们开始学习相关lua那么先简单来介绍一下,如下:

function x888899_AskNewUserCard( sceneId, selfId, card)
	
	if strlen(card) == 14 then
		local nCDKHead = strsub(card,1,4);
		if nCDKHead ~= "JZTL" then
			BeginEvent(sceneId);
			AddText(sceneId, "#{CFWPJH_111101_05}");
			EndEvent(sceneId);
			DispatchMissionTips(sceneId, selfId);
			return 0
		end
	end
end

这是一个简单的CDK兑换码的检查, 函数名为x888899_AskNewUserCard

他一共有3个入参,其中前两个入参是必须的,sceneId一般代表的是当前场景ID,selfId代表的是调用当前函数的用户Id,card是函数的个性化参数

这里给大家做一下简单的解读: 首先判断card的长度是否是14位, 不是不做任何操作,截取Card前4位并且判断为JZTL继续操作, 弹出客户端提示,并且返回 0

这里一定要注意个东西#{CFWPJH_111101_05}

这个是一种取址符的写法他其实并不是直接输出CFWPJH_111101_05 而是对应一个命名为CFWPJH_111101_05的常量,他的真实输出要根据常量的定义决定,所有的常量定义在StrDictionary中

其实这里用到的所有函数并不是很难,当然有一些内部的写法就需要时间来积累了

2: 将点数兑换为元宝,红利等

正常所有的兑换回调都是调用x888899_BuyRet 函数function x888899_BuyRet( sceneId, selfId, ntype, nPoint, nLeftPoint )

前面两个入参就不说了后面3个分别是调用类型, 点数(具体值) ,第三个没太关注过剩余点数之类的吧

元宝和绑元都有函数可以直接调用,如元宝:

这里举例1:1 此方法一共有三种写法增加元宝,扣除元宝 ,查看剩余元宝

增加元宝: YuanBao(sceneId,selfId,selfId,1,nPoint)

扣除元宝: YuanBao(sceneId,selfId,selfId,2,nPoint)

查看剩余元宝: YuanBao(sceneId,selfId,selfId,3,nPoint)

大家可以发现这里其实变化的只是1,2,3 如果有过编程知识的人其实就能知道 就想上边的回调中有个Ntype类型 ,会根据类型在做一个分流具体是增加元宝,还是扣除元宝,

绑元同样是类似的写法: ZengDian(sceneId,selfId,selfId,1,nPoint) 同样也是三种调用类型

这些都是定义好的有方法可以直接调用的, 下面的红利就比较特殊了

SetMissionData(sceneId,selfId,MD_HONGLI,SetMissionData(sceneId,selfId,MD_HONGLI)+nPoint)

可以明显的发现这个写法变了,红利的写法并没有完整的定义,当然这是单机的写法不知道真实是不是也有类似元宝的写法 在这里插入图片描述

那为什么红利写法变成这样了这个会涉及到一系列的东西包括数据库的存储我们后边单独找一章来分析一下

二: 提示和对话框提示

其实提示还有很多种比如系统提示,或者是滚动的提示这些后边会提到 先说一下比较常用的不同的提示和对话框提示

不知道小伙伴们有没有注意过大部分Lua脚本最下面都会有如下的写法

--**********************************
-- 对话窗口信息提示
--**********************************
function x888899_NotifyFailBox( sceneId, selfId, targetId, msg )
	BeginEvent( sceneId )
	AddText( sceneId, msg )
	EndEvent( sceneId )
	DispatchEventList( sceneId, selfId, targetId )
end

function x888899_NotifyFail( sceneId, selfId, msg )
	BeginEvent( sceneId )
	AddText( sceneId, msg )
	EndEvent( sceneId )
	DispatchMissionTips( sceneId, selfId )
end

还有很多是直接写成在代码需要提示的地方单独写一句

	BeginEvent( sceneId )
	AddText( sceneId, msg )
	EndEvent( sceneId )
	DispatchEventList( sceneId, selfId, targetId )

其实都是一样的,只是在写法上封装起来更可读和更好的理解

两个函数其实基本差不多,以后前两个参数我们就不过多解释了直接跳过

targetId 代表的是提示框的npc (存疑, -1默认应该是缺省的当前NPC )

msg 则是具体的提示内容

个人观点: 多的参数应该就是用来确定NPC的

End–

天龙八部》是金庸先生创作的一部长篇武侠小说,讲述了北宋年间围绕佛门、道家、阴谋、爱恨纠缠的故事。由于题目要求回答与Lua代码相关的问题,我将回答《天龙八部》在Lua语言中的应用。 Lua是一种快速、轻量级的脚本语言,被广泛应用于游戏开发中的脚本系统。那么在实际游戏开发中,我们可以使用Lua来实现《天龙八部》中的一些游戏功能,比如人物属性、战斗系统等。 以人物属性为例,我们可以使用Lua代码定义一个人物类,包含一些基本属性和方法: ```lua -- 人物类 local Character = { name = "", -- 人物姓名 level = 1, -- 人物等级 hp = 100, -- 人物生命值 mp = 100, -- 人物内力值 } -- 人物初始化方法 function Character:init(name, level) self.name = name self.level = level end -- 人物升级方法 function Character:levelUp() self.level = self.level + 1 self.hp = self.hp + 50 self.mp = self.mp + 30 end -- 打印人物信息方法 function Character:printInfo() print("姓名:" .. self.name) print("等级:" .. self.level) print("生命值:" .. self.hp) print("内力值:" .. self.mp) end -- 创建一个人物并测试 local player = Character player:init("乔峰", 1) player:printInfo() player:levelUp() player:printInfo() ``` 上述代码使用Lua语言定义了一个人物类Character,包含了姓名、等级、生命值和内力值等属性,以及初始化、升级、打印信息等方法。通过调用这些方法,我们可以创建一个角色对象,初始化并打印出角色的信息,然后再进行升级操作,并再次打印出升级后的角色信息。 这只是使用Lua语言模拟《天龙八部》游戏中的一个功能,实际的游戏开发过程中还有更多复杂的功能和逻辑需要实现,需要根据具体的游戏需求进行扩展和优化。但是通过Lua这种灵活的脚本语言,我们可以更方便地实现游戏中的各种功能,并达到快速迭代和调试的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值