-
Content Count
225 -
Joined
-
Last visited
-
Days Won
20
Reputation Activity
-
Habilis got a reaction from Sephus in @emotion @heart @show @hold @detach
Hello, here is the adapted version of
@emotion @heart @show @hold @detach
commands so popular in the Russian eA, rA, Herc community.
I don't claim to be the Author, credit for the work goes to each mod respective Author.
I just made all of them into Hercules plugins and changed source code a little...
emotion.c
@emotion 0 - 81 without delay. Now, you can do nasty spam with emotions.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@emotion", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @emotion X by Anarchist * => Displays the emotions without delay *------------------------------------------*/ int emotion_max = 81; // Set las emotion number available forr this command ACMD(emotion) { nullpo_retr(-1, sd); char err_msg[1024]; if(!message || !*message || atoi(message)<0 || atoi(message)>emotion_max) { sprintf(err_msg, "usage: @emotion 0-%d", emotion_max); clif->message(fd, err_msg); return -1; } clif->emotion(&sd->bl,atoi(message)); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("emotion",emotion); }
heart.c
@heart 1 or 2 (heart emotion without delay)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@heart", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @heart X by Anarchist => Displays the heart special effect ------------------------------------------ */ ACMD(heart) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>2) { clif->message(fd, "usage: @heart 1 or 2"); return -1; } if(atoi(message)==1) { clif->specialeffect(&sd->bl,364,0); } else if(atoi(message)==2) { clif->specialeffect(&sd->bl,509,0); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("heart",heart); }
dance.c
@dance 1 - 8 (character perform different tricks...)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@dance", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @dance X by Anarchist => Special effects with dance style ------------------------------------------ */ ACMD(dance) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>9) { clif->message(fd, "usage: @dance 1-9"); return -1; } switch(atoi(message)) { case 1 : clif->specialeffect(&sd->bl,413,0); break; case 2 : clif->specialeffect(&sd->bl,414,0); break; case 3 : clif->specialeffect(&sd->bl,415,0); break; case 4 : clif->specialeffect(&sd->bl, 426,0); break; case 5 : clif->specialeffect(&sd->bl,458,0); break; case 6 : clif->specialeffect(&sd->bl,466,0); break; case 7 : clif->specialeffect(&sd->bl,501,0); break; case 8 : clif->specialeffect(&sd->bl,540,0); break; case 9 : clif->specialeffect(&sd->bl,550,0); break; } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("dance",dance); }
show.c
@show X Y (Displays a red dot on the minimap for the given coordinates, useful when searching for quest npc or a merchant selling needed items....)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@show", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @show by KarLaeda * => Displays the point on minimap *------------------------------------------*/ ACMD(show) { int x = 0, y = 0; nullpo_retr(-1, sd); if(!message || !*message || (sscanf(message, "%d %d", &x, &y) != 2)) { clif->message(fd, "usage: @show <x> <y>"); return -1; } clif->viewpoint(sd, 1, 1, x, y, 2, 0xFF0000); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("show",show); }
hold.c
@hold (Disables / Enables character movement, useful on low rates to Archer/Mages when leveling on immobile monsters)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@hold", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @hold by Voidless *==========================================*/ ACMD(hold) { nullpo_retr(-1, sd); if (!sd->state.blockedmove) { sd->state.blockedmove=1; clif->message(fd, "Character movement turned off"); } else { sd->state.blockedmove=0; clif->message(fd, "Character movement turned on"); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("hold",hold); }
For this plugin, I used the work : http://herc.ws/board/topic/2615-atcommand-afk/
of Mhalicot : http://herc.ws/board/user/1582-mhalicot/
To inspire myself...
detach.c
@detach (leaves character in game while client can be disconnected)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "../common/HPMi.h" #include "../common/timer.h" #include "../common/nullpo.h" #include "../map/channel.h" #include "../map/script.h" #include "../map/pc.h" #include "../map/clif.h" #include "../map/chat.h" #include "../map/battle.h" #include "../map/status.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@detach", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @detach *==========================================*/ ACMD(detach) { nullpo_retr(-1, sd); if( pc_isdead(sd) ) { clif->message(fd, "Cannot use @detach if you are dead."); return true; } if( map->list[sd->bl.m].flag.autotrade == battle->bc->autotrade_mapflag ) { if(map->list[sd->bl.m].flag.pvp || map->list[sd->bl.m].flag.gvg){ clif->message(fd, "You may not use @detach when you are on maps PVP or GVG."); return true; } sd->state.monster_ignore = 0; sd->state.autotrade = 1; chat->create_pc_chat(sd, "DETACH", "", 1, true); sd->sc.opt1 = OPT1_STONE; pc->setoption(sd, sd->sc.option); pc_setsit(sd); skill->sit(sd,1); clif->sitting(&sd->bl); channel->quit(sd); clif->authfail_fd(sd->fd, 15); return true; } else { clif->message(fd, "@detach is not allowed on this map."); return true; } } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("detach",detach); }
Put all .c files inside src/plugins
in the file src/plugins/makefile.in include the plugins
MYPLUGINS = show heart emotion dance hold detach
run commmand : make plugins
in file conf/plugins.conf
add plugins
plugins_list: [ /* Enable HPMHooking when plugins in use rely on Hooking */ //"HPMHooking", //"db2sql", //"sample", //"other", "show", "heart", "emotion", "dance", "hold", "detach" ] Start server, enhoy -
Habilis reacted to Sephus in Hercules vs rAthena: Current differences
This will change to -
Hercules: better stability, performance, customisation, closer to official, more updated.
-
Habilis got a reaction from Daifuku in @emotion @heart @show @hold @detach
Hello, here is the adapted version of
@emotion @heart @show @hold @detach
commands so popular in the Russian eA, rA, Herc community.
I don't claim to be the Author, credit for the work goes to each mod respective Author.
I just made all of them into Hercules plugins and changed source code a little...
emotion.c
@emotion 0 - 81 without delay. Now, you can do nasty spam with emotions.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@emotion", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @emotion X by Anarchist * => Displays the emotions without delay *------------------------------------------*/ int emotion_max = 81; // Set las emotion number available forr this command ACMD(emotion) { nullpo_retr(-1, sd); char err_msg[1024]; if(!message || !*message || atoi(message)<0 || atoi(message)>emotion_max) { sprintf(err_msg, "usage: @emotion 0-%d", emotion_max); clif->message(fd, err_msg); return -1; } clif->emotion(&sd->bl,atoi(message)); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("emotion",emotion); }
heart.c
@heart 1 or 2 (heart emotion without delay)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@heart", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @heart X by Anarchist => Displays the heart special effect ------------------------------------------ */ ACMD(heart) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>2) { clif->message(fd, "usage: @heart 1 or 2"); return -1; } if(atoi(message)==1) { clif->specialeffect(&sd->bl,364,0); } else if(atoi(message)==2) { clif->specialeffect(&sd->bl,509,0); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("heart",heart); }
dance.c
@dance 1 - 8 (character perform different tricks...)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@dance", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @dance X by Anarchist => Special effects with dance style ------------------------------------------ */ ACMD(dance) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>9) { clif->message(fd, "usage: @dance 1-9"); return -1; } switch(atoi(message)) { case 1 : clif->specialeffect(&sd->bl,413,0); break; case 2 : clif->specialeffect(&sd->bl,414,0); break; case 3 : clif->specialeffect(&sd->bl,415,0); break; case 4 : clif->specialeffect(&sd->bl, 426,0); break; case 5 : clif->specialeffect(&sd->bl,458,0); break; case 6 : clif->specialeffect(&sd->bl,466,0); break; case 7 : clif->specialeffect(&sd->bl,501,0); break; case 8 : clif->specialeffect(&sd->bl,540,0); break; case 9 : clif->specialeffect(&sd->bl,550,0); break; } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("dance",dance); }
show.c
@show X Y (Displays a red dot on the minimap for the given coordinates, useful when searching for quest npc or a merchant selling needed items....)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@show", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @show by KarLaeda * => Displays the point on minimap *------------------------------------------*/ ACMD(show) { int x = 0, y = 0; nullpo_retr(-1, sd); if(!message || !*message || (sscanf(message, "%d %d", &x, &y) != 2)) { clif->message(fd, "usage: @show <x> <y>"); return -1; } clif->viewpoint(sd, 1, 1, x, y, 2, 0xFF0000); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("show",show); }
hold.c
@hold (Disables / Enables character movement, useful on low rates to Archer/Mages when leveling on immobile monsters)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@hold", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @hold by Voidless *==========================================*/ ACMD(hold) { nullpo_retr(-1, sd); if (!sd->state.blockedmove) { sd->state.blockedmove=1; clif->message(fd, "Character movement turned off"); } else { sd->state.blockedmove=0; clif->message(fd, "Character movement turned on"); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("hold",hold); }
For this plugin, I used the work : http://herc.ws/board/topic/2615-atcommand-afk/
of Mhalicot : http://herc.ws/board/user/1582-mhalicot/
To inspire myself...
detach.c
@detach (leaves character in game while client can be disconnected)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "../common/HPMi.h" #include "../common/timer.h" #include "../common/nullpo.h" #include "../map/channel.h" #include "../map/script.h" #include "../map/pc.h" #include "../map/clif.h" #include "../map/chat.h" #include "../map/battle.h" #include "../map/status.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@detach", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @detach *==========================================*/ ACMD(detach) { nullpo_retr(-1, sd); if( pc_isdead(sd) ) { clif->message(fd, "Cannot use @detach if you are dead."); return true; } if( map->list[sd->bl.m].flag.autotrade == battle->bc->autotrade_mapflag ) { if(map->list[sd->bl.m].flag.pvp || map->list[sd->bl.m].flag.gvg){ clif->message(fd, "You may not use @detach when you are on maps PVP or GVG."); return true; } sd->state.monster_ignore = 0; sd->state.autotrade = 1; chat->create_pc_chat(sd, "DETACH", "", 1, true); sd->sc.opt1 = OPT1_STONE; pc->setoption(sd, sd->sc.option); pc_setsit(sd); skill->sit(sd,1); clif->sitting(&sd->bl); channel->quit(sd); clif->authfail_fd(sd->fd, 15); return true; } else { clif->message(fd, "@detach is not allowed on this map."); return true; } } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("detach",detach); }
Put all .c files inside src/plugins
in the file src/plugins/makefile.in include the plugins
MYPLUGINS = show heart emotion dance hold detach
run commmand : make plugins
in file conf/plugins.conf
add plugins
plugins_list: [ /* Enable HPMHooking when plugins in use rely on Hooking */ //"HPMHooking", //"db2sql", //"sample", //"other", "show", "heart", "emotion", "dance", "hold", "detach" ] Start server, enhoy -
Habilis got a reaction from maththew in @emotion @heart @show @hold @detach
Hello, here is the adapted version of
@emotion @heart @show @hold @detach
commands so popular in the Russian eA, rA, Herc community.
I don't claim to be the Author, credit for the work goes to each mod respective Author.
I just made all of them into Hercules plugins and changed source code a little...
emotion.c
@emotion 0 - 81 without delay. Now, you can do nasty spam with emotions.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@emotion", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @emotion X by Anarchist * => Displays the emotions without delay *------------------------------------------*/ int emotion_max = 81; // Set las emotion number available forr this command ACMD(emotion) { nullpo_retr(-1, sd); char err_msg[1024]; if(!message || !*message || atoi(message)<0 || atoi(message)>emotion_max) { sprintf(err_msg, "usage: @emotion 0-%d", emotion_max); clif->message(fd, err_msg); return -1; } clif->emotion(&sd->bl,atoi(message)); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("emotion",emotion); }
heart.c
@heart 1 or 2 (heart emotion without delay)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@heart", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @heart X by Anarchist => Displays the heart special effect ------------------------------------------ */ ACMD(heart) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>2) { clif->message(fd, "usage: @heart 1 or 2"); return -1; } if(atoi(message)==1) { clif->specialeffect(&sd->bl,364,0); } else if(atoi(message)==2) { clif->specialeffect(&sd->bl,509,0); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("heart",heart); }
dance.c
@dance 1 - 8 (character perform different tricks...)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@dance", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @dance X by Anarchist => Special effects with dance style ------------------------------------------ */ ACMD(dance) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>9) { clif->message(fd, "usage: @dance 1-9"); return -1; } switch(atoi(message)) { case 1 : clif->specialeffect(&sd->bl,413,0); break; case 2 : clif->specialeffect(&sd->bl,414,0); break; case 3 : clif->specialeffect(&sd->bl,415,0); break; case 4 : clif->specialeffect(&sd->bl, 426,0); break; case 5 : clif->specialeffect(&sd->bl,458,0); break; case 6 : clif->specialeffect(&sd->bl,466,0); break; case 7 : clif->specialeffect(&sd->bl,501,0); break; case 8 : clif->specialeffect(&sd->bl,540,0); break; case 9 : clif->specialeffect(&sd->bl,550,0); break; } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("dance",dance); }
show.c
@show X Y (Displays a red dot on the minimap for the given coordinates, useful when searching for quest npc or a merchant selling needed items....)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@show", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @show by KarLaeda * => Displays the point on minimap *------------------------------------------*/ ACMD(show) { int x = 0, y = 0; nullpo_retr(-1, sd); if(!message || !*message || (sscanf(message, "%d %d", &x, &y) != 2)) { clif->message(fd, "usage: @show <x> <y>"); return -1; } clif->viewpoint(sd, 1, 1, x, y, 2, 0xFF0000); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("show",show); }
hold.c
@hold (Disables / Enables character movement, useful on low rates to Archer/Mages when leveling on immobile monsters)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@hold", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @hold by Voidless *==========================================*/ ACMD(hold) { nullpo_retr(-1, sd); if (!sd->state.blockedmove) { sd->state.blockedmove=1; clif->message(fd, "Character movement turned off"); } else { sd->state.blockedmove=0; clif->message(fd, "Character movement turned on"); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("hold",hold); }
For this plugin, I used the work : http://herc.ws/board/topic/2615-atcommand-afk/
of Mhalicot : http://herc.ws/board/user/1582-mhalicot/
To inspire myself...
detach.c
@detach (leaves character in game while client can be disconnected)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "../common/HPMi.h" #include "../common/timer.h" #include "../common/nullpo.h" #include "../map/channel.h" #include "../map/script.h" #include "../map/pc.h" #include "../map/clif.h" #include "../map/chat.h" #include "../map/battle.h" #include "../map/status.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@detach", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @detach *==========================================*/ ACMD(detach) { nullpo_retr(-1, sd); if( pc_isdead(sd) ) { clif->message(fd, "Cannot use @detach if you are dead."); return true; } if( map->list[sd->bl.m].flag.autotrade == battle->bc->autotrade_mapflag ) { if(map->list[sd->bl.m].flag.pvp || map->list[sd->bl.m].flag.gvg){ clif->message(fd, "You may not use @detach when you are on maps PVP or GVG."); return true; } sd->state.monster_ignore = 0; sd->state.autotrade = 1; chat->create_pc_chat(sd, "DETACH", "", 1, true); sd->sc.opt1 = OPT1_STONE; pc->setoption(sd, sd->sc.option); pc_setsit(sd); skill->sit(sd,1); clif->sitting(&sd->bl); channel->quit(sd); clif->authfail_fd(sd->fd, 15); return true; } else { clif->message(fd, "@detach is not allowed on this map."); return true; } } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("detach",detach); }
Put all .c files inside src/plugins
in the file src/plugins/makefile.in include the plugins
MYPLUGINS = show heart emotion dance hold detach
run commmand : make plugins
in file conf/plugins.conf
add plugins
plugins_list: [ /* Enable HPMHooking when plugins in use rely on Hooking */ //"HPMHooking", //"db2sql", //"sample", //"other", "show", "heart", "emotion", "dance", "hold", "detach" ] Start server, enhoy -
Habilis got a reaction from Nihad in @emotion @heart @show @hold @detach
Hello, here is the adapted version of
@emotion @heart @show @hold @detach
commands so popular in the Russian eA, rA, Herc community.
I don't claim to be the Author, credit for the work goes to each mod respective Author.
I just made all of them into Hercules plugins and changed source code a little...
emotion.c
@emotion 0 - 81 without delay. Now, you can do nasty spam with emotions.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@emotion", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @emotion X by Anarchist * => Displays the emotions without delay *------------------------------------------*/ int emotion_max = 81; // Set las emotion number available forr this command ACMD(emotion) { nullpo_retr(-1, sd); char err_msg[1024]; if(!message || !*message || atoi(message)<0 || atoi(message)>emotion_max) { sprintf(err_msg, "usage: @emotion 0-%d", emotion_max); clif->message(fd, err_msg); return -1; } clif->emotion(&sd->bl,atoi(message)); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("emotion",emotion); }
heart.c
@heart 1 or 2 (heart emotion without delay)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@heart", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @heart X by Anarchist => Displays the heart special effect ------------------------------------------ */ ACMD(heart) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>2) { clif->message(fd, "usage: @heart 1 or 2"); return -1; } if(atoi(message)==1) { clif->specialeffect(&sd->bl,364,0); } else if(atoi(message)==2) { clif->specialeffect(&sd->bl,509,0); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("heart",heart); }
dance.c
@dance 1 - 8 (character perform different tricks...)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@dance", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @dance X by Anarchist => Special effects with dance style ------------------------------------------ */ ACMD(dance) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>9) { clif->message(fd, "usage: @dance 1-9"); return -1; } switch(atoi(message)) { case 1 : clif->specialeffect(&sd->bl,413,0); break; case 2 : clif->specialeffect(&sd->bl,414,0); break; case 3 : clif->specialeffect(&sd->bl,415,0); break; case 4 : clif->specialeffect(&sd->bl, 426,0); break; case 5 : clif->specialeffect(&sd->bl,458,0); break; case 6 : clif->specialeffect(&sd->bl,466,0); break; case 7 : clif->specialeffect(&sd->bl,501,0); break; case 8 : clif->specialeffect(&sd->bl,540,0); break; case 9 : clif->specialeffect(&sd->bl,550,0); break; } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("dance",dance); }
show.c
@show X Y (Displays a red dot on the minimap for the given coordinates, useful when searching for quest npc or a merchant selling needed items....)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@show", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @show by KarLaeda * => Displays the point on minimap *------------------------------------------*/ ACMD(show) { int x = 0, y = 0; nullpo_retr(-1, sd); if(!message || !*message || (sscanf(message, "%d %d", &x, &y) != 2)) { clif->message(fd, "usage: @show <x> <y>"); return -1; } clif->viewpoint(sd, 1, 1, x, y, 2, 0xFF0000); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("show",show); }
hold.c
@hold (Disables / Enables character movement, useful on low rates to Archer/Mages when leveling on immobile monsters)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@hold", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @hold by Voidless *==========================================*/ ACMD(hold) { nullpo_retr(-1, sd); if (!sd->state.blockedmove) { sd->state.blockedmove=1; clif->message(fd, "Character movement turned off"); } else { sd->state.blockedmove=0; clif->message(fd, "Character movement turned on"); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("hold",hold); }
For this plugin, I used the work : http://herc.ws/board/topic/2615-atcommand-afk/
of Mhalicot : http://herc.ws/board/user/1582-mhalicot/
To inspire myself...
detach.c
@detach (leaves character in game while client can be disconnected)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "../common/HPMi.h" #include "../common/timer.h" #include "../common/nullpo.h" #include "../map/channel.h" #include "../map/script.h" #include "../map/pc.h" #include "../map/clif.h" #include "../map/chat.h" #include "../map/battle.h" #include "../map/status.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@detach", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @detach *==========================================*/ ACMD(detach) { nullpo_retr(-1, sd); if( pc_isdead(sd) ) { clif->message(fd, "Cannot use @detach if you are dead."); return true; } if( map->list[sd->bl.m].flag.autotrade == battle->bc->autotrade_mapflag ) { if(map->list[sd->bl.m].flag.pvp || map->list[sd->bl.m].flag.gvg){ clif->message(fd, "You may not use @detach when you are on maps PVP or GVG."); return true; } sd->state.monster_ignore = 0; sd->state.autotrade = 1; chat->create_pc_chat(sd, "DETACH", "", 1, true); sd->sc.opt1 = OPT1_STONE; pc->setoption(sd, sd->sc.option); pc_setsit(sd); skill->sit(sd,1); clif->sitting(&sd->bl); channel->quit(sd); clif->authfail_fd(sd->fd, 15); return true; } else { clif->message(fd, "@detach is not allowed on this map."); return true; } } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("detach",detach); }
Put all .c files inside src/plugins
in the file src/plugins/makefile.in include the plugins
MYPLUGINS = show heart emotion dance hold detach
run commmand : make plugins
in file conf/plugins.conf
add plugins
plugins_list: [ /* Enable HPMHooking when plugins in use rely on Hooking */ //"HPMHooking", //"db2sql", //"sample", //"other", "show", "heart", "emotion", "dance", "hold", "detach" ] Start server, enhoy -
Habilis reacted to vBrenth in Starwars for Ragnarok [Login Screen]
We will be using this for our server Ragnawars
The job you see is the Jedi
-
Habilis reacted to Dastgir in plugins system error
MYPLUGINS = plugins
^ above is the problem, it should only list custom plugin file names, if you don't have any custom plugin, simply
MYPLUGINS =
^ would work fine.
-
Habilis got a reaction from Kusoo in @emotion @heart @show @hold @detach
Hello, here is the adapted version of
@emotion @heart @show @hold @detach
commands so popular in the Russian eA, rA, Herc community.
I don't claim to be the Author, credit for the work goes to each mod respective Author.
I just made all of them into Hercules plugins and changed source code a little...
emotion.c
@emotion 0 - 81 without delay. Now, you can do nasty spam with emotions.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@emotion", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @emotion X by Anarchist * => Displays the emotions without delay *------------------------------------------*/ int emotion_max = 81; // Set las emotion number available forr this command ACMD(emotion) { nullpo_retr(-1, sd); char err_msg[1024]; if(!message || !*message || atoi(message)<0 || atoi(message)>emotion_max) { sprintf(err_msg, "usage: @emotion 0-%d", emotion_max); clif->message(fd, err_msg); return -1; } clif->emotion(&sd->bl,atoi(message)); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("emotion",emotion); }
heart.c
@heart 1 or 2 (heart emotion without delay)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@heart", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @heart X by Anarchist => Displays the heart special effect ------------------------------------------ */ ACMD(heart) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>2) { clif->message(fd, "usage: @heart 1 or 2"); return -1; } if(atoi(message)==1) { clif->specialeffect(&sd->bl,364,0); } else if(atoi(message)==2) { clif->specialeffect(&sd->bl,509,0); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("heart",heart); }
dance.c
@dance 1 - 8 (character perform different tricks...)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@dance", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @dance X by Anarchist => Special effects with dance style ------------------------------------------ */ ACMD(dance) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>9) { clif->message(fd, "usage: @dance 1-9"); return -1; } switch(atoi(message)) { case 1 : clif->specialeffect(&sd->bl,413,0); break; case 2 : clif->specialeffect(&sd->bl,414,0); break; case 3 : clif->specialeffect(&sd->bl,415,0); break; case 4 : clif->specialeffect(&sd->bl, 426,0); break; case 5 : clif->specialeffect(&sd->bl,458,0); break; case 6 : clif->specialeffect(&sd->bl,466,0); break; case 7 : clif->specialeffect(&sd->bl,501,0); break; case 8 : clif->specialeffect(&sd->bl,540,0); break; case 9 : clif->specialeffect(&sd->bl,550,0); break; } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("dance",dance); }
show.c
@show X Y (Displays a red dot on the minimap for the given coordinates, useful when searching for quest npc or a merchant selling needed items....)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@show", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @show by KarLaeda * => Displays the point on minimap *------------------------------------------*/ ACMD(show) { int x = 0, y = 0; nullpo_retr(-1, sd); if(!message || !*message || (sscanf(message, "%d %d", &x, &y) != 2)) { clif->message(fd, "usage: @show <x> <y>"); return -1; } clif->viewpoint(sd, 1, 1, x, y, 2, 0xFF0000); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("show",show); }
hold.c
@hold (Disables / Enables character movement, useful on low rates to Archer/Mages when leveling on immobile monsters)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@hold", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @hold by Voidless *==========================================*/ ACMD(hold) { nullpo_retr(-1, sd); if (!sd->state.blockedmove) { sd->state.blockedmove=1; clif->message(fd, "Character movement turned off"); } else { sd->state.blockedmove=0; clif->message(fd, "Character movement turned on"); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("hold",hold); }
For this plugin, I used the work : http://herc.ws/board/topic/2615-atcommand-afk/
of Mhalicot : http://herc.ws/board/user/1582-mhalicot/
To inspire myself...
detach.c
@detach (leaves character in game while client can be disconnected)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "../common/HPMi.h" #include "../common/timer.h" #include "../common/nullpo.h" #include "../map/channel.h" #include "../map/script.h" #include "../map/pc.h" #include "../map/clif.h" #include "../map/chat.h" #include "../map/battle.h" #include "../map/status.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@detach", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @detach *==========================================*/ ACMD(detach) { nullpo_retr(-1, sd); if( pc_isdead(sd) ) { clif->message(fd, "Cannot use @detach if you are dead."); return true; } if( map->list[sd->bl.m].flag.autotrade == battle->bc->autotrade_mapflag ) { if(map->list[sd->bl.m].flag.pvp || map->list[sd->bl.m].flag.gvg){ clif->message(fd, "You may not use @detach when you are on maps PVP or GVG."); return true; } sd->state.monster_ignore = 0; sd->state.autotrade = 1; chat->create_pc_chat(sd, "DETACH", "", 1, true); sd->sc.opt1 = OPT1_STONE; pc->setoption(sd, sd->sc.option); pc_setsit(sd); skill->sit(sd,1); clif->sitting(&sd->bl); channel->quit(sd); clif->authfail_fd(sd->fd, 15); return true; } else { clif->message(fd, "@detach is not allowed on this map."); return true; } } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("detach",detach); }
Put all .c files inside src/plugins
in the file src/plugins/makefile.in include the plugins
MYPLUGINS = show heart emotion dance hold detach
run commmand : make plugins
in file conf/plugins.conf
add plugins
plugins_list: [ /* Enable HPMHooking when plugins in use rely on Hooking */ //"HPMHooking", //"db2sql", //"sample", //"other", "show", "heart", "emotion", "dance", "hold", "detach" ] Start server, enhoy -
Habilis got a reaction from Legend in @emotion @heart @show @hold @detach
Hello, here is the adapted version of
@emotion @heart @show @hold @detach
commands so popular in the Russian eA, rA, Herc community.
I don't claim to be the Author, credit for the work goes to each mod respective Author.
I just made all of them into Hercules plugins and changed source code a little...
emotion.c
@emotion 0 - 81 without delay. Now, you can do nasty spam with emotions.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@emotion", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @emotion X by Anarchist * => Displays the emotions without delay *------------------------------------------*/ int emotion_max = 81; // Set las emotion number available forr this command ACMD(emotion) { nullpo_retr(-1, sd); char err_msg[1024]; if(!message || !*message || atoi(message)<0 || atoi(message)>emotion_max) { sprintf(err_msg, "usage: @emotion 0-%d", emotion_max); clif->message(fd, err_msg); return -1; } clif->emotion(&sd->bl,atoi(message)); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("emotion",emotion); }
heart.c
@heart 1 or 2 (heart emotion without delay)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@heart", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @heart X by Anarchist => Displays the heart special effect ------------------------------------------ */ ACMD(heart) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>2) { clif->message(fd, "usage: @heart 1 or 2"); return -1; } if(atoi(message)==1) { clif->specialeffect(&sd->bl,364,0); } else if(atoi(message)==2) { clif->specialeffect(&sd->bl,509,0); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("heart",heart); }
dance.c
@dance 1 - 8 (character perform different tricks...)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@dance", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @dance X by Anarchist => Special effects with dance style ------------------------------------------ */ ACMD(dance) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>9) { clif->message(fd, "usage: @dance 1-9"); return -1; } switch(atoi(message)) { case 1 : clif->specialeffect(&sd->bl,413,0); break; case 2 : clif->specialeffect(&sd->bl,414,0); break; case 3 : clif->specialeffect(&sd->bl,415,0); break; case 4 : clif->specialeffect(&sd->bl, 426,0); break; case 5 : clif->specialeffect(&sd->bl,458,0); break; case 6 : clif->specialeffect(&sd->bl,466,0); break; case 7 : clif->specialeffect(&sd->bl,501,0); break; case 8 : clif->specialeffect(&sd->bl,540,0); break; case 9 : clif->specialeffect(&sd->bl,550,0); break; } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("dance",dance); }
show.c
@show X Y (Displays a red dot on the minimap for the given coordinates, useful when searching for quest npc or a merchant selling needed items....)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@show", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @show by KarLaeda * => Displays the point on minimap *------------------------------------------*/ ACMD(show) { int x = 0, y = 0; nullpo_retr(-1, sd); if(!message || !*message || (sscanf(message, "%d %d", &x, &y) != 2)) { clif->message(fd, "usage: @show <x> <y>"); return -1; } clif->viewpoint(sd, 1, 1, x, y, 2, 0xFF0000); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("show",show); }
hold.c
@hold (Disables / Enables character movement, useful on low rates to Archer/Mages when leveling on immobile monsters)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@hold", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @hold by Voidless *==========================================*/ ACMD(hold) { nullpo_retr(-1, sd); if (!sd->state.blockedmove) { sd->state.blockedmove=1; clif->message(fd, "Character movement turned off"); } else { sd->state.blockedmove=0; clif->message(fd, "Character movement turned on"); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("hold",hold); }
For this plugin, I used the work : http://herc.ws/board/topic/2615-atcommand-afk/
of Mhalicot : http://herc.ws/board/user/1582-mhalicot/
To inspire myself...
detach.c
@detach (leaves character in game while client can be disconnected)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "../common/HPMi.h" #include "../common/timer.h" #include "../common/nullpo.h" #include "../map/channel.h" #include "../map/script.h" #include "../map/pc.h" #include "../map/clif.h" #include "../map/chat.h" #include "../map/battle.h" #include "../map/status.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@detach", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @detach *==========================================*/ ACMD(detach) { nullpo_retr(-1, sd); if( pc_isdead(sd) ) { clif->message(fd, "Cannot use @detach if you are dead."); return true; } if( map->list[sd->bl.m].flag.autotrade == battle->bc->autotrade_mapflag ) { if(map->list[sd->bl.m].flag.pvp || map->list[sd->bl.m].flag.gvg){ clif->message(fd, "You may not use @detach when you are on maps PVP or GVG."); return true; } sd->state.monster_ignore = 0; sd->state.autotrade = 1; chat->create_pc_chat(sd, "DETACH", "", 1, true); sd->sc.opt1 = OPT1_STONE; pc->setoption(sd, sd->sc.option); pc_setsit(sd); skill->sit(sd,1); clif->sitting(&sd->bl); channel->quit(sd); clif->authfail_fd(sd->fd, 15); return true; } else { clif->message(fd, "@detach is not allowed on this map."); return true; } } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("detach",detach); }
Put all .c files inside src/plugins
in the file src/plugins/makefile.in include the plugins
MYPLUGINS = show heart emotion dance hold detach
run commmand : make plugins
in file conf/plugins.conf
add plugins
plugins_list: [ /* Enable HPMHooking when plugins in use rely on Hooking */ //"HPMHooking", //"db2sql", //"sample", //"other", "show", "heart", "emotion", "dance", "hold", "detach" ] Start server, enhoy -
Habilis got a reaction from bWolfie in @emotion @heart @show @hold @detach
Hello, here is the adapted version of
@emotion @heart @show @hold @detach
commands so popular in the Russian eA, rA, Herc community.
I don't claim to be the Author, credit for the work goes to each mod respective Author.
I just made all of them into Hercules plugins and changed source code a little...
emotion.c
@emotion 0 - 81 without delay. Now, you can do nasty spam with emotions.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@emotion", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @emotion X by Anarchist * => Displays the emotions without delay *------------------------------------------*/ int emotion_max = 81; // Set las emotion number available forr this command ACMD(emotion) { nullpo_retr(-1, sd); char err_msg[1024]; if(!message || !*message || atoi(message)<0 || atoi(message)>emotion_max) { sprintf(err_msg, "usage: @emotion 0-%d", emotion_max); clif->message(fd, err_msg); return -1; } clif->emotion(&sd->bl,atoi(message)); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("emotion",emotion); }
heart.c
@heart 1 or 2 (heart emotion without delay)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@heart", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @heart X by Anarchist => Displays the heart special effect ------------------------------------------ */ ACMD(heart) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>2) { clif->message(fd, "usage: @heart 1 or 2"); return -1; } if(atoi(message)==1) { clif->specialeffect(&sd->bl,364,0); } else if(atoi(message)==2) { clif->specialeffect(&sd->bl,509,0); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("heart",heart); }
dance.c
@dance 1 - 8 (character perform different tricks...)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@dance", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== @dance X by Anarchist => Special effects with dance style ------------------------------------------ */ ACMD(dance) { nullpo_retr(-1, sd); if(!message || !*message || atoi(message)<0 || atoi(message)>9) { clif->message(fd, "usage: @dance 1-9"); return -1; } switch(atoi(message)) { case 1 : clif->specialeffect(&sd->bl,413,0); break; case 2 : clif->specialeffect(&sd->bl,414,0); break; case 3 : clif->specialeffect(&sd->bl,415,0); break; case 4 : clif->specialeffect(&sd->bl, 426,0); break; case 5 : clif->specialeffect(&sd->bl,458,0); break; case 6 : clif->specialeffect(&sd->bl,466,0); break; case 7 : clif->specialeffect(&sd->bl,501,0); break; case 8 : clif->specialeffect(&sd->bl,540,0); break; case 9 : clif->specialeffect(&sd->bl,550,0); break; } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("dance",dance); }
show.c
@show X Y (Displays a red dot on the minimap for the given coordinates, useful when searching for quest npc or a merchant selling needed items....)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@show", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @show by KarLaeda * => Displays the point on minimap *------------------------------------------*/ ACMD(show) { int x = 0, y = 0; nullpo_retr(-1, sd); if(!message || !*message || (sscanf(message, "%d %d", &x, &y) != 2)) { clif->message(fd, "usage: @show <x> <y>"); return -1; } clif->viewpoint(sd, 1, 1, x, y, 2, 0xFF0000); return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("show",show); }
hold.c
@hold (Disables / Enables character movement, useful on low rates to Archer/Mages when leveling on immobile monsters)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include "../common/HPMi.h" #include "../map/clif.h" #include "../map/atcommand.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/nullpo.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@hold", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @hold by Voidless *==========================================*/ ACMD(hold) { nullpo_retr(-1, sd); if (!sd->state.blockedmove) { sd->state.blockedmove=1; clif->message(fd, "Character movement turned off"); } else { sd->state.blockedmove=0; clif->message(fd, "Character movement turned on"); } return 1; } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("hold",hold); }
For this plugin, I used the work : http://herc.ws/board/topic/2615-atcommand-afk/
of Mhalicot : http://herc.ws/board/user/1582-mhalicot/
To inspire myself...
detach.c
@detach (leaves character in game while client can be disconnected)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "../common/HPMi.h" #include "../common/timer.h" #include "../common/nullpo.h" #include "../map/channel.h" #include "../map/script.h" #include "../map/pc.h" #include "../map/clif.h" #include "../map/chat.h" #include "../map/battle.h" #include "../map/status.h" #include "../common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "@detach", // Plugin name SERVER_TYPE_MAP,// Which server types this plugin works with? "0.1", // Plugin version HPM_VERSION, // HPM Version (don't change, macro is automatically updated) }; /*========================================== * @detach *==========================================*/ ACMD(detach) { nullpo_retr(-1, sd); if( pc_isdead(sd) ) { clif->message(fd, "Cannot use @detach if you are dead."); return true; } if( map->list[sd->bl.m].flag.autotrade == battle->bc->autotrade_mapflag ) { if(map->list[sd->bl.m].flag.pvp || map->list[sd->bl.m].flag.gvg){ clif->message(fd, "You may not use @detach when you are on maps PVP or GVG."); return true; } sd->state.monster_ignore = 0; sd->state.autotrade = 1; chat->create_pc_chat(sd, "DETACH", "", 1, true); sd->sc.opt1 = OPT1_STONE; pc->setoption(sd, sd->sc.option); pc_setsit(sd); skill->sit(sd,1); clif->sitting(&sd->bl); channel->quit(sd); clif->authfail_fd(sd->fd, 15); return true; } else { clif->message(fd, "@detach is not allowed on this map."); return true; } } /* Server Startup */ HPExport void plugin_init (void) { addAtcommand("detach",detach); }
Put all .c files inside src/plugins
in the file src/plugins/makefile.in include the plugins
MYPLUGINS = show heart emotion dance hold detach
run commmand : make plugins
in file conf/plugins.conf
add plugins
plugins_list: [ /* Enable HPMHooking when plugins in use rely on Hooking */ //"HPMHooking", //"db2sql", //"sample", //"other", "show", "heart", "emotion", "dance", "hold", "detach" ] Start server, enhoy -
Habilis reacted to Ridley in Gothing Lolita & French Maid
File Name: Gothing Lolita & French Maid
File Submitter: Ridley
File Submitted: 06 Jul 2016
File Category: Sprites & Palettes
Old female GM sprites - I don't know if they are available anywhere right now, but I know some people want them
Note some client protection prevents any manipulation of gm sprites.
Credits to the Author
Click here to download this file
-
Habilis reacted to bWolfie in PHP Web Ragnarok Captcha
No love yet? Well done! Very nice a great bit of interaction. Love it.
-
Habilis got a reaction from Legend in PHP Web Ragnarok Captcha
Hello, It's me again, I've been doing some stuff lately and decided to share this thing
A bot captcha
Written in PHP
It uses a set of 16 pictures
I've used PHP's GD library to generate the picture of items to click (grey set of 3 images to the right)
So, the challenge, really, is to click three images matching ones in the model.
Obviously, images appearing in the model and the order of images to chose from are random.
Obviously, chosen images disappear.
Once test passed or failed you will be shown the result....
-
Habilis got a reaction from bWolfie in PHP Web Ragnarok Captcha
Hello, It's me again, I've been doing some stuff lately and decided to share this thing
A bot captcha
Written in PHP
It uses a set of 16 pictures
I've used PHP's GD library to generate the picture of items to click (grey set of 3 images to the right)
So, the challenge, really, is to click three images matching ones in the model.
Obviously, images appearing in the model and the order of images to chose from are random.
Obviously, chosen images disappear.
Once test passed or failed you will be shown the result....
-
Habilis reacted to Alayne in Dungeon Hall
File Name: Dungeon Hall
File Submitter: Alayne
File Submitted: 25 Jun 2016
File Category: Events & Games
An advanced housing system allowing guilds to rule an entire town (including dungeons, fields, npcs...)
Click here to download this file
-
Habilis got a reaction from Vietlubu in [Dev's Diary] Minimal $ Ragnarok online server & comunity
Hello Boys and Gals
I decided to do a experiment project, on with how minimal $ input, I could make a decent
(by decent, I mean, players wouldn't want to delete the game client after 15 minutes playing)
Ragnarok Online server and Comunity
I will write it all in the Dev's Diary Format (Every entyr will follow standart : Day X : doing stuff [What I've done])
Day 1: First steps
First of all, I needed a server software. After reading few reviews, I considered Hercules as my server software, mainly for it's hardware resources management.
Then, I needed hardware. Since this is minimal $ input, I have compiled it and configured it to run on my RaspberryPi 3, which runs already a webserver, OwnCloud.
It has an UPS made out of a PowerBank (for those who are curious http://raspi-ups.appspot.com/en/index.jsp)
Not and option for you ?
- You can spend 150-200$ for a year of VPS
- Or, you could dustoff that Intel Core 2 duo that sits in your closet (im sure, for many of you, it does), it will run a server just fine...
Need to configure a home network (its actually really easy)
all I needed to do is give my server machine
- a static ip (good business practice)
- To that static IP, I needed to forward ports 3 ragnarok ports, 80/443 (80 if Im planning to host a webserver aswell, 443 if Im planning to use SSL, you know that https:// link... will be explained later in the DevsDiary...)
I decided not to host a webserver for my Ragnarok Server Comunity.
If the game server is down, I want the web site still be available...
no problem go to Google and search for free web hosting, there are many of them just suit myself....
then I went to domain registrar (I used Godaddy) and look for a .com domain for my server
.com domain grants some credibility
When I have added my .com domain to the cart
I went to google and search "cupons domain [site where I buy my domain] (in my case its godaddy)"
I got a cupon code for first year registration of .com domain for 99cents
Now I needed a website... there is plenty of website designs on these forums
I liked : https://rathena.org/board/files/file/3012-erods-unfinished-web-template/
Mainly because it was already HTML, I didn't have to slice PSDs...
since, I just want a website with basic info
a little design and there you go
I've configured the DNS of my .com domain to the free webhosting
Now everyone can access my server Website from .com domain
So far I've spent 99cents on .com domain...
Day 2: Free Hosting Limitations
The Idea behind using a freehosting, is to keep site and comunity online during Game server downtime.
Sure free hostings limit possibilities. But Im designing a strategy to bypass those limitations in one way or another...
1) Free hostings do not allow open socket (used to check server status Online/Offline)
Its actually pretty easy to bypass
Free hostings offer Cron (Planified tasks)
So I will start writing API-like software to run on the webserver on same machine as RagnarokServer
Ragnariok server Machine Free Web Hosting
Web-API (like) <--------------------- Cron job every 5 minutes with CURL call to Server machine
does open socket on 127.0.0.1
returns Plain Text Or JSON (undecided yet)
111 (1 - map is on 1- login is on 1 - char is on) -------------------------> Builds static HTML file with styling and all that good stuff
(if no reply from GameServer, Server considered offline)
WebSite just includes that static HTML
file using AJAX
True, the status is not very accurate, it has 5 minutes update lag. but its fully functionnal, no matter what crazy Limitation my free web hosting impose....
Im also thinking to add a API key concept Much like KeyChain VPN token some company give you to work from home...
My strategy is never reveal what my database connection string is....
In case a Hacker gets a webshell on that free site the only thing he will see is the
WEB-API adress and API token generation algorithm and SALT.
Im also thinking to add logging to API so if API spam or bruting attemps detected, I would just change API token Algorithm...
-
Habilis got a reaction from bWolfie in [Dev's Diary] Minimal $ Ragnarok online server & comunity
Hello Boys and Gals
I decided to do a experiment project, on with how minimal $ input, I could make a decent
(by decent, I mean, players wouldn't want to delete the game client after 15 minutes playing)
Ragnarok Online server and Comunity
I will write it all in the Dev's Diary Format (Every entyr will follow standart : Day X : doing stuff [What I've done])
Day 1: First steps
First of all, I needed a server software. After reading few reviews, I considered Hercules as my server software, mainly for it's hardware resources management.
Then, I needed hardware. Since this is minimal $ input, I have compiled it and configured it to run on my RaspberryPi 3, which runs already a webserver, OwnCloud.
It has an UPS made out of a PowerBank (for those who are curious http://raspi-ups.appspot.com/en/index.jsp)
Not and option for you ?
- You can spend 150-200$ for a year of VPS
- Or, you could dustoff that Intel Core 2 duo that sits in your closet (im sure, for many of you, it does), it will run a server just fine...
Need to configure a home network (its actually really easy)
all I needed to do is give my server machine
- a static ip (good business practice)
- To that static IP, I needed to forward ports 3 ragnarok ports, 80/443 (80 if Im planning to host a webserver aswell, 443 if Im planning to use SSL, you know that https:// link... will be explained later in the DevsDiary...)
I decided not to host a webserver for my Ragnarok Server Comunity.
If the game server is down, I want the web site still be available...
no problem go to Google and search for free web hosting, there are many of them just suit myself....
then I went to domain registrar (I used Godaddy) and look for a .com domain for my server
.com domain grants some credibility
When I have added my .com domain to the cart
I went to google and search "cupons domain [site where I buy my domain] (in my case its godaddy)"
I got a cupon code for first year registration of .com domain for 99cents
Now I needed a website... there is plenty of website designs on these forums
I liked : https://rathena.org/board/files/file/3012-erods-unfinished-web-template/
Mainly because it was already HTML, I didn't have to slice PSDs...
since, I just want a website with basic info
a little design and there you go
I've configured the DNS of my .com domain to the free webhosting
Now everyone can access my server Website from .com domain
So far I've spent 99cents on .com domain...
Day 2: Free Hosting Limitations
The Idea behind using a freehosting, is to keep site and comunity online during Game server downtime.
Sure free hostings limit possibilities. But Im designing a strategy to bypass those limitations in one way or another...
1) Free hostings do not allow open socket (used to check server status Online/Offline)
Its actually pretty easy to bypass
Free hostings offer Cron (Planified tasks)
So I will start writing API-like software to run on the webserver on same machine as RagnarokServer
Ragnariok server Machine Free Web Hosting
Web-API (like) <--------------------- Cron job every 5 minutes with CURL call to Server machine
does open socket on 127.0.0.1
returns Plain Text Or JSON (undecided yet)
111 (1 - map is on 1- login is on 1 - char is on) -------------------------> Builds static HTML file with styling and all that good stuff
(if no reply from GameServer, Server considered offline)
WebSite just includes that static HTML
file using AJAX
True, the status is not very accurate, it has 5 minutes update lag. but its fully functionnal, no matter what crazy Limitation my free web hosting impose....
Im also thinking to add a API key concept Much like KeyChain VPN token some company give you to work from home...
My strategy is never reveal what my database connection string is....
In case a Hacker gets a webshell on that free site the only thing he will see is the
WEB-API adress and API token generation algorithm and SALT.
Im also thinking to add logging to API so if API spam or bruting attemps detected, I would just change API token Algorithm...
-
Habilis got a reaction from Neo-Mind in [Dev's Diary] Minimal $ Ragnarok online server & comunity
Hello Boys and Gals
I decided to do a experiment project, on with how minimal $ input, I could make a decent
(by decent, I mean, players wouldn't want to delete the game client after 15 minutes playing)
Ragnarok Online server and Comunity
I will write it all in the Dev's Diary Format (Every entyr will follow standart : Day X : doing stuff [What I've done])
Day 1: First steps
First of all, I needed a server software. After reading few reviews, I considered Hercules as my server software, mainly for it's hardware resources management.
Then, I needed hardware. Since this is minimal $ input, I have compiled it and configured it to run on my RaspberryPi 3, which runs already a webserver, OwnCloud.
It has an UPS made out of a PowerBank (for those who are curious http://raspi-ups.appspot.com/en/index.jsp)
Not and option for you ?
- You can spend 150-200$ for a year of VPS
- Or, you could dustoff that Intel Core 2 duo that sits in your closet (im sure, for many of you, it does), it will run a server just fine...
Need to configure a home network (its actually really easy)
all I needed to do is give my server machine
- a static ip (good business practice)
- To that static IP, I needed to forward ports 3 ragnarok ports, 80/443 (80 if Im planning to host a webserver aswell, 443 if Im planning to use SSL, you know that https:// link... will be explained later in the DevsDiary...)
I decided not to host a webserver for my Ragnarok Server Comunity.
If the game server is down, I want the web site still be available...
no problem go to Google and search for free web hosting, there are many of them just suit myself....
then I went to domain registrar (I used Godaddy) and look for a .com domain for my server
.com domain grants some credibility
When I have added my .com domain to the cart
I went to google and search "cupons domain [site where I buy my domain] (in my case its godaddy)"
I got a cupon code for first year registration of .com domain for 99cents
Now I needed a website... there is plenty of website designs on these forums
I liked : https://rathena.org/board/files/file/3012-erods-unfinished-web-template/
Mainly because it was already HTML, I didn't have to slice PSDs...
since, I just want a website with basic info
a little design and there you go
I've configured the DNS of my .com domain to the free webhosting
Now everyone can access my server Website from .com domain
So far I've spent 99cents on .com domain...
Day 2: Free Hosting Limitations
The Idea behind using a freehosting, is to keep site and comunity online during Game server downtime.
Sure free hostings limit possibilities. But Im designing a strategy to bypass those limitations in one way or another...
1) Free hostings do not allow open socket (used to check server status Online/Offline)
Its actually pretty easy to bypass
Free hostings offer Cron (Planified tasks)
So I will start writing API-like software to run on the webserver on same machine as RagnarokServer
Ragnariok server Machine Free Web Hosting
Web-API (like) <--------------------- Cron job every 5 minutes with CURL call to Server machine
does open socket on 127.0.0.1
returns Plain Text Or JSON (undecided yet)
111 (1 - map is on 1- login is on 1 - char is on) -------------------------> Builds static HTML file with styling and all that good stuff
(if no reply from GameServer, Server considered offline)
WebSite just includes that static HTML
file using AJAX
True, the status is not very accurate, it has 5 minutes update lag. but its fully functionnal, no matter what crazy Limitation my free web hosting impose....
Im also thinking to add a API key concept Much like KeyChain VPN token some company give you to work from home...
My strategy is never reveal what my database connection string is....
In case a Hacker gets a webshell on that free site the only thing he will see is the
WEB-API adress and API token generation algorithm and SALT.
Im also thinking to add logging to API so if API spam or bruting attemps detected, I would just change API token Algorithm...
-
Habilis reacted to 4144 in Delay not respected
Yes lock server thread is bad idea.
If you want global delay for any player, simply add static variable in your .c file, and store last time to it. On each @emo invoke check time from this var and allow or not depend how often this command was used.
-
Habilis reacted to Dastgir in ONRRRO ? in screenshot
For newer clients:
1->8
2->6
3->7
4->0
5->1
6->2
7->4
8->9
9->5
0->3
-
Habilis reacted to Neo-Mind in ONRRRO ? in screenshot
well from what i see in the client it will be present only if your langtype is 0
The full encryption =>
0 = R
1 = O
2 = H
3 = U
4 = T
5 = N
6 = A
7 = S
8 = E
9 = W
-
Habilis reacted to Dastgir in ONRRRO ? in screenshot
Nope, there's no diff for that, that's kro normal feature.
For new clients, they are numbers
For old clients (<2014) , they are having letters..
It can be possible that some langtype(in clientinfo.xml) might not have those character codes
-
Habilis reacted to Dastgir in ONRRRO ? in screenshot
I think that's char id with simple encryption
O = 1
N = 5
R = 0
Your char id must be 150001
-
Habilis got a reaction from Mystery in Hercules on RaspberryPi 3
Hello community!
I'm new (well not so new anymore... Had server hosting experience back in 2007 with eAthena).
Well, enough of lifestories. After all, you would read a book, if you wanted a story.
So, I'm writing here just to share this proof of concept.
Running Hercules server on RaspberryPi 3 is, indeed, possible.
I've just started. So far, I've been able to setup and connect to server.
As soon as I will finish sorting out Client PreRe 2013-12-30 mess
(It is a mess, since most links are dead)
I will Invite some friends to gather feedback about their overall experience playing on the server hosted on RaspberryPi,
I thought, that could be a nice experience to share with you guys.
UPD : Ow, and I suppose, the choice of Hercules is pretty obvious ? ( back in 2007, I hosted that eAthena server on a similar spec PC as the RaspberryPi 3.)
-
Habilis got a reaction from Vitox in Hercules on RaspberryPi 3
Hello community!
I'm new (well not so new anymore... Had server hosting experience back in 2007 with eAthena).
Well, enough of lifestories. After all, you would read a book, if you wanted a story.
So, I'm writing here just to share this proof of concept.
Running Hercules server on RaspberryPi 3 is, indeed, possible.
I've just started. So far, I've been able to setup and connect to server.
As soon as I will finish sorting out Client PreRe 2013-12-30 mess
(It is a mess, since most links are dead)
I will Invite some friends to gather feedback about their overall experience playing on the server hosted on RaspberryPi,
I thought, that could be a nice experience to share with you guys.
UPD : Ow, and I suppose, the choice of Hercules is pretty obvious ? ( back in 2007, I hosted that eAthena server on a similar spec PC as the RaspberryPi 3.)