Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: Almacenar PK y Heroes sin limite (no me funciona)  (Visto 1167 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline muarcontes Posteado: May 04, 2019, 02:52:05 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 237
  • Gracias recibida: 4154
  • ar
Buenas a todos compañeros, hoy vengo a pedir ayuda ya que al intentar usar esto para almacenar el pk no me funciono.

http://tuservermu.com.ve/index.php?topic=253.msg973#msg973

Carga todo bien y funciona todo pero no guarda los puntos, el inconveniente esta en que cuando borro pk y el PkCount vuelve a 0 lo hace también en Pktotal, semanal y mensual.

Yo el trigger lo cargo en la base de datos MuOnline, osea no tengo la dbo Rankingpk.

Bueno si alguno tiene una idea de como hacer que los puntos queden desde ya se lo agradezco.


Offline repiolaa #1 Posteado: May 04, 2019, 02:57:23 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 238
  • Gracias recibida: 1735
  • ar
me imagino que te estan faltando las columnas en la sql o bien la tabla tambien.


Offline muarcontes #2 Posteado: May 04, 2019, 03:26:00 AM | Modificado: May 04, 2019, 03:29:15 AM by muarcontes

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 237
  • Gracias recibida: 4154
  • ar
me imagino que te estan faltando las columnas en la sql o bien la tabla tambien.

Esta todo funcionando, ahora si yo utilizo esto
Code: [Select]
UPDATE Character SET PkCount = 3 WHERE Name = 'NombrePj'


los puntos quedan, ahora los puntos sumados dentro del juego esos son los que se borran.
Al usar el comando /pkclear se borran los puntos sumados en la tabla PkCount y en las otras tablas agregadas.


Offline muarcontes #3 Posteado: May 04, 2019, 08:50:22 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 237
  • Gracias recibida: 4154
  • ar

Offline kind #4 Posteado: May 05, 2019, 09:41:43 AM

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Experto
  • Posts: 153
  • Gracias recibida: 1852
  • ar
alguien???

Te comento como funciona... al insertar datos en PkCount (3 o lo que sea), lo mueve a la tabla PkTotal, etc, etc. y luego el PkCount lo deja en 0.
Si tu comando te suma o resta puntos en PkCount esta ahi el error, ya que le estas diciendo que al script que haga eso tambien.
Por otro lado, no deberia porque borrarte todo, asi que esta funcionandote mal.

Podrias informar que files estas usando?

Saludos


Offline muarcontes #5 Posteado: May 05, 2019, 11:58:04 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 237
  • Gracias recibida: 4154
  • ar
alguien???

Te comento como funciona... al insertar datos en PkCount (3 o lo que sea), lo mueve a la tabla PkTotal, etc, etc. y luego el PkCount lo deja en 0.
Si tu comando te suma o resta puntos en PkCount esta ahi el error, ya que le estas diciendo que al script que haga eso tambien.
Por otro lado, no deberia porque borrarte todo, asi que esta funcionandote mal.

Podrias informar que files estas usando?

Saludos

Uso files Kaizen, pero el problema no esta en los files ya que esto me trabajo de la misma forma con todos los files versión baja que use y con sql 2000 y 2008.


Offline kayito #6 Posteado: May 06, 2019, 10:20:46 AM

  • MAESTRO

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 1.035
  • Gracias recibida: 15036
  • ar
Si no entendí mal, tu problema es querer manejar una columna de kills que sea independiente del estado de PK del personaje.
Lo que tendrías que hacer en ese caso es agregarle un if para que cuando PkCount se vuelva 0 (por ejemplo cuando hacés /pkclear) no actualice las demás columnas y mantenga el valor de asesinatos.
Por ejemplo mato a 5 users y tengo las columnas: PkCount, PkTotal, PkSemanal y PkMensual con 5. Escribo /pkclear y PkCount se vuelve a 0 pero las otras columnas siguen con 5. Vuelvo a matar 3 users, la columna PkCount tendría 3 y PkTotal, PkSemanal y PkMensual tendrían 8 y así cada vez que mate usuarios y use el comando /pkclear, no borre las demás columnas.
Espero haber entendido bien lo que quisiste decir y bueno, la solución sería agregar el if al código para que sólo actualice cuando PkCount sea distinto de 0 (PkCount != 0)
En caso de volverse héroe, las columnas mantienen el mismo comportamiento.


Offline kind #7 Posteado: May 06, 2019, 12:10:48 PM

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Experto
  • Posts: 153
  • Gracias recibida: 1852
  • ar
No funcionaria, ya que el trigger lo que hace es funcionar cuando detecta updates en la columna pkcount.
Code: [Select]
CREATE TRIGGER [dbo].[RankingPK] ON [dbo].[Character]
FOR Update
Entendi, el problema es que la mayoria de los pkclear resetean el pkcount, y este sistema no es compatible con ese metodo. Por defecto el script vuelve a dejar el PkCount en 0 una vez se llega al tope de almacenamiento del juego, que seria -3 en heroes o +100 en asesinos.
Podrias probar cambiando esta parte:
Code: [Select]
IF @ranknew = -3
BEGIN
UPDATE character SET PkCount = 0 WHERE Name = @name
END
IF @ranknew = 100
BEGIN
UPDATE character SET PkCount = 0 WHERE Name = @name
END
por esto (como dijo el compañero mas arriba):
Code: [Select]
IF @ranknew != 0
BEGIN
UPDATE character SET PkCount = 0 WHERE Name = @name
END
Pero no creo que funcione bien, en mi caso yo en mis files/web habia desactivado del pkclear la funcion de borrar el pkcount, ya que el estado de pk se altera en otra columna. Igualmente con la cantidad de sources que hay hoy en dia, esto quedo obsoleto, tiene mucho mas sentido agregarlo directo en source.


Offline kayito #8 Posteado: May 06, 2019, 01:26:28 PM

  • MAESTRO

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 1.035
  • Gracias recibida: 15036
  • ar
No funcionaria, ya que el trigger lo que hace es funcionar cuando detecta updates en la columna pkcount.
Code: [Select]
CREATE TRIGGER [dbo].[RankingPK] ON [dbo].[Character]
FOR Update
Entendi, el problema es que la mayoria de los pkclear resetean el pkcount, y este sistema no es compatible con ese metodo. Por defecto el script vuelve a dejar el PkCount en 0 una vez se llega al tope de almacenamiento del juego, que seria -3 en heroes o +100 en asesinos.
Podrias probar cambiando esta parte:
Code: [Select]
IF @ranknew = -3
BEGIN
UPDATE character SET PkCount = 0 WHERE Name = @name
END
IF @ranknew = 100
BEGIN
UPDATE character SET PkCount = 0 WHERE Name = @name
END
por esto (como dijo el compañero mas arriba):
Code: [Select]
IF @ranknew != 0
BEGIN
UPDATE character SET PkCount = 0 WHERE Name = @name
END
Pero no creo que funcione bien, en mi caso yo en mis files/web habia desactivado del pkclear la funcion de borrar el pkcount, ya que el estado de pk se altera en otra columna. Igualmente con la cantidad de sources que hay hoy en dia, esto quedo obsoleto, tiene mucho mas sentido agregarlo directo en source.

Me parece que el problema de @muarcontes es que cuando ejecuta el comando pkclear, al volver a 0 la columna PkCount, también se vuelven a 0 las columnas  PkTotal, PkSemanal y PkMensual y por lo que yo entendí es que cuando el user usa pkclear, sólo se ponga en 0 PkCount y que PkTotal, PkSemanal y PkMensual mantengan los valores que tenían.
Por eso yo dije que era necesario hacer un chequeo de que cuando se actualice PkCount, no sea 0 ya que en ese caso no debería modificar PkTotal, PkSemanal, ni PkMensual.

Algo así:

Code: [Select]
SELECT @ranknew = PkCount, @name = Name, @accountid = AccountID FROM INSERTED
SELECT @rankold = PkCount, @name = Name, @accountid = AccountID FROM DELETED
END
IF ((@ranknew !=0)  AND  (@ranknew != @rankold))
BEGIN
SET @rankdif =  @ranknew - @rankold
UPDATE Character SET PkTotal = PkTotal + @rankdif, PkSemanal = PkSemanal + @rankdif, PkMensual = PkMensual + @rankdif WHERE Name = @name
IF @ranknew = -3
BEGIN
UPDATE character SET PkCount = 0 WHERE Name = @name
END
IF @ranknew = 100
BEGIN
UPDATE character SET PkCount = 0 WHERE Name = @name
END
END

Así lo entendí yo.


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
4 Replies
1703 Views
Last post July 16, 2018, 06:27:44 PM
by Cloud
2 Replies
1128 Views
Last post March 08, 2018, 06:46:30 PM
by tigre1123
6 Replies
5697 Views
Last post October 22, 2020, 11:42:38 PM
by tincho088
0 Replies
280 Views
Last post April 08, 2022, 12:25:39 PM
by panicodv
0 Replies
192 Views
Last post April 24, 2023, 10:03:34 PM
by HorusSpl