Fluffle Puff Posted July 3, 2012 Group: Members Topic Count: 29 Topics Per Day: 0.01 Content Count: 375 Reputation: 88 Joined: 12/30/11 Last Seen: May 3, 2016 Share Posted July 3, 2012 Hello there. I am not sure how to update this code. This is from eathena but I could not find the topic where I took it (for the roll back, I think...) clic.c void clif_parse_GlobalMessage(int fd, struct map_session_data* sd) { const char* text = (char*)RFIFOP(fd,4); int textlen = RFIFOW(fd,2) - 4; int gm_lvl = pc_isGM(sd); char *name, *message, *fakename = NULL; int namelen, messagelen; unsigned long player = strtoul("0x",NULL,0); //Usuario Blanco unsigned long GM20 = strtoul("0x",NULL,0); //GM level 1 azul unsigned long GM40 = strtoul("0xFC96E5",NULL,0); //GM level 2 rosado unsigned long GM60 = strtoul("0xFFA500",NULL,0); //GM level 3 to 79 color orange unsigned long GM80 = strtoul("0x00008B",NULL,0); //GM level 80 to 98 color dark blue unsigned long admin = strtoul("0xFFF200",NULL,0); //amarillo unsigned long girl = strtoul("0xFC96E5",NULL,0); //rosado suave unsigned long boy = strtoul("0x",NULL,0); //azul suave unsigned long god = strtoul("0xFF0000",NULL,0); //rojo bool is_fake; // validate packet and retrieve name and message if( !clif_process_message(sd, 0, &name, &namelen, &message, &messagelen) ) return; if( is_atcommand(fd, sd, message, 1) ) return; if( sd->sc.data[sC_BERSERK] || (sd->sc.data[sC_NOCHAT] && sd->sc.data[sC_NOCHAT]->val1&MANNER_NOCHAT) ) return; if( battle_config.min_chat_delay ) { //[skotlex] if (DIFF_TICK(sd->cantalk_tick, gettick()) > 0) return; sd->cantalk_tick = gettick() + battle_config.min_chat_delay; } /** * Fake Name Design by FatalEror (bug report #9) **/ if( ( is_fake = ( sd->fakename[0] ) ) ) { fakename = (char*) malloc(strlen(sd->fakename)+messagelen+3); strcpy(fakename, sd->fakename); strcat(fakename, " : "); strcat(fakename, message); textlen = strlen(fakename) + 1; } // send message to others (using the send buffer for temp. storage) WFIFOHEAD(fd, 12 + textlen); WFIFOW(fd,0) = 0x2C1; WFIFOW(fd,2) = 12 + textlen; WFIFOL(fd,4) = sd->bl.id; if(gm_lvl == 100){ WFIFOL(fd,8) = (god & 0x0000FF) << 16 | (god & 0x00FF00) | (god & 0xFF0000) >> 16; } else if(gm_lvl == 99){ WFIFOL(fd,8) = (admin & 0x0000FF) << 16 | (admin & 0x00FF00) | (admin & 0xFF0000) >> 16; } else if (gm_lvl==0 && sd->status.sex==0) { WFIFOL(fd,8) = (girl & 0x0000FF) << 16 | (girl & 0x00FF00) | (girl & 0xFF0000) >> 16; } else if (gm_lvl==0 && sd->status.sex==1) { WFIFOL(fd,8) = (boy & 0x0000FF) << 16 | (boy & 0x00FF00) | (boy & 0xFF0000) >> 16; } else if (gm_lvl==1 && sd->status.sex==1) { WFIFOL(fd,8) = (GM20 & 0x0000FF) << 16 | (GM20 & 0x00FF00) | (GM20 & 0xFF0000) >> 16; } else if (gm_lvl==2 && sd->status.sex==0) { WFIFOL(fd,8) = (GM40 & 0x0000FF) << 16 | (GM40 & 0x00FF00) | (GM40 & 0xFF0000) >> 16; } else if (gm_lvl >=3 && gm_lvl <= 79) { WFIFOL(fd,8) = (GM60 & 0x0000FF) << 16 | (GM60 & 0x00FF00) | (GM60 & 0xFF0000) >> 16; } else if (gm_lvl >=80 && gm_lvl <= 98) { WFIFOL(fd,8) = (GM80 & 0x0000FF) << 16 | (GM80 & 0x00FF00) | (GM80 & 0xFF0000) >> 16; } safestrncpy((char*)WFIFOP(fd,12), is_fake ? fakename : text, textlen); //FIXME: chat has range of 9 only clif_send(WFIFOP(fd,0), WFIFOW(fd,2), &sd->bl, sd->chatID ? CHAT_WOS : AREA_CHAT_WOC); // send back message to the speaker if( is_fake ) { WFIFOW(fd,0) = 0x8e; WFIFOW(fd,2) = textlen + 4; safestrncpy((char*)WFIFOP(fd,4), fakename, textlen); } else { memcpy(WFIFOP(fd,0), RFIFOP(fd,0), RFIFOW(fd,2)); WFIFOW(fd,0) = 0x8e; //WFIFOW(fd,0) = 0x2C1; } WFIFOSET(fd, WFIFOW(fd,2)); #ifdef PCRE_SUPPORT // trigger listening npcs map_foreachinrange(npc_chat_sub, &sd->bl, AREA_SIZE, BL_NPC, text, textlen, &sd->bl); #endif // Chat logging type 'O' / Global Chat log_chat(LOG_CHAT_GLOBAL, 0, sd->status.char_id, sd->status.account_id, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y, NULL, message); return; } thanks Quote Link to comment Share on other sites More sharing options...
Tragedy Posted July 3, 2012 Group: Members Topic Count: 1 Topics Per Day: 0.00 Content Count: 37 Reputation: 11 Joined: 11/10/11 Last Seen: March 26, 2021 Share Posted July 3, 2012 (edited) It's the "Custom chat color for global chat"? Edito: Veo que hablas español asi que mas facil.. Ya vi que si es el Custom chat color for global chat... Lo adapte a Rathena... Testealo y me dices que tal te va (No tuve oportunidad de probarlo pero no me dio ningun error al compilar) Clif.C /// Validates and processes global messages /// 008c <packet len>.W <text>.?B (<name> : <message>) 00 (CZ_REQUEST_CHAT) /// There are various variants of this packet. void clif_parse_GlobalMessage(int fd, struct map_session_data* sd) { const char* text = (char*)RFIFOP(fd,4); int textlen = RFIFOW(fd,2) - 4; int gm_lvl = pc_get_group_level(sd); char *name, *message, *fakename = NULL; int namelen, messagelen; unsigned long player = strtoul("0x55AE3A",NULL,0); //normal player color leaf unsigned long GM20 = strtoul("0xFFA500",NULL,0); //GM level 20 to 39 color orange unsigned long GM40 = strtoul("0xCD00CD",NULL,0); //GM level 40 to 59 color magenta3 unsigned long GM60 = strtoul("0x006400",NULL,0); //GM level 60 to 79 color dark green unsigned long GM80 = strtoul("0x00008B",NULL,0); //GM level 80 to 98 color dark blue unsigned long admin = strtoul("0xFF0000",NULL,0); //Admin color red bool is_fake; // validate packet and retrieve name and message if( !clif_process_message(sd, 0, &name, &namelen, &message, &messagelen) ) return; if( is_atcommand(fd, sd, message, 1) ) return; if( sd->sc.data[sC_BERSERK] || (sd->sc.data[sC_NOCHAT] && sd->sc.data[sC_NOCHAT]->val1&MANNER_NOCHAT) ) return; if( battle_config.min_chat_delay ) { //[skotlex] if (DIFF_TICK(sd->cantalk_tick, gettick()) > 0) return; sd->cantalk_tick = gettick() + battle_config.min_chat_delay; } /** * Fake Name Design by FatalEror (bug report #9) **/ if( ( is_fake = ( sd->fakename[0] ) ) ) { fakename = (char*) aMalloc(strlen(sd->fakename)+messagelen+3); strcpy(fakename, sd->fakename); strcat(fakename, " : "); strcat(fakename, message); textlen = strlen(fakename) + 1; } // send message to others (using the send buffer for temp. storage) WFIFOHEAD(fd, 12 + textlen); WFIFOW(fd,0) = 0x2C1; WFIFOW(fd,2) = 12 + textlen; WFIFOL(fd,4) = sd->bl.id; if(gm_lvl == 99){ WFIFOL(fd,8) = (admin & 0x0000FF) << 16 | (admin & 0x00FF00) | (admin & 0xFF0000) >> 16; } else if (gm_lvl==0){ WFIFOL(fd,8) = (player & 0x0000FF) << 16 | (player & 0x00FF00) | (player & 0xFF0000) >> 16; } else if (gm_lvl >=20 && gm_lvl<=39) { WFIFOL(fd,8) = (GM20 & 0x0000FF) << 16 | (GM20 & 0x00FF00) | (GM20 & 0xFF0000) >> 16; } else if (gm_lvl >=40 && gm_lvl <= 59) { WFIFOL(fd,8) = (GM40 & 0x0000FF) << 16 | (GM40 & 0x00FF00) | (GM40 & 0xFF0000) >> 16; } else if (gm_lvl >=60 && gm_lvl <= 79) { WFIFOL(fd,8) = (GM60 & 0x0000FF) << 16 | (GM60 & 0x00FF00) | (GM60 & 0xFF0000) >> 16; } else if (gm_lvl >=80 && gm_lvl <= 98) { WFIFOL(fd,8) = (GM80 & 0x0000FF) << 16 | (GM80 & 0x00FF00) | (GM80 & 0xFF0000) >> 16; } safestrncpy((char*)WFIFOP(fd,8), is_fake ? fakename : text, textlen); //FIXME: chat has range of 9 only clif_send(WFIFOP(fd,0), WFIFOW(fd,2), &sd->bl, sd->chatID ? CHAT_WOS : AREA_CHAT_WOC); // send back message to the speaker if( is_fake ) { WFIFOW(fd,0) = 0x8e; WFIFOW(fd,2) = textlen + 4; safestrncpy((char*)WFIFOP(fd,4), fakename, textlen); aFree(fakename); } else { memcpy(WFIFOP(fd,0), RFIFOP(fd,0), RFIFOW(fd,2)); WFIFOW(fd,0) = 0x8e; } WFIFOSET(fd, WFIFOW(fd,2)); #ifdef PCRE_SUPPORT // trigger listening npcs map_foreachinrange(npc_chat_sub, &sd->bl, AREA_SIZE, BL_NPC, text, textlen, &sd->bl); #endif // Chat logging type 'O' / Global Chat log_chat(LOG_CHAT_GLOBAL, 0, sd->status.char_id, sd->status.account_id, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y, NULL, message); } Solo remplaza y listo Saludos! Edited July 4, 2012 by Tragedy Quote Link to comment Share on other sites More sharing options...
Mystery Posted July 4, 2012 Group: Members Topic Count: 94 Topics Per Day: 0.02 Content Count: 2192 Reputation: 253 Joined: 11/11/11 Last Seen: June 24, 2020 Share Posted July 4, 2012 Last time I checked, this was an English section.. What did you just say? ;S Did you fix the code? Quote Link to comment Share on other sites More sharing options...
Fluffle Puff Posted July 5, 2012 Group: Members Topic Count: 29 Topics Per Day: 0.01 Content Count: 375 Reputation: 88 Joined: 12/30/11 Last Seen: May 3, 2016 Author Share Posted July 5, 2012 @Tragedy, Thanks, I haven't tested it but I will and I will let you know if I have problems. @Mysterious, I said It would be wonderful If I could leave the link where I have found it but I could not find it in eA forum. Quote Link to comment Share on other sites More sharing options...
Tragedy Posted July 5, 2012 Group: Members Topic Count: 1 Topics Per Day: 0.00 Content Count: 37 Reputation: 11 Joined: 11/10/11 Last Seen: March 26, 2021 Share Posted July 5, 2012 Last time I checked, this was an English section.. What did you just say? ;S Did you fix the code? Oh Srry! I forgot it >__< @Alexandria Here is the eathena link (Using "Google Webcache") http://webcache.googleusercontent.com/search?q=cache:WfihHl9yDvwJ:www.eathena.ws/board/index.php%3Fshowtopic%3D278921+color+global+chat+eathena&cd=1&hl=es-419&ct=clnk&gl=mx Quote Link to comment Share on other sites More sharing options...
Fluffle Puff Posted July 6, 2012 Group: Members Topic Count: 29 Topics Per Day: 0.01 Content Count: 375 Reputation: 88 Joined: 12/30/11 Last Seen: May 3, 2016 Author Share Posted July 6, 2012 @Tragedy It does not work. All colours are black. It does matter what level you are. Quote Link to comment Share on other sites More sharing options...
Tragedy Posted July 7, 2012 Group: Members Topic Count: 1 Topics Per Day: 0.00 Content Count: 37 Reputation: 11 Joined: 11/10/11 Last Seen: March 26, 2021 Share Posted July 7, 2012 @Tragedy It does not work. All colours are black. It does matter what level you are. Black or white? o.O btw... I'm gonna test the code Regards Quote Link to comment Share on other sites More sharing options...
Fluffle Puff Posted July 7, 2012 Group: Members Topic Count: 29 Topics Per Day: 0.01 Content Count: 375 Reputation: 88 Joined: 12/30/11 Last Seen: May 3, 2016 Author Share Posted July 7, 2012 @Tragedy, My name is shown as andria and not as Alexandria, it is not a red color, it is a green black color. any help will be appreciated Quote Link to comment Share on other sites More sharing options...
clydelion Posted July 24, 2012 Group: Members Topic Count: 17 Topics Per Day: 0.00 Content Count: 754 Reputation: 186 Joined: 05/22/12 Last Seen: October 15, 2022 Share Posted July 24, 2012 Just for other's reference..this has been solved.. Here's the diff working in rathena. GlobalMessagecolors_rathena16424.diff Quote Link to comment Share on other sites More sharing options...
Yahiko Posted September 7, 2012 Group: Members Topic Count: 4 Topics Per Day: 0.00 Content Count: 81 Reputation: 14 Joined: 08/17/12 Last Seen: April 19, 2013 Share Posted September 7, 2012 (edited) nevermind i'm using rathena now xD Edited February 22, 2013 by Yahiko Quote Link to comment Share on other sites More sharing options...
Question
Fluffle Puff
Hello there.
I am not sure how to update this code.
This is from eathena but I could not find the topic where I took it (for the roll back, I think...)
clic.c
thanks
Link to comment
Share on other sites
9 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.