alguna idea sobre esta modificación con reflexil?

Iniciado por gonzalitosk8, 8 Marzo 2016, 21:03 PM

0 Miembros y 1 Visitante están viendo este tema.

gonzalitosk8

Hola gente del foro, buenas tardes! estoy haciendo algunas modificaciones.
Tengo un terreno que como máximo se amplia hasta 1600 metros.
En una dll, encontré algo que podría ser su cuenta que da como máximo ese resultado.

esta es su solucion:

public void ComputeTileCountValues()
        {
            if (this.EnableComputeTileCountValues)
            {
                decimal num = this.TerrainSizeXInput.Value;
                decimal num2 = this.TerrainSizeYInput.Value;
                decimal num3 = this.TileSizeXInput.Value;
                decimal num4 = this.TileSizeYInput.Value;
                if (((num == 0M) || (num2 == 0M)) || ((num3 == 0M) || (num4 == 0M)))
                {
                    this.TileCountXInput.Value = 0M;
                    this.TileCountYInput.Value = 0M;
                }
                else
                {
                    this.TileCountXInput.Value = (int) Math.Ceiling((decimal) (num / num3));
                    this.TileCountYInput.Value = (int) Math.Ceiling((decimal) (num2 / num4));
                }
                this.OnTerrainValueChanged(new EventArgs());
            }
        }


creo que la parte ( Math.Ceiling((decimal) (num / num3)); ) podria ser el resultado a 1600 como maximo.

si quiero seguir aumentando, este se queda en 1600, y si lo bajo a -0 vuelve 0.

en reflexil, quiero modificar ese valor.

lo que es :  (num / num3) &  (num2 / num4), quedara un resultado para seguir aumentando a mas de 1600.

se me había ocurrido crear un "num5" y que este valor tenga 1. y modificar la cuenta para que quede asi:  (num / num5) &  (num2 / num5).
pero no puedo..


¿alguna idea?
¿adjunto dll?

saludos!

MCKSys Argentina

Hola!

No entiendo lo que quieres lograr...

Quizás podrías explicarte de otra forma acerca de lo que estás intentando hacer?

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


gonzalitosk8

Hola MCKSys Argentina!

la idea es modificar una cuenta para que sobrepase el maximo en metros actual (1600)

tengo un exe de edicion 3d para crear terrenos (montañas arboles etc)
ya modifique su valor máximo de creación de terreno! por o que ahora puedo convertirlo mas grande.

el problema, es que tiene una tabla que mide el terreno para exportar a otro formato 3d.
el valor maximo es 1.6 km (1600 metros).
si escribo un valor (2500) el valor regresa a 1600.
osea que no puedo sobrepasar ese limite! obersve una dll, llegue a su estructura y vi el calculo:

this.TileCountXInput.Value = (int) Math.Ceiling((decimal) (num / num3));
this.TileCountYInput.Value = (int) Math.Ceiling((decimal) (num2 / num4));

por lo que "supuse" que podría ser la ecuación que da 1600 como máximo.

en relfexil, quisiera editar algunos parametros (click derecho -> editar) y modificar el calculo, para poder sobrepasar esos 1600 que me da como máximo. (suponiendo que ese calculo da 1600)

posteriormente, modifique su máximo de terreno, este era su calculo:
float num0 = ((float) maxSizeX) / 1000f;
float num2 = ((float) maxSizeY) / 1000f;

este daba como maximo 1600 metros

lo edite y deje:

float num0 = ((float) maxSizeX) / 10f;
float num2 = ((float) maxSizeY) / 10f;

ahora da 160 km  ::)

bueno sin irme tan lejos, la idea seria modificar el valor de la cuenta (num / num3) y (num2 / num4)

MCKSys Argentina

Hola!

Y cuales con lo valores que manejas/ingresas tu? De donde salen los otros?
Quizas el valor 1600 este en otra parte, como inicializacion o constante: busca el valor y quizas sea mas sencillo el cambio.

Saludos!

PD: Si pones un link para bajar la DLL (si es posible), se la puede ver y asi, ayudarte mejor.
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


gonzalitosk8

Gracias por responder!

te adjunto un rar con las dll que utiliza el exe:

http://www.mediafire.com/download/929z75mb9y7zufe/dll.rar

para llegar a la direccion de la ecuacion es:

dll/palDotNet.PalDialog/TerrainSettingsPannel - Compute tile dialog.

MCKSys Argentina

Fíjate el constructor (.ctor) de esa clase:

Código (vbnet) [Seleccionar]

...
Dim numArray8 As Integer() = New Integer(4  - 1) {}
numArray8(0) = &H400
Me.TerrainSizeXInput.Value = New Decimal(numArray8)
...


Prueba a agrandar ese &H400 (1024 en hexa).

Eso lo saco de acá:

Código (vbnet) [Seleccionar]
Private Sub HandleForceSingleTile()
    If Me.ForceSingleTile Then
        Dim enableComputeTileCountValues As Boolean = Me.EnableComputeTileCountValues
        Me.SetEnableComputeTileCountValues(False)
        Me.TileSizeXInput.Value = Math.Max(Me.TerrainSizeXInput.Value, Me.TileSizeXInput.Minimum)
        Me.TileSizeYInput.Value = Math.Max(Me.TerrainSizeYInput.Value, Me.TileSizeYInput.Minimum)
        Me.SetEnableComputeTileCountValues(enableComputeTileCountValues)
    End If
End Sub


Que sale desde acá:

Código (vbnet) [Seleccionar]
Private Sub TerrainSize_ValueChanged(ByVal sender As Object, ByVal e As EventArgs)
    Me.HandleForceSingleTile
    Me.ComputeTileCountValues
End Sub


Que es el handler cuando cambias el texto.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


gonzalitosk8

#6
ya mismo empiezo a darle mano al codigo!

muchisimas gracias MCKSys Argentina, luego te cuento el resultado!




definitivamente, de ese lado sale!

sigo aumentando los valores y retornan a 1600 :/

MOD EDIT: No hagas doble post. Si tu post es el último, edítalo.