Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BlackZeroX

#1301
.
Que tienda mi cama y barra mi cuarto están hechos un...

* Gestor decente de plugins, entre una gama de los mismos.
    * Por consiguiente un plugin que emplee la red como una "P2P" es decir mandas n comando y rebota en varios clientes hasta que sedan pero que llegue al final a su destinatario, quisas siga (esto lo lo realizaria con operaciones en bits en un numero N donde X numero represente en numero el cliente final, pero solo con un Bit prendido para indicar que no a llegado a su destino y con un Bit apagado para indicar que ya ha llegado a su destino, algo así como el Bit de signo de los numeros en la PC).
* Que las conexiones no sean tan directas es decir tienes 1000 "clientes" dichos clientes pueden realizar un DDOS al sistema, esto es malo lo bueno es que se pueda emplar un plugins o un sistema interno del cliente que decida si se conecta al servidor directamente o a un cliente al cual se le pueda realizar una conexión ( tipo red neuronal ) esta opción la podría a disposición en un plugin pero que requiera otro plugin como el del sistema P2P que ya mencione.

las demás opciones para mi no tienen caso es decir administrador de servicios, registro de sistema administrador de tareas, etc, yo nunca las uso, en otras palabras para mi estarían mejor en plugins / addons separados, de esta manera crearía un cliente liviano ( tal como mi InfraExplorer hecho en vb6 que pesa solo 50kb's y con UPX 10kb's xP ).

P.D.: Mi administrador remoto trabaja totalmente con Plugins teniendo funciones muy básicas como la conexión inversa o directa administración, envio de archivos, Buscador de archivos y un sniffer entre plugins (hook's internos en el sistema que no involucran al SO, inclusive a los sockets principales.), lo malo que es solo para windows (lo estoy pasando a C para que trabaje en otros S.O.).

Dulces Lunas!¡.
#1302
Me falto aclarar que las opciones que tengo son las que menciono vertex Bounding Sphere y Bounding Box, la del método Ray estoy un poco indeciso.

Gracias vertex.

aunque ya revise todos los códigos de nehe hace tiempo (1 o 2 años leidos y comprendidos completamente), pero no me satisfacen (a lo mejor sea por que soy muy exigente en todo, en este caso que no solo haga un juego y después requiera un código ya creado por mi no pueda o se me complique o tenga que modificar muchas cosas, por ejemplo un prueba de de fisica para un trabajo "X").

Por otro lado me interesa aplicar/aprender/hacer, de nada sirve "hacer por hacer" si no se rescata algo, de hecho tenia pensado usar el motor Havok pero me retracte y decidi crear uno para aplicar y a su vez reafirmar (y posiblemente me sirva para una entrega de proyecto en la universidad donde resido, al igual que apra alguna exposición donde requiera algún ejemplo practico y visual).

P.D.: Havok Game Dynamics SDK es usado en los juegos de alta gama como Halo (1, 2, 3), Fallout 3, Assassin's Creed, BioShock, Call of Duty 4: Modern Warfare, entre otros. esto quiere decir que no es un motor de fisica cualquiera.

Dulces Lunas!¡.
#1303
.
Ahora que leo mejor si es para linux,mac posix, etc...

bueno no importa ya se en que compiladores seguro verda.

Me entere de dicha libreria en este link.
http://vgafib.upc.es/wiki/index.php/Usar_plugins_en_C%2B%2B#Sistema_de_plugins_completo
y aqui me entere que si en efecto no es para windows..
http://en.wikipedia.org/wiki/Dynamic_loading

Aun que son parecidas.

Dulces Lunas!¡.
#1304
.
Veo que el keylogger es para windows,

Mejor instala un Hook al teclado haci te ahorras el alto consumo del procesador ( While ).

Dulces Lunas!¡.
#1305
.
Crees que no busque antes... como crees que supe de ella?, lo único malo es que no decia donde bajarse dicha librería xS lo mas seguro es que no funcione en Window$ si es así seguiré usando las habituales ( LoadLibrary, FreeLibrary, GetProcAdress() y a lo mejor, aun que lo dudo mucho: CallwindowProc() ).

Dulces Lunas!¡.
#1306
Foro Libre / Consejos para deteccion en 3D.
11 Junio 2011, 11:31 AM
.
Estoy realizando un pequeño motor para un juego en C+OpenGL y me veo en la necesidad de crear una técnica viable para detectar las colisiones

Hay alguna manera lógica de detectar colisiones ( con rangos de error para no exigirle al procesador demasiado ) de manera que dichos objetos estén constantemente en movimiento y cambiando de forma, se que lo puedo hacer con la formula para saber la distancia entre dos puntos, pero la verdadera pregunta es como detectar la colisión entre dos masas?.

Mis opciones hasta ahora son:
*Definir el centro de la masa(figura)  (Detección de colisión por círculos) ( me parece viable, aunque definir el centro lo tendria que hacer en tiempo de diseño de las masas, y estos centros tendrían que ser "invisibles" cosa que no me agrada. ).

*Crear una masa "invisible" (Detección de choques por rectángulos) ( Es decir definir tantos rectángulos en lugares X de la masa y definir los centros de estos rectángulos y posteriormente por medio de 3 de sus vértices de un rectángulo (Coordenadas X,Y,Z de los 3 vértices) la una 4 ajena a este rectángulo. ).

Algunas sugerencias o ideas?

P.D.: No meto códigos ya que solo deseo obtener ideas.

Temibles Lunas!¡.
#1307
mira:

Código (Vb) [Seleccionar]


Option Explicit

Private Sub Form_Load()
Dim stRes()     As stProcessInfo
Dim i           As Long
   
   i = (GetProcess("explorer.exe", stRes()) - 1)
   Do Until (i = 0)
       Debug.Print stRes(i - 1).dwPid; stRes(i - 1).szRuta
       i = (i - 1)
   Loop
End Sub



En un modulo:

Código (vb) [Seleccionar]


' ////////////////////////////////////////////////////////////////
' // Autor: BlackZeroX ( Ortega Avila Miguel Angel )            //
' //                                                            //
' // Web: http://InfrAngeluX.Sytes.Net/                         //
' //                                                            //
' // |-> Pueden Distribuir Este Código siempre y cuando         //
' // no se eliminen los créditos originales de este código      //
' // No importando que sea modificado/editado o engrandecido    //
' // o achicado, si es en base a este código                    //
' ////////////////////////////////////////////////////////////////

Option Explicit

Private Const PROCESS_QUERY_INFORMATION As Long = (&H400)
Private Const PROCESS_VM_READ           As Long = (&H10)
Private Const MAX_PATH                  As Long = 260

Private Type PROCESSENTRY32
   dwSize              As Long
   cntUsage            As Long
   th32ProcessID       As Long
   th32DefaultHeapID   As Long
   th32ModuleID        As Long
   cntThreads          As Long
   th32ParentProcessID As Long
   pcPriClassBase      As Long
   dwFlags             As Long
   szExeFile           As String * MAX_PATH
End Type
Public Type stProcessInfo
   szRuta              As String
   dwPid               As Long
End Type
Enum GetFileStr
    Extensión = 1
    FileName = 2
    Ruta = 4
End Enum

Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
Private Declare Function GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFilename As String, ByVal nSize As Long) As Long

