Cуmo crear un plugin -
Dreyfuz - 22.02.2013
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
- Ejecutar Visual C++ (2008/2010 version).
- Ir a "File" luego en "New" y seleccionar "Project".

- Verбs el siguiente cuadro:

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

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

- 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")

- 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".
- Luego les aparecera el siguiente cuadro:

- 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".

- Ahora te llevara al solution explorer. Has click derecho en el nombre del proyecto y seleccionas "Add", luego has clik en "New Item".
- 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".

- Has click derecho en el nombre del proyecto. selecciona la opciуn "Add" y click en "New Item", de nuevo.
- 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".

- Ahora podras ver 2 pestaсas abiertas: "NombreDeTuProyecto.def" y "NombreDeTuProyecto.cpp".
- Abre "NombreDeTuProyecto.def" y pega lo siguiente:
Код:
EXPORTS
Supports
Load
Unload
AmxLoad
AmxUnload
- 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;
}
- 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".
- Extraes el archivo "SDK" que descargaste en "Documents/Visual Studio 2010/Projects/NombreDeTuProyecto/".
- volver al solution explorer y hacer click derecho en la carpeta "SDK" que creaste y selecciona "Add", luego has click en "Existing Item".
- Te aparecera un cuadro. Ahora busca el archivo "amxplugin.cpp", lo seleccionas y le das a "Add".
- Ahora lo mas lindo. Presiona F7 para compilarlo.
- Ahora si seguiste bien los pasos, podras encontrar el .dll en la carpeta debug.
Crear un native
- 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
}
- 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!
};
- Compilar(F7) he ir a la carpeta debug.
- Selecciona su archivo .dll y copia dentro de la carpeta plugins de tu servidor
- 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;
}
- Cuando se ejecuta el servidor, se debe imprimir esto: "He echo mi primer plugin.!
".
- 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.
Respuesta: Cуmo crear un plugin -
godoy32 - 22.02.2013
Muy buen tutorial, llevaba mucho tiempo esperando uno asн en espaсol
Respuesta: Cуmo crear un plugin -
Dreyfuz - 22.02.2013
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..
Respuesta: Cуmo crear un plugin -
JustBored - 22.02.2013
Estб genial la verdad. Lo leн todo.
Respuesta: Cуmo crear un plugin -
Dreyfuz - 22.02.2013
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
Respuesta: Cуmo crear un plugin -
CrossOv3r - 22.02.2013
Genial, aver si me animу a crear unos cuantos.
Re: Cуmo crear un plugin -
Daniel-92 - 22.02.2013
Buenisimo que lo hayas traducido, asн los que no entienden mucho ingles como yo xD les serб muy ъtil.
Respuesta: Re: Cуmo crear un plugin -
Dreyfuz - 22.02.2013
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
Respuesta: Cуmo crear un plugin -
xSDx - 22.02.2013
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.
Respuesta: Cуmo crear un plugin -
JustBored - 23.02.2013
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.
Respuesta: Cуmo crear un plugin -
Dreyfuz - 23.02.2013
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..
Respuesta: Cуmo crear un plugin -
oOFotherOo - 23.02.2013
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.
Respuesta: Cуmo crear un plugin -
Glimma - 23.02.2013
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.
Respuesta: Cуmo crear un plugin -
oOFotherOo - 23.02.2013
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.
Respuesta: Cуmo crear un plugin -
JustBored - 23.02.2013
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й.
Respuesta: Cуmo crear un plugin -
oOFotherOo - 23.02.2013
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
Respuesta: Cуmo crear un plugin -
OTACON - 23.02.2013
por que no traducen el tutorial del paso oOFotherOo, esta mas completo :S

.
Respuesta: Cуmo crear un plugin -
JustBored - 23.02.2013
Quote:
Originally Posted by oOFotherOo
|
+Rep
Respuesta: Cуmo crear un plugin -
xSDx - 01.03.2013
Hubieras traducido
este que esta aun mas completo.
Saludos.
Respuesta: Cуmo crear un plugin -
Glimma - 01.03.2013
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.