Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 12
  1. #1
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±

    Написание плагина [C++]

    Всем привет господа.

    Ниже код, подскажите, как сделать ну хоть что-то?)) Прошу вас.

    PHP код:
    #include "dll.h"
    #include <windows.h>
    #include "SDK/amxplugin.cpp" 
    #include "SDK/amx/amx.h" //  хоть и есть ссылка на этот плагин в plugin.h, но почему то работает лучше когда прописан сразу здесь 
    #include "SDK/plugin.h"

    typedef DLLIMPORT void (*logprintf_t)(charformat, ...); 
    logprintf_t logprintf

    DLLIMPORT void **ppPluginData

    BOOL Copys(char indir[128],char outdir[128]); 

    extern DLLIMPORT void *pAMXFunctions

    static 
    char *pcCreateAndFillStringFromCell(AMX *amxcell params

         
    char *szDest
         
    int nLen
         
    cell *pString
         
    amx_GetAddr(amx,params,&pString); 
         
    amx_StrLen(pString, &nLen); 
         
    szDest = new char[nLen+1]; 
         
    amx_GetString(szDestpString0UNLIMITED); 
         return 
    szDest;

    typedef DLLIMPORT   struct assoc_array assoc_array

    PLUGIN_EXPORT DLLIMPORT unsigned int PLUGIN_CALL Supports() 

         return 
    SUPPORTS_VERSION SUPPORTS_AMX_NATIVES

    PLUGIN_EXPORT DLLIMPORT bool PLUGIN_CALL Load(void **ppData

           
    pAMXFunctions ppData[PLUGIN_DATA_AMX_EXPORTS]; 
           
    logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF]; 
           
    logprintf("Плагин загружен."); 
           return 
    1


    PLUGIN_EXPORT DLLIMPORT void PLUGIN_CALL Unload() 

           
    logprintf("Плагин не загружен.");            


    static 
    cell AMX_NATIVE_CALL callback_helloworld(AMX *amxcell *params
    {      
           
    logprintf("Привет мир."); 
           return 
    1;     


    AMX_NATIVE_INFO Natives[] = 

           { 
    "HelloWorld"callback_helloworld 

    }; 

    PLUGIN_EXPORT DLLIMPORT  int PLUGIN_CALL AmxLoad(AMX *amx

           return 
    amx_Register(amxNatives, -1); 


    PLUGIN_EXPORT DLLIMPORT  int PLUGIN_CALL AmxUnload(AMX *amx

           return 
    AMX_ERR_NONE
    }




    BOOL APIENTRY DllMain(HINSTANCE hInstDWORD reasonLPVOID reserved)
    {
        switch (
    reason)
        {
          case 
    DLL_PROCESS_ATTACH:
            break;

          case 
    DLL_PROCESS_DETACH:
            break;

          case 
    DLL_THREAD_ATTACH:
            break;

          case 
    DLL_THREAD_DETACH:
            break;
        }
        return 
    TRUE;


  2. #2
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    а через какую прогу пытаешься это сделать?
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  3. #3
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±
    Dev-c++, или наоборот) есть толк в использованном софте?

  4. #4
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Покажи корень проекта (скрином). А и ещё есть какой то профит в С++ использовать char?
    Давно есть string, vector string.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  5. #5
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±
    $continue$, с++ не знаю совсем. решил попробовать. как бы такое мелкое начало. попробовать, что бы что-то работало короче)))

    PHP код:
    #ifndef _DLL_H_
    #define _DLL_H_

    #if BUILDING_DLL
    #define MAIN_PLUGIN __declspec (dllexport)
    #else
    #define MAIN_PLUGIN __declspec (dllimport)
    #endif

    class MAIN_PLUGIN DllClass
    {
      public:

      private:

    };
    #endif 
    PHP код:
    #include "dll.h"
    #include <windows.h>
    #include "SDK/amxplugin.cpp" 
    #include "SDK/plugin.h"

    typedef MAIN_PLUGIN void (*logprintf_t)(charformat, ...); 
    logprintf_t logprintf

    MAIN_PLUGIN void **ppPluginData
    extern MAIN_PLUGIN void *pAMXFunctions

    PLUGIN_EXPORT MAIN_PLUGIN unsigned int PLUGIN_CALL Supports() 
    {
         return 
    SUPPORTS_VERSION SUPPORTS_AMX_NATIVES
    }
    PLUGIN_EXPORT MAIN_PLUGIN bool PLUGIN_CALL Load(void **ppData
    {
           
    pAMXFunctions ppData[PLUGIN_DATA_AMX_EXPORTS]; 
           
    logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF]; 
           
    logprintf("Плагин загружен."); 
           return 
    1
    }
    PLUGIN_EXPORT MAIN_PLUGIN void PLUGIN_CALL Unload() 
    {
           
    logprintf("Не загружен плагин.");            
    }

    static 
    cell AMX_NATIVE_CALL call_HelloWorld(AMX *amxcell *params
    {     
           
    logprintf("HelloWorld - функция работает."); 
           return 
    1;     
    }
    AMX_NATIVE_INFO Natives[] = 
    {
           { 
    "HelloWorld"call_HelloWorld }
    };
    PLUGIN_EXPORT MAIN_PLUGIN int PLUGIN_CALL AmxLoad(AMX *amx
    {
           return 
    amx_Register(amxNatives, -1); 
    }
    PLUGIN_EXPORT MAIN_PLUGIN int PLUGIN_CALL AmxUnload(AMX *amx
    {
           return 
    AMX_ERR_NONE

    Всё, что есть. Из этих двух файлов генерируется .dll.

    На C# для прог в принципе проблем нет в написании, а вот тут)))

  6. #6
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Я просил показать корень директории проекта, а не хейдер и сурс файл
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  7. #7
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    А и ещё есть какой то профит в С++ использовать char?
    Всему есть своё применение и свистоперделки из C++ не везде могут подойти. За примерами далеко ходить не нужно - можешь поискать на г-и командный процессор LifeCMD (ту версию, которая была написана на C++ с использованием std::string). Закончилось всё тем, что этот плагин работал в 2 раза медленнее, чем ZCMD.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  8. #8
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Ну как бы понятно, что char быстрей обрабатывает, но зачем писать на С++ в стиле Си?

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Всему есть своё применение и свистоперделки из C++ не везде могут подойти. За примерами далеко ходить не нужно - можешь поискать на г-и командный процессор LifeCMD (ту версию, которая была написана на C++ с использованием std::string). Закончилось всё тем, что этот плагин работал в 2 раза медленнее, чем ZCMD.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  9. #9
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±
    PHP код:
    static cell AMX_NATIVE_CALL addition (AMX *amxcell *params)
    {
        
    int i 3,
             
    5,
             
    res p;
        return 
    res;

    И в моде:
    PHP код:
    printf ("%i"Add ()); 
    Не понимаю цель использования, ибо в инклуде можно сделать тоже самое. Хз
    Скорее всего чего-то не понимаю.

    На C#, я заранее определяю какие функции требуются для написания софта, основные в плагин. Как-то проще)) а в чём ещё + без понятия. Мож кто расскажет?

    - - - Добавлено - - -

    Как сделать например ту же функцию Add но с параметрами, что бы в моде можно было указать теже переменные i и j?

  10. #10
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Писал бы ты на вижаке я бы готовый пример скинул, с уже одной готовой функцией)
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •