天龙八部元宝兑换代码

分享下天龙八部元宝兑换代码,端的话大家自行网上找,看代码:
--领CD-KEY、查询点数、购买元宝

x888899_g_scriptId = PRIZE_SCRIPT_ID

x888899_g_prizeGems = {
50101001,
50101002,
50102001,
50102002,
50102003,
50102004,
50103001,
50104002,
50111001,
50111002,
50112001,
50112002,
50112003,
50112004,
50113001,
50113002,
50113003,
50113004,
50113005,
50114001
};


-- 检查 CDKey


function x888899_AskCDKey( sceneId, selfId )

GetCharPrize( sceneId, selfId, 1, 980,0,0 )                    --领CD-KEY (980是CD-KEY在Billing的物品类型)

end


-- 检查 财富卡


function x888899_AskNewUserCard( sceneId, selfId, card, op)

NewUserCard( sceneId, selfId, card, op)                                    --领财富卡/体育竞猜卡 (card是卡号字符串)

end


-- 购买 元宝


function x888899_AskYuanBao( sceneId, selfId, nYuanBao, nPoint )

GetCharPrize(sceneId,selfId,3,999,nYuanBao,nPoint);    --买nYuanBao个共nPoint点的元宝

end


-- 查询 点数


function x888899_AskPoint( sceneId, selfId )

GetCharPrize(sceneId,selfId,2,0,0,0);                                --查询人物点数

end


-- 抽奖


function x888899_AskPrize( sceneId, selfId )

GetCharPrize(sceneId,selfId,6,0,0,0);                                --先查询人物奖品

end


-- 检查 CDKey 的返回回调函数
-- ntype 请参考 enum PRIZE_TYPE_ENUM


function x888899_PrizeRet( sceneId, selfId, ntype, nserial, num )
-- 另外,这里没有 targetId,不知道写 -1 会不会有问题

local targetId = -1

--CD-KEY
if( 1 == ntype ) then
    SetMissionFlag( sceneId, selfId, MF_GetAwardFlag, 1 )
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    你已经成功激活你的领奖条件,你可以到我这里来领取奖励物品。" )
--财富卡
elseif( 3 == ntype ) then
    SetMissionFlag( sceneId, selfId, MF_ActiveNewUserCard, 1 )
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    恭喜!你已经成功启动财富卡,到达一定等级之后可以到大理都大爽(157,164)处领取奖励。" )
--赠点
elseif( 4 == ntype ) then
    ZengDian(sceneId,selfId,-1,1,nserial*num)
--物品
elseif( 5 == ntype ) then
    LuaFnBeginAddItem( sceneId )
        LuaFnAddItem( sceneId, nserial, num)
    local ret = LuaFnEndAddItem( sceneId, selfId )
    if 1 == ret then
        AddItemListToHuman(sceneId,selfId)
        --神笛一个玩家只能参加一次活动
        if( nserial == 30309052 ) then
            SetMissionFlag( sceneId, selfId, MF_ActiveWenZhouCard, 1 )
            BroadMsgByChatPipe(sceneId, selfId, "@*;SrvMsg;DBD:恭喜您成功领取了活动奖励,请查收", 0);
        end
        x888899_NotifyFailBox( sceneId, selfId, targetId, "物品换取成功!感谢您对《天龙八部》的支持!" )
    end
--体育竞猜卡
elseif( 6 == ntype ) then
    local prizeItem = x888899_GetSportsPrize()
    if prizeItem then
        LuaFnBeginAddItem( sceneId )
            LuaFnAddItem( sceneId, prizeItem, 1)
        local ret = LuaFnEndAddItem( sceneId, selfId )
        if 1 == ret then
            AddItemListToHuman(sceneId,selfId)
            SetMissionFlag( sceneId, selfId, MF_ActiveSportsCard, 1 )
            --x888899_NotifyFailBox( sceneId, selfId, targetId, "    恭喜您成功领取了活动奖励,请查收。" )
            BroadMsgByChatPipe(sceneId, selfId, "@*;SrvMsg;DBD:恭喜您成功领取了活动奖励,请查收", 0);
        end
    end
--网聚活动卡
elseif( 7 == ntype ) then
    LuaFnBeginAddItem( sceneId )
    LuaFnAddItem( sceneId, 30505108, 1 )
    local ret = LuaFnEndAddItem( sceneId, selfId )
    if 1 == ret then
        AddItemListToHuman( sceneId, selfId )
        SetMissionFlag( sceneId, selfId, MF_ActiveJuCard, 1 )
        BroadMsgByChatPipe(sceneId, selfId, "@*;SrvMsg;DBD:恭喜您成功领取了活动奖励,请查收", 0);
    end
    
