KR

[Pedido] Npc Que Troca De Gênero

Por kriller12, 14 de abr. de 2012 em Scripts

otserv
tibia
script
8
1.5k
kriller12K
14 de abril de 2012 às 11:48

Olá, como o título já diz preciso da ajudinha do xtibia para a script de um npc.

 

-->Oque eu preciso?

R: De um npc que troque o jogador de sexo.Eu dou uma certa quantidade de dinheiro (ou moeda vip,diamonds ou algo do tipo) ai ele me troca de sexo.

 

Alguem pode me ajudar?

VodkartV
14 de abril de 2012 às 16:32

afinal, é por item ou por dinheiro? ou pelos 2?

kriller12K
14 de abril de 2012 às 16:36

Por item

VodkartV
14 de abril de 2012 às 18:05
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
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 creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
local msg = string.lower(msg)
local config = {itemid = 9020,cost = 15}
if msgcontains(msg, 'sex') then
npcHandler:say("Você quer mudar de sexo por "..config.cost.." "..getItemNameById(config.itemid).." ? {yes}", cid)
talkState[talkUser] = 1
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
if doPlayerRemoveItem(cid,config.itemid,config.cost) == TRUE then
doPlayerSetSex(cid, getPlayerSex(cid) == PLAYERSEX_FEMALE and PLAYERSEX_MALE or PLAYERSEX_FEMALE)
npcHandler:say("Parabéns, você mudou de sexo com sucesso", cid)
else
npcHandler:say("Desculpe, Você não tem "..config.cost.." "..getItemNameById(config.itemid).." !", cid)
end
elseif msg == "no" then  
selfSay("Then not", cid)  
talkState[talkUser] = 0  
npcHandler:releaseFocus(cid)  
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

kriller12K
14 de abril de 2012 às 18:33

Muito bom.Totalmente funcional!!!

Não vou dar REP+ porque já gastei o de hj, más está garantido amanhã.

 

-->Queria saber c tem como colocar para ele falar na aba (NPCs)?

 

post-337397-0-57652800-1334439159_thumb.jpg

 

VodkartV
14 de abril de 2012 às 18:47

Mas ele está configurado para falar na aba do npc

 

npcHandler:say("msg", cid)

 

o "cid" faz com que a mensagem seja aberta nessa aba!

 

kIM4z.png

kriller12K
15 de abril de 2012 às 13:30

Bom depois desse seu ultimo post eu resolvi me aprofuntar e responder a pergunta:

 

-->Porque o npc não queria falar no local correto?

Então resolvi comparar a script do seu npc, com outro npc que eu tinha e falava no local correto e descobri que:

 

Aqui quando eu colocava:

npcHandler:say("msg", cid)

ele não falava na aba. Então quando eu vi a script do meu npc,notei que avia algo diferente que era:

 

selfSay("msg ", cid)

 

ele falava no local correto.Nossos OTs não diferentes por isso a diferença. Mas a sua script ficou otima REP+

HisashiitYamagutiH
16 de abril de 2012 às 13:32

Tópico movido para o local correto... Que seria Pedidos de Scripting, porém já que o pedido fora resolvido, movi para pedidos atendidos.