[Список доступных классов: CSAMP, CRakNet, CRender, CCLEO, CGame. Описание: SF API это удобный инструмент позволяющий использовать возможности плагина SAMPFUNCS на максимум. Предоставлены удобные классы для максимально простого и эффективного написания своих плагинов на языке программирования c++. Более подробная информация вскоре будет выложена в Wiki Установка: Папку SFAPI положить в каталог своего проекта, в настройках выставить тип конфигурации .dll и конечное расширение .sf. Затем, объявить объект класса CSAMPFUNCS и в точке входа в приложение при выполнении операции DLL_PROCESS_ATTACH вызвать функцию obj_api->initPlugin( mainloop, hModule ), где mainloop - это указатель на функцию которая будет выполняться в основном цикле игры, а hModule это дескриптор. Либо извлечь готовый настроенный проект SFPlugin.zip из архива с SF. Список уроков: 1. Основы API 2. Dialog hider 3. Render 4. RakNet Разработчик SF API: urShadow
Эта возможность есть. http://blasthack.net/wiki/tutorials:add Только учти, что основной цикл уроков веду только я, если ты решишь свои уроки писать, то пусть они не пересекаются с моими.
0B6D: render 30@ = create_font "Verdana" height 13 flags 0x9 0B6F: render font 30@ draw_text 2@ pos 23@ 24@ color 0xffff7700 Как это будет выглядеть в API
Дабы вопрос не висел, в вики сегодня будет урок по этому. А я прост кину свой код с которым мне помог urS: http://dumpz.org/1270415/ Рисует квадрат и в левой части квадрата текст
Как использовать это с api? PACKET_BULLET_SYNC = 224 struct stBulletSync ( size =39) BYTE bHitType;+0 short iHitID;+1 float fBullFrom[3];+3 float fBullTo[3];+15 float fBodyOfsset[3];+27 SF->getRakNet()->SendRPC(224, ?, HIGH_PRIORITY, RELIABLE_ORDERED, '\000', false);
Такая тема: fatal error C1083: Cannot open include file: 'd3dx9.h': No such file or directory DirectX SDK стоит!
BitStream bit; bit.Write(<param>); SF->getRakNet()->SendRPC(id RPC,&bit,HIGH_PRIORITY,RELIABLE_ORDERED,0,0);
Почему повторное соединение не работает? SF->getSAMP()->disconnect(0); SF->getSAMP()->getInfo()->RestartGame();
use SF->getSAMP()->disconnect(0); SF->getSAMP()->getInfo()->RestartGame(); + SF->getSAMP()->getInfo()->iGameState = GAMESTATE_WAIT_CONNECT;
[15:36:12] Connecting to **.***.***.***:7777... [15:36:12] Connected. Joining the game... [15:36:12] CONNECTION REJECTED: Unacceptable NickName [15:36:12] Please choose another nick between and 3-20 characters [15:36:12] Please use only a-z, A-Z, 0-9 [15:36:12] Use /quit to exit or press ESC and select Quit Game
Что не так? //NAMETAGS for (int i = 0; i < 1000; i++) { stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[i]; if (SF->getSAMP()->getPlayers()->IsPlayerDefined(i)) { char buffer[24]; sprintf(buffer, "%s", pPlayer->szPlayerName); SF->getSAMP()->getInfo()->pPools->pPool_Text3D->Create3DText(i, buffer,0.00,5000.0,true,i); } }
void _cdecl cmd_show_info_player( char *param ) { int i = atoi( param ); char buf[128]; stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[ i ]; sprintf_s( 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(void) { static bool init = false; if(!init) { if(!SF->getSAMP()->IsInitialized()) return; SF->getSAMP()->registerChatCommand("ubot", cmd_show_info_player); init = true; } } При в ходе крашит игру. Если убрать регистрацию команды то все норм. Где ошибка?
Даже если так сделать: #include <Windows.h> #include <string> #include <assert.h> #include "CSAMPFUNCS.h" CSAMPFUNCS *SF = new CSAMPFUNCS(); void _cdecl cmd_show_info_player( char *param ){}; void CALLBACK mainloop(void) { static bool init = false; if(!init) { if(!SF->getSAMP()->IsInitialized()) return; SF->getSAMP()->registerChatCommand("ubot", 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 ); } return true; Все равно краш. Проблема именно в регистрации команды, если в место нее засунуть вывод сообщения в чат то все пашет.