elseif( 8 == ntype ) then    
    SetMissionFlag( sceneId, selfId, MF_ActiveNewUserCard666, 1 )
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    恭喜!你已经成功启动超级大力卡,到达一定等级之后可以到大理都大爽(157,164)处领取奖励。" )
end

return

end


-- 抽奖成功后给玩家提示信息


function x888899_PrizeRetEnd( sceneId, selfId, retId )

if retId and retId == 15 then
    x888899_NotifyFailBox( sceneId, selfId, -1, "    恭喜您成功领取了活动奖励,请查收。" )
elseif( retId == 12 ) then
  x888899_NotifyFailBox( sceneId, selfId, -1, "    恭喜您成功领取了活动奖励,请查收。" )
end

end


-- 新手卡或体育抽奖卡检查


function x888899_OpenCard(sceneId,selfId,card)

if nil == card then return end
--PrintStr(card)
local targetId = -1
local firstbyte = strbyte(card)
--'k' 体育卡
if 107 == firstbyte then
    if GetMissionFlag( sceneId, selfId, MF_ActiveSportsCard ) == 1 then
        x888899_NotifyFailBox( sceneId, selfId, targetId, "    你已经领取过活动奖励,不能重复领取。" )
        return
    end
--'t' 新手卡
elseif 116 == firstbyte or 115 == firstbyte then
    if GetMissionFlag( sceneId, selfId, MF_ActiveNewUserCard ) == 1 then
        x888899_NotifyFailBox( sceneId, selfId, targetId, "    你已经激活过财富卡,无法再次激活领取条件。" )
        return
    end
elseif 99 == firstbyte then
    if GetMissionFlag( sceneId, selfId, MF_ActiveNewUserCard666 ) == 1 then
        x888899_NotifyFailBox( sceneId, selfId, targetId, "    你已经启动过超级大力卡,无法再次启动领取条件。" )
        return
    end
end

x888899_AskNewUserCard( sceneId, selfId, card, 0)

end


-- 购买 元宝 的返回回调函数
-- ntype 请参考 enum PRIZE_TYPE_ENUM
-- 1 代表 OPT_YUANBAO_ADD 增加元宝


function x888899_BuyRet( sceneId, selfId, ntype, nYuanBao, nLeftPoint )

if( 2 == ntype ) then
--开始检测点数是否为0
    if nYuanBao==0 then
    BeginEvent(sceneId)
        strText = "您的点数不足,请充值后在试!"
        AddText(sceneId,strText)
    EndEvent(sceneId)
    DispatchMissionTips(sceneId,selfId)
    return
end
--结束检测点数是否为0

--开始判断兑换比例后赠点总值是否大于2亿
------下面代码中数值100000是您的兑换比例,如果1:10万赠点就写10000,1:20万就写200000
    local zd=nYuanBao*100000
------下面代码中ZengDian是检测赠点总值,如果你是卖元宝,可修改为YuanBao
    local cxzd=YuanBao(sceneId,selfId,targetId,3)
    --local cxzd=ZengDian(sceneId,selfId,targetId,3)
    if zd+cxzd>200000000 then
    BeginEvent(sceneId)
        strText = "兑换失败,兑换元宝的值超过系统上限2亿,请使用一部分后再兑换!"
        AddText(sceneId,strText)
    EndEvent(sceneId)
    DispatchMissionTips(sceneId,selfId)
    return
end
--结束判断兑换比例后赠点总值是否大于2亿
    --local mg=nYuanBao*2
    --local t_mg=mg
    --local nMenpaiPoint=GetHumanMenpaiPoint(sceneId, selfId)
    --mg=mg+nMenpaiPoint
    --SetHumanMenpaiPoint(sceneId, selfId, mg)

------下面代码中ZengDian给予兑换赠点,如果您是卖元宝,更换为YuanBao的即可
    YuanBao(sceneId,selfId,targetId,1,zd)
    --ZengDian(sceneId,selfId,targetId,1,zd)
    BeginEvent(sceneId)
        strText = "您成功的兑换了"..tostring(zd).."点元宝!"
        AddText(sceneId,strText)
    EndEvent(sceneId)
    DispatchMissionTips(sceneId,selfId)
    local    nam    = LuaFnGetName( sceneId, selfId )
    BroadMsgByChatPipe( sceneId, selfId, "#P恭喜玩家#W["..nam.."]#P,在#G洛阳(164.99)处,#P在线充值后兑换了#Y["..zd.."]#P元宝!", 4 )
    local newljcz=GetMissionData( sceneId, selfId, LEIJICHONGZHI )+zd
    SetMissionData(sceneId, selfId, LEIJICHONGZHI, newljcz)
    --CallScriptFunction( 181000, "OnDefaultEvent", sceneId, selfId, targetId)
end
-- local zd=nYuanBao*100000     --获取点数 和比例的结果

-- -- 另外,这里没有 targetId,不知道写 -1 会不会有问题

-- local targetId = -1
-- if( 2 == ntype ) then
    -- YuanBao(sceneId,selfId,targetId,1,zd)--在线兑换元宝
    -- --ZengDian(sceneId,selfId,targetId,1,zd)--在线兑换元宝
    -- --BuyYuanBaoCount(sceneId,selfId,targetId,1,zd)
    -- ---------------------------------------------------
    -- --local menpaipoint = GetHumanMenpaiPoint(sceneId, selfId) --在线兑换门牌贡献
      -- --SetHumanMenpaiPoint(sceneId, selfId, menpaipoint + zd)
    -- --------------------------------------------------
    -- --x888899_NotifyLeftPoint(sceneId,selfId,nLeftPoint)
    
    -- --给客户端提示信息
    -- local strText = ""
    -- BeginEvent(sceneId)
        -- strText = "您成功的兑换了"..tostring(zd).."点赠点。"
        -- AddText(sceneId,strText)
    -- EndEvent(sceneId)
    -- DispatchMissionTips(sceneId,selfId)
    -- str="#e660066#gFFFF00    系统查询到您已充值了 "..nYuanBao.." 元,现已为你成功转换成 "..zd.." 点赠点,感谢您的支持,祝您游戏愉快!"
    -- BeginEvent(sceneId) 
        -- AddText(sceneId, str)                        
    -- EndEvent(sceneId)
    -- DispatchEventList(sceneId,selfId,targetId)
    -- LuaFnMsg2Player( sceneId, selfId,strText,MSG2PLAYER_PARA)
    -- local    nam    = LuaFnGetName( sceneId, selfId )
    -- BroadMsgByChatPipe( sceneId, selfId, "#e660066#gFFFF00恭喜 【"..nam.."】 ,通过在线充值领取系统领取了 【"..zd.."】 点充值的赠点,一代牛人即刻诞生!", 4 )
-- end

end


-- 查询点数 的返回回调函数


function x888899_PointRet( sceneId, selfId, nLeftPoint )

x888899_NotifyLeftPoint(sceneId,selfId,nLeftPoint)

end


-- 检查奖品 开始的回调函数


function x888899_CheckRetBegin(sceneId,selfId)

LuaFnBeginAddItem( sceneId )

end


-- 检查奖品 添加检查物品的回调函数


function x888899_CheckAddItem(sceneId,selfId,itemid,num)

LuaFnAddItem( sceneId, itemid, num)

end


-- 检查奖品 结束的回调函数


function x888899_CheckRetEnd(sceneId,selfId)

local ret = LuaFnEndAddItem( sceneId, selfId )
if 1 == ret then
    --检查成功,开始抽奖
    x888899_NotifyFailBox( sceneId, selfId, -1, "    检查成功,请稍等……正在领取奖品。" )
    GetCharPrize(sceneId,selfId,4,0,0,0);        --查询人物现在拥有的奖品
else
    x888899_NotifyFailBox( sceneId, selfId, -1, "    对不起,您没有足够的物品栏空间,请整理后再来领取。" )
end

end


-- 卡片检查奖品 结束的回调函数


function x888899_CardCheckRetEnd(sceneId,selfId)

local ret = LuaFnEndAddItem( sceneId, selfId )
if 1 == ret then
    --检查成功,开始开卡
    x888899_NotifyFailBox( sceneId, selfId, -1, "    检查成功,请稍等……正在领取奖品。" )
    x888899_AskNewUserCard( sceneId, selfId, "MagicString", 1);
else
    x888899_NotifyFailBox( sceneId, selfId, -1, "    对不起,您没有足够的物品栏空间,请整理后再来领取。" )
