Ir para conteúdo
  • Cadastre-se

(Resolvido)Raid-Channel


Ir para solução Resolvido por Lyu,

Posts Recomendados

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 por Jobs (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 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!

Link para o post
Compartilhar em outros sites
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);

 

Link para o post
Compartilhar em outros sites
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.

Link para o post
Compartilhar em outros sites
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!

image.png.0d562fbb305393a16e1b7b82ce1018f5.png

Link para o post
Compartilhar em outros sites
5 minutos atrás, Calidoress disse:

@Lyu e possible configurar no tfs 0.4?

 

Só se adaptar, porque esse foi feito baseado em tfs 1.3

Link para o post
Compartilhar em outros sites
  • 1 year later...

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo