Page 1 of 2 12 ÚltimoÚltimo
Resultados 1 a 10 de 12
  1. #1
    Membro _SavagE_'s Avatar
    Data de Ingresso
    Apr 2016
    Posts
    102
    Thanks Thanks Given 
    43
    Thanks Thanks Received 
    1
    Thanked in
    1 Post
    Mencionado
    5 Post(s)
    MEU HUMOR
    Amused
    País
    Brazil

    Resets (diário, semanal, mensal MuEMU)

    Alguem sabe me dizer porque os servidores MuEMU não contabilizam resets (Diário, semanal e mensal)?
    Já tentei de várias maneiras mas não consegui, acho que estou fazendo errado talvez, se alguem souber a solução e puder ajudar eu agradeço.

    Edit:

    Problema resolvido com esse post do mentor.
    [Somente membros podem ver os links. ][Somente membros podem ver os links. ]
    Last edited by _SavagE_; 29/03/2017 at 09:55 AM.

  2. #2
    Membro Royal's Avatar
    Data de Ingresso
    Mar 2016
    Posts
    62
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Mencionado
    9 Post(s)
    MEU HUMOR
    Fine
    Tente usar ResetCount, ResetDay, ResetWek, e ResetMon

  3. #3
    Developer C++ s00x's Avatar

    Data de Ingresso
    Jan 2015
    Posts
    373
    Thanks Thanks Given 
    75
    Thanks Thanks Received 
    146
    Thanked in
    24 Posts
    Mencionado
    63 Post(s)
    MEU HUMOR
    Cheerful
    País
    United States
    Seguindo a estrutura de tabelas do @[Somente membros podem ver os links. ]

    Colunas a serem adicionadas:
    Código:
    Use [MuOnline]
    
    GO
    
    ALTER TABLE [MuOnline].[dbo].[Character] ADD ResetDay INT NOT NULL DEFAULT ((0))
    ALTER TABLE [MuOnline].[dbo].[Character] ADD ResetWek INT NOT NULL DEFAULT ((0))
    ALTER TABLE [MuOnline].[dbo].[Character] ADD ResetMon INT NOT NULL DEFAULT ((0))
    Crie a seguinte Trigger:
    Código:
    USE [MuOnline]
    GO
    
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE TRIGGER [dbo].[resetrank]
    	ON [dbo].[Character]
    
    AFTER UPDATE
    AS
    
    IF UPDATE(ResetCount)
    	BEGIN SET NOCOUNT ON;
    	UPDATE [Character] set [Character].ResetDay=ResetDay+1, ResetWek=ResetWek+1, ResetMon=ResetMon+1
    	WHERE [Character].accountid=(SELECT accountid FROM Inserted)
    	AND [Character].name=(SELECT name FROM Inserted)
    END
    Recomendo fazer backup antes de testar, fiz na correria, não tive tempo de testar.
    Lembrando, ainda à a necessidade da JOB para resetar os rankings.

    @EDIT

    Completar o Tópico com as JOBS

    JobName: ResetDay
    Código:
    BEGIN TRANSACTION
    	DECLARE @JobID BINARY(16)
    	DECLARE @ReturnCode INT
    	SELECT @ReturnCode = 0
    
    	IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = N'[uncategorized (Local)]') < 1
    		EXECUTE msdb.dbo.sp_add_category @name = N'[uncategorized (Local)]'
    
    	SELECT @JobID = job_id FROM	msdb.dbo.sysjobs WHERE (name = N'ResetDay')
    
    	IF (@JobID IS NOT NULL)
    	BEGIN
    
    	IF (EXISTS (SELECT * FROM msdb.dbo.sysjobservers WHERE (job_id = @JobID) AND (server_id <> 0)))
    	BEGIN
    
    		RAISERROR (N'Unable to import job ''ResetDay'' since there is already a multi-server job with this name.', 16, 1)
    		GOTO QuitWithRollback
    		END
    	ELSE
    		EXECUTE msdb.dbo.sp_delete_job @job_name = N'ResetDay'
    		SELECT @JobID = NULL
    	END
    
    BEGIN
    
    	EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'ResetDay',  @[Somente membros podem ver os links. ]_login_name = N'sa', @description = N'No description available.', @category_name = N'[uncategorized (Local)]', @enabled = 1, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 2, @delete_level= 0
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    
    	EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, @step_name = N'ResetColumn', @command = N'UPDATE Character SET ResetDay = 0', @database_name = N'MuOnline', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    	EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1
    
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    
    	EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'ResetDay', @enabled = 1, @freq_type = 4, @active_start_date = 20170329, @active_start_time = 0, @freq_interval = 1, @freq_subday_type = 1, @freq_subday_interval = 0, @freq_relative_interval = 0, @freq_recurrence_factor = 0, @active_end_date = 99991231, @active_end_time = 235959
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    
    	EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)'
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    
    END
    COMMIT TRANSACTION
    GOTO	EndSave
    QuitWithRollback:
    	IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
    EndSave:
    JobName: ResetWek
    Código:
    BEGIN TRANSACTION
    	DECLARE @JobID BINARY(16)
    	DECLARE @ReturnCode INT
    	SELECT @ReturnCode = 0
    
    	IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = N'[uncategorized (Local)]') < 1
    		EXECUTE msdb.dbo.sp_add_category @name = N'[uncategorized (Local)]'
    
    	SELECT @JobID = job_id FROM msdb.dbo.sysjobs WHERE (name = N'ResetWek')
    	
    	IF (@JobID IS NOT NULL)
    	BEGIN
      
    	IF (EXISTS (SELECT * FROM msdb.dbo.sysjobservers WHERE (job_id = @JobID) AND (server_id <> 0)))
    	BEGIN
    
    		RAISERROR (N'Unable to import job ''ResetWek'' since there is already a multi-server job with this name.', 16, 1)
    		GOTO QuitWithRollback
    		END
    	ELSE
    		EXECUTE msdb.dbo.sp_delete_job @job_name = N'ResetWek'
    		SELECT @JobID = NULL
    	END
    
    BEGIN
    
    	EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'ResetWek',  @[Somente membros podem ver os links. ]_login_name = N'sa', @description = N'No description available.', @category_name = N'[uncategorized (Local)]', @enabled = 0, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 0, @delete_level= 0
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    
    	EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, @step_name = N'ResetColumn', @command = N'UPDATE Character SET ResetWek = 0', @database_name = N'MuOnline', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 0, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    	EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1
    
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    
    	EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'ResetWek', @enabled = 1, @freq_type = 8, @active_start_date = 20170329, @active_start_time = 0, @freq_interval = 1, @freq_subday_type = 1, @freq_subday_interval = 0, @freq_relative_interval = 0, @freq_recurrence_factor = 1, @active_end_date = 99991231, @active_end_time = 235959
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    
    	EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)'
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    
    END
    COMMIT TRANSACTION
    GOTO	EndSave
    QuitWithRollback:
    	IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
    EndSave:
    JobName: ResetMon
    Código:
    BEGIN TRANSACTION
    	DECLARE @JobID BINARY(16)
    	DECLARE @ReturnCode INT
    	SELECT @ReturnCode = 0
    
    	IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = N'[uncategorized (Local)]') < 1
    		EXECUTE msdb.dbo.sp_add_category @name = N'[uncategorized (Local)]'
    
    	SELECT @JobID = job_id FROM msdb.dbo.sysjobs WHERE (name = N'ResetMon')
    	
    	IF (@JobID IS NOT NULL)
    	BEGIN
    
    	IF (EXISTS (SELECT * FROM msdb.dbo.sysjobservers WHERE (job_id = @JobID) AND (server_id <> 0)))
    	BEGIN
    
    		RAISERROR (N'Unable to import job ''ResetMon'' since there is already a multi-server job with this name.', 16, 1)
    		GOTO QuitWithRollback
    		END
    	ELSE
    		EXECUTE msdb.dbo.sp_delete_job @job_name = N'ResetMon'
    		SELECT @JobID = NULL
    	END
    
    BEGIN
    
    	EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'ResetMon',  @[Somente membros podem ver os links. ]_login_name = N'sa', @description = N'No description available.', @category_name = N'[uncategorized (Local)]', @enabled = 0, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 0, @delete_level= 0
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    
    	EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, @step_name = N'ResetColumn', @command = N'UPDATE Character SET ResetMon = 0', @database_name = N'MuOnline', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 0, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    	EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1
    
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    
    	EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'ResetMon', @enabled = 1, @freq_type = 16, @active_start_date = 20170329, @active_start_time = 0, @freq_interval = 1, @freq_subday_type = 1, @freq_subday_interval = 0, @freq_relative_interval = 0, @freq_recurrence_factor = 1, @active_end_date = 99991231, @active_end_time = 235959
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    
    	EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)'
    	IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
    
    END
    COMMIT TRANSACTION
    GOTO	EndSave
    QuitWithRollback:
    	IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
    EndSave:
    As tabelas aqui usadas foram baseadas nas citadas no tópico, se for diferente das daqui citadas, não irá funcionar, segui a estrutura dos nomes, de acordo com as do contido no Código Fonte da X-Team.

    Obs: Gostaria de pedir que alguém testar, para eu criar um tópico com o conteúdo.
    Last edited by s00x; 29/03/2017 at 11:02 AM.
    É melhor estar enganado, do que ser enganado.

  4. #4
    Developer C++ louis's Avatar



    Data de Ingresso
    Apr 2016
    Posts
    1,681
    Thanks Thanks Given 
    39
    Thanks Thanks Received 
    812
    Thanked in
    67 Posts
    Mencionado
    499 Post(s)
    País
    Brazil
    No caso do muemu existe a procedure para adicionar os resets, vocês podem modificar ela e será bem mais simples fazer isso, no caso não precisa de trigger ou job
    Meu canal no YouTube com vídeos sobre os sistemas que desenvolvo:
    [Somente membros podem ver os links. ]

  5. #5
    Developer C++ s00x's Avatar

    Data de Ingresso
    Jan 2015
    Posts
    373
    Thanks Thanks Given 
    75
    Thanks Thanks Received 
    146
    Thanked in
    24 Posts
    Mencionado
    63 Post(s)
    MEU HUMOR
    Cheerful
    País
    United States
    Citação Originally Posted by louis Ver Post
    No caso do muemu existe a procedure para adicionar os resets, vocês podem modificar ela e será bem mais simples fazer isso, no caso não precisa de trigger ou job
    Funciona inclusive no site?

    PS: Não lembro dessa procedure mencionada não, ao menos não na Season 4.

    @EDIT

    Fui dar uma analisada nas procedures, e realmente encontrei a WZ_GetResetInfo.
    Mais enfim, esse foi meu método, quem quiser utilizar bem, mais tem a opção da WZ_GetResetInfo.
    Last edited by s00x; 30/03/2017 at 11:44 AM.
    É melhor estar enganado, do que ser enganado.

  6. #6
    Developer C++ louis's Avatar



    Data de Ingresso
    Apr 2016
    Posts
    1,681
    Thanks Thanks Given 
    39
    Thanks Thanks Received 
    812
    Thanked in
    67 Posts
    Mencionado
    499 Post(s)
    País
    Brazil
    Citação Originally Posted by s00x Ver Post
    Funciona inclusive no site?

    PS: Não lembro dessa procedure mencionada não, ao menos não na Season 4.

    @EDIT

    Fui dar uma analisada nas procedures, e realmente encontrei a WZ_GetResetInfo.
    Mais enfim, esse foi meu método, quem quiser utilizar bem, mais tem a opção da WZ_GetResetInfo.
    Sim sim sua função funcionar perfeitamente s00x, só estou repassando outro método, que é na procedure WZ_SetResetInfo e não na WZ_GetResetInfo
    Meu canal no YouTube com vídeos sobre os sistemas que desenvolvo:
    [Somente membros podem ver os links. ]

  7. #7
    Developer C++ s00x's Avatar

    Data de Ingresso
    Jan 2015
    Posts
    373
    Thanks Thanks Given 
    75
    Thanks Thanks Received 
    146
    Thanked in
    24 Posts
    Mencionado
    63 Post(s)
    MEU HUMOR
    Cheerful
    País
    United States
    Citação Originally Posted by louis Ver Post
    Sim sim sua função funcionar perfeitamente s00x, só estou repassando outro método, que é na procedure WZ_SetResetInfo e não na WZ_GetResetInfo
    Mais essa procedure só incrementa os Resets na ResetCount, de qualquer forma teria que utilizar o IF da Trigger, obvio que poderia ser feito na próprio WZ_SetResetInfo ou do mesmo modo na WZ_GetResetInfo.
    É melhor estar enganado, do que ser enganado.

  8. #8
    Developer C++ louis's Avatar



    Data de Ingresso
    Apr 2016
    Posts
    1,681
    Thanks Thanks Given 
    39
    Thanks Thanks Received 
    812
    Thanked in
    67 Posts
    Mencionado
    499 Post(s)
    País
    Brazil
    Citação Originally Posted by s00x Ver Post
    Mais essa procedure só incrementa os Resets na ResetCount, de qualquer forma teria que utilizar o IF da Trigger, obvio que poderia ser feito na próprio WZ_SetResetInfo ou do mesmo modo na WZ_GetResetInfo.
    ALTER Procedure [dbo].[WZ_SetResetInfo]
    @Account varchar(10),
    @Name varchar(10),
    @Reset int,
    @ResetDay int,
    @ResetWek int,
    @ResetMon int
    AS
    BEGIN

    SET NOCOUNT ON
    SET XACT_ABORT ON

    SET @Reset = 1

    UPDATE Character SET ResetCount=ResetCount+@Reset, reset_diario = reset_diario +@Reset, reset_semanal = reset_semanal +@Reset, reset_mensal = reset_mensal+@Reset, exp_war = exp_war +30
    WHERE AccountID=@Account AND Name=@Name

    UPDATE CashShopData SET WCoinP = WCoinP + 10, GoblinPoint = GoblinPoint+30 WHERE AccountID=@Account

    SET NOCOUNT OFF
    SET XACT_ABORT OFF

    END

    O meu está assim
    Meu canal no YouTube com vídeos sobre os sistemas que desenvolvo:
    [Somente membros podem ver os links. ]

  9. #9
    Developer C++ s00x's Avatar

    Data de Ingresso
    Jan 2015
    Posts
    373
    Thanks Thanks Given 
    75
    Thanks Thanks Received 
    146
    Thanked in
    24 Posts
    Mencionado
    63 Post(s)
    MEU HUMOR
    Cheerful
    País
    United States
    Citação Originally Posted by louis Ver Post
    O meu está assim
    Mais porque você já a modificou, estava olhando as DBs agora atarde, e por padrão elas apenas inclui na ResetCount.
    É melhor estar enganado, do que ser enganado.

  10. #10
    Developer C++ jhonhy™'s Avatar


    Data de Ingresso
    Jan 2015
    Posts
    577
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    172
    Thanked in
    20 Posts
    Mencionado
    28 Post(s)
    MEU HUMOR
    Chatty
    País
    Brazil
    Mexa direto na procedure dos resets, dia, semana e mês.

    MuOnline ~> Programmability ~> Stored Procedures ~> WZ_GetResetInfo e WZ_SetResetInfo, mude as colunas para qual você utiliza... simples...

    The best teachers are those who show you where to look, but don't tell you what to see.

    Your envy is my success.

    Hugs;

    []'s


Page 1 of 2 12 ÚltimoÚltimo

Tags para este Tópico

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • You may not post Resposta(s)
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •  
Sobre nós
Somos uma comunidade em atividade a 8 anos que aborda assuntos relacionados a games em geral, principalmente games MMORPG. e que busca sempre ajudar os membros através de conteúdos, tutoriais e suporte...
Nossos anunciantes
Hinetworks
VelozHost
InovHost
Rede Sociais