Другое С/С++ Вопрос - Ответ

Gromov512

Новичок
85
2
VS 2013

Ошибка:
Ошибка 9 error LNK2001: неразрешенный внешний символ "___stdio_common_vsscanf" C:\Users\ПК/Desktop\SFPlugin26\SFPlugin\libcurl.lib(telnet.obj) SFPlugin
 

nikakoy

Новичок
15
5
ошибка при компилировании, компилирую в Code::Blocks

Код:
C:\Users\USER\Desktop\SF\SFPlugin\SFPlugin\main.cpp|6|fatal error: SAMPFUNCS_API.h: No such file or directory|

строка с ошибкой
C++:
#include "SAMPFUNCS_API.h"

C++:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

void CALLBACK cmd_show_info_player( std::string param )
{
    if(param.empty()) return 1;
    int i = std:stoi(param);

    char buf[128];

    stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[ i ];

    if(!pPlayer) return;

    sprintf( buf, "Name: %s | Ping - %d ms | Score - %d | isNPC - %d | AFKState - %d",
            pPlayer->szPlayerName,
            pPlayer->iPing,
            pPlayer->iScore,
            pPlayer->iIsNPC,
            pPlayer->pPlayerData->iAFKState == 2 );

    SF->getSAMP()->getChat()->AddChatMessage( -1, buf );
}

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;
        if (!SF->getSAMP()->IsInitialized())
            return;
        SF->getSAMP()->registerChatCommand( "showinfo", cmd_show_info_player );
        SF->getSAMP()->getChat()->AddChatMessage( D3DCOLOR_XRGB( 0, 0xAA, 0 ), "SAMPFUNCS Plugin loaded." );

        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}
 
Последнее редактирование:

Jack_Savage

Участник
150
17
Как можно инжектнуть samp.dll в уже запущенную игру ?
То есть самп инжектится при старте процесса gta_sa.
А можно как то инжектить его уже после того как игра запустилась и показала меню ?
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
samp.dll должен загрузиться до показа окна
 

w0odcr3st

Новичок
14
1
Как можно выполнить команду или послать сообщение серверу через sampfuncs?
 

Nika23830

Новичок
11
3
1.Ваш вопрос: Как выдать сообщение при загрузке? Которые показываются перед "Connected. Joining the game..."
 

Jack_Savage

Участник
150
17
Как игра лочит мышку ?
PS: Хукал SetCursorPos и все равно не мог двигать мышкой
 

Nika23830

Новичок
11
3
В проекте есть пример вывода сообщения в чат, при входе в игру.
Можете все равно пожалуйста сюда кинуть код для примера, я нуб :ССС
1.Ваш вопрос: Как выдать сообщение при загрузке? Которые показываются перед "Connected. Joining the game..."
 
1,417
1,030
Можете все равно пожалуйста сюда кинуть код для примера, я нуб :ССС
C++:
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;
        if (!SF->getSAMP()->IsInitialized())
            return;
        SF->getSAMP()->getChat()->AddChatMessage( D3DCOLOR_XRGB( 0, 0xAA, 0 ), "SAMPFUNCS Plugin loaded." );

        init = true;
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}
 

iAmerican

Известный
Друг
614
257
Хукаю WndProc ..
C++:
WNDPROC                    hOrigProc = NULL;
hOrigProc = (WNDPROC)SetWindowLong(*(HWND*)0xC97C1C, GWL_WNDPROC, (LONG)(UINT_PTR)WndProc);
C++:
bool __stdcall WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    if (uMsg == WM_KEYDOWN)
    {
        pSAMP->addMessageToChat(-1, "%i", wParam);
        if (wParam == 192) { // 192 - ®
            pSAMP->say("/CMD");
            return false;
        }
    }
    return true;
}
Получается если я жму "~" , открывается чат сампа , мне надо сделать что бы он не открывался , а отправлялась команда.
Когда захожу в самп , я получаю нажатые клавиши , но перестают реагировать клавиши.
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

iAmerican

Известный
Друг
614
257
C++:
CallWindowProc(hOrigProc, hWnd, uMsg, wParam, lParam);

и ваще он вот так выглядит

C++:
LRESULT CALLBACK WindowProc(
  _In_ HWND   hwnd,
  _In_ UINT   uMsg,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);
И так и так пробовал , если сделать так , то клавиши работают , но всё равно чат открывается.
C++:
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    if (uMsg == WM_KEYDOWN) {
        if (wParam == 192) {
     
            pSAMP->say("/CMD");
            return false;
                                         }
    }
    return CallWindowProcA((WNDPROC)hOrigProc, hWnd, uMsg, wParam, lParam);
}
В SF этого хватало
C++:
bool __stdcall wndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    if (uMsg == WM_KEYDOWN)
    {
       
          
                if (wParam == 192) { // 192 - ®
                    SF->getSAMP()->getPlayers()->pLocalPlayer->Say("/CMD");
                    return false;
                
            
        }
    }
    return true;
}