热点推荐

小喇叭+ 发布

01-16 02:17
01-16 02:04
01-13 17:30
查看: 3002|回复: 20

91M2引擎如何实现充值平台对接,91M2传奇版本开区设置充值平台的方法

[复制链接]
avatar

签到天数: 350 天

[LV.8]以坛为家I

7651

主题

255

回帖

31万

积分

司徒主管

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

UID
1
司徒币
260203
传世币
3000
元宝
0
在线时间
266 小时

最佳新人灌水之王

QQ
online_admin 发表于 2021-6-24 06:13:26 | 显示全部楼层 |阅读模式

91M2引擎如何实现充值平台对接,91M2传奇版本开区设置充值平台的方法

91M2引擎如何实现充值平台对接,91M2传奇版本开区设置充值平台的方法53 / 作者:admin / 帖子ID:7102




游戏中充值平台是一个很重要的环节,基于77访问文件及数据库的功能,通过变通处理能支持任何的充值平台,对于充值平台本身就是写文件或数据库的模式则更是易如反掌。

在示范版本中我们只做了基于写文件的充值模式,下面则是玩家充值后领取元宝的核心代码:

unit Q4;
{
  充值模块说明:
本模块适用于在"Mir200EnvirQuestDiary充值积分"文件夹里对应的文本中写入充值账号信息的充值方式
}

inte**ce
uses Classes, SysUtils, DefiniensConst, ExtendFuns;

procedure DoObtainGold(Npc: TNormNpc; Player: TPlayObject; Args: TArgs); //领取元宝入口函数

implementation

//检查账号在指定充值文件中存在的行数,并删除,返回行数*比例
function CheckAccount(const TxtFile, Account: String; Rate: Double): Double;
var
LS: TStrings;
Idx: Integer;
ASum: Integer;
begin
Result  :=  0;   
//检查是否存在文件
if FileExists(TxtFile) then
begin
  LS  :=  TStringList.Create;
  ASum:=  0; //初始取到的行数为0
  try   
  //将文件加载到TStrings对象
  LS.LoadFromFile(TxtFile);
  while true do
  begin
  Idx  :=  LS.IndexOf(Account);
  //取出一条账号记录
   if Idx  -1 then
  begin   
    //如果取到了记录,则删除这条记录,并增加取到的行数
    LS.Delete(Idx);
    Inc(ASum);   
  end
  else
    //没取到则直接跳出循环
    Break;
  end;  
  if ASum > 0 then
  //如果取到的行数大于0,则说明对列表有做过更新,需要保存
  LS.SaveToFile(TxtFile);
  //返回元宝数量(取到的行数x比例)
  Result:= ASum  * Rate;
  finally
  LS.Free;
  end;  
end;
end;

