- 692
- 1,549
Да я вообще не тебе, а челу который в среду писалПричем тут ини? json мне нужен для чтения ответа с сервера :/
Да я вообще не тебе, а челу который в среду писалПричем тут ини? json мне нужен для чтения ответа с сервера :/
Уже понял, что для постоянной перезаписи JSON не вкатит. Помимо INI на слуху стояли Toml, Tree. Чем-то из этого пользовался, посоветуешь?Да я вообще не тебе, а челу который в среду писал
У последних версий audio.asi имеет такой Version Info. У предыдущих - не знаю, возможно тоже самое.Подскажите как понять, что установлен SAMP ADDON
1 VERSIONINFO
FILEVERSION 2,1,0,0
PRODUCTVERSION 0,0,0,0
FILEOS 0x0
FILETYPE 0x0
{
BLOCK "StringFileInfo"
{
BLOCK "04090025"
{
VALUE "FileDescription", "SA-MP Addon library"
VALUE "LegalCopyright", "Copyright © Absolute Play www.gta-samp.ru"
VALUE "CompanyName", "Absolute Play www.gta-samp.ru"
VALUE "ProductName", "SA-MP Addon"
VALUE "InternalName", "audio"
VALUE "ProductVersion", "v2.4"
VALUE "Comments", "Modification for GTA San Andreas"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0409 0x0025
}
}
Показать код, например.Крашит скрипт из первого урока по sampfuncs, из-за чего это может быть?
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
#include "imgui.h"
#include <d3d9.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#include <tchar.h>
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
#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();
SAMPFUNCS *SF = new SAMPFUNCS();
void CALLBACK cmd_show_info_player(std::string param)
{
if (param.empty()) return;
int i = std::stoi(param);
char buf[128];
stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[i];
if (!pPlayer) return;
sprintf(buf, "Nickname - %s, Ping - %d, 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()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "SAMPFUNCS Plugin loaded.");
SF->getSAMP()->registerChatCommand("showinfo", cmd_show_info_player);
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;
}
14 строку удали.Как пофиксить?Код:#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1 #include "imgui.h" #include <d3d9.h> #define DIRECTINPUT_VERSION 0x0800 #include <dinput.h> #include <tchar.h> #define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1 #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(); SAMPFUNCS *SF = new SAMPFUNCS(); void CALLBACK cmd_show_info_player(std::string param) { if (param.empty()) return; int i = std::stoi(param); char buf[128]; stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[i]; if (!pPlayer) return; sprintf(buf, "Nickname - %s, Ping - %d, 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()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "SAMPFUNCS Plugin loaded."); SF->getSAMP()->registerChatCommand("showinfo", cmd_show_info_player); 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; }
Imgur(https://imgur.com/a/vOrjMjA)
Я криворукий шушуть, поэтому буду признателен за объяснение этой херни:14 строку удали.
При использовании cmd? Параметр функции у тебя принимает целочисленные значения, а на скриншоте используешь строковые значения < >, оттого и крашит.Я криворукий шушуть, поэтому буду признателен за объяснение этой херни:
Imgur(https://imgur.com/a/nxPA8KT)
Как получить ближайшею машину?
int GetNearestVehicle() {
int nearestVehicle = -1;
double closestDistance = -1;
typedef long double(__thiscall* GetDistance)(stSAMPVehicle*);
for (int vID = 1; vID <= MAX_VEHICLES; vID++) {
static stVehiclePool *allVehicles;
allVehicles = SF->getSAMP()->getVehicles();
if (allVehicles->iIsListed[vID] != 1 || allVehicles->iIsListed2[vID] != 1)
continue;
if (allVehicles->pSAMP_Vehicle[vID] == 0 || allVehicles->pSAMP_Vehicle[vID]->pGTA_Vehicle == 0)
continue;
static double currentDistance;
static GetDistance getDistanceToLocalPlayer = (GetDistance)(SF->getSAMP()->getSAMPAddr() + 0x9A700);
currentDistance = getDistanceToLocalPlayer(allVehicles->pSAMP_Vehicle[vID]);
if (closestDistance == -1) {
closestDistance = currentDistance;
nearestVehicle = vID;
}
else if (currentDistance < closestDistance) {
closestDistance = currentDistance;
nearestVehicle = vID;
}
}
return nearestVehicle;
}