Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: QUEST/Z/PARTY/DUEL DUPE [V35 louis working]  (Visto 18612 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline samsunggon Posteado: July 31, 2022, 01:57:23 AM | Modificado: June 21, 2025, 07:57:26 AM by samsunggon

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 466
  • Gracias recibida: 2301
  • ph
DUEL DUPE OTHER NPC



PARTY DUPE

watch video


anyone can fix? :D


DISCORD: valentino1515


Offline Azzlaer #1 Posteado: July 31, 2022, 02:07:32 AM

  • MAESTRO

  • US. DE HONOR

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 1.431
  • Gracias recibida: 26179
  • cl
NOOOOOOOOOOOOOO porque muestran esto ajajajjaja no ven que me cagan el bug jajaja xd


Offline samsunggon #2 Posteado: July 31, 2022, 02:11:21 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 466
  • Gracias recibida: 2301
  • ph
NOOOOOOOOOOOOOO porque muestran esto ajajajjaja no ven que me cagan el bug jajaja xd

share fix  please


DISCORD: valentino1515


Online Odisk #3 Posteado: July 31, 2022, 02:14:52 AM

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 891
  • Gracias recibida: 13909
  • pr
NOOOOOOOOOOOOOO porque muestran esto ajajajjaja no ven que me cagan el bug jajaja xd

ese es un bug pero faltan como 5 mas esta bien que se haga publico por que si no va a seguir el problema

one day

Gracias:


Offline takumi12 #4 Posteado: July 31, 2022, 08:16:35 AM

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • Php Coder
  • +11 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 1.045
  • Gracias recibida: 44570
  • mx
NOOOOOOOOOOOOOO porque muestran esto ajajajjaja no ven que me cagan el bug jajaja xd

share fix  please

si tienes más videos de este tipo comparte, ayudaré a reparar es importante para mi, gracias, si consigues video de como dupean con store, o duel, estaría muy bien yo ayudaría a resolver estos problemas  dance dance dance


Las offset no se crea, ni se destruye, solo se transforma

Gracias:


Offline PhantomKr #5 Posteado: July 31, 2022, 08:34:17 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 219
  • Gracias recibida: 2222
  • pe
por lo que vi el error es con el mensaje del party, se pone un contador para que se cancele automáticamente se cancelara el dupe?

Discord: JeanMois#3323

Gracias:


Offline kayito #6 Posteado: July 31, 2022, 08:55:27 AM

  • MAESTRO

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 1.077
  • Gracias recibida: 19391
  • ar
Eliminando el rollback del Chaos Mix se ahorran todos los problemas de dupeos a través del Chaos Mix.
El Chaos Mix tiene un rollback exclusivamente por si a alguien se le cierra el juego mientras estaba usando la máquina, entonces antes de cerrar el juego verifica si su transacción con el chaos mix está finalizada y en caso de que no, simplemente le restaura los items hacia el inventario. El problema de esto es que guarda el estado al momento de abrir el chaos mix y todo lo que pase en el medio, si no está bien controlado, se presta a este tipo de cosas. Es por eso que yo opté por directamente eliminar el rollback del chaos mix y ahorrarme mil dolores de cabeza, ya que es muy poco común que a un usuario se le desconecte estando en la máquina chaos.

Si quieren eliminar el rollback del chaos mix hagan esto:

Code: [Select]
bool CObjectManager::CharacterGameClose(int aIndex) // OK
{
if (OBJECT_RANGE(aIndex) == 0)
{
return 0;
}

LPOBJ lpObj = &gObj[aIndex];

if (lpObj->Connected != OBJECT_ONLINE)
{
return 0;
}

if (lpObj->Type != OBJECT_USER || lpObj->MapServerMoveQuit != 0)
{
return 0;
}

if (OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
gObjSummonKill(lpObj->Index);
}

if (lpObj->Interface.use != 0 && (lpObj->Interface.type == INTERFACE_CHAOS_BOX || lpObj->Interface.type == INTERFACE_TRAINER))
{
if (lpObj->IsChaosMixCompleted != 0 || lpObj->IsCastleNPCUpgradeCompleted != 0)
{
gChaosBox.ChaosBoxItemSave(lpObj);
}
//Comment this to fix chaos dupe
//else
//{
// gObjInventoryRollback(aIndex);
//}
}

if (OBJECT_RANGE(lpObj->TargetNumber) != 0)
{
gTrade.ResetTrade(lpObj->TargetNumber);
gTrade.GCTradeResultSend(lpObj->TargetNumber, 0);
gTrade.ResetTrade(aIndex);
}

Y por último paso a explicarles el bug.

-Al tirar party, el gameserver coloca Interface State en 1 y empieza el contador de tiempo del party.
-Al apretar Tab 2 veces, el main envía al gameserver "gNpcTalk.CGNpcTalkCloseRecv" haciendo que cancele el Interface State en 1 y lo ponga en 0
-Al estar el Interface State en 0, nos permite abrir el Chaos Mix, lo cual nuevamente vuelve a poner el Interface State en 1
-Como tiramos party y no recibimos una respuesta, luego de unos segundos automáticamente el party se cancela, por lo que vuelve a colocar el Interface State en 0 y eso genera el bug de tener la máquina de chaos abierta pero que en el gameserver no la tenga en cuenta y nos permita mover, usar baul, etc.
-Una vez que colocamos los items en el baul, si volvemos a la máquina de chaos y cerramos el juego, se ejecutará el rollback debido a que nuestra transacción con la máquina de chaos nunca se completo ya que no realizamos ningún mix, entonces nos restaura los items hasta el punto en donde abrimos la máquina por primera vez pero esos items también quedarán guardados en el baul, lo que genera el dupe.

Esta es mi interpretación del dupeo.

Gracias:


Offline samsunggon #7 Posteado: July 31, 2022, 08:57:11 AM | Modificado: July 31, 2022, 09:06:19 AM by samsunggon

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 466
  • Gracias recibida: 2301
  • ph
NOOOOOOOOOOOOOO porque muestran esto ajajajjaja no ven que me cagan el bug jajaja xd

share fix  please

si tienes más videos de este tipo comparte, ayudaré a reparar es importante para mi, gracias, si consigues video de como dupean con store, o duel, estaría muy bien yo ayudaría a resolver estos problemas  dance dance dance
DUEL dupe same method like that in video
duel Player1
player 1 open chaos machine
player 2 accept duel
then you will move in DUEL ARENA
warp noria

ok i will send you other dupe methods working in louis base up13 / takumi up15


DISCORD: valentino1515


Offline onlinezajzaj #8 Posteado: July 31, 2022, 09:02:08 AM

  • MAESTRO

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 664
  • Gracias recibida: 19725
  • vn
20 usd tabaco


Offline c4nhsatcodong #9 Posteado: July 31, 2022, 11:28:07 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 372
  • Gracias recibida: 2329
  • vn
Bloqueo el comando de movimiento o devuelvo 0 arreglaré eso, o búscame en facebook te enviaré el código

Publicar un anuncio Mu Online gratis - Mu Online Community GRATIS.
Post free Mu Online ads - FREE Mu Online Community
https://www.facebook.com/groups/274190243227367/
https://www.facebook.com/groups/435291436622354/

Gracias:


Offline c4nhsatcodong #10 Posteado: July 31, 2022, 11:51:14 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 372
  • Gracias recibida: 2329
  • vn
Eliminando el rollback del Chaos Mix se ahorran todos los problemas de dupeos a través del Chaos Mix.
El Chaos Mix tiene un rollback exclusivamente por si a alguien se le cierra el juego mientras estaba usando la máquina, entonces antes de cerrar el juego verifica si su transacción con el chaos mix está finalizada y en caso de que no, simplemente le restaura los items hacia el inventario. El problema de esto es que guarda el estado al momento de abrir el chaos mix y todo lo que pase en el medio, si no está bien controlado, se presta a este tipo de cosas. Es por eso que yo opté por directamente eliminar el rollback del chaos mix y ahorrarme mil dolores de cabeza, ya que es muy poco común que a un usuario se le desconecte estando en la máquina chaos.

Si quieren eliminar el rollback del chaos mix hagan esto:

Code: [Select]
bool CObjectManager::CharacterGameClose(int aIndex) // OK
{
if (OBJECT_RANGE(aIndex) == 0)
{
return 0;
}

LPOBJ lpObj = &gObj[aIndex];

if (lpObj->Connected != OBJECT_ONLINE)
{
return 0;
}

if (lpObj->Type != OBJECT_USER || lpObj->MapServerMoveQuit != 0)
{
return 0;
}

if (OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
gObjSummonKill(lpObj->Index);
}

if (lpObj->Interface.use != 0 && (lpObj->Interface.type == INTERFACE_CHAOS_BOX || lpObj->Interface.type == INTERFACE_TRAINER))
{
if (lpObj->IsChaosMixCompleted != 0 || lpObj->IsCastleNPCUpgradeCompleted != 0)
{
gChaosBox.ChaosBoxItemSave(lpObj);
}
//Comment this to fix chaos dupe
//else
//{
// gObjInventoryRollback(aIndex);
//}
}

if (OBJECT_RANGE(lpObj->TargetNumber) != 0)
{
gTrade.ResetTrade(lpObj->TargetNumber);
gTrade.GCTradeResultSend(lpObj->TargetNumber, 0);
gTrade.ResetTrade(aIndex);
}

Y por último paso a explicarles el bug.

-Al tirar party, el gameserver coloca Interface State en 1 y empieza el contador de tiempo del party.
-Al apretar Tab 2 veces, el main envía al gameserver "gNpcTalk.CGNpcTalkCloseRecv" haciendo que cancele el Interface State en 1 y lo ponga en 0
-Al estar el Interface State en 0, nos permite abrir el Chaos Mix, lo cual nuevamente vuelve a poner el Interface State en 1
-Como tiramos party y no recibimos una respuesta, luego de unos segundos automáticamente el party se cancela, por lo que vuelve a colocar el Interface State en 0 y eso genera el bug de tener la máquina de chaos abierta pero que en el gameserver no la tenga en cuenta y nos permita mover, usar baul, etc.
-Una vez que colocamos los items en el baul, si volvemos a la máquina de chaos y cerramos el juego, se ejecutará el rollback debido a que nuestra transacción con la máquina de chaos nunca se completo ya que no realizamos ningún mix, entonces nos restaura los items hasta el punto en donde abrimos la máquina por primera vez pero esos items también quedarán guardados en el baul, lo que genera el dupe.

Esta es mi interpretación del dupeo.

Vi tu código hace mucho tiempo si sueltas //gObjInventoryRollback(aIndex); los jugadores perderán elementos mientras usan ChaosMix. Recomiendo no omitir esa parte.

Publicar un anuncio Mu Online gratis - Mu Online Community GRATIS.
Post free Mu Online ads - FREE Mu Online Community
https://www.facebook.com/groups/274190243227367/
https://www.facebook.com/groups/435291436622354/

Gracias:


Offline MuDragonBall #11 Posteado: July 31, 2022, 12:17:47 PM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 6
  • Gracias recibida: 557
  • vn
for fix DUEL dupe

Gracias:

realman, football, ScottLy, unico, beecubin, sauron215, pirazok, ssmunet, anhnt, Lotto4K4k, Plate98, roshux, saske98, erickmalfoy, 1732313, victorrz17, SonXeeZ, jeffzkie69, bigrealtk92, Hugo, pokimon, ukvayha, zeronycs, Hoangtu34, xYan, hsowaty, b0n3v, Domedica, armamor, zurect, Ryzenn, stonegameplay, zergkeriga, Viper, HaPKoTuK, Alejandroobdy, McDrack, zhangjianle865, hoanmaster, spartacus, pedornela, giahuy, dizzys, elmaspijudo, LTP Team, mediodas20, duongcao, dangnhapnee, alvaronfirehd, joaopaulobiesek, zerosp, S!ngle, Qword, saturno, ratox3, ellite3, Genius05, Miisoia, Sandokan, angel321, YoshHatake, e911217, Van_Bom, rekis, xlichblack, oatpnet, emersonx13, pigo666, matgott, robiikaaa, ProTecno, kanam3, alexfy, Smudevelop, OBBY, Almdar, superrin, hardcoremd, 2str0kE, Lude, Halloween, Jester, tutu100, Evangelio, dasgrid, weakedsick, yolorf, DEATH, PachoRasta, Shaper, usersa, samsung13, ProMD, miracle1, pagoga, tcbaoanh, ruojing, h3yShOk, kaffa25, HazzdeN, BrayanMix2016, Djassar, 183358, webmonkey, zekcrom, mocorongo, concac123, Dieguinho, amitnet1, ohmagic, haintbn, RAGNAR111, azard, thuongdo07, oxey.mu, truongtienhp, victhorinox, donciukas14, joelsobrin95, RifleMaN_, RaduOnica, dreamboy7, judakiss21, makyntosh, gameconcac, nsynecs, nofeara, son1xx2, solar, straiker23, zlethanhlong, hichay, haziel, LABMU, aof10022535, okilove23, nic269, ziza, TheKing027, NoobDK, kendy93, vicente, stopk, zhujianhui, Hiếu Đại Ca, odin, tammadall, JavixFer, vaneavanea31, 161012, xiazaipw, ductruong1, hatchet, CezarMaster, Nexus, gega, muzic25, binho, cri0, zerg24, dlawls662, NghienMU, T-LEGENDARY, animator, Tester1838a, kksky, Nakamura, comelon666, kenh14, Cartman, kimrubi, SPK, muccone, UnCleanOne, kaisudo, djnansr, iamzuika, quyanxu, mugloves99, whisky123, xianwen, zodiacddos, phuongcuongmsqm, weberson, showmax, ArcSyS, Erick05, GX_KYO, GoldSun, dhaomao, Wendigo, dahouzi, pulsefire, ailsoncost, waynemartins, sagamacus, jhonhy, Kosh, Dizzy, Specifier, Odisk, axeman192, andreyzz, manifestacja, RafhaelSouza, stark98, PhantomKr, gang, yNot, darkjano, lstuan, LuciferXT, npt.formu, Genilson23, Peluuca, Realez, rapha_eu, herjuni, jamiones24, Asura, ImportedPotato, SaintZeus, Percy, c4nhsatcodong, samsunggon

Offline kayito #12 Posteado: July 31, 2022, 12:36:05 PM

  • MAESTRO

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 1.077
  • Gracias recibida: 19391
  • ar
Eliminando el rollback del Chaos Mix se ahorran todos los problemas de dupeos a través del Chaos Mix.
El Chaos Mix tiene un rollback exclusivamente por si a alguien se le cierra el juego mientras estaba usando la máquina, entonces antes de cerrar el juego verifica si su transacción con el chaos mix está finalizada y en caso de que no, simplemente le restaura los items hacia el inventario. El problema de esto es que guarda el estado al momento de abrir el chaos mix y todo lo que pase en el medio, si no está bien controlado, se presta a este tipo de cosas. Es por eso que yo opté por directamente eliminar el rollback del chaos mix y ahorrarme mil dolores de cabeza, ya que es muy poco común que a un usuario se le desconecte estando en la máquina chaos.

Si quieren eliminar el rollback del chaos mix hagan esto:

Code: [Select]
bool CObjectManager::CharacterGameClose(int aIndex) // OK
{
if (OBJECT_RANGE(aIndex) == 0)
{
return 0;
}

LPOBJ lpObj = &gObj[aIndex];

if (lpObj->Connected != OBJECT_ONLINE)
{
return 0;
}

if (lpObj->Type != OBJECT_USER || lpObj->MapServerMoveQuit != 0)
{
return 0;
}

if (OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
gObjSummonKill(lpObj->Index);
}

if (lpObj->Interface.use != 0 && (lpObj->Interface.type == INTERFACE_CHAOS_BOX || lpObj->Interface.type == INTERFACE_TRAINER))
{
if (lpObj->IsChaosMixCompleted != 0 || lpObj->IsCastleNPCUpgradeCompleted != 0)
{
gChaosBox.ChaosBoxItemSave(lpObj);
}
//Comment this to fix chaos dupe
//else
//{
// gObjInventoryRollback(aIndex);
//}
}

if (OBJECT_RANGE(lpObj->TargetNumber) != 0)
{
gTrade.ResetTrade(lpObj->TargetNumber);
gTrade.GCTradeResultSend(lpObj->TargetNumber, 0);
gTrade.ResetTrade(aIndex);
}

Y por último paso a explicarles el bug.

-Al tirar party, el gameserver coloca Interface State en 1 y empieza el contador de tiempo del party.
-Al apretar Tab 2 veces, el main envía al gameserver "gNpcTalk.CGNpcTalkCloseRecv" haciendo que cancele el Interface State en 1 y lo ponga en 0
-Al estar el Interface State en 0, nos permite abrir el Chaos Mix, lo cual nuevamente vuelve a poner el Interface State en 1
-Como tiramos party y no recibimos una respuesta, luego de unos segundos automáticamente el party se cancela, por lo que vuelve a colocar el Interface State en 0 y eso genera el bug de tener la máquina de chaos abierta pero que en el gameserver no la tenga en cuenta y nos permita mover, usar baul, etc.
-Una vez que colocamos los items en el baul, si volvemos a la máquina de chaos y cerramos el juego, se ejecutará el rollback debido a que nuestra transacción con la máquina de chaos nunca se completo ya que no realizamos ningún mix, entonces nos restaura los items hasta el punto en donde abrimos la máquina por primera vez pero esos items también quedarán guardados en el baul, lo que genera el dupe.

Esta es mi interpretación del dupeo.

Vi tu código hace mucho tiempo si sueltas //gObjInventoryRollback(aIndex); los jugadores perderán elementos mientras usan ChaosMix. Recomiendo no omitir esa parte.

Mientras usan no. Sólo cuando se les cierra el juego teniendo el chaox mix abierto. Eso no sucede casi nunca

Gracias:


Offline Asura #13 Posteado: July 31, 2022, 12:54:02 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 48
  • Gracias recibida: 5014
  • ve
si coloca una veridicacion en el move, ya no podria usar el comando ni moverse de mapa


Discord: Asura#2013

Offline lunaticodeveloper #14 Posteado: July 31, 2022, 01:04:11 PM

  • MAESTRO

  • US. DE HONOR

  • Anunciante
  • +4 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 1.812
  • Gracias recibida: 27668
  • ar
Lo mismo sucede con el duelo :v

Soporte premium ya sabes contactame!
Experto en MuOnline! Mira mis aportes de primera!


Offline lunaticodeveloper #15 Posteado: July 31, 2022, 01:08:22 PM

  • MAESTRO

  • US. DE HONOR

  • Anunciante
  • +4 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 1.812
  • Gracias recibida: 27668
  • ar
Un amigo me ayudo con el duelo y lo hice de forma mas drastica


Soporte premium ya sabes contactame!
Experto en MuOnline! Mira mis aportes de primera!

Gracias:

Plate98, zeronycs, realman, football, ScottLy, sanlp, unico, sauron215, m1sterio, nhantac, AvaritiA, erickmalfoy, victorrz17, SonXeeZ, bigrealtk92, dasty, pokimon, ukvayha, jeffzkie69, ssmunet, Hoangtu34, mooomiji, b0n3v, Hugo, lstuan, zurect, Ryzenn, stonegameplay, zergkeriga, HaPKoTuK, OBBY, Alejandroobdy, McDrack, zhangjianle865, pedornela, giahuy, dizzys, elmaspijudo, aof10022535, LTP Team, duongcao, alvaronfirehd, joaopaulobiesek, S!ngle, Qword, saturno, vaneavanea31, ratox3, Genius05, funkymmo, Sandokan, angel321, e911217, Van_Bom, stark98, xlichblack, emersonx13, pigo666, robiikaaa, kanam3, Smudevelop, josecola, Almdar, superrin, clockbooster, trade33, pagoga, manowwan1, Lude, Halloween, tutu100, Evangelio, yolorf, DEATH, PachoRasta, Shaper, usersa, samsung13, BPhamvn, tcbaoanh, acelot, BrayanMix2016, Djassar, 183358, zekcrom, mocorongo, Dieguinho, amitnet1, FrancoB, haintbn, thuongdo07, truongtienhp, donciukas14, joelsobrin95, RifleMaN_, RaduOnica, dreamboy7, gameconcac, nofeara, straiker23, hichay, haziel, okilove23, ziza, nic269, TheKing027, NoobDK, armamor, movesty, hardcoremd, JavixFer, boybudz321, xiazaipw, oxey.mu, Nexus, gega, stopk, cri0, zerg24, dlawls662, NghienMU, judakiss21, T-LEGENDARY, animator, Tester1838a, kksky, Nakamura, dasgrid, kimrubi, SPK, miracle1, iamzuika, muccone, UnCleanOne, MuDragonBall, djnansr, sagat202, quyanxu, phuongcuongmsqm, mugloves99, whisky123, odin, zodiacddos, lechianh88, victhorinox, showmax, Sergio Franco, ArcSyS, GX_KYO, weberson, dhaomao, Phoenix666, Wendigo, comelon666, dahouzi, ailsoncost, Orion88, jhonhy, Kosh, Dizzy, knight.php, Erick05, axeman192, manifestacja, andreyzz, RafhaelSouza, PhantomKr, gang, tammadall, LuciferXT, darkjano, npt.formu, damiqw, makyntosh, AizeN_LP, ImportedPotato, Genilson23, Realez, Peluuca, jamiones24, SaintZeus, Specifier, samsunggon, c4nhsatcodong

Offline samsunggon #16 Posteado: July 31, 2022, 01:57:45 PM | Modificado: July 31, 2022, 02:20:50 PM by samsunggon

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 466
  • Gracias recibida: 2301
  • ph
Un amigo me ayudo con el duelo y lo hice de forma mas drastica
 

where to put this?


DISCORD: valentino1515


Offline Erick05 #17 Posteado: July 31, 2022, 04:27:32 PM | Modificado: July 31, 2022, 04:42:29 PM by Erick05

  • ESTAFADOR
  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 55
  • Gracias recibida: 70
  • 00
*FIX DUPE 🙂
*FIX ROLLBACK
PM ME



Gracias:


Offline takumi12 #18 Posteado: July 31, 2022, 07:31:02 PM

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • Php Coder
  • +11 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 1.045
  • Gracias recibida: 44570
  • mx
Eliminando el rollback del Chaos Mix se ahorran todos los problemas de dupeos a través del Chaos Mix.
El Chaos Mix tiene un rollback exclusivamente por si a alguien se le cierra el juego mientras estaba usando la máquina, entonces antes de cerrar el juego verifica si su transacción con el chaos mix está finalizada y en caso de que no, simplemente le restaura los items hacia el inventario. El problema de esto es que guarda el estado al momento de abrir el chaos mix y todo lo que pase en el medio, si no está bien controlado, se presta a este tipo de cosas. Es por eso que yo opté por directamente eliminar el rollback del chaos mix y ahorrarme mil dolores de cabeza, ya que es muy poco común que a un usuario se le desconecte estando en la máquina chaos.

Si quieren eliminar el rollback del chaos mix hagan esto:

Code: [Select]
bool CObjectManager::CharacterGameClose(int aIndex) // OK
{
if (OBJECT_RANGE(aIndex) == 0)
{
return 0;
}

LPOBJ lpObj = &gObj[aIndex];

if (lpObj->Connected != OBJECT_ONLINE)
{
return 0;
}

if (lpObj->Type != OBJECT_USER || lpObj->MapServerMoveQuit != 0)
{
return 0;
}

if (OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
gObjSummonKill(lpObj->Index);
}

if (lpObj->Interface.use != 0 && (lpObj->Interface.type == INTERFACE_CHAOS_BOX || lpObj->Interface.type == INTERFACE_TRAINER))
{
if (lpObj->IsChaosMixCompleted != 0 || lpObj->IsCastleNPCUpgradeCompleted != 0)
{
gChaosBox.ChaosBoxItemSave(lpObj);
}
//Comment this to fix chaos dupe
//else
//{
// gObjInventoryRollback(aIndex);
//}
}

if (OBJECT_RANGE(lpObj->TargetNumber) != 0)
{
gTrade.ResetTrade(lpObj->TargetNumber);
gTrade.GCTradeResultSend(lpObj->TargetNumber, 0);
gTrade.ResetTrade(aIndex);
}

Y por último paso a explicarles el bug.

-Al tirar party, el gameserver coloca Interface State en 1 y empieza el contador de tiempo del party.
-Al apretar Tab 2 veces, el main envía al gameserver "gNpcTalk.CGNpcTalkCloseRecv" haciendo que cancele el Interface State en 1 y lo ponga en 0
-Al estar el Interface State en 0, nos permite abrir el Chaos Mix, lo cual nuevamente vuelve a poner el Interface State en 1
-Como tiramos party y no recibimos una respuesta, luego de unos segundos automáticamente el party se cancela, por lo que vuelve a colocar el Interface State en 0 y eso genera el bug de tener la máquina de chaos abierta pero que en el gameserver no la tenga en cuenta y nos permita mover, usar baul, etc.
-Una vez que colocamos los items en el baul, si volvemos a la máquina de chaos y cerramos el juego, se ejecutará el rollback debido a que nuestra transacción con la máquina de chaos nunca se completo ya que no realizamos ningún mix, entonces nos restaura los items hasta el punto en donde abrimos la máquina por primera vez pero esos items también quedarán guardados en el baul, lo que genera el dupe.

Esta es mi interpretación del dupeo.

finalizar con el rollback es buena opción, y siguiendo la lógica del closenpctalk se debería agregar check para validar tanto el duel request y party interface, ya que party interface por ende volvería en automatico a none dejando esto como una forma de evitar que se resete los valores de validación de INTERFACE Y use

Code: [Select]
void CNpcTalk::CGNpcTalkCloseRecv(int aIndex) // OK
{
LPOBJ lpObj = &gObj[aIndex];

if(gObjIsConnectedGP(aIndex) == 0)
{
return;
}

if(lpObj->Interface.use == 0
|| lpObj->Interface.type == INTERFACE_NONE
|| lpObj->Interface.type == INTERFACE_PARTY
|| lpObj->Interface.type == INTERFACE_CHAOS_BOX
|| lpObj->Interface.DuelUserReserved != -1
|| lpObj->Interface.DuelUserRequested != -1
)
{
return;
}

switch(lpObj->Interface.type)
{
case INTERFACE_TRADE:
gTrade.CGTradeCancelButtonRecv(aIndex);
break;
case INTERFACE_SHOP:
if(((lpObj->Interface.state==1)?(lpObj->Interface.state=0):1)==0){return;}
lpObj->TargetShopNumber = -1;
break;
case INTERFACE_WAREHOUSE:
gWarehouse.CGWarehouseClose(aIndex);
break;
case INTERFACE_TRAINER:
gChaosBox.ChaosBoxInit(lpObj);
gObjInventoryCommit(aIndex);
break;
case INTERFACE_QUEST_WORLD:
lpObj->QuestWorldMonsterClass = -1;
break;
}

lpObj->Interface.use = 0;
lpObj->Interface.type = INTERFACE_NONE;
lpObj->Interface.state = 0;
}

no lo he probado, pero siguiendo la lógica que estoy leyendo esto debería impedir que se resete los valores de Interface mientras se use PARTY_REQUEST y duel, mañana voy a tocar todo este tema de fixes, para ver a que mas se puede hacer...  dance dance dance dance


Las offset no se crea, ni se destruye, solo se transforma

Gracias:


Offline kayito #19 Posteado: July 31, 2022, 07:37:55 PM

  • MAESTRO

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 1.077
  • Gracias recibida: 19391
  • ar
Eliminando el rollback del Chaos Mix se ahorran todos los problemas de dupeos a través del Chaos Mix.
El Chaos Mix tiene un rollback exclusivamente por si a alguien se le cierra el juego mientras estaba usando la máquina, entonces antes de cerrar el juego verifica si su transacción con el chaos mix está finalizada y en caso de que no, simplemente le restaura los items hacia el inventario. El problema de esto es que guarda el estado al momento de abrir el chaos mix y todo lo que pase en el medio, si no está bien controlado, se presta a este tipo de cosas. Es por eso que yo opté por directamente eliminar el rollback del chaos mix y ahorrarme mil dolores de cabeza, ya que es muy poco común que a un usuario se le desconecte estando en la máquina chaos.

Si quieren eliminar el rollback del chaos mix hagan esto:

Code: [Select]
bool CObjectManager::CharacterGameClose(int aIndex) // OK
{
if (OBJECT_RANGE(aIndex) == 0)
{
return 0;
}

LPOBJ lpObj = &gObj[aIndex];

if (lpObj->Connected != OBJECT_ONLINE)
{
return 0;
}

if (lpObj->Type != OBJECT_USER || lpObj->MapServerMoveQuit != 0)
{
return 0;
}

if (OBJECT_RANGE(lpObj->SummonIndex) != 0)
{
gObjSummonKill(lpObj->Index);
}

if (lpObj->Interface.use != 0 && (lpObj->Interface.type == INTERFACE_CHAOS_BOX || lpObj->Interface.type == INTERFACE_TRAINER))
{
if (lpObj->IsChaosMixCompleted != 0 || lpObj->IsCastleNPCUpgradeCompleted != 0)
{
gChaosBox.ChaosBoxItemSave(lpObj);
}
//Comment this to fix chaos dupe
//else
//{
// gObjInventoryRollback(aIndex);
//}
}

if (OBJECT_RANGE(lpObj->TargetNumber) != 0)
{
gTrade.ResetTrade(lpObj->TargetNumber);
gTrade.GCTradeResultSend(lpObj->TargetNumber, 0);
gTrade.ResetTrade(aIndex);
}

Y por último paso a explicarles el bug.

-Al tirar party, el gameserver coloca Interface State en 1 y empieza el contador de tiempo del party.
-Al apretar Tab 2 veces, el main envía al gameserver "gNpcTalk.CGNpcTalkCloseRecv" haciendo que cancele el Interface State en 1 y lo ponga en 0
-Al estar el Interface State en 0, nos permite abrir el Chaos Mix, lo cual nuevamente vuelve a poner el Interface State en 1
-Como tiramos party y no recibimos una respuesta, luego de unos segundos automáticamente el party se cancela, por lo que vuelve a colocar el Interface State en 0 y eso genera el bug de tener la máquina de chaos abierta pero que en el gameserver no la tenga en cuenta y nos permita mover, usar baul, etc.
-Una vez que colocamos los items en el baul, si volvemos a la máquina de chaos y cerramos el juego, se ejecutará el rollback debido a que nuestra transacción con la máquina de chaos nunca se completo ya que no realizamos ningún mix, entonces nos restaura los items hasta el punto en donde abrimos la máquina por primera vez pero esos items también quedarán guardados en el baul, lo que genera el dupe.

Esta es mi interpretación del dupeo.

finalizar con el rollback es buena opción, y siguiendo la lógica del closenpctalk se debería agregar check para validar tanto el duel request y party interface, ya que party interface por ende volvería en automatico a none dejando esto como una forma de evitar que se resete los valores de validación de INTERFACE Y use

Code: [Select]
void CNpcTalk::CGNpcTalkCloseRecv(int aIndex) // OK
{
LPOBJ lpObj = &gObj[aIndex];

if(gObjIsConnectedGP(aIndex) == 0)
{
return;
}

if(lpObj->Interface.use == 0
|| lpObj->Interface.type == INTERFACE_NONE
|| lpObj->Interface.type == INTERFACE_PARTY
|| lpObj->Interface.type == INTERFACE_CHAOS_BOX
|| lpObj->Interface.DuelUserReserved != -1
|| lpObj->Interface.DuelUserRequested != -1
)
{
return;
}

switch(lpObj->Interface.type)
{
case INTERFACE_TRADE:
gTrade.CGTradeCancelButtonRecv(aIndex);
break;
case INTERFACE_SHOP:
if(((lpObj->Interface.state==1)?(lpObj->Interface.state=0):1)==0){return;}
lpObj->TargetShopNumber = -1;
break;
case INTERFACE_WAREHOUSE:
gWarehouse.CGWarehouseClose(aIndex);
break;
case INTERFACE_TRAINER:
gChaosBox.ChaosBoxInit(lpObj);
gObjInventoryCommit(aIndex);
break;
case INTERFACE_QUEST_WORLD:
lpObj->QuestWorldMonsterClass = -1;
break;
}

lpObj->Interface.use = 0;
lpObj->Interface.type = INTERFACE_NONE;
lpObj->Interface.state = 0;
}

no lo he probado, pero siguiendo la lógica que estoy leyendo esto debería impedir que se resete los valores de Interface mientras se use PARTY_REQUEST y duel, mañana voy a tocar todo este tema de fixes, para ver a que mas se puede hacer...  dance dance dance dance

Otra cosa también es eliminar el envío del npctalkclose desde el main al presionar el tab y cerrar el minimapa. Ya que no surte ningún efecto lado servidor abrirlo o cerrarlo, directamente no debería hacer ningún envío.
Lo mismo pasa al presionar la T y cerrar la interface de quest si no me equivoco


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
6 Replies
3924 Views
Last post February 26, 2023, 12:39:05 PM
by 2str0kE
11 Replies
4077 Views
Last post July 01, 2022, 09:50:35 PM
by blind09
3 Replies
1329 Views
Last post May 21, 2024, 12:04:51 AM
by ransack
0 Replies
154 Views
Last post February 04, 2025, 11:41:54 PM
by verasm
6 Replies
825 Views
Last post June 22, 2025, 10:57:02 AM
by NghienMU