clif.cpp
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, message, messagelen))
if (!clif_process_message(sd, true, name, message, fakename))
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);
}
1>clif.cpp
1>D:\Emulador\src\map\clif.cpp(11429,6): warning C4101: 'namelen': variável local não referenciada
1>D:\Emulador\src\map\clif.cpp(11439): warning C4700: variável local não inicializada 'message' usada
1>D:\Emulador\src\map\clif.cpp(11439): warning C4700: variável local não inicializada 'name' usada
1>D:\Emulador\src\map\clif.cpp(11455): warning C4700: variável local não inicializada 'messagelen' usada
1>map-server.vcxproj -> D:\Emulador\map-server.exe
Question
brunoshp
i have this, but dont work, someone can help!?
clif.cpp 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, message, messagelen)) if (!clif_process_message(sd, true, name, message, fakename)) 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); }
1>clif.cpp 1>D:\Emulador\src\map\clif.cpp(11429,6): warning C4101: 'namelen': variável local não referenciada 1>D:\Emulador\src\map\clif.cpp(11439): warning C4700: variável local não inicializada 'message' usada 1>D:\Emulador\src\map\clif.cpp(11439): warning C4700: variável local não inicializada 'name' usada 1>D:\Emulador\src\map\clif.cpp(11455): warning C4700: variável local não inicializada 'messagelen' usada 1>map-server.vcxproj -> D:\Emulador\map-server.exe
Link to comment
Share on other sites
0 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.