//领取充值元宝
procedure DoObtainGold(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
var
AGoldSum: Double;
begin
if G_GoldLocked then
begin
  //如果G_GoldLocked为True,则表示正在为其他玩家发放元宝,为了不引起并发读写问题,当前此次请求无效
  //此类处理方法可有效避免并发文本读写造成的数据错乱
  Player.SendCenterMessage('我正在为其他玩家发放元宝,请稍后!!!', 0);
  Exit;
end;
//将G_GoldLocked置为True
G_GoldLocked  :=  True;
try   
  //初始化当前领取到的元宝总数为0,然后从每个文件中去读取元宝数量
  //示范版本中以常见的充值方式处理元宝处理,如果是读取数据库充值记录,则可以采用Gamelib.DBEngine对象来处理  
  AGoldSum  :=  0;
  AGoldSum  :=  AGoldSum + CheckAccount('EnvirQuestDiary充值积分yb01.txt', Player.Account, 0.1);
  AGoldSum  :=  AGoldSum + CheckAccount('EnvirQuestDiary充值积分yb02.txt', Player.Account, 0.2);
  AGoldSum  :=  AGoldSum + CheckAccount('EnvirQuestDiary充值积分yb1.txt', Player.Account, 1);
  AGoldSum  :=  AGoldSum + CheckAccount('EnvirQuestDiary充值积分yb2.txt', Player.Account, 2);
  AGoldSum  :=  AGoldSum + CheckAccount('EnvirQuestDiary充值积分yb6.txt', Player.Account, 6);
  //作为演示,这里省略更多的元宝比例文件
  if AGoldSum > 0 then
  begin
  //如果玩家领取到的元宝数量大于0
  AGoldSum  :=  AGoldSum * 100;        
  Player.GameGold  :=  Player.GameGold + Round(AGoldSum);
  Player.GoldChanged;
  Player.SendCenterMessage('元宝领取成功,一共领取元宝'+IntToStr(Round(AGoldSum))+'个!!!', 0);
  end
  else
  Player.SendCenterMessage('元宝领取失败,暂时没有你的充值信息!!!', 0);
finally      
  //领取结束,将G_GoldLocked置为False,此时其他玩家可执行元宝领取了
  G_GoldLocked  :=  False;
end;
end;

end.
上面代码中,CheckAccount函数就是检查文本文件中是否存在某账号记录,如果存在则全部取出来,算出对应的元宝数量并返回。

DoObtainGold函数则是一个普通的入口函数,即玩家点击客户端界面可触发的函数,这个函数先是提取出玩家有多少元宝,然后将元宝发放给玩家

帖子地址: 





上一篇:GEEM2龙傲天副本脚本,传奇一条龙开区时设置武功秘籍专属脚本教程。
下一篇:GEE引擎会员功能脚本,传奇私服一条龙中添加会员快捷键的方法
回复

使用道具 举报

avatar

该用户从未签到

0

主题

240

回帖

490

积分

司徒三星

UID
618
司徒币
250
传世币
0
元宝
0
在线时间
0 小时
online_member 发表于 2021-6-24 06:14:11 | 显示全部楼层
感谢楼主,下载试试看
回复

使用道具 举报

avatar

该用户从未签到

0

主题

199

回帖

408

积分

司徒三星

UID
347
司徒币
209
传世币
0
元宝
0
在线时间
0 小时
online_member 发表于 2021-6-24 06:28:21 | 显示全部楼层
一直在看
回复

使用道具 举报

avatar

该用户从未签到

0

主题

234

回帖

478

积分

司徒三星

UID
138
司徒币
244
传世币
0
元宝
0
在线时间
0 小时
online_member 发表于 2021-6-24 07:06:11 | 显示全部楼层
顶顶更健康
回复

使用道具 举报

avatar

该用户从未签到

0

主题

222

回帖

454

积分

司徒三星

UID
273
司徒币
232
传世币
0
元宝
0
在线时间
0 小时
online_member 发表于 2021-6-24 07:30:56 | 显示全部楼层
<<91M2引擎如何实现充值平台对接,91M2传奇版本开区设置充值平台的方法>>
回复

使用道具 举报

avatar

该用户从未签到

0

主题

229

回帖

468

积分

司徒三星

UID
1020
司徒币
239
传世币
0
元宝
0
在线时间
0 小时
online_member 发表于 2021-6-24 08:54:59 | 显示全部楼层
佩服佩服!
回复

使用道具 举报

avatar

该用户从未签到

0

主题

246

回帖

502

积分

司徒四星

UID
1087
司徒币
256
传世币
0
元宝
0
在线时间
0 小时
online_member 发表于 2021-6-24 09:21:12 | 显示全部楼层
顶顶更健康
回复

使用道具 举报

avatar

该用户从未签到

0

主题

241

回帖

492

积分

司徒三星

UID
389
司徒币
251
传世币
0
元宝
0
在线时间
0 小时
online_member 发表于 2021-6-24 09:29:54 | 显示全部楼层
回贴看看啥版本
回复

使用道具 举报

avatar

该用户从未签到

0

主题

239

回帖

488

积分

司徒三星

UID
810
司徒币
249
传世币
0
元宝
0
在线时间
0 小时
online_member 发表于 2021-6-24 09:34:27 | 显示全部楼层
没人回帖。。。我来个吧
回复

使用道具 举报

avatar

该用户从未签到

0

主题

228

回帖

466

积分

司徒三星

UID
269
司徒币
238
传世币
0
元宝
0
在线时间
0 小时
online_member 发表于 2021-6-24 09:47:11 | 显示全部楼层
秀起来~
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【乱回复灌水将给予禁言处理】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则