Support ✅Como desactivar el trade? (para evitar clonaciones)

kurinino

Member
Messages
66
Points
168
Hola amigo Alex, ya tengo el servidor online, pero me di cuenta de que se pueden duplicar items dentro del depot a través del uso de trade with ", no daré muchos más detalles para no espacir esa información. Pero conoces alguna manera de quitar el trade with " del juego?. Para así evitar las clonaciones de los items?. Muchas gracias de ante mano amigo como siempre.
 
Hola amigo Alex, ya tengo el servidor online, pero me di cuenta de que se pueden duplicar items dentro del depot a través del uso de trade with ", no daré muchos más detalles para no espacir esa información. Pero conoces alguna manera de quitar el trade with " del juego?. Para así evitar las clonaciones de los items?. Muchas gracias de ante mano amigo como siempre.
Hola,

 
Hola,

Muchas gracias amigo Alex como siempre por tu ayuda :)❤️
 
Solution
Hola Alex, disculpa, para mejorar un poquito ese código, descubri que puedes entrar desde fuera de un depot con el trade puesto, entonces se pueden clonar igual los items, haciendo trade fuera del depot y caminando hacia dentro.

Se me ocurria agregar al script algo como esto, si es que tu posicion cambia mientras haces trade, que se cancele el trade. Pero no me resulta, como podría ser?.

local nextPosition = self:getPosition()
nextPosition:getNextPosition(direction)
if position != nextPosition then
self:sendTextMessage(MESSAGE_INFO_DESCR, "No puedes moverte mientras haces trade.")
return false
end
 
Hola Alex, disculpa, para mejorar un poquito ese código, descubri que puedes entrar desde fuera de un depot con el trade puesto, entonces se pueden clonar igual los items, haciendo trade fuera del depot y caminando hacia dentro.

Se me ocurria agregar al script algo como esto, si es que tu posicion cambia mientras haces trade, que se cancele el trade. Pero no me resulta, como podría ser?.

local nextPosition = self:getPosition()
nextPosition:getNextPosition(direction)
if position != nextPosition then
self:sendTextMessage(MESSAGE_INFO_DESCR, "No puedes moverte mientras haces trade.")
return false
end
Bouh, no lo sé cómo sería esa parte.

En hellgrave quería desactivarlo totalmente en toda la Map. El problema que hay es que hay items que tienen valor y/o superior al máximo del market 9999999........ No sé cuántos 9. Entonces no lo puse y modificar las sources no permite agregar más de esa cantidad.


Y pregunta porque != , Eso nunca lo vi aún , conozco > o < , =< , == etc...
 
Hola Alex, disculpa, para mejorar un poquito ese código, descubri que puedes entrar desde fuera de un depot con el trade puesto, entonces se pueden clonar igual los items, haciendo trade fuera del depot y caminando hacia dentro.

Se me ocurria agregar al script algo como esto, si es que tu posicion cambia mientras haces trade, que se cancele el trade. Pero no me resulta, como podría ser?.

local nextPosition = self:getPosition()
nextPosition:getNextPosition(direction)
if position != nextPosition then
self:sendTextMessage(MESSAGE_INFO_DESCR, "No puedes moverte mientras haces trade.")
return false
end
Puedes probar esto y decirme si funciona la duplicación ?


Si funciona házmelo saber y iré corrigiendo todos los servidores aquí subidos.

Este bug fue creado internacionalmente por la comunidad para destruir ots, pero si es el más grave y hay que corregirlo.
 
Bouh, no lo sé cómo sería esa parte.

En hellgrave quería desactivarlo totalmente en toda la Map. El problema que hay es que hay items que tienen valor y/o superior al máximo del market 9999999........ No sé cuántos 9. Entonces no lo puse y modificar las sources no permite agregar más de esa cantidad.


Y pregunta porque != , Eso nunca lo vi aún , conozco > o < , =< , == etc...
Aaaah entiendo, oye Alex entonces si existe una forma de desactivarlo simplemente para todo el server?, y a mi no me molestaria quitar el trade y utilizar solo market. asi elimino el problema de raiz, me podrías decir como eliminar el trade del juego por favor?. O simplemente usaste el código de las 2 esquinas y marcaste cuadrados gigantes que tomaran todo el mapa por cada piso?.

"Y pregunta porque != , Eso nunca lo vi aún , conozco > o < , =< , == etc...". Y sobre esto, era pseudocódigo, para explicar la lógica de lo que quería lograr wajajajaja.
 
Puedes probar esto y decirme si funciona la duplicación ?


Si funciona házmelo saber y iré corrigiendo todos los servidores aquí subidos.

