Все и так меняется)Не первый раз уже выручаешь. Еще раз спасибо.
Чуток переделал код, что бы и русские символы в нижний регистр менялись.
Все и так меняется)Не первый раз уже выручаешь. Еще раз спасибо.
Чуток переделал код, что бы и русские символы в нижний регистр менялись.
#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();
int time = -1;
void CALLBACK Weather(std::string param)
{
char weatherstring[128];
if (param.empty())
return;
sscanf(param.c_str(), "%d", 0xC81320);
SF->Log("{00FF00}ID погоды был изменен на {FFFFFF}%s", param.c_str());
}
void CALLBACK Time(std::string param)
{
if (param.empty())
return;
time = std::stoi(param);
if (time > 23 || time < 0)
{
time = -1;
SF->Log("{FF0000}Значение должно быть не больше 23 и не мешьше 0.");
return;
}
else
{
SF->Log("{00FF00}Время было изменено на {FFFFFF}%d {00FF00}часов.", time);
}
}
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->registerConsoleCommand("setweather", Weather);
SF->getSAMP()->registerChatCommand("setweather", Weather);
SF->registerConsoleCommand("settime", Time);
SF->getSAMP()->registerChatCommand("settime", Time);
init = true;
}
if (time > -1)
SF->getCLEO()->callOpcode("00C0: %d 0", time);
}
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;
}
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1Проблему врод исправил но появилась другая,
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\hash_map(17): error C2338: <hash_map> is deprecated and will be REMOVED. Please use <unordered_map>. You can define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS to acknowledge that you have received this warning.
1>main.cpp(18): warning C4477: "sscanf": в строке форматирования "%d" требуется аргумент типа "int *", но вариативный аргумент "1" имеет тип "int"
Код:#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(); int time = -1; void CALLBACK Weather(std::string param) { char weatherstring[128]; if (param.empty()) return; sscanf(param.c_str(), "%d", 0xC81320); SF->Log("{00FF00}ID погоды был изменен на {FFFFFF}%s", param.c_str()); } void CALLBACK Time(std::string param) { if (param.empty()) return; time = std::stoi(param); if (time > 23 || time < 0) { time = -1; SF->Log("{FF0000}Значение должно быть не больше 23 и не мешьше 0."); return; } else { SF->Log("{00FF00}Время было изменено на {FFFFFF}%d {00FF00}часов.", time); } } 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->registerConsoleCommand("setweather", Weather); SF->getSAMP()->registerChatCommand("setweather", Weather); SF->registerConsoleCommand("settime", Time); SF->getSAMP()->registerChatCommand("settime", Time); init = true; } if (time > -1) SF->getCLEO()->callOpcode("00C0: %d 0", time); } 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; }
не помогло#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
sscanf(param.c_str(), "%d", 0xC81320);
1>main.cpp(18): warning C4477: "sscanf": в строке форматирования "%d" требуется аргумент типа "int *", но вариативный аргумент "1" имеет тип "int"
Так же как и остальные RPC. Для этого тебе этот RPC должен сначала придти.Как отловить исходящий RPC пакет от игрока в raksamp или собейте ? Мне нужно получить RPC_GiveTakeDamage
Он не вызывается у меня.. Возможно потому что этот RPC исходящий от игрока.. Он точно должен вызываться ?Так же как и остальные RPC. Для этого тебе этот RPC должен сначала придти.
По-моему, приходит тогда, когда игрок наносит дамаг локальному игроку.Он не вызывается у меня.. Возможно потому что этот RPC исходящий от игрока.. Он точно должен вызываться ?
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGSне помогло
извращенец.SF->getCLEO()->callOpcode("00C0: %d 0", time);
samp = (int)GetModuleHandleA("samp.dll");
int stSAMP = *(int *)(samp + 0x21A0F8);
int ServerPresets = *(int *)(stSAMP + 0x3C5);
*(unsigned short *)(ServerPresets + 44) = hour;
Скачай последнюю мсвс и в самое началокод не мой, взял для теста с бх, у меня даже стандартный проект сф не копмпилируется...
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
Visual Studio IDE, редактор кода, Team Services и Mobile Center(https://www.visualstudio.com/ru/)Можешь дать ссылку? Не понимаю что такое мсвс и куда его инсталлировать
microsoft visual studioа что именно качать? Чет я туплю сильно, как расшифровывается msvs?