[Tutorial] Cуmo crear un plugin
#1

Introducion

Mucha gente quiere saber cуmo crear un plugin utilizando Microsoft Visual C++ 2008/2010. Algunas personas piensan que es difнcil, pero en realidad es bastante simple.
A continuaciуn voy a explicarles paso a paso cуmo crear su primer nativo.

Cosas que usted debe saber antes de empezar
Como
  1. Ejecutar Visual C++ (2008/2010 version).
  2. Ir a "File" luego en "New" y seleccionar "Project".

  3. Verбs el siguiente cuadro:

  4. Selecciona "Win32 Project", he introduce un nombre al Proyecto y presiona "OK".
  5. Luego te aparecera el siguiente cuadro:

  6. Solo presionas el boton "Next" para continuar.
  7. En el siguiente cuadro debes marcar la opcion "DLL" en Application type y "Empty project" en additional options luego presionar el boton "Finish".

  8. Ahora lo unico que vas a ver es el solution explorer(Explorador de Soluciones) en la parte izquierda.(Si no puede ver el solution explorer, presione la pestaсa "View" y seleccione "Other Windows" y haga click en "Solution Explorer")

  9. Como veran yo llame "Test" a mi proyecto, ustedes pueden llamarlo como quieran. Haga click derecho en "Test" en el Solution Explorer y seleccione la opcion "Properties".
  10. Luego les aparecera el siguiente cuadro:

  11. En el lado izquierdo, has click en "Linker" luego seleccionar "Input" y escribir al lado de "Module Definition File" el nombre del proyecto o el que tu quieras, aсadiendo la extensiуn ".def" y luego presionas "OK".

  12. Ahora te llevara al solution explorer. Has click derecho en el nombre del proyecto y seleccionas "Add", luego has clik en "New Item".
  13. En el cuadro que te aparece, selecciona "C++ File (.cpp)" y a continuacion de "Name" escribe lo que has escrito junto a "Module Definition File" (en el paso 11). Y presiona "Add".

  14. Has click derecho en el nombre del proyecto. selecciona la opciуn "Add" y click en "New Item", de nuevo.
  15. Esta ves tienes que hacer lo mismo, Seleccionar "C++ File (.cpp)" pero ahora, escribe juento a "Name" el nombre elegido anteriormente, con la extensiуn ".cpp". Y presionar "Add".

  16. Ahora podras ver 2 pestaсas abiertas: "NombreDeTuProyecto.def" y "NombreDeTuProyecto.cpp".
  17. Abre "NombreDeTuProyecto.def" y pega lo siguiente:
    Код:
    EXPORTS
    	Supports
    	Load
    	Unload
    	AmxLoad
    	AmxUnload
  18. Ahora abre "NombreDeTuProyecto.cpp" y pega lo siguiente:
    pawn Код:
    #include "../SDK/plugin.h"

    typedef void
        (*logprintf_t)(char* format, ...)
    ;

    logprintf_t
        logprintf
    ;

    void
        **ppPluginData
    ;

    extern void
        *pAMXFunctions
    ;

    PLUGIN_EXPORT bool PLUGIN_CALL Load(void **ppData)
    {
       pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS];
       logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF];
       return 1;
    }

    PLUGIN_EXPORT void PLUGIN_CALL Unload()
    {
    }

    AMX_NATIVE_INFO projectNatives[] =
    {
       { 0, 0 }
    };


    PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports()
    {
       return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES;
    }

    PLUGIN_EXPORT int PLUGIN_CALL AmxLoad(AMX *amx)
    {
       return amx_Register(amx, projectNatives, -1);
    }

    PLUGIN_EXPORT int PLUGIN_CALL AmxUnload(AMX *amx)
    {
       return AMX_ERR_NONE;
    }
  19. Ahora ve al Solution explorer y has click derecho en el nombre del proyecto, selecciona la opciуn "Add", y has click en "New Filter". Ahora veras que se ha creado una nueva carpeta. Le cambias el nombre a "SDK".
  20. Extraes el archivo "SDK" que descargaste en "Documents/Visual Studio 2010/Projects/NombreDeTuProyecto/".
  21. volver al solution explorer y hacer click derecho en la carpeta "SDK" que creaste y selecciona "Add", luego has click en "Existing Item".
  22. Te aparecera un cuadro. Ahora busca el archivo "amxplugin.cpp", lo seleccionas y le das a "Add".
  23. Ahora lo mas lindo. Presiona F7 para compilarlo.
  24. Ahora si seguiste bien los pasos, podras encontrar el .dll en la carpeta debug.
Crear un native
  1. Aсadir esto en algъn lugar de la secuencia de comandos .cpp:
    pawn Код:
    static cell AMX_NATIVE_CALL NombreDeTuNativeAqui(AMX *amx, cell *params)
    {  
            logprintf("He echo mi primer plugin.! :)");
            // Aqui colocas tus codigos
            return 1; // Cambia el valor de return si se necesita
    }
  2. Ir a:
    pawn Код:
    AMX_NATIVE_INFO projectNatives[] =
    {
            { 0, 0 }
    };
    Y Agregar "{ "NombreDeTuNativeAqui", NombreDeTuNativeAqui }", Ejemplo:
    pawn Код:
    AMX_NATIVE_INFO projectNatives[] =
    {
            { "NombreDeTuNativeAqui", NombreDeTuNativeAqui } // En la dimensiуn del array, se escribe el nombre de los nativos que vas a llamar en PAWN. En la segunda, se escribe el nombre en .Cpp En este caso, son lo mismo!
    };
  3. Compilar(F7) he ir a la carpeta debug.
  4. Selecciona su archivo .dll y copia dentro de la carpeta plugins de tu servidor
  5. Crear un nuevo script .pwn y aсadi "native NombreDeTuNativeAqui()" En la parte superior. Y asн lo llaman en "OnFilterScriptInit". Ejemplo:
    pawn Код:
    #include <a_samp>

    native NombreDeTuNativeAqui();

    public OnFilterScriptInit()
    {
        NombreDeTuNativeAqui();
        return 1;
    }
  6. Cuando se ejecuta el servidor, se debe imprimir esto: "He echo mi primer plugin.! ".
  7. Esto es sуlo lo bбsico. Usted puede crear otras cosas ъnicas!

    NOTA: Si desea native's con parбmetros, puedes utilizar "params []" a partir del нndice(Index) 1.
