Citação Originally Posted by vinybronks Ver Post
To tendo um problema aqui executei essa job tanto como Tempo quanto OnlineHours mais não tá adicionando os golds e nem marcando as horas em nenhuma das coluna,e sim já criei as coluna Tempo e OnlineHours .. alguém sabe oque é ?

A moeda que uso é Golds então esta assim

__________________________________________________ __________________________________________________ ______
job

UPDATE memb_stat SET Tempo = Tempo + 1 WHERE connectstat = 1
___________________________________
UPDATE MEMB_INFO
SET Golds = Golds + 10
FROM MEMB_STAT INNER JOIN MEMB_INFO ON MEMB_STAT.memb___id = MEMB_INFO.memb___id
WHERE Tempo >= 60

Ou

UPDATE memb_stat SET OnlineHours = OnlineHours + 1 WHERE connectstat = 1
____________________________________
UPDATE MEMB_INFO
SET Golds = Golds + 10
FROM MEMB_STAT INNER JOIN MEMB_INFO ON MEMB_STAT.memb___id = MEMB_INFO.memb___id
WHERE OnlineHours >= 60


Nenhum dos jeito ta dando certo

Aparece algum erro na hora que você tenta executar? Qual seria o erro?

Eu tenho uma query que trabalha diretamente na WZ_DISCONNECTMEMB, ela pagará os golds somente após o player desconctar. Essa Query realiza o cálculo através de um tempo base definido pelo administrador para pagar o bonus online.

OBS: ELA PODE SER RODADA DIRETAMENTE, NÃO É NECESSÁRIO CRIAR JOB COM ELA.

Código:
USE [MuOnline]
GO
/****** Object:  StoredProcedure [dbo].[WZ_DISCONNECT_MEMB]    Script Date: 05/05/2013 10:42:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER PROCEDURE [dbo].[WZ_DISCONNECT_MEMB]
@memb___id varchar(10)
 AS
Begin    
set nocount on
    Declare @find_id varchar(10)    
    Declare @ConnectStat tinyint
    Declare @con_tm DATETIME
    Declare @Minutos tinyint
    Declare @TempoAtual int
    Declare @NovoTempo int
    Declare @Bonus int
    Set @ConnectStat = 0
    Set @find_id = 'NOT'
    
    --Ganhar 1 mu$ a cada 10 minutos
    Set @Minutos = 10  -- Altere aqui o tempo online para ganhar 1 Gold
    --------------------------------


    select @find_id = S.memb___id,
           @con_tm = S.ConnectTM
           from MEMB_STAT S INNER JOIN MEMB_INFO I ON S.memb___id = I.memb___id 
           where I.memb___id = @memb___id


    if( @find_id <> 'NOT' )
    begin        
        
        --ATUALIZA status da conta
        UPDATE MEMB_STAT
        SET ConnectStat = @ConnectStat,
        DisconnectTM = getdate(),
        @TempoAtual = OnlineTime = OnlineTime+(DATEDIFF(mi,@con_tm,getdate()))
        WHERE memb___id = @memb___id


        --ATUALIZA minutos online do char
        UPDATE Character
        SET OnlineTime = OnlineTime+(DATEDIFF(mi,@con_tm,getdate())) 
        FROM Character as c INNER JOIN AccountCharacter as ac ON 
        c.Name = ac.GameIDC WHERE c.accountid = @memb___id


        --Mu$ por tempo online--------------------------------
        SELECT @Bonus = @TempoAtual / @Minutos
        SELECT @NovoTempo = @TempoAtual % @Minutos
        
        set @find_id = 'NOT'


        IF (@Bonus IS NOT NULL)
        BEGIN
            SELECT @find_id = memb___id FROM MEMB_INFO
            WHERE memb___id = @memb___id
            if( @find_id <> 'NOT' )
            begin    
                UPDATE MEMB_INFO SET Golds = Golds + @Bonus WHERE memb___id = @memb___id
            end
            else
            begin
                INSERT INTO MEMB_INFO (memb___id,Golds)
                VALUES (@memb___id,@Bonus)
            end
            UPDATE MEMB_STAT SET Tempo = @NovoTempo WHERE memb___id = @memb___id
        END
    end
end