Ir para conteúdo
  • Cadastre-se

(Resolvido)[duvida]BordCast message com o nome do player


Ir para solução Resolvido por Caronte,

Posts Recomendados

Boa tarde galera do TK, eu entendo de programação mas sou uma anta quadrada em.lua, estava desenvolvendo uma coisa simples pra um servidor em desenvolvimento e me deparei com a seguinte dúvida, como fazer pra quando um player usar um item aparecer o nome dele então tipo parei na seguinte coisa:

 

"function onSay(cid, words, param)
 
if(getPlayerItemCount(cid, 9971) > 0) then
doPlayerRemoveItem(cid, 9971, 1)
doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
doBroadcastMessage("Parabéns")
end
end"
 
alguém me da uma help em como fazer aparecer o nome do player e a vocação... eu acho que tem a ver com "getVocationName e getPlayername"...
 
Link para o post
Compartilhar em outros sites

usar esse getPlayerVocationName(cid) e para manda messagen usar esses doPlayerSendCancel(cid,"mesagem") ou doPlayerSendTextMessage(cid, 27,"mesagem").

Link para o post
Compartilhar em outros sites
  • Solução

O

doBroadcastMessage("Parabéns")

Não é o ideal para essa ocasião, e mesmo assim, não é assim que se usa.

 

é assim:

doBroadcastMessage(message, type)

e no type, tem que colocar isso:

MESSAGE_FIRST = 18
MESSAGE_STATUS_CONSOLE_RED = MESSAGE_FIRST
MESSAGE_EVENT_ORANGE = 19
MESSAGE_STATUS_CONSOLE_ORANGE = 20
MESSAGE_STATUS_WARNING = 21
MESSAGE_EVENT_ADVANCE = 22
MESSAGE_EVENT_DEFAULT = 23
MESSAGE_STATUS_DEFAULT = 24
MESSAGE_INFO_DESCR = 25
MESSAGE_STATUS_SMALL = 26
MESSAGE_STATUS_CONSOLE_BLUE = 27
MESSAGE_LAST = MESSAGE_STATUS_CONSOLE_BLUE

E nesse caso, irá mandar para o servidor inteiro !

 

 

 

 

Mas se você quer fazer isso para o player...

 

 

se for para o player falar em laranja é assim:

doCreatureSay(cid,'Parabens '..getCreatureName(cid)..' voce ganhou a 'getPlayerVocationName(cid)' vocation', TALKTYPE_ORANGE_1)

Prefere assim  ?

ou uma mensagem pro servidor inteiro ?

ou quer uma que só o player veja no console ? (doPlayerSendTextMessage(cid, type,mensagem)

Editado por Caronte (veja o histórico de edições)

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

queria pro server todo... esse cid significa algum parametro? se sim, qual? ou apenas um tipo de variável presente dentro da função?

Link para o post
Compartilhar em outros sites

cid -> creature ID. É quem executa a ação. Neste caso, cid é um parâmetro do callback onSay.

PS: Na função doBroadcastMessage, o parâmetro type não é obrigatório. Caso ele não seja especificado, o tipo tomado como padrão é o MESSAGE_STATUS_CONSOLE_RED (mensagem vermelha).

Para enviar a mensagem para o servidor todo, você pode usar:

doBroadcastMessage("O jogador "..getCreatureName(cid).." obteve a vocação "..getPlayerVocationName(cid)..".")

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

entendi, obrigado, fica até mais fácil agora entender algumas coisas dos códigos e escrever os meus próprios.... aprender uma linguagem nova é sempre bem legal rs..... mas será que existe um tradutor de C ou C++ pra lua?

 

outra coisa, eu  estava vendo uns tópicos aqui no TK e vi o seguinte código para fazer o npc q desse a promotion:

 

 

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

function onCreatureAppear(cid)    npcHandler:onCreatureAppear(cid)end

function onCreatureDisappear(cid)    npcHandler:onCreatureDisappear(cid)end
function onCreatureSay(cid, type, msg)    npcHandler:onCreatureSay(cid, type, msg)end
function onThink()    npcHandler:onThink()end

function npcPromotion(cid, message, keywords, parameters, node)

if(not npcHandler:isFocused(cid)) then
        return false
    end

if (isPremium(cid)) then
if (getPlayerLevel(cid) >= 100) then
if (getPlayerVocation(cid) >= 5 and getPlayerVocation(cid) <=8) then
    if doRemoveItem(cid, 9971, 1) then
     doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
     doPlayerSendTextMessage(cid, 20, "Voce é um ".. getPlayerVocationName(cid) .."!")
    else
     doPlayerSendTextMessage(cid, 20, "Voce nao possui o item desejado!")
    end
else
     doPlayerSendTextMessage(cid, 20, "Voce não possui a promotion anterior ou já esta promovido.")
end
else
doPlayerSendTextMessage(cid, 20, "Voce nao possui level para ser promovido.")
end
else
doPlayerSendTextMessage(cid, 20, "Voce nao possui premmium account.")
end
end

local node1 = keywordHandler:addKeyword({'high promotion'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can promotion you if you give me a '.. getItemName(9971) ..'. Do you want me to promote you?'})
    node1:addChildKeyword({'yes'}, npcPromotion, {})
    node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then.', reset = true})

npcHandler:addModule(FocusModule:new())   
Editado por katu (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

E ???

---

Acho melhor dar o tópico como resolvido, uma vez que não restam dúvidas relacionadas a principal, clique no post de melhor resposta...

A minha explicação deu pra aplicar e colocar no broadcast??

Editado por Caronte (veja o histórico de edições)

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

Amigo não existe tradutor algum.. já que as duas linguagens são a msm coisa... só que uma é aplicada para um proposito outra para outro... O que muda é a sintaxe basica das funções que tu pode encontrar aki https://www.google.com/url?q=http://www.tibiaking.com/forum/topic/1988-lista-de-funcoes-lua/&sa=U&ei=m5TBVOCaLuir7AakMQ&ved=0CAYQFjAA&client=internal-uds-cse&usg=AFQjCNGGUjUKih2JQqccSicEvzoonBeIWA

Scripter: |||||||||| 10%

 

 

Te ajudei?? REP + e ficamos quites...  ;D

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

a desculpa eu havia editado mas n apareceu, o que eu quis dizer no comentário ali em cima é que há um erro nesse código ele não aumenta PlayerVocation(cid) em 4, tipo ele fala tranquilamente depois q vc tira o getItemName (tava dando erro)... como consertar???

 

 

EDIT------------------------------

 

caronte, o trecho 

 

 

doCreatureSay(cid,'Parabens '..getCreatureName(cid)..' voce ganhou a 'getPlayerVocationName(cid)' vocation', TALKTYPE_ORANGE_1)

 

não está funfando, não acontece nada '-'

 

fica assim:

 

function onSay(cid, words, param)

 
if(getPlayerItemCount(cid, 9971) > 0) then
doPlayerRemoveItem(cid, 9971, 1)
doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
doCreatureSay(cid,'Parabens '..getCreatureName(cid)..' voce ganhou a 'getPlayerVocationName(cid)' vocation', TALKTYPE_ORANGE_1)
end
end
 
Editado por katu (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

a desculpa eu havia editado mas n apareceu, o que eu quis dizer no comentário ali em cima é que há um erro nesse código ele não aumenta PlayerVocation(cid) em 4, tipo ele fala tranquilamente depois q vc tira o getItemName (tava dando erro)... como consertar???

 

 

EDIT------------------------------

 

caronte, o trecho 

 

não está funfando, não acontece nada '-'

 

fica assim:

 

Velho ta mto confuso oque tu falou seja mais claro porfavor.

Scripter: |||||||||| 10%

 

 

Te ajudei?? REP + e ficamos quites...  ;D

 

Atenciosamente,

                   Lucas.

Abraços!

Link para o post
Compartilhar em outros sites

a desculpa eu havia editado mas n apareceu, o que eu quis dizer no comentário ali em cima é que há um erro nesse código ele não aumenta PlayerVocation(cid) em 4, tipo ele fala tranquilamente depois q vc tira o getItemName (tava dando erro)... como consertar???

 

 

EDIT------------------------------

 

caronte, o trecho 

 

não está funfando, não acontece nada '-'

 

fica assim:

 

 

Que erro dá ? 

Tem que dá certo :angry:

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites
function onSay(cid, words, param)
if(getPlayerItemCount(cid, 9971) > 0) then
doPlayerRemoveItem(cid, 9971, 1)
doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
doCreatureSay(cid, "Parabens "..getCreatureName(cid).." voce ganhou a "..getPlayerVocationName(cid).." vocation", TALKTYPE_ORANGE_1)
end
end

#EDIT

Faz um favor:

Nessa parte do Script:

doPlayerSetVocation(cid, getPlayerVocation(cid)+4)

Assim que você receber essa Vocation, deslogue ou feche o servidor e logue ou abra novamente o servidor pra vê se continua com a Vocation que recebeu. Já vi algumas pessoas reclamando que sempre que usa a função assim, ele costuma dar erro.

Editado por Frenesy (veja o histórico de edições)

cms1-pr%C3%AAmio.png

Link para o post
Compartilhar em outros sites
function onSay(cid, words, param)
if(getPlayerItemCount(cid, 9971) > 0) then
doPlayerRemoveItem(cid, 9971, 1)
doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
doCreatureSay(cid, "Parabens "..getCreatureName(cid).." voce ganhou a "..getPlayerVocationName(cid).." vocation", TALKTYPE_ORANGE_1)
end
end

acabei de fazer isso kkkkk , mas obrigado mesmo assim, deu certo, to me acostumando com a estrutura ainda rs... perfeito

 

-------------------------------------

 

agora fico só com a duvida do npc, ele não ta dando a vocation, como o que está errado?

Link para o post
Compartilhar em outros sites

A Dúvida central do tópico já foi resolvida, creio que seja melhor você criar outro tópico, pois essa já é outra dúvida...

 

Clique em: melhorresposta_bxmmfp.png

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

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