Postado Novembro 5, 2020 4 anos NPC: Boat.xml Spoiler <?xml version="1.0" encoding="UTF-8"?> <npc name="Dederin" script="boat.lua" walkinterval="0"> <health now="100" max="100"/> <look type="459"/> <parameters> <parameter key="module_shop" value="1"/> <parameter key="message_greet" value="Olá, |PLAYERNAME|! Eu posso te levar para {Assassin Tower}."/> </parameters> </npc> Boat.lua Spoiler local assassintower = {x=1015, y=885, z=7} local itemid = 2144 local quantidade = 1 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:lower()) end function onThink() npcHandler:onThink() end local talkState = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, "assassin tower") then selfSay("Voce tem certeza que deseja ir ate Assassin Tower?", cid) talkState[talkUser] = 1 elseif (msgcontains(msg, "yes") and talkState[talkUser] == 1) and (getPlayerItemCount(cid, itemid) >= quantidade) then doPlayerRemoveItem(cid, itemid, quantidade) doTeleportThing(cid, assassintower) selfSay("Ate mais!", cid) talkState[talkUser] = 0 elseif (msgcontains(msg, "yes") and talkState[talkUser] == 1) and (getPlayerItemCount(cid, itemid) <= quantidade) then selfSay("Desculpe, voce precisa ter nomeitem para passar.", cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Editado Novembro 5, 2020 4 anos por So volto tarde correção npc, retirando a citação (veja o histórico de edições)
Postado Novembro 5, 2020 4 anos 33 minutos atrás, So volto tarde disse: NPC: Boat.xml Mostrar conteúdo oculto <?xml version="1.0" encoding="UTF-8"?> <npc name="Dederin" script="boat.lua" walkinterval="0"> <health now="100" max="100"/> <look type="459"/> <parameters> <parameter key="module_shop" value="1"/> <parameter key="message_greet" value="Olá, |PLAYERNAME|! Eu posso te levar para {Assassin Tower}."/> </parameters> </npc> Boat.lua Mostrar conteúdo oculto -- Adicione a posição dos locais aqui, seguindo o modelo abaixo: local assassintower = {x=254, y=393, z=7} local itemid = 2144 -- id do item 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:lower()) end function onThink() npcHandler:onThink() end local talkState = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, "travel") then selfSay("Eu posso te levar para {Assassin Tower}, {exemplo1} e {exemplo2}.", cid) -- ao colocar as palavras entre chaves "{}", as mesmas sairão na cor azul dentro do jogo end if msgcontains(msg, "assassin tower") then selfSay("Voce realmente quer viajar para {Assassin Tower}? Eu te cobrarei o item """, cid) talkState[talkUser] = 9 elseif msgcontains(msg, "yes") and talkState[talkUser] == 9 then if not isPlayerPzLocked(cid) then doPlayerRemoveItem(cid, itemid, 1) -- o "1" é a quantidade caso queira mudar doSendMagicEffect(getThingPos(cid), 10) -- efeito no player no boat atual npcHandler:releaseFocus(cid) doTeleportThing(cid, assassintower) doSendMagicEffect(assassintower, 10) -- efeito no player ao chegar no destino else selfSay("Voce deve estar sem pz locked!", cid) end elseif getPlayerItemCount(cid, itemid) == 0 then -- caso queira adicionar uma quantia ao item necessário para viajar, uma alteração terá de ser feita aqui selfSay("Desculpe, voce nao tem o item!", cid) end talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Mostrar conteúdo oculto function onStepIn(cid, item, position, fromPosition) local id,amount = 2419,1 -- id, quantidade para poder passar pelo tile local lugar = {x=0, y=0, z=0} if not doPlayerRemoveItem(cid, id, amount) then doTeleportThing(cid, lugar) doPlayerSendTextMessage(cid, 25, "Você só pode passar se tiver " .. amount .. " " .. getItemNameById(id) .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end return true end Ele vai teleportar com esse script ai seu mas não vai pedir item e nem remover brother
Postado Novembro 5, 2020 4 anos 42 minutos atrás, Nysman disse: Ele vai teleportar com esse script ai seu mas não vai pedir item e nem remover brother NPC corrigido, reformulação movement: Spoiler local posic = {x=1017, y=884, z=7} --- posição de teleporte local itemid = 2144 local quantidade = 1 function onStepIn(cid, item, position, fromPosition, toPosition) if (getPlayerItemCount(cid, itemid) >= quantidade) then doPlayerRemoveItem(cid, itemid, quantidade) doTeleportThing(cid, posic) doSendMagicEffect(posic,10) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Você não tem o item.") end return true end
Postado Novembro 6, 2020 4 anos Autor Agora, Thony D. Serv disse: Mantém 0 que ele não irá cobrar nada é q eu n queria q fosse tipo barco, o cara iria entregar o item de surpresa e seria teleportado, com o price, alem da frase doq o npc pede, aparece tipo a mensagem "0 golds" algo assim
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.