[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Форум » Проекты » Ваши проекты » Plugin SDK » Вопросы по Plugin SDK (В этой теме задаются вопросы по плагину от DK22Pac)
Вопросы по Plugin SDK
wmysterio
Администраторы
Скриптер
17.02.18 22:09
Offline
Решил сделать отдельную тему для тех, кто пытается разрабатывать моды, используя Plugin SDK. В общем, сами вопросы задавать здесь. Тема с основной информацией будет здесь.

NarutoUA
Пользователи
17.02.18 22:12
Offline
DK22Pac, благодарю, все успешно скомпилировалось и работает.

Добавлено (17.10.14, 15:41)
---------------------------------------------
Как удалить метку созданную через SetCoordBlip? Мне ведь нужен индекс какойто, чтобы удалить определенную метку? Как этот индекс достать или получить для дальнейших целей?

Отредактировал NarutoUA - Среда, 15.10.14, 01:13

wmysterio
Администраторы
Скриптер
17.02.18 22:13
Offline
DK22Pac, залей пожалуйста последнюю версию плагина сюда в прикрепления:

Хочу попробовать, как говорится, на ощупь.

Так-же есть вопрос по newopcodes-проекту. Ты делал новые опкоды, используя готовое решение в примере с подменой на свои опкоды? Или создавал новое и подключал 2 файла и работал с ними? У меня не комиллирует, ошибки
Код
error C1083: Не удается открыть файл включение: CLEO.h: No such file or directory
IntelliSense: не удается открыть источник файл "CLEO.h"
Прикрепления: 1297202.png(1.8 Kb)

BoPoH
Друзья
17.02.18 22:13
Offline
Цитата wmysterio ()
error C1083: Не удается открыть файл включение: CLEO.h: No such file or directory IntelliSense: не удается открыть источник файл "CLEO.h"
Нужно положить CLEO.h и CLEO.lib в папку проекта.

wmysterio
Администраторы
Скриптер
17.02.18 22:13
Offline
Цитата BoPoH ()
Нужно положить CLEO.h и CLEO.lib в папку проекта.
Я понял, что компилятор мне пытается сказать.

Я добавил существующие элементы в проект, но Visual Studio с меня извращенно посмеялась, отобразив их проекте, но не добавив указанные файлы в директорию. Пришлось копировать их вручную. verysad

Но даже после этого у меня проблемы. Матерится на:
Код
MessageBox(HWND_DESKTOP, "An incorrect version of CLEO was loaded.", "wmysterio.cleo", MB_ICONERROR);
Ошибка
Код
Ошибка 1 error C1853: файл предкомпилированного заголовка "Release\wmysterio.pch" создан в предыдущей версии компилятора или предкомпилированный заголовок C++ используется из C (или наоборот D:\Документи\Programm\wmysterio\wmysterio.c 1 1 wmysterio
Сам код:
Код
#include "stdafx.h"
#include "CLEO.h"

OpcodeResult WINAPI wmysterio_opcode1(CScriptThread* thread);

BOOL InitOpcodes() {
  BOOL result = FALSE;

  //check cleo version
  if (CLEO_GetVersion() < CLEO_VERSION) {  
    
   MessageBox(HWND_DESKTOP, "An incorrect version of CLEO was loaded.", "wmysterio.cleo", MB_ICONERROR); // < здесь меня посылает
   return FALSE;
  }

  //register opcodes
  if (CLEO_RegisterOpcode(0x0B17, &wmysterio_opcode1))  
   result = TRUE;  

  return result;
}

//0B16: 0@ = plus 2@
//0B16: %2d% = plus %1d%
OpcodeResult WINAPI wmysterio_opcode1(CScriptThread* thread) {

  DWORD i = CLEO_GetIntOpcodeParam( thread );
  //CLEO_SkipOpcodeParams(thread, 1);
  CLEO_SetIntOpcodeParam( thread, i + i );

  return OR_CONTINUE;
}
Никак не пойму где эти заголовки находятся(вернее в каких именно) и что там собственно поправить для работы. Во-вторых, компиллируется проект у меня в *.dll а не в *.cleo как в исходниках. Возможно я опять что-то не так делаю о_0

BoPoH
Друзья
17.02.18 22:13
Offline
Попробуй переименовать wmysterio.c в wmysterio.cpp.

anti_cJ
Пользователи
17.02.18 22:13
Offline
Код
1>MSVCRT.lib(MSVCR100.dll) : error LNK2005: "public: __thiscall std::exception::exception(char const * const &)" (??0exception@std@@QAE@ABQBD@Z) уже определен в LIBCMT.lib(stdexcpt.obj)
1>MSVCRT.lib(MSVCR100.dll) : error LNK2005: "public: virtual __thiscall std::exception::~exception(void)" (??1exception@std@@UAE@XZ) уже определен в LIBCMT.lib(stdexcpt.obj)
1>MSVCRT.lib(MSVCR100.dll) : error LNK2005: "public: __thiscall std::exception::exception(class std::exception const &)" (??0exception@std@@QAE@ABV01@@Z) уже определен в LIBCMT.lib(stdexcpt.obj)
1>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _memmove уже определен в LIBCMT.lib(memmove.obj)
1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) уже определен в LIBCMT.lib(typinfo.obj)
1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) уже определен в LIBCMT.lib(typinfo.obj)
1>LINK : warning LNK4098: библиотека по умолчанию "MSVCRT" противоречит использованию других библиотек; используйте параметр /NODEFAULTLIB:library
1>c:\documents and settings\администратор\мои документы\visual studio 2010\Projects\time\Release\time.asi : fatal error LNK1169: обнаружен многократно определенный символ - один или более
что делать?

