Другое SAMPFUNCS | API C++

CleanLegend

Известный
Всефорумный модератор
474
927
Почему нужно передавать в функцию отключения от сервера именно 100?
C++:
SF->getSAMP()->disconnect(100);
Можно передавать 0, 100,500. Сервер будет принимать разные варианты отключения: (500)вышел, (0)вылетел
 

Musaigen

abobusnik
Проверенный
1,581
1,300
Код:
Серьезность    Код    Описание    Проект    Файл    Строка    Состояние подавления
Ошибка (активно)    E0035    директива #error: <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.    SFPlugin    C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.15.26726\include\hash_map    16
Как фиксануть?
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;
}
Так - прочитать ошибку
_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1 перед инклудами в самое начало.
 

ЯedЯuM

Malware Maker
244
304
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как это будет выглядить в SF?
CLEO:
02AB: set_actor $PLAYER_ACTOR immunities BP 1 FP 1 EP 1 CP 1 MP 1
02AB: set_actor $PLAYER_ACTOR immunities BP 0 FP 0 EP 0 CP 0 MP 0
Не уверен на все 100 что правильно написал, но по идее так можна выставлять флаги имунитета как аналог тому клео опкоду.
C++:
actor_info *mq = SF->getGame()->actorInfoGet(ACTOR_SELF, ACTOR_ALIVE);
if (mq != nullptr) selfish->flags |= ACTOR_FLAGS_INVULNERABLE;

How to send a command in game from a std::string, like SF->sendCMD("/mycommand my params")?
C++:
stLocalPlayer *LP = SF->getSAMP()->getPlayers()->pLocalPlayer;
if (LP != nullptr) LP->Say("/cmd");
 

Musaigen

abobusnik
Проверенный
1,581
1,300
Не уверен на все 100 что правильно написал, но по идее так можна выставлять флаги имунитета как аналог тому клео опкоду.
C++:
actor_info *mq = SF->getGame()->actorInfoGet(ACTOR_SELF, ACTOR_ALIVE);
if (mq != nullptr) selfish->flags |= ACTOR_FLAGS_INVULNERABLE;


C++:
stLocalPlayer *LP = SF->getSAMP()->getPlayers()->pLocalPlayer;
if (LP != nullptr) LP->Say("/cmd");
я уже решил.
C++:
SF->getSAMP()->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped->flags = ACTOR_FLAGS_INVULNERABLE;
SF->getSAMP()->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped->flags ^= ACTOR_FLAGS_INVULNERABLE;
 
  • Нравится
Реакции: ЯedЯuM

ЯedЯuM

Malware Maker
244
304
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как установить угол поворота игрока (локального) в SF плагине (или вообще)?
Можна использовать как аналог но у этого метода есть один минус - почему то после разворота тебя возращает обратно но из плюсов - плавный поворот.
C++:
PEDSELF->SetCurrentRotation(180.0);

i am trying to get another players CPed, how do i do it?

CPed * ped = SF-> getSAMP () -> getPlayers () -> pRemotePlayer [playerId] -> pPlayerData-> pSAMP_Actor-> pGTA_Ped;
ID - Is yours samp player id what you needed.
C++:
CPed* ped = GAME->GetPools()->GetPed((DWORD*)SF->getSAMP()->getPlayers()->pRemotePlayer[ID]->pPlayerData->pSAMP_Actor->pGTA_Ped);
 
Последнее редактирование модератором:

Lupus

Новичок
8
0
how can i put a 'wait' like
SF->getCLEO()->callOpcode("0AF9: samp say_msg \"gethit\"");
SF->getCLEO()->callOpcode("0001: wait 400 ms");
SF->getCLEO()->callOpcode("0AF9: samp say_msg \"gethit\"");
 

mrdiimax

Известный
566
79
Как сделать проверку на файл в папке? Например в корне ГТА, если есть файл .. то действие ...
 

ЯedЯuM

Malware Maker
244
304
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
how can i put a 'wait' like
SF->getCLEO()->callOpcode("0AF9: samp say_msg \"gethit\"");
SF->getCLEO()->callOpcode("0001: wait 400 ms");
SF->getCLEO()->callOpcode("0AF9: samp say_msg \"gethit\"");
You can`t do it from SF API CLEO Caller Engine as far as i know but why you so need it if exist so pretty analogue Sleep(ms); Just do not use it in a commands and hooks cuz will be problem (Solution: Creating a new thread for execution).