Public Function GetProcess(ByVal sProcName As String, ByRef stRetOut() As stProcessInfo) As Long
'   //  La funcion Retorna la cantidad de procesos encontrados.
Dim hCTS                As Long
Dim PE32                As PROCESSENTRY32
Dim lhFind              As Long
Dim li                  As Long
Dim sTmp                As String * MAX_PATH
Dim lProc               As Long

   hCTS = CreateToolhelp32Snapshot(&HF, 0&)
   PE32.dwSize = LenB(PE32)
   sProcName = LCase$(sProcName)
   Mid$(PE32.szExeFile, 1, MAX_PATH) = String(MAX_PATH, Chr(0))
   lhFind = Process32First(hCTS, PE32)
   While (lhFind > 0)
       lProc = (InStr(1, PE32.szExeFile, Chr(0), vbBinaryCompare) - 1)
       If (lProc = Len(sProcName)) Then
           If (LCase$(Mid$(PE32.szExeFile, 1, lProc)) = sProcName) Then
               lProc = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, PE32.th32ProcessID)
               ReDim Preserve stRetOut(0 To li)
               If Not (lProc = 0) Then
                   stRetOut(li).szRuta = GetPatchInfo(Mid$(sTmp, 1, GetModuleFileNameExA(lProc, 0, sTmp, MAX_PATH)), Ruta)
                   CloseHandle lProc
               End If
               stRetOut(li).dwPid = PE32.th32ProcessID
               li = (li + 1)
           End If
       End If
       Mid$(PE32.szExeFile, 1, MAX_PATH) = String(MAX_PATH, Chr(0))
       lhFind = Process32Next(hCTS, PE32)
   Wend
   CloseHandle hCTS
   If (li > 0) Then
       GetProcess = (li + 1)
   Else
       GetProcess = 0
   End If
End Function

