146 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
--UI展示功能类NPC
 | 
						||
 | 
						||
local NpcFuncType = 2
 | 
						||
NpcFuncs[NpcFuncType] = {}
 | 
						||
 | 
						||
local EnUIType = {
 | 
						||
    RedName = 1, --洗红名
 | 
						||
}
 | 
						||
 | 
						||
-- 主方法
 | 
						||
NpcFuncs[NpcFuncType] = function(pActor, nNpcHandle, nNpcId, nFuncId, packet)
 | 
						||
    local thisNpcConf = NpcConf[nNpcId]
 | 
						||
    local funcGroup = thisNpcConf.funcGroup
 | 
						||
    -- 检查是否合法的请求NPC
 | 
						||
    if funcGroup then
 | 
						||
        for i,id in ipairs(funcGroup) do
 | 
						||
            if id == nFuncId then
 | 
						||
                local thisFunc = NpcFunctionsConf[id]
 | 
						||
                if thisFunc and thisFunc.funcType and thisFunc.funcType==NpcFuncType then
 | 
						||
                    OnUIFunctions(pActor, thisFunc, packet)
 | 
						||
                end
 | 
						||
            end
 | 
						||
        end
 | 
						||
    end
 | 
						||
end
 | 
						||
 | 
						||
-- 获取NpcUIFuncs(UI展示功能类NPC的玩家数据)
 | 
						||
function GetUIFuncData(pActor)
 | 
						||
    local var = Actor.getStaticVar(pActor)
 | 
						||
    if var then
 | 
						||
        if var.UIFunc == nil then
 | 
						||
            var.UIFunc = {}
 | 
						||
        end
 | 
						||
        return var.UIFunc
 | 
						||
    end
 | 
						||
    return nil
 | 
						||
end
 | 
						||
 | 
						||
--UI功能
 | 
						||
function OnUIFunctions(pActor, thisFuncConf, packet)
 | 
						||
    
 | 
						||
    if thisFuncConf.param2 == EnUIType.RedName then
 | 
						||
        OnRedNameCmd(pActor,thisFuncConf,packet)--洗红名
 | 
						||
    end
 | 
						||
end
 | 
						||
 | 
						||
--UI功能:清除红名PK值
 | 
						||
