Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: Procedimiento de los reset  (Visto 1518 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline cienfuegos Posteado: May 13, 2020, 09:52:26 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 117
  • az
Buen dia amigos. Alguno sabe cual es el procedimiento al que llama el comando /reset ?

Utilizo files louis s6 upd 13 y quiero modificar el borrado de stats. Creeria que se hace desde un store procedure/ procedimiento almacenado pero no encuentro cual

Gracias:


Offline EmmaDCG #1 Posteado: May 13, 2020, 01:05:48 PM

  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 745
  • Gracias recibida: 13114
  • ve
el procedimiento creo que se llama SetResetInfo


Offline cienfuegos #2 Posteado: May 13, 2020, 05:05:21 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 117
  • az
Lo encontre, pero no veo que haga el borrado de stats de la base ni asigne puntos :/


Offline EmmaDCG #3 Posteado: May 13, 2020, 05:08:16 PM

  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 745
  • Gracias recibida: 13114
  • ve
Lo encontre, pero no veo que haga el borrado de stats de la base ni asigne puntos :/


mm eso lo hace es el dataserver, y ya manda la consulta directa al SQL, pero que quieres hacer o intenta hacer?


Offline cienfuegos #4 Posteado: May 13, 2020, 05:26:56 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 117
  • az
Lo encontre, pero no veo que haga el borrado de stats de la base ni asigne puntos :/


mm eso lo hace es el dataserver, y ya manda la consulta directa al SQL, pero que quieres hacer o intenta hacer?

Quiero eliminar el borrado de stats, y cambiarlo para que descuente solo un % de los agregados.

Ej: Tengo 10.000 de fuerza y luego del reset me quedan 9800... lo quiero setear en un 1,5%


Offline EmmaDCG #5 Posteado: May 13, 2020, 06:33:45 PM

  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 745
  • Gracias recibida: 13114
  • ve
Lo encontre, pero no veo que haga el borrado de stats de la base ni asigne puntos :/


mm eso lo hace es el dataserver, y ya manda la consulta directa al SQL, pero que quieres hacer o intenta hacer?

Quiero eliminar el borrado de stats, y cambiarlo para que descuente solo un % de los agregados.

Ej: Tengo 10.000 de fuerza y luego del reset me quedan 9800... lo quiero setear en un 1,5%

si sabes manejar las consulta en el SQL, lo puedes hacer desde el SetRasetInfo, en la parte de abajo del UPDATE puede colocar otra consulta para actualizar los stast con una pequeña formula, y también colocando una condicional para cando el personaje es DL (por obvia razones), aca te dejo un ejemplo, ya el resto cuesta por tu parte

en SetResetInfo busca esta linea
Code: [Select]
UPDATE Character SET ResetCount=@Reset WHERE AccountID=@Account AND Name=@Name

luego agregas algo asi, si quieres puede usar la que aca te muestro, pero solo va aplicar para los stast que sale en la consulta

Code: [Select]
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
      Dexterity = Dexterity - ((Dexterity*15) / 1000),
      Vitality = Vitality - ((Vitality*15) / 1000),
      Energy = Energy - ((Energy*15) / 1000)
  Where AccountID=@Account AND Name=@Name

ejecutando la consulta de manera manual funciona, tendrías que hacer tus test y adaptarla a lo que tu necesitas, te recuerdo que te haría falta poner una condicional para cuando el personaje es DL y ejecute otra consulta para hacer lo mismo con el Command (Leadership)



Offline cienfuegos #6 Posteado: May 13, 2020, 07:33:06 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 117
  • az
Lo encontre, pero no veo que haga el borrado de stats de la base ni asigne puntos :/


mm eso lo hace es el dataserver, y ya manda la consulta directa al SQL, pero que quieres hacer o intenta hacer?

Quiero eliminar el borrado de stats, y cambiarlo para que descuente solo un % de los agregados.

Ej: Tengo 10.000 de fuerza y luego del reset me quedan 9800... lo quiero setear en un 1,5%

si sabes manejar las consulta en el SQL, lo puedes hacer desde el SetRasetInfo, en la parte de abajo del UPDATE puede colocar otra consulta para actualizar los stast con una pequeña formula, y también colocando una condicional para cando el personaje es DL (por obvia razones), aca te dejo un ejemplo, ya el resto cuesta por tu parte

en SetResetInfo busca esta linea
Code: [Select]
UPDATE Character SET ResetCount=@Reset WHERE AccountID=@Account AND Name=@Name

luego agregas algo asi, si quieres puede usar la que aca te muestro, pero solo va aplicar para los stast que sale en la consulta

Code: [Select]
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
      Dexterity = Dexterity - ((Dexterity*15) / 1000),
      Vitality = Vitality - ((Vitality*15) / 1000),
      Energy = Energy - ((Energy*15) / 1000)
  Where AccountID=@Account AND Name=@Name

ejecutando la consulta de manera manual funciona, tendrías que hacer tus test y adaptarla a lo que tu necesitas, te recuerdo que te haría falta poner una condicional para cuando el personaje es DL y ejecute otra consulta para hacer lo mismo con el Command (Leadership)



Lo tengo clarisimo amigo, mil gracias por la ayuda. Entiendo que haciendo esto, voy a darle 0 CERO puntos por cada reset y ya.

Lo veo realizable, me llevo bien con el SQL. Si logro hacerlo andar comento el post, seguro a mas de uno le sirva en un futuro.


Offline cienfuegos #7 Posteado: May 13, 2020, 08:44:27 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 117
  • az
Lo encontre, pero no veo que haga el borrado de stats de la base ni asigne puntos :/


mm eso lo hace es el dataserver, y ya manda la consulta directa al SQL, pero que quieres hacer o intenta hacer?



Code: [Select]
SELECT Class INTO clase FROM MuOnline.dbo.Character WHERE AccountID=@Account AND Name=@Name

IF @clase != 66
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
  Dexterity = Dexterity - ((Dexterity*15) / 1000),
  Vitality = Vitality - ((Vitality*15) / 1000),
  Energy = Energy - ((Energy*15) / 1000)
  Where AccountID=@Account AND Name=@Name
ELSE IF @clase = 66
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
  Dexterity = Dexterity - ((Dexterity*15) / 1000),
  Vitality = Vitality - ((Vitality*15) / 1000),
  Energy = Energy - ((Energy*15) / 1000),
  Leadership = Leadership - ((Leadership*15) / 1000)
  Where AccountID=@Account AND Name=@Name

En teoria deberia funcionar, pero no jaja. No se porque.

Mi command.txt tiene lo siguiente:

;==================================================
; Reset Command Settings
;==================================================            
CommandResetType = 1
CommandResetAutoEnable_AL0 = 1
CommandResetAutoEnable_AL1 = 1
CommandResetAutoEnable_AL2 = 1
CommandResetAutoEnable_AL3 = 1
CommandResetCheckItem_AL0 = 0
CommandResetCheckItem_AL1 = 0
CommandResetCheckItem_AL2 = 0
CommandResetCheckItem_AL3 = 0
CommandResetMove_AL0 = 1
CommandResetMove_AL1 = 1
CommandResetMove_AL2 = 1
CommandResetMove_AL3 = 1
CommandResetQuest_AL0 = 0
CommandResetQuest_AL1 = 0
CommandResetQuest_AL2 = 0
CommandResetQuest_AL3 = 0
CommandResetSkill_AL0 = 0
CommandResetSkill_AL1 = 0
CommandResetSkill_AL2 = 0
CommandResetSkill_AL3 = 0
CommandResetLevel_AL0 = 400
CommandResetLevel_AL1 = 400
CommandResetLevel_AL2 = 400
CommandResetLevel_AL3 = 400
CommandResetMoney_AL0 = 20000000
CommandResetMoney_AL1 = 20000000
CommandResetMoney_AL2 = 20000000
CommandResetMoney_AL3 = 20000000
CommandResetCount_AL0 = 1
CommandResetCount_AL1 = 1
CommandResetCount_AL2 = 1
CommandResetCount_AL3 = 1   
CommandResetLimit_AL0 = 10000
CommandResetLimit_AL1 = 10000
CommandResetLimit_AL2 = 10000
CommandResetLimit_AL3 = 10000
CommandResetLimitDay_AL0 = 10000
CommandResetLimitDay_AL1 = 10000
CommandResetLimitDay_AL2 = 10000
CommandResetLimitDay_AL3 = 10000
CommandResetLimitWek_AL0 = 10000
CommandResetLimitWek_AL1 = 10000
CommandResetLimitWek_AL2 = 10000
CommandResetLimitWek_AL3 = 10000
CommandResetLimitMon_AL0 = 10000
CommandResetLimitMon_AL1 = 10000
CommandResetLimitMon_AL2 = 10000
CommandResetLimitMon_AL3 = 10000
CommandResetStartLevel_AL0 = 1
CommandResetStartLevel_AL1 = 1
CommandResetStartLevel_AL2 = 1
CommandResetStartLevel_AL3 = 1
CommandResetPoint_AL0 = 0
CommandResetPoint_AL1 = 0
CommandResetPoint_AL2 = 0
CommandResetPoint_AL3 = 0
CommandResetPointRateDW = 100
CommandResetPointRateDK = 100
CommandResetPointRateFE = 100
CommandResetPointRateMG = 100
CommandResetPointRateDL = 125
CommandResetPointRateSU = 100
CommandResetPointRateRF = 100

Gracias:


Offline EmmaDCG #8 Posteado: May 13, 2020, 08:55:05 PM | Modificado: May 13, 2020, 08:57:07 PM by EmmaDCG

  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 745
  • Gracias recibida: 13114
  • ve
Lo encontre, pero no veo que haga el borrado de stats de la base ni asigne puntos :/


mm eso lo hace es el dataserver, y ya manda la consulta directa al SQL, pero que quieres hacer o intenta hacer?



Code: [Select]
SELECT Class INTO clase FROM MuOnline.dbo.Character WHERE AccountID=@Account AND Name=@Name

IF @clase != 66
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
  Dexterity = Dexterity - ((Dexterity*15) / 1000),
  Vitality = Vitality - ((Vitality*15) / 1000),
  Energy = Energy - ((Energy*15) / 1000)
  Where AccountID=@Account AND Name=@Name
ELSE IF @clase = 66
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
  Dexterity = Dexterity - ((Dexterity*15) / 1000),
  Vitality = Vitality - ((Vitality*15) / 1000),
  Energy = Energy - ((Energy*15) / 1000),
  Leadership = Leadership - ((Leadership*15) / 1000)
  Where AccountID=@Account AND Name=@Name

En teoria deberia funcionar, pero no jaja. No se porque.

Mi command.txt tiene lo siguiente:

;==================================================
; Reset Command Settings
;==================================================            
CommandResetType = 1
CommandResetAutoEnable_AL0 = 1
CommandResetAutoEnable_AL1 = 1
CommandResetAutoEnable_AL2 = 1
CommandResetAutoEnable_AL3 = 1
CommandResetCheckItem_AL0 = 0
CommandResetCheckItem_AL1 = 0
CommandResetCheckItem_AL2 = 0
CommandResetCheckItem_AL3 = 0
CommandResetMove_AL0 = 1
CommandResetMove_AL1 = 1
CommandResetMove_AL2 = 1
CommandResetMove_AL3 = 1
CommandResetQuest_AL0 = 0
CommandResetQuest_AL1 = 0
CommandResetQuest_AL2 = 0
CommandResetQuest_AL3 = 0
CommandResetSkill_AL0 = 0
CommandResetSkill_AL1 = 0
CommandResetSkill_AL2 = 0
CommandResetSkill_AL3 = 0
CommandResetLevel_AL0 = 400
CommandResetLevel_AL1 = 400
CommandResetLevel_AL2 = 400
CommandResetLevel_AL3 = 400
CommandResetMoney_AL0 = 20000000
CommandResetMoney_AL1 = 20000000
CommandResetMoney_AL2 = 20000000
CommandResetMoney_AL3 = 20000000
CommandResetCount_AL0 = 1
CommandResetCount_AL1 = 1
CommandResetCount_AL2 = 1
CommandResetCount_AL3 = 1   
CommandResetLimit_AL0 = 10000
CommandResetLimit_AL1 = 10000
CommandResetLimit_AL2 = 10000
CommandResetLimit_AL3 = 10000
CommandResetLimitDay_AL0 = 10000
CommandResetLimitDay_AL1 = 10000
CommandResetLimitDay_AL2 = 10000
CommandResetLimitDay_AL3 = 10000
CommandResetLimitWek_AL0 = 10000
CommandResetLimitWek_AL1 = 10000
CommandResetLimitWek_AL2 = 10000
CommandResetLimitWek_AL3 = 10000
CommandResetLimitMon_AL0 = 10000
CommandResetLimitMon_AL1 = 10000
CommandResetLimitMon_AL2 = 10000
CommandResetLimitMon_AL3 = 10000
CommandResetStartLevel_AL0 = 1
CommandResetStartLevel_AL1 = 1
CommandResetStartLevel_AL2 = 1
CommandResetStartLevel_AL3 = 1
CommandResetPoint_AL0 = 0
CommandResetPoint_AL1 = 0
CommandResetPoint_AL2 = 0
CommandResetPoint_AL3 = 0
CommandResetPointRateDW = 100
CommandResetPointRateDK = 100
CommandResetPointRateFE = 100
CommandResetPointRateMG = 100
CommandResetPointRateDL = 125
CommandResetPointRateSU = 100
CommandResetPointRateRF = 100

al realizar esta modificacion deberas desactivar el ResetStats de los files, eso lo haces poniendo en 0 el CommandResetType,
ya que si lo tienes activo, el GS sigue mandando la consulta hacia el stast, si te sirve me avisa =D


P.D: no olvides la clase Master del DL


Offline cienfuegos #9 Posteado: May 13, 2020, 09:31:54 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 117
  • az
Citar
al realizar esta modificacion deberas desactivar el ResetStats de los files, eso lo haces poniendo en 0 el CommandResetType,
ya que si lo tienes activo, el GS sigue mandando la consulta hacia el stast, si te sirve me avisa =D


P.D: no olvides la clase Master del DL

Bueno, no funciona, al parecer es mas complejo.

El SQL actualiza bien los campos, les descuenta 1,5% pero no lo refleja en el cliente, es decir: si tenia 1000 de vida, en el SQL veo 985 pero en el cliente sigue 1000.

Al desconectarse, pisa ese 1000 del cliente nuevamente en el SQL.

Nose que mas tocar jaja


Offline EmmaDCG #10 Posteado: May 13, 2020, 09:37:16 PM

  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 745
  • Gracias recibida: 13114
  • ve
Citar
al realizar esta modificacion deberas desactivar el ResetStats de los files, eso lo haces poniendo en 0 el CommandResetType,
ya que si lo tienes activo, el GS sigue mandando la consulta hacia el stast, si te sirve me avisa =D


P.D: no olvides la clase Master del DL

Bueno, no funciona, al parecer es mas complejo.

El SQL actualiza bien los campos, les descuenta 1,5% pero no lo refleja en el cliente, es decir: si tenia 1000 de vida, en el SQL veo 985 pero en el cliente sigue 1000.

Al desconectarse, pisa ese 1000 del cliente nuevamente en el SQL.

Nose que mas tocar jaja

muestrame todo el procedimiento


Offline cienfuegos #11 Posteado: May 13, 2020, 09:39:25 PM | Modificado: May 13, 2020, 09:42:00 PM by cienfuegos

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 117
  • az
....................


Offline cienfuegos #12 Posteado: May 13, 2020, 09:41:34 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 117
  • az
Citar
al realizar esta modificacion deberas desactivar el ResetStats de los files, eso lo haces poniendo en 0 el CommandResetType,
ya que si lo tienes activo, el GS sigue mandando la consulta hacia el stast, si te sirve me avisa =D


P.D: no olvides la clase Master del DL

Bueno, no funciona, al parecer es mas complejo.

El SQL actualiza bien los campos, les descuenta 1,5% pero no lo refleja en el cliente, es decir: si tenia 1000 de vida, en el SQL veo 985 pero en el cliente sigue 1000.

Al desconectarse, pisa ese 1000 del cliente nuevamente en el SQL.

Nose que mas tocar jaja

muestrame todo el procedimiento






Code: [Select]
USE [MuOnline]
GO
/****** Object:  StoredProcedure [dbo].[WZ_SetResetInfo]    Script Date: 05/13/2020 21:11:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[WZ_SetResetInfo]
@Account varchar(10),
@Name varchar(10),
@Reset int,
@ResetDay int,
@ResetWek int,
@ResetMon int,
@clase int
AS
BEGIN

SET NOCOUNT ON
SET XACT_ABORT ON

UPDATE Character SET ResetCount=@Reset WHERE AccountID=@Account AND Name=@Name
UPDATE CashShopData SET GoblinPoint=GoblinPoint+20 WHERE AccountID=@Account

SELECT Class INTO clase FROM MuOnline.dbo.Character WHERE AccountID=@Account AND Name=@Name

IF @clase = 66
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
  Dexterity = Dexterity - ((Dexterity*15) / 1000),
  Vitality = Vitality - ((Vitality*15) / 1000),
  Energy = Energy - ((Energy*15) / 1000),
  Leadership = Leadership - ((Leadership*15) / 1000)
  Where AccountID=@Account AND Name=@Name
ELSE IF @clase <> 66
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
  Dexterity = Dexterity - ((Dexterity*15) / 1000),
  Vitality = Vitality - ((Vitality*15) / 1000),
  Energy = Energy - ((Energy*15) / 1000)
  Where AccountID=@Account AND Name=@Name


SET NOCOUNT OFF
SET XACT_ABORT OFF

END


Offline EmmaDCG #13 Posteado: May 13, 2020, 09:45:11 PM

  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 745
  • Gracias recibida: 13114
  • ve
Citar
al realizar esta modificacion deberas desactivar el ResetStats de los files, eso lo haces poniendo en 0 el CommandResetType,
ya que si lo tienes activo, el GS sigue mandando la consulta hacia el stast, si te sirve me avisa =D


P.D: no olvides la clase Master del DL

Bueno, no funciona, al parecer es mas complejo.

El SQL actualiza bien los campos, les descuenta 1,5% pero no lo refleja en el cliente, es decir: si tenia 1000 de vida, en el SQL veo 985 pero en el cliente sigue 1000.

Al desconectarse, pisa ese 1000 del cliente nuevamente en el SQL.

Nose que mas tocar jaja

muestrame todo el procedimiento






Code: [Select]
USE [MuOnline]
GO
/****** Object:  StoredProcedure [dbo].[WZ_SetResetInfo]    Script Date: 05/13/2020 21:11:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[WZ_SetResetInfo]
@Account varchar(10),
@Name varchar(10),
@Reset int,
@ResetDay int,
@ResetWek int,
@ResetMon int,
@clase int
AS
BEGIN

SET NOCOUNT ON
SET XACT_ABORT ON

UPDATE Character SET ResetCount=@Reset WHERE AccountID=@Account AND Name=@Name
UPDATE CashShopData SET GoblinPoint=GoblinPoint+20 WHERE AccountID=@Account

SELECT Class INTO clase FROM MuOnline.dbo.Character WHERE AccountID=@Account AND Name=@Name

IF @clase = 66
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
  Dexterity = Dexterity - ((Dexterity*15) / 1000),
  Vitality = Vitality - ((Vitality*15) / 1000),
  Energy = Energy - ((Energy*15) / 1000),
  Leadership = Leadership - ((Leadership*15) / 1000)
  Where AccountID=@Account AND Name=@Name
ELSE IF @clase <> 66
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
  Dexterity = Dexterity - ((Dexterity*15) / 1000),
  Vitality = Vitality - ((Vitality*15) / 1000),
  Energy = Energy - ((Energy*15) / 1000)
  Where AccountID=@Account AND Name=@Name


SET NOCOUNT OFF
SET XACT_ABORT OFF

END

intenta esto, saca tu segundo UPDATE, y trata que solo se haga en una sola consulta, osea usando el primero UPDATE que hace al character, recuerda que cuando haces el /reset el personaje hace un desconecta de una par de milesegundo, entonces supongo yo que sebes de aprovechar todo eso en el primero UPDATE, nose si me explico


Offline cienfuegos #14 Posteado: May 13, 2020, 09:47:50 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 117
  • az
Citar
al realizar esta modificacion deberas desactivar el ResetStats de los files, eso lo haces poniendo en 0 el CommandResetType,
ya que si lo tienes activo, el GS sigue mandando la consulta hacia el stast, si te sirve me avisa =D


P.D: no olvides la clase Master del DL

Bueno, no funciona, al parecer es mas complejo.

El SQL actualiza bien los campos, les descuenta 1,5% pero no lo refleja en el cliente, es decir: si tenia 1000 de vida, en el SQL veo 985 pero en el cliente sigue 1000.

Al desconectarse, pisa ese 1000 del cliente nuevamente en el SQL.

Nose que mas tocar jaja

muestrame todo el procedimiento






Code: [Select]
USE [MuOnline]
GO
/****** Object:  StoredProcedure [dbo].[WZ_SetResetInfo]    Script Date: 05/13/2020 21:11:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[WZ_SetResetInfo]
@Account varchar(10),
@Name varchar(10),
@Reset int,
@ResetDay int,
@ResetWek int,
@ResetMon int,
@clase int
AS
BEGIN

SET NOCOUNT ON
SET XACT_ABORT ON

UPDATE Character SET ResetCount=@Reset WHERE AccountID=@Account AND Name=@Name
UPDATE CashShopData SET GoblinPoint=GoblinPoint+20 WHERE AccountID=@Account

SELECT Class INTO clase FROM MuOnline.dbo.Character WHERE AccountID=@Account AND Name=@Name

IF @clase = 66
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
  Dexterity = Dexterity - ((Dexterity*15) / 1000),
  Vitality = Vitality - ((Vitality*15) / 1000),
  Energy = Energy - ((Energy*15) / 1000),
  Leadership = Leadership - ((Leadership*15) / 1000)
  Where AccountID=@Account AND Name=@Name
ELSE IF @clase <> 66
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
  Dexterity = Dexterity - ((Dexterity*15) / 1000),
  Vitality = Vitality - ((Vitality*15) / 1000),
  Energy = Energy - ((Energy*15) / 1000)
  Where AccountID=@Account AND Name=@Name


SET NOCOUNT OFF
SET XACT_ABORT OFF

END

intenta esto, saca tu segundo UPDATE, y trata que solo se haga en una sola consulta, osea usando el primero UPDATE que hace al character, recuerda que cuando haces el /reset el personaje hace un desconecta de una par de milesegundo, entonces supongo yo que sebes de aprovechar todo eso en el primero UPDATE, nose si me explico


Buena idea. Voy a hacer un update todo integrado de una sola vez. Ya vengo jeje


Offline EmmaDCG #15 Posteado: May 13, 2020, 09:51:16 PM

  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 745
  • Gracias recibida: 13114
  • ve
Citar
al realizar esta modificacion deberas desactivar el ResetStats de los files, eso lo haces poniendo en 0 el CommandResetType,
ya que si lo tienes activo, el GS sigue mandando la consulta hacia el stast, si te sirve me avisa =D


P.D: no olvides la clase Master del DL

Bueno, no funciona, al parecer es mas complejo.

El SQL actualiza bien los campos, les descuenta 1,5% pero no lo refleja en el cliente, es decir: si tenia 1000 de vida, en el SQL veo 985 pero en el cliente sigue 1000.

Al desconectarse, pisa ese 1000 del cliente nuevamente en el SQL.

Nose que mas tocar jaja

muestrame todo el procedimiento






Code: [Select]
USE [MuOnline]
GO
/****** Object:  StoredProcedure [dbo].[WZ_SetResetInfo]    Script Date: 05/13/2020 21:11:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[WZ_SetResetInfo]
@Account varchar(10),
@Name varchar(10),
@Reset int,
@ResetDay int,
@ResetWek int,
@ResetMon int,
@clase int
AS
BEGIN

SET NOCOUNT ON
SET XACT_ABORT ON

UPDATE Character SET ResetCount=@Reset WHERE AccountID=@Account AND Name=@Name
UPDATE CashShopData SET GoblinPoint=GoblinPoint+20 WHERE AccountID=@Account

SELECT Class INTO clase FROM MuOnline.dbo.Character WHERE AccountID=@Account AND Name=@Name

IF @clase = 66
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
  Dexterity = Dexterity - ((Dexterity*15) / 1000),
  Vitality = Vitality - ((Vitality*15) / 1000),
  Energy = Energy - ((Energy*15) / 1000),
  Leadership = Leadership - ((Leadership*15) / 1000)
  Where AccountID=@Account AND Name=@Name
ELSE IF @clase <> 66
UPDATE Character
  SET Strength = Strength - ((Strength*15) / 1000),
  Dexterity = Dexterity - ((Dexterity*15) / 1000),
  Vitality = Vitality - ((Vitality*15) / 1000),
  Energy = Energy - ((Energy*15) / 1000)
  Where AccountID=@Account AND Name=@Name


SET NOCOUNT OFF
SET XACT_ABORT OFF

END

intenta esto, saca tu segundo UPDATE, y trata que solo se haga en una sola consulta, osea usando el primero UPDATE que hace al character, recuerda que cuando haces el /reset el personaje hace un desconecta de una par de milesegundo, entonces supongo yo que sebes de aprovechar todo eso en el primero UPDATE, nose si me explico


Buena idea. Voy a hacer un update todo integrado de una sola vez. Ya vengo jeje


intenta esto mejor, saca el IF y que se ejecute normal, esto para ver que funcione porque nose noto que hay como un error, cuando termines todo esto, me escribes al facebook para consultarte algo referente a otra cosa con el SQL


Offline cienfuegos #16 Posteado: May 13, 2020, 10:04:29 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 117
  • az
 
Citar

intenta esto mejor, saca el IF y que se ejecute normal, esto para ver que funcione porque nose noto que hay como un error, cuando termines todo esto, me escribes al facebook para consultarte algo referente a otra cosa con el SQL


Directamente le puse fuerza = 1 a ver si lo hacia y no.
Code: [Select]
UPDATE Character SET Strength=1,ResetCount=@Reset WHERE AccountID=@Account AND Name=@Name

Mi teoria es que, el cliente guarda en memoria los stats... y pisa lo que sea que haya en la base cuando desconectas. No importa que hagas, el cliente MANDA lo ultimo que tiene en memoria


Offline cienfuegos #17 Posteado: May 13, 2020, 10:26:24 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 354
  • Gracias recibida: 117
  • az
Ya te envie mensaje al facebook.

Conclusion: No hay caso, solo modificando el Procedimiento SetResetInfo no alcanza. Automanticamente despues de hacer /reset, la tabla en la base de datos se actualiza pero EL CLIENTE NO, luego, al desconectarte, el cliente vuelve a mandar el stat que tenes y PISA TU DATO EN LA BASE.

Ej:
1 - Tengo 100 de fuerza
2 - Hago /reset
3 - El procedimiento pone 98 en la tabla
4 - El Pj aun dice 100 de fuerza en le juego
5 - El Pj se desconecta
6 - El cliente manda el 100 que aun tenia y PISA tu 98 en la base

asi esta pasando ahora jaja


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
1 Replies
2753 Views
Last post April 29, 2022, 02:03:02 AM
by Mayealdhost
21 Replies
18264 Views
Last post January 09, 2025, 12:41:36 AM
by ZabiinoOo
7 Replies
3659 Views
Last post July 24, 2018, 05:42:14 PM
by Cartman
1 Replies
3436 Views
Last post September 30, 2018, 07:32:17 AM
by Marote
0 Replies
880 Views
Last post February 13, 2019, 04:36:29 PM
by Dambis