Originally Posted by
vinybronks
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