function OnRedNameCmd(pActor, thisFuncConf, packet)
 | 
						||
    local useType = DataPack.readByte(packet)
 | 
						||
    local conf = thisFuncConf.param3
 | 
						||
    if conf and conf[useType+1] then
 | 
						||
        conf = conf[useType+1]
 | 
						||
        local data = GetUIFuncData(pActor)
 | 
						||
 | 
						||
        -- PK值为0不处理
 | 
						||
        local curPk = Actor.getIntProperty(pActor,PROP_ACTOR_PK_VALUE)
 | 
						||
        if curPk <= 0 then
 | 
						||
            Actor.sendTipmsg(pActor, "PK值已经为0", tstUI)
 | 
						||
            return
 | 
						||
        end
 | 
						||
        -- 消耗检测
 | 
						||
        local consumes = {}
 | 
						||
        if conf.consume then
 | 
						||
            table.insert( consumes, conf.consume )
 | 
						||
            if CommonFunc.Consumes.Check(pActor, consumes) ~= true then
 | 
						||
                Actor.sendTipmsg(pActor, "道具或金币元宝不足!", tstEcomeny)
 | 
						||
                return
 | 
						||
            end
 | 
						||
        end
 | 
						||
        -- 次数检测,并增加
 | 
						||
        if conf.limitday and conf.limitday > 0 then
 | 
						||
            if data then
 | 
						||
                if data.PKLimit == nil then
 | 
						||
                    data.PKLimit = {}
 | 
						||
                    data.PKLimit[useType] = 0
 | 
						||
                end
 | 
						||
                if data.PKLimit[useType] then
 | 
						||
                    if data.PKLimit[useType] >= conf.limitday then
 | 
						||
                        Actor.sendTipmsg(pActor, "已超过今日次数!", tstUI)
 | 
						||
                        return
 | 
						||
                    end
 | 
						||
                    data.PKLimit[useType] = data.PKLimit[useType] + 1
 | 
						||
                else
 | 
						||
                    data.PKLimit[useType] = 1
 | 
						||
                end
 | 
						||
            else
 | 
						||
                assert("获取个人脚本数据出错")
 | 
						||
            end
 | 
						||
        end
 | 
						||
        -- 消耗
 | 
						||
        if CommonFunc.Consumes.Remove(pActor, consumes, GameLog.Log_CleanRedName, "清除红名PK值") ~= true then
 | 
						||
            return
 | 
						||
        end
 | 
						||
        -- 减PK值
 | 
						||
        if curPk <= conf.pkval then
 | 
						||
            Actor.sendTipmsg(pActor, "已减少"..curPk.."点pk值", tstEcomeny)
 | 
						||
            curPk = 0
 | 
						||
        else
 | 
						||
            Actor.sendTipmsg(pActor, "已减少"..conf.pkval.."点pk值", tstEcomeny)
 | 
						||
            curPk = curPk - conf.pkval
 | 
						||
        end
 | 
						||
        Actor.setUIntProperty(pActor,PROP_ACTOR_PK_VALUE,curPk)
 | 
						||
 | 
						||
        -- 发送今天已洗红名次数
 | 
						||
        local netPack = DataPack.allocPacket(pActor, enMiscSystemID, sSendPkValueWashCount)
 | 
						||
        if netPack then
 | 
						||
            local num = 0;
 | 
						||
            if data.PKLimit then num = data.PKLimit[0] or 0 end;
 | 
						||
            DataPack.writeChar(netPack, num or 0)
 | 
						||
            DataPack.flush(netPack)
 | 
						||
        end
 | 
						||
    end
 | 
						||
end
 | 
						||
 | 
						||
function OnNPCUIFuncNewDay(pActor,args)
 | 
						||
    local data = GetUIFuncData(pActor);
 | 
						||
    if data and data.PKLimit then
 | 
						||
        data.PKLimit = nil -- 清空洗PK值次数计数
 | 
						||
    end
 | 
						||
 | 
						||
    -- 发送今天已洗红名次数
 | 
						||
    local netPack = DataPack.allocPacket(pActor, enMiscSystemID, sSendPkValueWashCount)
 | 
						||
    if netPack then
 | 
						||
        DataPack.writeChar(netPack, 0)
 | 
						||
        DataPack.flush(netPack)
 | 
						||
    end
 | 
						||
end
 | 
						||
 | 
						||
function OnNPCUIFuncLogin(pActor,args)
 | 
						||
    -- 发送今天已洗红名次数
 | 
						||
    local netPack = DataPack.allocPacket(pActor, enMiscSystemID, sSendPkValueWashCount)
 | 
						||
    if netPack then
 | 
						||
        local data = GetUIFuncData(pActor)
 | 
						||
        if data and data.PKLimit then
 | 
						||
            DataPack.writeChar(netPack, (data.PKLimit[0] or 0))
 | 
						||
            --print("["..Actor.getName(pActor).."]剩余洗红名次数为:"..(data.PKLimit[0] or 0))
 | 
						||
        else 
 | 
						||
            DataPack.writeChar(netPack, 0)
 | 
						||
            --print("["..Actor.getName(pActor).."]剩余洗红名次数为:".. 0)
 | 
						||
        end
 | 
						||
        DataPack.flush(netPack)
 | 
						||
    end
 | 
						||
end
 | 
						||
 | 
						||
ActorEventDispatcher.Reg(aeNewDayArrive,OnNPCUIFuncNewDay,"NpcUIFuncs.txt")
 | 
						||
ActorEventDispatcher.Reg(aeUserLogin,OnNPCUIFuncLogin,"NpcUIFuncs.txt") |