Este bug fue creado internacionalmente por la comunidad para destruir ots, pero si es el más grave y hay que corregirlo.
Si Alex, el código si funciona, lo probé con todo los pisos del depot de Thais, desactiva el trade y salta el mensaje. Y lo de cancelar el trade en movimiento no funciona, porque te comentaba, es pseucódigo nomas, no se programar en TFS :(.

Y que maldad lo de destruir ots pero bueno, si es que me puedes ayudar diciendome como se desactiva el trade del server yo quedaría feliz :D wajajajaja.
 
Si Alex, el código si funciona, lo probé con todo los pisos del depot de Thais, desactiva el trade y salta el mensaje. Y lo de cancelar el trade en movimiento no funciona, porque te comentaba, es pseucódigo nomas, no se programar en TFS :(.

Y que maldad lo de destruir ots pero bueno, si es que me puedes ayudar diciendome como se desactiva el trade del server yo quedaría feliz :D wajajajaja.
Pero , sin el script que te pase compilando con esa parte en las sources no corrige el problema ?

Pegando esto en game.cpp: ( Reemplazando linea 7499 hasta 7513 diria )
Tienes esto:
Code:
if (!itemList.empty()) {
            if (it.stackable) {
                uint16_t tmpAmount = stashmath;
                for (Item *item : itemList) {
                    uint16_t removeCount = std::min<uint16_t>(tmpAmount, item->getItemCount());
                    tmpAmount -= removeCount;
                    internalRemoveItem(item, removeCount);

                }
            } else {
                for (Item *item : itemList) {
                    internalRemoveItem(item);
                }
            }
        }

Cambiando por esto:

Code:
if (itemList.empty()) {
            return;
        }

        if (it.stackable) {
            uint16_t tmpAmount = amount;
            for (Item* item : itemList) {
                uint16_t removeCount = std::min<uint16_t>(tmpAmount, item->getItemCount());
                tmpAmount -= removeCount;
                internalRemoveItem(item, removeCount);

                if (tmpAmount == 0) {
                    break;
                }
            }
        } else {
            for (Item* item : itemList) {
                internalRemoveItem(item);
            }
        }
 
Last edited:
Pero , sin el script que te pase compilando con esa parte en las sources no corrige el problema ?

Pegando esto en game.cpp: ( Reemplazando linea 7499 hasta 7513 diria )
Tienes esto:
Code:
if (!itemList.empty()) {
            if (it.stackable) {
                uint16_t tmpAmount = stashmath;
                for (Item *item : itemList) {
                    uint16_t removeCount = std::min<uint16_t>(tmpAmount, item->getItemCount());
                    tmpAmount -= removeCount;
                    internalRemoveItem(item, removeCount);

                }
            } else {
                for (Item *item : itemList) {
                    internalRemoveItem(item);
                }
            }
        }

Cambiando por esto:

Code:
if (itemList.empty()) {
            return;
        }

        if (it.stackable) {
            uint16_t tmpAmount = amount;
            for (Item* item : itemList) {
                uint16_t removeCount = std::min<uint16_t>(tmpAmount, item->getItemCount());
                tmpAmount -= removeCount;
                internalRemoveItem(item, removeCount);

                if (tmpAmount == 0) {
                    break;
                }
            }
        } else {
            for (Item* item : itemList) {
                internalRemoveItem(item);
            }
        }
Alex es justo lo que me faltaba, ahora ya no te cuenta el item en el market si es que lo tienes en la mochila, por lo que la gente ya no puede entrar al depot haciendo trade desde fuera, entonces este código más el anterior, solucionarian el problema de la duplicación de items :)
 

Tibia Server Lists

#1 FEATURED US Ultron OT 1,531 / 5,000Online EXPStages PROTO8.6 ENGINEUltron OT RANK PTS5.9 +100% VOTES0 #2 FEATURED US Nefera 144 / 0Online EXPx1 PROTO15.20 ENGINECrystal Server RANK PTS5.1 +100% VOTES0 #3 FEATURED ES Deixis 0 / 0Offline EXPStages PROTO1098 ENGINETFS RANK PTS3.7 +100% VOTES1 #4 FEATURED ES Maeli 5 / 150Online EXPx10 PROTO10.98 ENGINETFS 1.4.2 RANK PTS3.7 +100% VOTES0 #5 MX Marlboro War 33 / 300Online EXP999 PROTO8.6 ENGINETFS 0.3.7 RANK PTS5.5 -33% VOTES0 #6 BR Tibinha YurOts 17 / 150Online EXPStages PROTO7.4 ENGINEYurOTS 1.5 RANK PTS5.2 -14% VOTES0 #7 US Halera 2 / 0Online EXPStages PROTO10.98 ENGINETFS 1.4.2 RANK PTS4.9 -83% VOTES0 #8 BR Exordion Legacy 52 / 2,000Online EXPx2 PROTO7.72 ENGINEExordion RANK PTS4.9 +100% VOTES0 #9 PL Lubelski 8 / 1,000Online EXP200 PROTO7.6 ENGINELubelskiOTS 2.56.0 RANK PTS4.6 -15% VOTES0 #10 ES JustRL FreeTC 1530 36 / 250Online EXPx2 PROTO15.30 ENGINECrystal Server RANK PTS4.3 +100% VOTES0 #11 DE DBU Online 0 / 400Online EXP11 PROTO8.6 ENGINETFS 1.0 RANK PTS4.3 +100% VOTES0 #12 PL ReWar 0 / 2,000Online EXPcustom PROTO8.6 ENGINEOther RANK PTS4.3 0% VOTES0 #13 PL Velesta 0 / 1,000Offline EXP20 PROTO8.0 ENGINETFS 1.4.2 RANK PTS4.3 -99% VOTES0 #14 ES Farlia Global 2026 0 / 333Offline EXPx5 PROTO15.25 ENGINEFarliaServ 1.525 RANK PTS3.9 -22% VOTES0 #15 SE MortalisOT Custom 0 / 500Offline EXP100x -1.2x PROTO10.98 ENGINEMortalisOT V1 RANK PTS3.8 +100% VOTES0 #16 US Rommania 0 / 500Online EXPstages, x10 PROTO7.4 ENGINETFS 0.4 RANK PTS3.6 +100% VOTES0 #17 US BerethaOnline 1 / 2,000Online EXPStages PROTO10.98 ENGINETFS RANK PTS3.5 +100% VOTES0
Top