Siga-nos em...
Follow us on Twitter Follow us on Facebook Watch us on YouTube
Registro

Alpha Servers
Resultados 1 a 9 de 9

Tópico: Camera 3D

Visão do Encadeamento

  1. #1

    Avatar de c0zy
    Data de Ingresso
    Mar 2012
    Localização
    Capanema - Paraná
    Idade
    33
    Posts
    96
    Agradecido
    1
    Peso da Avaliação
    13

    Padrão Camera 3D

    Bom, achei a source da camera 3D do sobieh e coloquei no meu main, mas quando fui compiliar, deu o seguinte erro:


    Estou utilizando o Visual Studio 2010.

    Source:

    Camera.cpp
    Código:
    #include "Camera.h"
    
    // InGame - Keyboard procedure
    int iabs ( int var )
    {
    int retval;
    
    __asm
    {
    MOV EAX , var
    CMP EAX , 0
    JGE notsign
    NEG EAX
    notsign:
    MOV retval , EAX
    }
    
    return retval;
    }
    
    float abs ( float var )
    {
    float retval;
    
    __asm
    {
    FLD var
    FABS
    FSTP retval
    }
    
    return retval;
    }
    
    int KeysProc ()
    {
    int F7State = GetAsyncKeyState(VK_F7);
    
    if (F7Pressed == false)
    {
    if ( F7State != 0 && PushF7 == false)
    {
    PushF7 = true;
    F7Pressed = true;
    }
    else if ( F7State != 0 && PushF7 == true)
    {
    PushF7 = false;
    F7Pressed = true;
    }
    }
    
    if ( F7State == 0) F7Pressed = false;
    
    return 1;
    }
    
    // InGame - 3D Camera procedure
    int CameraProc ()
    {
    POINT tp;
    GetCursorPos( &tp );
    int mx = (tp.x * 639) / *Screen_W;
    int my = (tp.y * 479) / *Screen_H;
    
    // ================================================== =================
    // Lewo / Prawo
    // ================================================== =================
    if (PushF7 == true)
    {
    if (mx < 636 && mx > 2)
    {
    if (RotSpeed < 0) RotSpeed = RotSpeed + 0.4f;
    if (RotSpeed > 0) RotSpeed = RotSpeed - 0.4f;
    if (RotSpeed > 0 && RotSpeed < 0.2) RotSpeed = 0;
    if (RotSpeed < 0 && RotSpeed > -0.2) RotSpeed = 0;
    }
    
    if (mx > 636)
    {
    RotSpeed = RotSpeed + 0.4f;
    }
    
    if (mx < 2)
    {
    RotSpeed = RotSpeed - 0.4f;
    }
    
    if (RotSpeed > 5) RotSpeed = 5;
    if (RotSpeed < -5) RotSpeed = -5;
    
    *Camera_RotZ += RotSpeed;
    if (*Camera_RotZ < -405) *Camera_RotZ = -45;
    if (*Camera_RotZ > 315) *Camera_RotZ = -45;
    
    //if (RotSpeed < 0) DrawBox(630,0,10,432,0,100,0,fabs(RotSpeed) * 10);
    //if (RotSpeed > 0) DrawBox(0,0,10,432,0,100,0,fabs(RotSpeed) * 10);
    
    // ================================================== =================
    // Góra / Dó³
    // ================================================== =================
    
    if (my > 470)
    {
    if (*Camera_RotY < 90)
    {
    *Camera_PosZ += 20;
    *Camera_RotY += abs((*Camera_PosZ + 330) / 640);
    if (*Camera_RotY < 60 || *Camera_RotY > 40)
    {
    AddX += 20;
    AddY += 20;
    }
    else
    {
    AddX -= 20;
    AddY -= 20;
    }
    }
    }
    
    
    if (my < 10)
    {
    if (*Camera_RotY > 25)
    {
    *Camera_PosZ -= 20;
    *Camera_RotY -= abs((*Camera_PosZ + 330) / 600);
    if (*Camera_RotY < 60 || *Camera_RotY > 40)
    {
    AddX += 20;
    AddY += 20;
    }
    else
    {
    AddX -= 20;
    AddY -= 20;
    }
    }
    }
    
    
    
    
    if ( GetAsyncKeyState(VK_HOME) != 0 )
    {
    if ( *Camera_Zoom > 0 )
    {
    *Camera_Zoom -= 1;
    if ( AddX > 0 && AddY > 0)
    {
    AddX -= 100;
    AddY -= 100;
    }
    }
    }
    
    if ( GetAsyncKeyState(VK_END) != 0 )
    {
    if ( *Camera_Zoom < 60 )
    {
    *Camera_Zoom += 1;
    AddX += 100;
    AddY += 100;
    }
    }
    
    if ( GetAsyncKeyState(VK_F9) != 0)
    {
    *Camera_RotZ = -45;
    *Camera_RotY = 48.5;
    *Camera_PosZ = 150;
    *Camera_ClipX = 1190;
    *Camera_TLeft = 1500;
    *Camera_TRight = 1500;
    *Camera_BLeft = -1500;
    *Camera_BRight = -1500;
    *Camera_Zoom = 35;
    AddX = 0;
    AddY = 0;
    }
    
    
    *Camera_TLeft = 1500 + AddX;
    *Camera_TRight = 1500 + AddX;
    *Camera_BLeft = -1500 - AddX;
    *Camera_BRight = -1500 - AddX;
    
    *Camera_ClipX = 1190 + (abs(*Camera_PosZ - 150) * 3) + AddX + 800;
    *Camera_GlClip = 3000;
    }
    
    return 1;
    }
    
    DWORD __stdcall MainProc (PVOID pVoid)
    {
    while(1)
    {
    KeysProc();
    CameraProc();
    Sleep( 20 );
    }
    
    return 1;
    }
    
    extern "C" _declspec(dllexport) int Init ()
    {
    DWORD ThreadID;
    HANDLE MyThread = CreateThread( NULL , 0 , (LPTHREAD_START_ROUTINE) MainProc , 0 , 0 , &ThreadID );
    
    if ( MyThread == NULL )
    {
    MessageBox( 0 , "Cannot create Thread!" , "ERROR" , MB_OK + MB_ICONERROR );
    return 0;
    }
    
    return 1;
    }
    
    DWORD __stdcall main( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
    {
    return 1;
    }
    Camera.h
    Código:
    #ifdef MY9988_DLL_EXPORTS
    #define EXPORT __declspec(dllexport)
    char main_hook[30] = {0x44 , 0x47 , 0x45 , 0x20 , 0x73 , 0x6F , 0x62 , 0x69 , 0x65 , 0x68 , 0x20 , 0x28 , 0x73 , 0x6F , 0x62 , 0x69 , 0x65 , 0x68 , 0x40 , 0x67 , 0x6D , 0x61 , 0x69 , 0x6C , 0x2E , 0x63 , 0x6F , 0x6D , 0x29};
    char author[22] = "http://duality.com.pl";
    #else
    #define EXPORT __declspec(dllimport)
    #endif
    
    #include <windows.h>
    #define __fltused 1
    
    #pragma comment( lib , "crtdll.lib" )
    #pragma comment( lib , "libcmt.lib" )
    #pragma comment( lib , "libc.lib" )
    #pragma comment(lib, "libcp.lib")
    
    #pragma comment( linker , "/entry:main" )
    
    HANDLE MeHandle;
    
    float AddY , AddX;
    bool F7Pressed , PushF7 , F10Pressed , PushF10;
    float RotSpeed = 0;
    
    //0.97d Camera Offsets
    float *Camera_Zoom = (float*) 0x51F7F1;
    float *Camera_PosZ = (float*) 0x54D970;
    float *Camera_RotZ = (float*) 0x88A35E0;
    float *Camera_RotY = (float*) 0x54DD4C;
    
    float *Camera_TLeft = (float*) 0x4F4468;
    float *Camera_TRight = (float*) 0x4F447E;
    float *Camera_BLeft = (float*) 0x4F448E;
    float *Camera_BRight = (float*) 0x4F449E;
    float *Camera_ClipX = (float*) 0x54DCB0;
    float *Camera_GlClip = (float*) 0x51F862;
    
    DWORD *Screen_W = (DWORD*) 0x55C4EC;
    DWORD *Screen_H = (DWORD*) 0x55C4F0;


    Na source, os offsets são pra 97d.
    ps. meu servidor é 97d (obviamente)
    Última edição por c0zy; 12-07-2012 às 08:01 PM.

 

 

Informações de Tópico

Usuários Navegando neste Tópico

Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)

Tópicos Similares

  1. |Dúvida| Camera 3D
    Por burns no fórum Dúvidas
    Respostas: 2
    Último Post: 19-11-2015, 07:29 PM
  2. |Pedido| Main com camera 3D ou source camera 3D
    Por Ayrton Ricardo no fórum Pedidos
    Respostas: 0
    Último Post: 21-10-2012, 01:15 AM
  3. |Pedido| Camera 3d
    Por todi no fórum Pedidos
    Respostas: 3
    Último Post: 29-09-2012, 09:51 PM
  4. |Resolvido| Criar camera 3d.
    Por nightmbr no fórum Pedidos
    Respostas: 6
    Último Post: 24-05-2010, 03:27 PM

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •