void handleLinksMsg(char* senderUsername , char* msgIn) { WDL_String msgOut ; msgOut.Set("Link order:") ; int linkIdx ; int lastUsernameIdx = LINKS_CHAT_TRIGGER_LEN ; int usernameLen = -1 ; for (linkIdx = 0 ; linkIdx < N_LINKS ; ++linkIdx) { // parse username lastUsernameIdx += usernameLen + 1 ; usernameLen = -1 ; char aChar ; do aChar = msgIn[lastUsernameIdx + (++usernameLen)] ; while (aChar && aChar != ' ') ; if (!usernameLen) return ; char username[255] ; strncpy(username , msgIn + lastUsernameIdx , usernameLen) ; username[usernameLen] = '\0' ; #if IS_CHAT_LINKS // chat full link order int userId = TeamStream::GetUserIdByName(username) ; msgOut.Append("\n") ; char linkMsg[255] ; sprintf(linkMsg , "Link %d: %s" , linkIdx + 1 , username) ; msgOut.Append(linkMsg) ; if (userId == USERID_NOBODY && strcmp(username , USERNAME_NOBODY)) msgOut.Append(" is not here") ; #else IS_CHAT_LINKS int userId = TeamStream::GetUserIdByName(username) ; #endif IS_CHAT_LINKS // set link if (!isUsernameLocal(senderUsername)) if (TeamStream::IsUserIdReal(userId)) TeamStream::SetLink(userId , username , linkIdx , true) ; else TeamStream::Set_Link_GUI(USERID_NOBODY , username , linkIdx , N_LINKS) ; } #if IS_CHAT_LINKS chat_addline(USERNAME_TEAMSTREAM , msgOut.Get()) ; #endif IS_CHAT_LINKS }
void handleVoteMsg(char* username , char* msgIn) { WDL_String msgOut(username) ; msgOut.Append(" votes to set ") ; char bpibpm[4] = "\0" ; strncpy(bpibpm , msgIn += VOTE_CHAT_MESSAGE_LEN , 3) ; msgOut.Append(bpibpm) ; msgOut.Append(" to ") ; strncpy(bpibpm , msgIn += 4 , 3) ; msgOut.Append(bpibpm) ; chat_addline(USERNAME_TEAMSTREAM , msgOut.Get()) ; }
void handleTeamStreamMsg(char* fullName , char* username , char* msgIn , bool isPrivate) { bool isEnableTeamStream = !strcmp(msgIn + TEAMSTREAM_CHAT_TRIGGER_LEN , "enabled") ; WDL_String msgOut ; msgOut.Set(username) ; msgOut.Append((isEnableTeamStream)? " is in TeamStream mode" : " is in NinJam mode") ; chat_addline(USERNAME_TEAMSTREAM , msgOut.Get()) ; int userId = TeamStream::AddUser(username , fullName) ; if (userId <= USERID_LOCAL) return ; if (!isEnableTeamStream || !TeamStream::IsTeamStreamUsernameCollision(username)) TeamStream::SetTeamStreamMode(userId , isEnableTeamStream) ; bool isFirstReply = (!TeamStream::GetNRemoteUsers()) ; if (isPrivate) { if (isFirstReply) TeamStream::SendLinksReqChatMsg(fullName) ; } else { TeamStream::SendTeamStreamChatMsg(true , fullName) ; TeamStream::SendChatColorChatMsg(true , fullName) ; } // TODO: we could combine SendTeamStreamChatMsg() with SendChatColorChatMsg() // TODO: in order for ID_TEAMSTREAM_LOAD/SAVE to work we need to check the current link order now // if (!isPrivate) and SetLink() now if match (i think this means bringing back the m_links array) // and to be sure to remove exitting users only from the listview but keep them in the array? }
void chatmsg_cb(int user32, NJClient *inst, char **parms, int nparms) { if (!parms[0]) return; if (!strcmp(parms[0],"TOPIC")) { if (parms[2]) { WDL_String tmp; if (parms[1] && *parms[1]) { tmp.Set(parms[1]); if (parms[2][0]) { tmp.Append(" sets topic to: "); tmp.Append(parms[2]); } else { tmp.Append(" removes topic."); } } else { if (parms[2][0]) { tmp.Set("Topic is: "); tmp.Append(parms[2]); } else tmp.Set("No topic is set."); } g_topic.Set(parms[2]); chat_addline("",tmp.Get()); } } else if (!strcmp(parms[0],"MSG")) { if (parms[1] && parms[2]) chat_addline(parms[1],parms[2]); } else if (!strcmp(parms[0],"PRIVMSG")) { if (parms[1] && parms[2]) { WDL_String tmp; tmp.Set("*"); tmp.Append(parms[1]); tmp.Append("* "); tmp.Append(parms[2]); chat_addline(NULL,tmp.Get()); } } else if (!strcmp(parms[0],"JOIN") || !strcmp(parms[0],"PART")) { if (parms[1] && *parms[1]) { WDL_String tmp(parms[1]); tmp.Append(" has "); tmp.Append(parms[0][0]=='P' ? "left" : "joined"); tmp.Append(" the server"); chat_addline("",tmp.Get()); } } }
void chatmsg_cb(int user32, NJClient *inst, char **parms, int nparms) { if (!parms[0]) return; char* username = TeamStream::TrimUsername(parms[1]) ; if (!strcmp(parms[0],"TOPIC")) { if (parms[2]) { WDL_String tmp; if (parms[1] && *parms[1]) { tmp.Set("<Server> ") ; tmp.Append(username) ; if (parms[2][0]) { tmp.Append(" sets topic to: "); tmp.Append(parms[2]); } else { tmp.Append(" removes topic."); } } else { if (parms[2][0]) { tmp.Set("Topic is: "); tmp.Append(parms[2]); } else tmp.Set("No topic is set."); } g_topic.Set(parms[2]); chat_addline("",tmp.Get()); } } else if (!strcmp(parms[0],"MSG")) { if (parms[1] && parms[2] && !parseChatTriggers(parms[1] , username , parms[2] , false)) chat_addline(username , parms[2]) ; } else if (!strcmp(parms[0],"PRIVMSG")) { if (parms[1] && parms[2]) { if (!parseChatTriggers(parms[1] , username , parms[2] , true)) { WDL_String tmp ; tmp.Set("<PM from ") ; tmp.Append(username) ; tmp.Append("> ") ; tmp.Append(parms[2]) ; chat_addline(NULL,tmp.Get()); } } } else if (!strcmp(parms[0],"JOIN") || !strcmp(parms[0],"PART")) { if (parms[1] && *parms[1]) { WDL_String tmp(username) ; tmp.Append(" has "); tmp.Append(parms[0][0]=='P' ? "left" : "joined"); tmp.Append(" the server"); chat_addline("",tmp.Get()); } } }