viewing paste Unknown #18710 | C#

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
// Oxxy (C) 2015, HPM plugin.
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#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 <color>");
        clif->message(fd, "<color> 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);
}
Viewed 650 times, submitted by Guest.