end

end


-- 卡片检查奖品 结束的回调函数,对天使礼包放出做特殊日志 By Vega 20090121


function x888899_CardCheckRetEndTSLB(sceneId,selfId)

local ret = LuaFnEndAddItem( sceneId, selfId )
if 1 == ret then
    --检查成功,开始开卡
    x888899_NotifyFailBox( sceneId, selfId, -1, "    检查成功,请稍等……正在领取奖品。" )
    x888899_AskNewUserCard( sceneId, selfId, "MagicString", 1);

    local guid = LuaFnObjId2Guid(sceneId, selfId);
    
    if guid ~= nil then
        --local LogInfo = format("0X%08X,", guid);
        ScriptGlobal_AuditGeneralLog(LUAAUDIT_TSLBOUT, guid);
    end
else
    x888899_NotifyFailBox( sceneId, selfId, -1, "    对不起,您没有足够的物品栏空间,请整理后再来领取。" )
end

end


-- 检查 CDKey 的出错返回回调函数


function x888899_PrizeRetErr( sceneId, selfId, retId )
--enum UserPrizeResult
--{
-- UPR_SUCCESS, //抽奖信息成功
-- UPR_ASKPOINT_SUCCESS, //查询点数成功

-- UPR_ASKBUY_SUCCESS, //购买成功

-- UPR_ERR_NO_PRIZE, //没有中奖
-- UPR_ERR_PRE_REQUEST, //正在处理上次的请求信息
-- UPR_ERR_PRIZE_BUSY, //等待处理的领奖信息过多
-- UPR_ERR_TIME_OUT, //处理领奖信息超时
-- UPR_ERR_EXPIRE_PRIZE, //奖品过期
-- UPR_ERR_CANT_NOW, //现在不能处理抽奖请求
-- UPR_ERR_NOENOUGH_POINT, //点数不足
-- UPR_ERR_GOODSCODE_ERR, //物品代码错误
-- UPR_ERR_ALREADYGET_PRIZE, //已经领奖
-- UPR_NEWUSERCARD_SUCCESS, //财富卡成功
-- UPR_ERR_WRONGCARDNUMBER, //卡号错误
-- UPR_ERR_OTHERUSERUSE, //其他人已经使用
-- };

local targetId = -1

if retId == 3 then                                -- 没有 CD-Key
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    你的CDK没有激活,请您登陆http://tl.gameone.com/查看。" )
elseif retId == 4 then
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    正在处理中,请稍候。" )
elseif retId == 5 then
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    系统忙,请稍候再重试。" )
elseif retId == 6 then
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    处理超时,请稍候重试。" )
elseif retId == 9 then
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    你的点数不足。" )
elseif retId == 11 then
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    你的帐号已经领取过奖励,无法再次启动领取条件。" )  --帐号  to  账号
elseif retId == 13 then
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    对不起,你输入的卡序列号为无效序列号,请确认之后再次输入。" )
elseif retId == 14 then
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    你的卡序列号已经被使用过,请确认。" )
elseif retId == 16 then
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    本服务器未开通抽奖功能,请确认。" )
elseif retId == 17 then
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    此用户已经过10级,不能再使用财富卡。" )
elseif retId == 20 then
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    对不起,您当前没有可领取的奖励。" )
else
    x888899_NotifyFailBox( sceneId, selfId, targetId, "    处理故障,请稍候再试,如无法成功操作请联系客服人员进行处理。" )
end

end


-- 对话窗口信息提示


function x888899_NotifyFailBox( sceneId, selfId, targetId, msg )

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

end


-- 通知客户端剩余点数


function x888899_NotifyLeftPoint(sceneId,selfId,nLeftPoint)

BeginUICommand( sceneId )
    UICommand_AddInt( sceneId, nLeftPoint)
EndUICommand( sceneId )
DispatchUICommand( sceneId, selfId, 2003 )

end


-- 体育竞猜卡随机获得奖品


function x888899_GetSportsPrize()

local total = getn(SPORTS_CARD_PRIZE)
if total and total >= 1 then
    local idx = random(1,total)
    return SPORTS_CARD_PRIZE[idx]
else
    return nil
end

end
整个代码全在这里了,有兴趣的朋友可以一起来讨论。
总结:天龙八部元宝兑换代码要看懂的话得会lua脚本语言,这游戏脚本都是这语言写的,可以找个端回来本地架设看看效果。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值