BoPoH
Друзья
17.02.18 22:13
Offline
Попробуй поменять настройки в свойствах проекта следующим образом:

Прикрепления: 0685285.png(42.4 Kb)

anti_cJ
Пользователи
17.02.18 22:14
Offline
Спасибо, а то я думал что нужно MT

Dizzel
Пользователи
17.02.18 22:14
Offline
Пытаюсь скомпилировать SA::Render у себя на компьютере, скачал DirectX SDK, Plugin SDK с гитхаба, подключил библиотеки, но все равно получаю ошибки:

1>------ Перестроение всех файлов начато: проект: SARender, Конфигурация: Release Win32 ------
1>Файл проекта содержит ToolsVersion="12.0". Возможно, этот набор инструментов неизвестен или отсутствует (в этом случае проблему можно устранить, установив подходящую версию MSBuild), либо для данной сборки определено конкретное значение ToolsVersion в параметрах политики. Проект обрабатывается как имеющий ToolsVersion="4.0". Дополнительные сведения см. по ссылке http://go.microsoft.com/fwlink/?LinkId=291333.
1>  CGTAVTimeCycle.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>  DLLMain.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>  CBuildingDrawable.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>  CDebug.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>  CDrawable.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>  CEffect.cpp
1>  CEffectMgr.cpp
1>  CGame.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>  CGameIdle.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>Source\CGameIdle.cpp(87): error C2039: m_pRpWorld: не является членом "RwCamera"
1>          C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\RenderWare.h(1438): см. объявление "RwCamera"
1>Source\CGameIdle.cpp(154): error C2039: m_pRpWorld: не является членом "RwCamera"
1>          C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\RenderWare.h(1438): см. объявление "RwCamera"
1>Source\CGameIdle.cpp(159): error C2039: m_pRwCamera: не является членом "RwCamera"
1>          C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\RenderWare.h(1438): см. объявление "RwCamera"
1>Source\CGameIdle.cpp(160): error C2039: m_pRwCamera: не является членом "RwCamera"
1>          C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\RenderWare.h(1438): см. объявление "RwCamera"
1>Source\CGameIdle.cpp(161): error C2039: m_pRwCamera: не является членом "RwCamera"
1>          C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\RenderWare.h(1438): см. объявление "RwCamera"
1>Source\CGameIdle.cpp(162): error C2039: m_pRwCamera: не является членом "RwCamera"
1>          C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\RenderWare.h(1438): см. объявление "RwCamera"
1>Source\CGameIdle.cpp(209): error C2039: m_pRwCamera: не является членом "RwCamera"
1>          C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\RenderWare.h(1438): см. объявление "RwCamera"
1>Source\CGameIdle.cpp(210): error C2039: m_pRwCamera: не является членом "RwCamera"
1>          C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\RenderWare.h(1438): см. объявление "RwCamera"
1>Source\CGameIdle.cpp(210): error C2227: выражение слева от "->fogPlane" должно указывать на тип класса, структуры или объединения либо на универсальный тип
1>Source\CGameIdle.cpp(278): error C2039: m_pRwCamera: не является членом "RwCamera"
1>          C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\RenderWare.h(1438): см. объявление "RwCamera"
1>Source\CGameIdle.cpp(279): error C2039: m_pRwCamera: не является членом "RwCamera"
1>          C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\RenderWare.h(1438): см. объявление "RwCamera"
1>  CGlobalsMgr.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>  CGUI.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>  CLight.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>Source\CLight.cpp(77): error C2039: m_vDummyPos: не является членом "CVehicleModelInfo::CVehicleStructure"
1>          C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CVehicleModelInfo.h(78): см. объявление "CVehicleModelInfo::CVehicleStructure"
1>  CNormalsGenerator.cpp
1>  CRenderTarget.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>  CRTMgr.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>  CShadowMgr.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>Source\CShadowMgr.cpp(7): fatal error C1083: Не удается открыть файл включение: ..\Renderware.h: No such file or directory
1>  CSkinDrawable.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>Source\CSkinDrawable.cpp(9): warning C4309: аргумент: усечение константного значения
1>  CVehicleDrawable.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>  CObjectDrawable.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>  CDeferredMgr.cpp
1>C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\CScene.h(15): error C2226: синтаксическая ошибка: непредвиденный тип "RwCamera"
1>Source\CDeferredMgr.cpp(52): error C2039: m_pRwCamera: не является членом "RwCamera"
1>          C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\RenderWare.h(1438): см. объявление "RwCamera"
1>Source\CDeferredMgr.cpp(80): error C2039: m_pRwCamera: не является членом "RwCamera"
1>          C:\Users\Администратор\Downloads\plugin-sdk-0x0B\src\sdk\game_sa\RenderWare.h(1438): см. объявление "RwCamera"
1>Source\CDeferredMgr.cpp(80): error C2227: выражение слева от "->nearPlane" должно указывать на тип класса, структуры или объединения либо на универсальный тип
1>  Создание кода...
========== Перестроение всех: успешно: 0, с ошибками: 1, пропущено: 0 ==========

