// Oxxy (C) 2015, HPM plugin. #include #include #include #include "../common/HPMi.h" #include "../common/malloc.h" #include "../common/mmo.h" #include "../common/socket.h" #include "../common/strlib.h" #include "../map/clif.h" #include "../map/script.h" #include "../map/pc.h" #include "../common/HPMDataCheck.h" /* should always be the last file included! (if you don't make it last, it'll intentionally break compile time) */ HPExport struct hplugin_info pinfo = { "Chat Color", // 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) }; ACMD(color) { if(!message || !*message) { clif->message(fd, "Usage: @color "); clif->message(fd, " must be in hex format. Starting with 0x"); clif->message(fd, "Example: @color 0x00FF00"); if(pc_readglobalreg_str(sd,script->add_str("CHAT_COLOR$")) = "") { clif->message(fd, "Defaulting your color to green."); pc_setglobalreg_str(sd, script->add_str("CHAT_COLOR$"), "0x000000"); return 1; } return -1; } else { pc_setglobalreg_str(sd, script->add_str("CHAT_COLOR$"), message); clif->message(fd, "Color has been set."); } return 1; } int messageSending(int *fd, struct map_session_data* sd) { const char* text = (char*)RFIFOP(fd,4); char mout[200]; unsigned char mylen = 1; char *name, *message, *fakename = NULL; size_t namelen, messagelen; unsigned long *color1, color2; char *tmp = pc_readglobalreg_str(sd, script->add_str("CHAT_COLOR$")); if(tmp != NULL) color2 = strtoul(tmp, NULL, 0); mylen += snprintf(mout, 200, "%s : %s",sd->fakename[0]?sd->fakename:sd->status.name,message); if(color2 1= "") // if CHAT_COLOR$ != "" WFIFOL(*fd,8) = (color2&0x0000FF) << 16 | (color2&0x00FF00) | (color2&0xFF0000) >> 16; // RGB -> BGR else // if CHAT_COLOR == "" WFIFOL(*fd,8) = (color1&0x0000FF) << 16 | (color1&0x00FF00) | (color1&0xFF0000) >> 16; // RGB -> BGR safestrncpy((char*)WFIFOP(*fd,12), *mout, *mylen); clif->send(WFIFOP(fd,0), WFIFOW(fd,2), &sd->bl, AREA_WOS); } HPExport void plugin_init (void) { char *server_type; char *server_name; /* core vars */ server_type = GET_SYMBOL("SERVER_TYPE"); server_name = GET_SYMBOL("SERVER_NAME"); iMalloc = GET_SYMBOL("iMalloc"); script = GET_SYMBOL("script"); clif = GET_SYMBOL("clif"); pc = GET_SYMBOL("pc"); addAtcommand("color", color); //addScriptCommand("color","is",color) addHookPre("clif_globalmessage", messageSending); } HPExport void server_online (void) { ShowInfo ("'%s' Plugin by Oxxy. Version '%s'\n",pinfo.name,pinfo.version); }