 |
|

30.09.2015, 10:39
|
|
Новичок
Регистрация: 14.09.2015
Сообщений: 13
С нами:
5611644
Репутация:
0
|
|
Сообщение от Woofing Giraffe
Через память.
Я не умею с памятью работать, можно код?
|
|
|

30.09.2015, 12:27
|
|
Постоянный
Регистрация: 20.10.2014
Сообщений: 489
С нами:
6086011
Репутация:
108
|
|
Сообщение от A.Tornerro
можно kak-то изменить угол поворота транспорта?
|
|
|

30.09.2015, 13:06
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,771
С нами:
6935121
Репутация:
233
|
|
Сообщение от A.Tornerro
можно kak-то изменить угол поворота транспорта?
только через матрицу
|
|
|

30.09.2015, 13:16
|
|
Постоянный
Регистрация: 20.10.2014
Сообщений: 489
С нами:
6086011
Репутация:
108
|
|
Сообщение от FYP
только через матрицу
я в курсе, код можно? а то мудрил в итоге бред получился.
2) "vect3_copy" как в sf api юзать?
|
|
|

30.09.2015, 18:55
|
|
Участник форума
Регистрация: 09.03.2015
Сообщений: 218
С нами:
5884065
Репутация:
0
|
|
Как сделать перезаход на сервер при этом поменя имя через команду например "sname [nick]"
|
|
|

30.09.2015, 19:23
|
|
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами:
5744580
Репутация:
28
|
|
Сообщение от Gouvere
Я не умею с памятью работать, можно код?
Код:
Код:
#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS *SF = new SAMPFUNCS();
bool Status;
char newtime[28];
DWORD ThreadID;
HANDLE hThread;
void __stdcall AnotherThread(void)
{
HANDLE ProcessHandle = GetCurrentProcess();
while (true)
{
if (Status)
{
WriteProcessMemory(ProcessHandle, (LPVOID)0xB70153, newtime, 1, 0);
}
}
TerminateThread(hThread, 0);
CloseHandle(hThread);
}
void CALLBACK cmd(std::string param)
{
if (param.empty()) return;
int time;
if (!sscanf(param.c_str(), "%d", &time) || time > 23 || time getSAMP()->getChat()->AddChatMessage(0xB0B0B0, "Используй: /settime [Время (От 0 до 23)].");
sprintf(newtime, "%d", time);
Status = true;
}
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("settime", cmd);
hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&AnotherThread, NULL, 0, &ThreadID);
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;
}
Код конечно та ещё херня, но рабочий.
|
|
|

30.09.2015, 19:26
|
|
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами:
5744580
Репутация:
28
|
|
И опять же вопрос, даже в том коде выше, при выходе из игры через /q тупо крашит игру, если цикл убрать то такого не будет происходить. Что я делаю не так? И как это исправить?
|
|
|

30.09.2015, 20:06
|
|
Новичок
Регистрация: 14.09.2015
Сообщений: 13
С нами:
5611644
Репутация:
0
|
|
Сообщение от Woofing Giraffe
Код:
Код:
#include
#include
#include
#include
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS *SF = new SAMPFUNCS();
bool Status;
char newtime[28];
DWORD ThreadID;
HANDLE hThread;
void __stdcall AnotherThread(void)
{
HANDLE ProcessHandle = GetCurrentProcess();
while (true)
{
if (Status)
{
WriteProcessMemory(ProcessHandle, (LPVOID)0xB70153, newtime, 1, 0);
}
}
TerminateThread(hThread, 0);
CloseHandle(hThread);
}
void CALLBACK cmd(std::string param)
{
if (param.empty()) return;
int time;
if (!sscanf(param.c_str(), "%d", &time) || time > 23 || time getSAMP()->getChat()->AddChatMessage(0xB0B0B0, "Используй: /settime [Время (От 0 до 23)].");
sprintf(newtime, "%d", time);
Status = true;
}
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("settime", cmd);
hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&AnotherThread, NULL, 0, &ThreadID);
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;
}
Код конечно та ещё херня, но рабочий.
Спасибо. Но он как-то неправильно работает. При смене времени вылетают варнинги, нельзя сменить время второй раз, а потом у меня вообще крашнуло.
|
|
|

30.09.2015, 21:23
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Сообщение от Woofing Giraffe
И опять же вопрос, даже в том коде выше, при выходе из игры через /q тупо крашит игру, если цикл убрать то такого не будет происходить. Что я делаю не так? И как это исправить?
Зачем тебе создавать новый поток? Чем тебе не устраивает mainloop?
|
|
|

30.09.2015, 22:03
|
|
Участник форума
Регистрация: 09.03.2015
Сообщений: 218
С нами:
5884065
Репутация:
0
|
|
как сделать проверки?
actor defiend, actor dead и т.д
а если не найдет то прыгаем обратно.
как это сделать?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|