Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-12-2019
MesiasPeru MesiasPeru is offline
Miembro
 
Registrado: nov 2019
Posts: 15
Poder: 0
MesiasPeru Va por buen camino
Button [help]

hola.
tengo un problemita quiero un boton que ejecute una acción de acuerdo a cierta condición.... ejemplo:

Código:
procedure Taa.btn1Click(Sender: TObject);
begin
if Num = 0 then
begin
pbyte(Resultado)^:=20;
end;

if Num = 1 then
begin
pbyte(Resultado)^:=30;
end;
end;
el detalle al ejecutar y presionar el boton no hace nada... al parecer no reconocer esa condicion de if.
Responder Con Cita
  #2  
Antiguo 15-12-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Por qué dices que no hace nada el if?


Por cierto, por favor, procura poner títulos descriptivos a tus consultas, gracias.
Responder Con Cita
  #3  
Antiguo 15-12-2019
MesiasPeru MesiasPeru is offline
Miembro
 
Registrado: nov 2019
Posts: 15
Poder: 0
MesiasPeru Va por buen camino
Tienes razon, intentare explicar todo desde el inicio ojala puedan ayudarme amigos ya que ustedes son los dioses del delphy

yo uso Delphy para crear un archivo DLL este archivo DLL me permite modificar los valores de algunos codigos dentro de algun juego en especifico.

ejemplo: el codigo 01885514 en el juego equivale a 2 en Byte, 5100 en 4 byte, 25458965415846954789 en 8 byte. pero mi me intresa solo el valor en BYTE (ojo es un ejemplo)

Código:
const
  balas = $01885514; // este valor no siempre es 2 aveces cambia a 5 o 8
Código:
procedure Taa.btn1Click(Sender: TObject);
begin
if balas = 2 then  // aqui pregunto si el valor de las balas es 2 en el caso de que si fuera 2 entonces lo va cambiara a 20
begin
pbyte(balas)^:=20;
end;
end;
ojo es solo un ejemplo, al compilar y ejecutar el DLL en el juego no hace ningun cambio y me e podido dar cuenta que la parte if balas = 2 no lo reconoce.

lo se porque intente sin usar el if de esta forma:
Código:
procedure Taa.btn1Click(Sender: TObject);
begin

pbyte(balas)^:=20;

end;
de esta forma al ejecutarlo en el juego y presionar el boton si cambia el valor de dicho codigo de 2 a 20, siempre y cuento el valor de dicho codigo 01885514 sea de 2 en ese momento.
Responder Con Cita
  #4  
Antiguo 15-12-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pon un punto de ruptura (breakpoint) en el "if" y mira qué valor tiene la variable que comparas.
Responder Con Cita
  #5  
Antiguo 16-12-2019
MesiasPeru MesiasPeru is offline
Miembro
 
Registrado: nov 2019
Posts: 15
Poder: 0
MesiasPeru Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pon un punto de ruptura (breakpoint) en el "if" y mira qué valor tiene la variable que comparas.
como asi ?
Responder Con Cita
  #6  
Antiguo 16-12-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pones el cursor en la linea del "if", y pulsas F5
Ejecutas el programa y se parará en esa línea.
Pones el ratón encima de la variable y verás el valor que tiene.
Responder Con Cita
  #7  
Antiguo 21-12-2019
MesiasPeru MesiasPeru is offline
Miembro
 
Registrado: nov 2019
Posts: 15
Poder: 0
MesiasPeru Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pones el cursor en la linea del "if", y pulsas F5
Ejecutas el programa y se parará en esa línea.
Pones el ratón encima de la variable y verás el valor que tiene.
no nada. por cierto yo uso delphi 7
Responder Con Cita
  #8  
Antiguo 21-12-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
De nada, vale.
Responder Con Cita
  #9  
Antiguo 29-12-2019
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Aquí hay mucha tela que cortar.

Primero, el tema del orden de los octetos (bytes), que puede que tú estés usando little-endian pero el juego use big-endian (por ejemplo, juego en red con clientes x86 pero servidores 68K, PowerPC o SPARK).

Segundo, que el propio juego deshaga los cambios silenciosamente o ignore los cambios que hagas mediante un patrón de "código crítico", "sand-box" u otras técnicas anti-cheating. Un ejemplo muy simple y no infalible pero que haría rascarse la cabeza a más de dos:
Código Delphi [-]
{ Permitamos que haya MODs del juego llamando a una DLL que puede
  definirse por el usuario (y usemos Object Pascal porque somos unos
  diseñadores de juegos guays): }
  IF Assigned (ProcedimientoEnDLL) THEN
  TRY
  { Guardamos el número de balas. }
    Balas := EstadoJugador AND $000000FF;
  { Permitimos que cambien algunos valores. }
    ProcedimientoEnDLL (@EstadoJugador)
  FINALLY
  { Recuperamos el número de balas original, por si nos han intentado hacer la pirula. }
    EstadoJugador := (EstadoJugador AND $FFFFFF00) OR Balas
  { JAQUE MATE, CHITERS. }
  END;
Con el código anterior da igual que cambies el número de balas en el procedimiento DLL, porque siempre recuperará el valor anterior, incluso aunque cambies el valor directamente en memoria RAM. Claro que ahora me puedes venir con que puedes hacer el cambio en "Balas" y blablablabla... pero no vamos a ponernos aquí a discutir técnicas anti-cheating porque no es el sitio adecuado.

Tercero, he visto que no es ninguna de las dos cosas anteriores, sino un fallo muy tonto que no voy a decirte más que nada porque me molesta mucho que la gente haga trampas cuando juega, a videojuegos o a lo que sea.

Un saludo.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 29-12-2019 a las 12:48:52.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
DBGrid con Button gsilvei Varios 8 06-07-2011 19:23:12
button mjjj Varios 5 11-06-2007 20:45:40
BUtton yoko Varios 1 30-06-2006 04:28:05
Button en DBgrid Iskariote0087 Varios 2 15-05-2006 13:06:13
colores a un Button dmagui OOP 3 27-06-2005 19:51:44


La franja horaria es GMT +2. Ahora son las 13:25:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi