Difference between revisions of "Building HPM Plugin for MSVC"

From Hercules Wiki
Jump to: navigation, search
m (Reverted edits by Annieruru (talk) to last revision by Jolteo)
m (Reverted edits by Dastgirpojee (talk) to last revision by Annieruru)
Line 96: Line 96:
 
15. Under '''Configuration Properties''' click '''C/C++''' and open '''General''', change '''Additional Include Directories''' to '''..\src;..\3rdparty;..\3rdparty\msinttypes\include;%(AdditionalIncludeDirectories)'''
 
15. Under '''Configuration Properties''' click '''C/C++''' and open '''General''', change '''Additional Include Directories''' to '''..\src;..\3rdparty;..\3rdparty\msinttypes\include;%(AdditionalIncludeDirectories)'''
 
[[File:step15.JPG|center|750px]]
 
[[File:step15.JPG|center|750px]]
16. Under '''Configuration Properties''' click '''Linker''' and open '''General''', change '''Output File''' to '''$(OutDir)\PluginName.dll''' (TargetName is the name of the project)
+
16. Under '''Configuration Properties''' click '''Linker''' and open '''General''', change '''Output File''' to '''$(OutDir)\$(ProjectName).dll'''
 
[[File:step16.JPG|center|750px]]
 
[[File:step16.JPG|center|750px]]
17. Add your code to the '''dance.c''' file, and then right-click the project you created, and select '''Build'''
+
17. Under '''Configuration Properties''' click '''C/C++''' and open '''Preprocessor''', change '''Preprocessor Definitions''' to '''_WINDLL;PCRE_SUPPORT;%(PreprocessorDefinitions)'''
 +
[[File:step17.jpg|center|750px]]
 +
18. Add your code to the '''dance.c''' file, and then right-click the project you created, and select '''Build'''
  
  
18. Add it to ''' /conf/plugins.conf'''
+
19. Add it to ''' /conf/plugins.conf'''
  
 
<pre>
 
<pre>

Revision as of 09:50, 4 December 2015

This is a guide on how to prepare your MSVC environment for a new HPM plugin.

Guide

1. Go to src/plugins/ folder, create a new .c file, e.g. dance.c (this name will be used throughout this guide)

Step1.JPG

2. Open dance.c and paste this code

#include <stdio.h>
#include <string.h>
#include "../common/HPMi.h"
#include "../map/script.h"
#include "../map/pc.h"

#include "../common/HPMDataCheck.h"    //Should always be the last include file.

HPExport struct hplugin_info pinfo =
{
    "@dance",		// Plugin name
    SERVER_TYPE_MAP,// Which server types this plugin works with?
    "0.1a",			// Plugin version
    HPM_VERSION,	// HPM Version (don't change, macro is automatically updated)
};

ACMD(dance)
{


      if (!message || !*message) {
		  clif->message(fd, "usage: @dance 1-9");
return -1;
   }
   if ( atoi(message) == 1 ) {
clif->specialeffect(&sd->bl, 413, ALL_CLIENT);
   } else if ( atoi(message) == 2 ) {
clif->specialeffect(&sd->bl, 414, ALL_CLIENT);
   } else if ( atoi(message) == 3 ) {
clif->specialeffect(&sd->bl, 415, ALL_CLIENT);
   } else if ( atoi(message) == 4 ) {
clif->specialeffect(&sd->bl, 426, ALL_CLIENT);
   } else if ( atoi(message) == 5 ) {
clif->specialeffect(&sd->bl, 458, ALL_CLIENT);
   } else if ( atoi(message) == 6 ) {
clif->specialeffect(&sd->bl, 466, ALL_CLIENT);
   } else if ( atoi(message) == 7 ) {
clif->specialeffect(&sd->bl, 501, ALL_CLIENT);
   } else if ( atoi(message) == 8 ) {
clif->specialeffect(&sd->bl, 540, ALL_CLIENT);
   } else if ( atoi(message) == 9 ) {
clif->specialeffect(&sd->bl, 550, ALL_CLIENT);
   }
	else
	{
	clif->message(fd, "usage: @dance 1-9"); 
	}
   return true;
}

/* Server Startup */
HPExport void plugin_init (void)
{
    clif = GET_SYMBOL("clif");
    script = GET_SYMBOL("script");
    skill = GET_SYMBOL("skill");

    addAtcommand("dance",dance);
}

3. Open your MSVC project (e.g. 'Hercules-10.sln)

Step2.JPG

4. Go to the Solution Explorer

Step3.JPG

5. Right click the Hercules project (first item in Solution Explorer), and click Add->New Project

Step4.JPG

6. Select General, and pick Empty Project.

Step5.JPG

7. Enter the name of your plugin in the Name field, and click OK.

8. In the solution explorer it'll display the new project.

Step6.JPG

9. Right click the new project, and open Add->Existing Item

Step7.JPG

10. Browse to src/plugins/ and select the dance.c file, and hit OK.

Step8.JPG

11. It will place the dance.c file under the Source Files folder, drag it to the project you created and drop it (in a manner it be placed out of the source files folder.)

Step9.JPG

(It should look like the image below)

Step10.JPG

12. With the dance.c out of the folders, delete the 3 of them (select the 3, hit delete, hit ok)

Step11.JPG

(It should look like the image below)

Step12.JPG

13. Right click the project you created, open Properties

Step13.JPG

14. Under Configuration Properties click General, change Output Directory to ..\plugins\, Intermediate Directory to $(ProjectName)\$(ConfigurationName)\ and Configuration Type to Dynamic Library (.dll)

Step14.JPG

15. Under Configuration Properties click C/C++ and open General, change Additional Include Directories to ..\src;..\3rdparty;..\3rdparty\msinttypes\include;%(AdditionalIncludeDirectories)

Step15.JPG

16. Under Configuration Properties click Linker and open General, change Output File to $(OutDir)\$(ProjectName).dll

Step16.JPG

17. Under Configuration Properties click C/C++ and open Preprocessor, change Preprocessor Definitions to _WINDLL;PCRE_SUPPORT;%(PreprocessorDefinitions)

Step17.jpg

18. Add your code to the dance.c file, and then right-click the project you created, and select Build


19. Add it to /conf/plugins.conf

plugins_list: [
	/* Enable HPMHooking when plugins in use rely on Hooking */
	//"HPMHooking",
	//"db2sql",
	//"sample",
	//"other",
	"dance", // loads dance plugin
]

Notes

  • This guide is probably the worst I've ever written, if you can do better please hit the 'Edit' button, will be most welcome. - Ind
  • I used MSVC 2008 when testing this guide.

New Note

  • Sorry for editing this page, I added step by step images for other people to follow so they can easily follow one of the best feature Hercules have, the HPM. - Thanna
  • The tutorial is tested on MSVC 2010.