' ////////////////////////////////////////////////////////////////
' // http://infrangelux.hostei.com/index.php?option=com_content&view=article&id=17:artgetpatchinfo&catid=2:catprocmanager&Itemid=8
' ////////////////////////////////////////////////////////////////
Public Function GetPatchInfo(ByVal StrRutaFull As String, Optional ByVal Options As GetFileStr = FileName) As String
Dim lng_ptr(1)              As Long
Dim lng_aux                 As Long
    lng_aux = Len(StrRutaFull)
    lng_ptr(0) = InStrRev(StrRutaFull, "\")
    If lng_ptr(0) > 0 Then
        lng_ptr(1) = InStrRev(StrRutaFull, ".")
        If lng_ptr(1) > 0 And Not lng_ptr(0) < lng_ptr(1) Then
            lng_ptr(1) = lng_aux + 1
        End If
        If (Options And Ruta) = Ruta Then
            GetPatchInfo = Mid$(StrRutaFull, 1, lng_ptr(0)) & GetPatchInfo
        End If
        If (Options And FileName) = FileName Then
            If lng_ptr(1) = lng_aux Then
                lng_aux = lng_aux - lng_ptr(0) - 1
            Else
                lng_aux = lng_ptr(1) - lng_ptr(0) - 1
            End If
            GetPatchInfo = GetPatchInfo & Mid$(StrRutaFull, lng_ptr(0) + 1, lng_aux)
        End If
        If (Options And Extensión) = Extensión Then
            GetPatchInfo = GetPatchInfo & Mid$(StrRutaFull, lng_ptr(1), lng_ptr(1))
        End If
    End If
End Function



Temibles Lunas!¡.
#1308
.
Alguien sabe de donde descargo esta librería con el Header indicado?, ya que mi Compilador no lo trae en su paquete (es el IDE Code::Blocks con el compilador Predeterminado).

dlfcn.h

Dulces Lunas!¡.
#1309
.
Aquí dejo mi función antes de que Cobein la haga x¨P.

Código (Vb) [Seleccionar]


Private Function Bits_d(ByVal lVal As Long, ByVal lD As Integer) As Long
'   //  lVal    Indica el valor al cual se le dezplazaran los Bit's.
'   //  lD      Indica hacia donde se dezplazan los bits, si son menores a 0 a la izquierda de lo contrario si son mayores a 0 a la derecha.
'   //  Bits_d  Retorna el Valor final con los Bits desplazados.
    If (lD > &H0) And (lD < &H20) Then
        Do
            lVal = SwapBitR(lVal)
            lD = (lD - 1)
        Loop Until (lD = &H0)
    ElseIf (lD < &H0) And (lD > (&HFFFFFFE1)) Then
        Do
            lVal = SwapBitL(lVal)
            lD = (lD + 1)
        Loop Until (lD = &H0)
    ElseIf (lD > &H1F) Then
        If ((lVal And &H80000000) = &H80000000) Then
            lVal = &HFFFFFFFF
        Else
            lVal = &H0
        End If
    ElseIf (lD < &HFFFFFFE1) Then
        lVal = &H0
    End If
    Bits_d = lVal
End Function

Public Function SwapBitL(ByVal lVal As Long) As Long
    SwapBitL = (lVal And &H7FFFFFFF)
    If ((SwapBitL And &H40000000) = &H40000000) Then
        SwapBitL = (SwapBitL And &H7FFFFFFF)        'SwapBitL = ((SwapBitL Xor &H40000000) And &H7FFFFFFF)
        SwapBitL = ((SwapBitL + SwapBitL) Or &H80000000)
    Else
        SwapBitL = (SwapBitL + SwapBitL)
    End If
End Function

Public Function SwapBitR(ByVal lVal As Long) As Long
    If Not ((lVal And &HFFFFFFFF) = &HFFFFFFFF) Then
        SwapBitR = (lVal \ &H2)
    Else
        SwapBitR = lVal
    End If
End Function




Código (vb) [Seleccionar]


Private Function ShiftL(ByVal bVal As Byte, ByVal lNumOfBits As Long) As Byte
    ShiftL = (bVal * (2 ^ lNumOfBits)) And &HFF ' //  El copymemory se puede sustituir por una mascara...
End Function



Temibles Lunas!¡.
#1310
.
Alternativa a htons@Ws2_32 (API)

http://foro.elhacker.net/programacion_visual_basic/vbsnippet_htons_replacement-t297824.0.html
PAra quienes no lo entiendan o lo vean demasiado Revuelto el codigo original esta en esta web:
http://www.xbeat.net/vbspeed/c_SwapEndian.htm

' by Mike D Sutton, Mike.Sutton@btclick.com, 20040914

Código (Vb) [Seleccionar]


Public Function SwapEndian08(ByVal dw As Long) As Long
' by Mike D Sutton, Mike.Sutton@btclick.com, 20040914
  SwapEndian08 = _
      (((dw And &HFF000000) \ &H1000000) And &HFF&) Or _
      ((dw And &HFF0000) \ &H100&) Or _
      ((dw And &HFF00&) * &H100&) Or _
      ((dw And &H7F&) * &H1000000)
  If (dw And &H80&) Then SwapEndian08 = SwapEndian08 Or &H80000000
End Function



Código (Vb) [Seleccionar]


Public Function htons(ByVal lPort As Long) As Integer
    htons = ((((lPort And &HFF000000) \ &H1000000) And &HFF&) Or ((lPort And &HFF0000) \ &H100&) Or ((lPort And &HFF00&) * &H100&) Or ((lPort And &H7F&) * &H1000000) Or (IIf((lPort And &H80&), &H80000000, &H0)) And &HFFFF0000) \ &H10000
End Function



Dulces Lunas!¡.