UPD: пофиксил сам, решение было :

Цитата DK22Pac удали этот дефайн (Scene) из RenderWare.h.
Отредактировал Dizzel - Четверг, 09.07.15, 22:17

wmysterio
Администраторы
Скриптер
17.02.18 22:14
Offline
отлично! обновишь ссылку в теме, когда обновление будет готово.

Код
CPools::ms_pPedPool->m_Size
я так понял, это выражение возвращает текущее количество актёров. Думаю неплохо было бы сделать упрощение, например в
Код
CPed::Count
Или что-то в этом духе.

DK22Pac
Модераторы
TOP Скриптер
17.02.18 22:14
Offline
Поле m_Size - это кол-во элементов в пуле (т.е. макс. количество педов в игре).
Пытаюсь делать так, как было у R*. К тому же, сделать это статической переменной довольно проблематично.
При желании можно обойтись этим
Код
#define MAX_PEDS CPools::ms_pPedPool->m_Size

wmysterio
Администраторы
Скриптер
17.02.18 22:14
Offline
Цитата DK22Pac ()
т.е. макс. количество педов в игре
В текущий момент или вообще в игре?
Цитата DK22Pac ()
Пытаюсь делать так, как было у R*. К тому же, сделать это статической переменной довольно проблематично.
Ну, можно и метод сделать, например:
Код
int CPed::Count(){
     return CPools::ms_pPedPool->m_Size;
}
Можно схитрить smile И получится немного короче чем вызов поля статического экземпляра для класса CPools. В принципе здесь и так ясно, но раз решил сделать для простоты, то пример вполне подходит.

Вот ещё вопросец:
Код
Events::drawingEvent += CheckAndDraw;
Выражение подписывается на событие рисования. Возможно я плохо учил С/С++, но разве есть поддержка событий вообще в этом ЯП? Или это от Майкрософт фишка используется?

