Postado Dezembro 1, 2018 6 anos Olá, pensei em em criar um channel tipo party, help etc, mas que só apareça as Raids lá e os players não consigam mandar msg, alguém pode ajudar? Uso TFS 1.3. Aqui seria o exemplo de lua que poderia usar local function sendMessage(cid) local player = Player(cid) if not player then return false end player:sendChannelMessage("", "Welcome to the Main Channel.\nHere you can advertise all kinds of things. Among others, advertise ingame events, seek characters for a quest or a hunting group, find members for your guild or look for somebody to help you with something.", TALKTYPE_CHANNEL_O, 10) end function onJoin(player) addEvent(sendMessage, 100, player:getId()) return true end function onSpeak(player, type, message) local playerAccountType = player:getAccountType() if player:getLevel() == 1 and playerAccountType < ACCOUNT_TYPE_GAMEMASTER then player:sendCancelMessage("You may not speak into channels as long as you are on level 1.") return false end if type == TALKTYPE_CHANNEL_Y then if playerAccountType >= ACCOUNT_TYPE_GAMEMASTER then type = TALKTYPE_CHANNEL_O end elseif type == TALKTYPE_CHANNEL_O then if playerAccountType < ACCOUNT_TYPE_GAMEMASTER then type = TALKTYPE_CHANNEL_Y end elseif type == TALKTYPE_CHANNEL_R1 then if playerAccountType < ACCOUNT_TYPE_GAMEMASTER and not getPlayerFlagValue(player, PlayerFlag_CanTalkRedChannel) then type = TALKTYPE_CHANNEL_Y end end return type end Editado Dezembro 1, 2018 6 anos por Jobs (veja o histórico de edições)
Postado Dezembro 1, 2018 6 anos Solução Opa eai @Jobs, beleza? Fiz aqui rapidinho, testa ai meu bom! raids.cpp Procure : extern ConfigManager g_config; Adicione isso abaixo : extern Chat* g_chat; Agora no mesmo arquivo, procure : g_game.broadcastMessage(message, messageType); Remova e adicione isso no lugar : ChatChannel* channel = g_chat->getChannelById(0x14/*CHANNEL_RAID*/); channel->sendToAll(message, TALKTYPE_CHANNEL_W); data/chatchannels/chatchannels.xml <channel id="20" name="Raid Channel" script="raid.lua" /> data/chatchannels/scripts/raid.lua function onSpeak(player, type, message) return false end Isso deve enviar mensagens de Raid diretamente para o Channel 20 ao invés de um broadcastMessage, não sei se era isso que você queria mas espero que sim haha. Abraços!
Postado Dezembro 2, 2018 6 anos Autor 17 horas atrás, Lyu disse: Opa eai @Jobs, beleza? Fiz aqui rapidinho, testa ai meu bom! raids.cpp Procure : extern ConfigManager g_config; Adicione isso abaixo : extern Chat* g_chat; Agora no mesmo arquivo, procure : g_game.broadcastMessage(message, messageType); Remova e adicione isso no lugar : ChatChannel* channel = g_chat->getChannelById(0x14/*CHANNEL_RAID*/); channel->sendToAll(message, TALKTYPE_CHANNEL_W); data/chatchannels/chatchannels.xml <channel id="20" name="Raid Channel" script="raid.lua" /> data/chatchannels/scripts/raid.lua function onSpeak(player, type, message) return false end Isso deve enviar mensagens de Raid diretamente para o Channel 20 ao invés de um broadcastMessage, não sei se era isso que você queria mas espero que sim haha. Abraços! Era isso mesmo que eu queria, mas deu um erro aqui na compilação. /home/otserv/source/src/raids.cpp: In member function ‘virtual bool AnnounceEvent::executeEvent()’: /home/otserv/source/src/raids.cpp:347:30: error: ‘TALKTYPE_CHANNEL_W’ was not declared in this scope channel->sendToAll(message, TALKTYPE_CHANNEL_W);
Postado Dezembro 2, 2018 6 anos 6 horas atrás, Jobs disse: Era isso mesmo que eu queria, mas deu um erro aqui na compilação. /home/otserv/source/src/raids.cpp: In member function ‘virtual bool AnnounceEvent::executeEvent()’: /home/otserv/source/src/raids.cpp:347:30: error: ‘TALKTYPE_CHANNEL_W’ was not declared in this scope channel->sendToAll(message, TALKTYPE_CHANNEL_W); A constante para mensagens brancas deve ser diferente em protocolos mais atuais, de qualquer forma, troca TALKTYPE_CHANNEL_W por TALKTYPE_CHANNEL_O que resolve.
Postado Dezembro 2, 2018 6 anos Autor 17 minutos atrás, Lyu disse: A constante para mensagens brancas deve ser diferente em protocolos mais atuais, de qualquer forma, troca TALKTYPE_CHANNEL_W por TALKTYPE_CHANNEL_O que resolve. Funcionou perfeitamente, obrigado novamente brother!
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.