Nota(s)
  • Trate de encontrar la manera de hacer otras cosas. Yo sуlo te estoy enseсando lo bбsico sobre cуmo empezar.
  • A continuaciуn puedes hacer preguntas, pero yo no voy a contestar a todos(por que yo no soy RyDeR` xD).

    Creditos
  • Post creado por RyDeR`.(Post Original)
  • Traducido por Dreyfuz.
Reply
#2

Muy buen tutorial, llevaba mucho tiempo esperando uno asн en espaсol
Reply
#3

Quote:
Originally Posted by godoy32
Посмотреть сообщение
Muy buen tutorial, llevaba mucho tiempo esperando uno asн en espaсol
El post lo hizo Ryder yo solo lo traduje. Igual Gracias..
Reply
#4

Estб genial la verdad. Lo leн todo.
Reply
#5

Quote:
Originally Posted by JustBored
Посмотреть сообщение
Estб genial la verdad. Lo leн todo.
Gracias.. xD

Ojala ahora alguien de la seccion espaсol, empiesen a crear plugin como lo hacen los de la seccion inglesa. xD
Reply
#6

Genial, aver si me animу a crear unos cuantos.
Reply
#7

Buenisimo que lo hayas traducido, asн los que no entienden mucho ingles como yo xD les serб muy ъtil.
Reply
#8

Quote:
Originally Posted by Daniel-92
Посмотреть сообщение
Buenisimo que lo hayas traducido, asн los que no entienden mucho ingles como yo xD les serб muy ъtil.
Gracias...

Quote:
Originally Posted by CrossOv3r
Посмотреть сообщение
Genial, aver si me animу a crear unos cuantos.
Animate,.. yo te apoyo... xD
Reply
#9

Microsoft Visual C++ esta disponible en el lenguaje espaсol, para que puedas ponerlo completamente en espaсol y te recomendaria que mejor uses Dev C++

Saludos.
Reply
#10

Tengo una duda. їCuales son las funciones disponibles? es que he comenzado y bien quisiera saber que puedo utilizar. O mбs bien, si pudiera no sй adaptar algunas de PAWN aunque sean 2 lenguajes un tanto relacionados y un tanto distanciados.
Reply
#11

Quote:
Originally Posted by JustBored
Посмотреть сообщение
Tengo una duda. їCuales son las funciones disponibles? es que he comenzado y bien quisiera saber que puedo utilizar. O mбs bien, si pudiera no sй adaptar algunas de PAWN aunque sean 2 lenguajes un tanto relacionados y un tanto distanciados.
Tienes que tener conocimientos de C++.

busca en internet hallн encontraras muchas gias y tuto para aprender este lenguaje..
Reply
#12

Muy buen tutorial para los que no comprenden el ingles, yo aprendi de este tutorial pero el original.

Quote:
Originally Posted by JustBored
Посмотреть сообщение
Tengo una duda. їCuales son las funciones disponibles? es que he comenzado y bien quisiera saber que puedo utilizar. O mбs bien, si pudiera no sй adaptar algunas de PAWN aunque sean 2 lenguajes un tanto relacionados y un tanto distanciados.
Si usted se refiere a funciones de SA-MP como SetPlayerPos para ser utilizadas en C++, usted debe utilizar el SAMPGDKde Zeex para asi poder utilizar funciones nativas de SA-MP en C++, debe tener en cuenta que deberб tener conocimientos en C++ y tambiйn deberб estudiar las funciones del SAMPSDK para asi adaptar su plugin a SA-MP.

Un saludo.
Reply
#13

Bored, con C++ no hay lнmites de lo que podйs llegar a hacer, pero tiene que ser usado bien, porque con C++ se pueden hacer cosas ilegales, como no sй, modificar los slot de tu servidor, para tener como 2.000 por dar un ejemplo, son muchas cosas las que se pueden hacer.
Reply
#14

Quote:
Originally Posted by DeadSkyTkb
Посмотреть сообщение
Bored, con C++ no hay lнmites de lo que podйs llegar a hacer, pero tiene que ser usado bien, porque con C++ se pueden hacer cosas ilegales, como no sй, modificar los slot de tu servidor, para tener como 2.000 por dar un ejemplo, son muchas cosas las que se pueden hacer.
No creo que lo haga con C++ sin antes aplicar ingenieria inversa (Disassembler) y asi obtener parte del cуdigo fuente de SA-MP y poder modificar cуdigo interno como cambiar los slots.

Un saludo.
Reply
#15

Quote:
Originally Posted by oOFotherOo
Посмотреть сообщение
Muy buen tutorial para los que no comprenden el ingles, yo aprendi de este tutorial pero el original.



Si usted se refiere a funciones de SA-MP como SetPlayerPos para ser utilizadas en C++, usted debe utilizar el SAMPGDKde Zeex para asi poder utilizar funciones nativas de SA-MP en C++, debe tener en cuenta que deberб tener conocimientos en C++ y tambiйn deberб estudiar las funciones del SAMPSDK para asi adaptar su plugin a SA-MP.

Un saludo.
Hmm, sн. Gracias por el plugin de Zeex. Igualmente me pondrй a ver C++, y їtienes alguna no sй una lista con las funciones del SAMPSDK? es que me interesarнa crear algъn plugin util no sй.
Reply
#16

Quote:
Originally Posted by JustBored
Посмотреть сообщение
Hmm, sн. Gracias por el plugin de Zeex. Igualmente me pondrй a ver C++, y їtienes alguna no sй una lista con las funciones del SAMPSDK? es que me interesarнa crear algъn plugin util no sй.
https://sampforum.blast.hk/showthread.php?tid=295798
Reply
#17

por que no traducen el tutorial del paso oOFotherOo, esta mas completo :S .
Reply
#18

Quote:
Originally Posted by oOFotherOo
Посмотреть сообщение
+Rep
Reply
#19

Hubieras traducido este que esta aun mas completo.

Saludos.
Reply
#20

Quote:
Originally Posted by xSDx
Посмотреть сообщение
Hubieras traducido este que esta aun mas completo.

Saludos.
Exacto, es muchнsimo mбs completo ese..

Igual, a algunos les va a servir el tuyo, Dreyfuz.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)