DK22Pac
Модераторы
TOP Скриптер
17.02.18 22:14
Offline
Цитата wmysterio ()
В текущий момент или вообще в игре?
Вообще. Кол-во слотов в пуле.
Из кода можно понять, что мы "проходимся" по всем слотам пула (Итерация от 0 до CPool::m_Size). Вызываем метод CPool::GetAt. Этот метод возвращает элемент по его индексу. Если слот с этим индексом не занят, то метод возвращает нулевой указатель. Отсюда и проверка
Код
if (object) {

Цитата wmysterio ()
Выражение подписывается на событие рисования. Возможно я плохо учил С/С++, но разве есть поддержка событий вообще в этом ЯП? Или это от Майкрософт фишка используется?
На самом деле, здесь просто перегружен оператор +=. Ну а далее уже sdk делает магию - инжектит хуки и добавляет функцию на стек вызовов.
Что-то вроде такого
Код
template <typename FunctionType> class EventHandler {
public:
      vector<FunctionType> functions;

      EventHandler& operator+=(FunctionType function) {
          ::Inject_if_not_injected_yet();
          functions.push_back(function);
          return *this;
      }
};
Отредактировал DK22Pac - Пятница, 14.08.15, 21:29

wmysterio
Администраторы
Скриптер
17.02.18 22:15
Offline
Цитата DK22Pac ()
На самом деле, здесь просто перегружен оператор +=.

Ну это я понял. В шарпе тоже так используется оператор для подписки.
Цитата DK22Pac ()
Ну а далее уже sdk делает магию - инжектит хуки и добавляет функцию на стек вызовов.
А вот это уже интересно. Получается, программа/игра просто вызывает зарегистрированные методы со списка "functions" где-то в коде цикла либы, а регистрация методов происходит при вызове перегруженного оператора +. Это мне нравится! Простой и удобный механизм! Я читал о похожем способе, но до этих пор никак не мог понять как всё устроено, но теперь я получил +1 к методам проектирования smile

wmysterio
Администраторы
Скриптер
17.02.18 22:15
Offline
Цитата DK22Pac ()
Обновленная версия plugin-sdk
Есть какие-то детали, или там просто небольшие/большие ошибки исправлены?
Цитата DK22Pac ()
PS сайт жутко тормозит.
Работаю над оптимизацией. Для начала, попробуй удалить все личные сообщения(входящие и исходящие) в профиле. Сайт намного быстрее работает, когда таких сообщений нет или мало.

DK22Pac
Модераторы
TOP Скриптер
17.02.18 22:15
Offline
У меня пустой список ЛС.

Добавлено (26.06.16, 13:41)
---------------------------------------------
Теперь plugin-sdk доступен и для Vice City.


Уже есть первый пример - рисование с ID3DXFont.
https://github.com/DK22Pac/plugin-sdk/tree/master/examples/VC_DXFont


wmysterio
Администраторы
Скриптер
17.02.18 22:15
Offline
Цитата DK22Pac ()
У меня пустой список ЛС.
Тогда придётся изменить дизайн, что конечно уже поднадоело :(
Цитата DK22Pac ()
еперь plugin-sdk доступен и для Vice City.
Отлично! Правда я так и не понял как-же сделать плагин(вовсе любой). Постоянно каких-то файлов не хватает. Этот С++ меня убьёт скоро своей требовательностью smile

DK22Pac
Модераторы
TOP Скриптер
17.02.18 22:15
Offline
wmysterio, у тебя 2015 студия?

PS небольшое видео
Отредактировал DK22Pac - Суббота, 30.07.16, 00:40

wmysterio
Администраторы
Скриптер
17.02.18 22:15
Offline
Цитата DK22Pac ()
у тебя 2015 студия?
Да, но у меня нет плагина в меню "Templates". И я понятия не имею как правильно его так прислинить к этим шаблонам.

GoldFish
Пользователи
17.02.18 22:16
Offline
Цитата DK22Pac ()
wmysterio, у тебя 2015 студия?PS небольшое видео


DK22Pac, с горем пополам заставил видеть пути инклудов. Возможно не доглядел, но описание установки проекта в студии не полное. Для того, чтобы подружить пути нужно еще править эти пути



Просмотрел еще раз тему про настройку проекта. Вроде понятно. Изночально читал README.MD на гитхабе)
Отредактировал GoldFish - Вторник, 17.01.17, 18:13

Форум » Проекты » Ваши проекты » Plugin SDK » Вопросы по Plugin SDK (В этой теме задаются вопросы по плагину от DK22Pac)
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск: