藏宝湾网游单机站

 找回密码
 注册

QQ登录

只需一步,快速开始

★【黑暗之光SF★我是大主宰SF】【神将三国SF】★

★【0.1折】★【变态网页游戏私服】★

★神将三国网页版上线送V5 5w元宝 5000w铜币 我是大主宰上线满v,80万元宝,小怪都爆元宝,耐玩长久稳定★

【原始传奇SF/维京传奇SF】【GM包站手游】

★【原始传奇SF/维京传奇SF】【GM包站手游】★

★2025火爆『传奇岁月+赤焰号角+维京传奇+原始传奇』爆战力称号BUFF+神装99999999万人PK★

首创可以单机 可以互动 可以赚烟钱的传奇

★全网独家 可以单机 可以互动的传奇!★

★全网唯一持续更新的可单机游戏!每15-25天更新一次内容,保持游戏新鲜度!! 众多独家的功能特色,众多你没见过的全新玩法,有能力的赚点烟钱,还能偶尔沙城战斗!★

★承接推广★
★承接推广★

★承接推广★

☆六一新区开放-放置传奇☆

★六一新区开放-放置传奇★

★可白嫖 上班摸鱼类 放置文字传奇游戏(放置休闲)qq群756025698★

★三职业复古★开局送神装★爆率100%★散人逆袭★

★三职业复古★开局送神装★爆率100%★散人逆袭★

★〖双线〗〖无忧传奇〗〖每日新区〗〖开局送神装 100%高爆率 装备元宝打怪爆〗★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★DNF★全职业平衡★公益服★
★DNF★全职业平衡★公益服★

【dnf86版本】【怀旧服】【全职业平衡】【非变态服】【非商业服】【775016356】

★承接推广★

★承接推广★

★承接推广★

★梦幻16门派全新大唐九黎★

★梦幻16门派全新大唐九黎★

★★新增全新门派九黎城,★不做垃圾,力争什么都做到最好★持续更新,长久稳定★

★承接推广★

★承接推广★

★承接推广★

查看: 1164|回复: 2

[分享] [77M2] 传奇引擎 充值服务 脚本

[复制链接]
发表于 2015-6-24 11:58:48 | 显示全部楼层 |阅读模式

[77M2] 传奇引擎 充值服务 脚本

给会使用的朋友. 我不做任何解答. 77M2上手难度++++++

引擎的链接具体大家可以搜索一下 就不发类似广告的链接了.

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

interface
  uses Classes, SysUtils, DefiniensConst, ExtendFuns;
  
procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
procedure PayDesc(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
procedure OpenPayPage(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
procedure ObtainGold(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
procedure DoObtainGold(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);

implementation

procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
const
S=
[[

亲爱的{S=<$Name$>;C=253}:\
  我是本游戏的充值服务员,您有什么需要尽管来找我。\ \
[ <充值说明/@PayDesc>  ]     -----------------------------------\
[ <我要充值/@OpenPayPage>  ]        <{S=【点击进入官网查看充值说明】;C=250}/@Link:<$PayURL$>>\
[ <领取元宝/@ObtainGold>  ]     -----------------------------------\\\
<{S=结束对话}/@exit>\
]];
var
    AMessage: String;
begin
    AMessage    :=    ReplaceStr(S, '<$Name$>', Player.Name);
  AMessage    :=    ReplaceStr(AMessage, '<$PayURL$>',Web_PayPageURL);
    Npc.Say(Player, AMessage);
end;

procedure PayDesc(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
const
S=
[[
请你在充值前阅读以下充值说明:\
  本服{S=元宝购买比例为1:100;C=249},支持多种充值方式,比如手机短信、\
网银、支付宝、手机缴费卡、多种游戏点卡等等方式,但是不同的充值\
方式本服额外赠送的元宝比例也是不一样的。具体比例如下:\
  首选:{S=网银:15%;C=251}   {S=支付宝:15%;C=251}\
  {S=各种游戏卡:10%;C=251}  {S=各种手机充值卡:10%;C=251}\
  {S=Q币卡:5%;C=251}        {S=手机短信:0%;C=251}\
    <{S=点击进入官网查看充值说明;C=250}/@Link:<$PayURL$>>\
<充值/@OpenPayPage>  <返回/@main>
]];
var
    AMessage: String;
begin
  AMessage    :=    ReplaceStr(S, '<$PayURL$>', Web_PayPageURL);
    Npc.Say(Player, AMessage);
end;

procedure OpenPayPage(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
begin
  Player.OpenURL(Web_PayPageURL, 800, 600);
end;

procedure ObtainGold(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
const
S=
[[
{S=%s;C=243}:\
  如果您通过本服在线充值平台充值后,那就可以在这里领取对应\
的元宝。多次充值系统会自动累加元宝数量。{S=如果你领取到的元宝数;C=249}\
{S=量和你充值数量不一致,请多执行几次领取。;C=249}\\
当前元宝为:{S=%d;C=253} 个\
<领取元宝/@DoObtainGold>\\
<返回/@main>  <关闭/@Exit>\
]];
begin
    Npc.Say(Player, Format(S, [Player.Name, Player.GameGold]));
end;

//检查账号在指定充值文件中存在的行数,并删除,返回行数*比例
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 WriteGameGoldLog(const Account: String; GameGold: Integer);
begin
  //此次可将领取元宝的信息写入到指定的位置,如文本文件、数据库
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('Envir\QuestDiary\充值积分\yb01.txt', Player.Account, 0.1);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb02.txt', Player.Account, 0.2);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb03.txt', Player.Account, 0.3);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb04.txt', Player.Account, 0.4);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb05.txt', Player.Account, 0.5);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb1.txt', Player.Account, 1);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb2.txt', Player.Account, 2);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb3.txt', Player.Account, 3);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb4.txt', Player.Account, 4);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb5.txt', Player.Account, 5);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb6.txt', Player.Account, 6);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb7.txt', Player.Account, 7);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb8.txt', Player.Account, 8);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb9.txt', Player.Account, 9);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb10.txt', Player.Account, 10);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb20.txt', Player.Account, 20);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb30.txt', Player.Account, 30);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb40.txt', Player.Account, 40);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb50.txt', Player.Account, 50);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb60.txt', Player.Account, 60);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb70.txt', Player.Account, 70);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb80.txt', Player.Account, 80);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb90.txt', Player.Account, 90);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb100.txt', Player.Account, 100);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb200.txt', Player.Account, 200);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb300.txt', Player.Account, 300);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb400.txt', Player.Account, 400);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb500.txt', Player.Account, 500);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb600.txt', Player.Account, 600);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb700.txt', Player.Account, 700);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb800.txt', Player.Account, 800);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb900.txt', Player.Account, 900);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb1000.txt', Player.Account, 1000);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb2000.txt', Player.Account, 2000);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb3000.txt', Player.Account, 3000);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb4000.txt', Player.Account, 4000);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb5000.txt', Player.Account, 5000);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb6000.txt', Player.Account, 6000);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb7000.txt', Player.Account, 7000);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb8000.txt', Player.Account, 8000);
        AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb9000.txt', Player.Account, 9000);
      AGoldSum    :=    AGoldSum + CheckAccount('Envir\QuestDiary\充值积分\yb10000.txt', Player.Account, 10000);
    if AGoldSum > 0 then
    begin
      //如果玩家领取到的元宝数量大于0   
        AGoldSum    :=    AGoldSum * 100;                          
        Player.GameGold    :=    Player.GameGold + Round(AGoldSum);
      Player.GoldChanged;
            Player.SendCenterMessage('元宝领取成功,一共领取元宝'+IntToStr(Round(AGoldSum))+'个!!!', 0);
      ObtainGold(Npc, Player, Args); //跳转到领取元宝的对话框界面
      WriteGameGoldLog(Player.Account, Round(AGoldSum));
    end
    else
            Player.SendCenterMessage('元宝领取失败,暂时没有你的充值信息!!!', 0);
  finally                  
    //领取结束,将G_GoldLocked置为False
    G_GoldLocked    :=    False;
  end;
end;

end.



发表于 2015-6-24 12:06:33 | 显示全部楼层
不明觉厉~
发表于 2015-6-24 16:50:59 | 显示全部楼层
直接晕了!!!!!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明

排行榜|联系我们|小黑屋|手机版|Archiver|游戏藏宝湾 |

GMT+8, 2025-5-29 02:47 , Processed in 0.028580 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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