Postado Maio 18, 2015 10 anos Olá, preciso de dois tipos diferentes de NPC um que de storage para passar em alguma porta ou portal ao falar com ele tipo "hi - yes ou sim", outro que entregue um item configuravel e de uma storage para acessar alguma porta ou portal e um script de porta que só consiga passar caso tenha o item configuravel (no caso um anel) equipado. TFS 0.4 Editado Maio 19, 2015 10 anos por Boush (veja o histórico de edições)
Postado Maio 18, 2015 10 anos Qual a versão amigo? Precisa de ajuda? Poste a versão de seu TFS. ************************************************************************************************************* Servidores? Eu indico: Use o cupom TIBIAKING e receba 50% de desconto na primeira mensalidade! Pague menos de R$ 19,00 no primeiro mês!
Postado Maio 20, 2015 10 anos Solução Amigo, cuidado com os "UP" no tópico, leia as regras: http://www.tibiaking.com/forum/topic/1281-regras-gerais/?p=7680 2.7 - Dar "UP" para subir tópicos: Não é proibido da "UP" em seus tópicos para ele subir na listagem, porém você só poderá usar deste beneficio dentro de um período de 24h, ou seja, se você deu "UP" agora só poderá dar novamente daqui 24h, caso ao contrário seu tópico será fechado. Lembre-se que isto é um exceção da regra do double post, tanto é que você só poderá usar deste beneficio de 48 em 48 horas. NPC que dá acesso: local message = { acesso = "MENSAGEM AO PEDIR ACESSO.", -- MENSAGEM AO PEDIR ACESSO. acessoc = "MENSAGEM CASO JÁ TENHA ACESSO.", -- MENSAGEM CASO JÁ TENHA ACESSO. acessop = "MENSAGEM QUANDO LIBERAR O ACESSO." -- MENSAGEM QUANDO LIBERAR O ACESSO. } local storage = 55500 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 msg = msg:lower(); local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'acesso') then if getPlayerStorageValue(cid, storage) < 1 then selfSay(message.acesso, cid) talkState[talkUser] = 1 else selfSay(message.acessoc, cid) talkState[talkUser] = 0 end elseif msgcontains(msg, 'yes') then if talkState[talkUser] == 1 then selfSay(message.acessop, cid) setPlayerStorageValue(cid, storage, 1) end elseif msgcontains(msg, 'no') then if talkState[talkUser] == 1 then selfSay('Ok.', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) XML do NPC que dá acesso: <?xml version="1.0" encoding="UTF-8"?> <npc name="Nome_do_npc" script="data/npc/scripts/nome_do_arquivo.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="138" head="57" body="59" legs="40" feet="76" addons="0"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|. MENSAGEM AO FALAR COM O NPC."/> </parameters> </npc> NPC que dá acesso e item: local message = { mission = "MENSAGEM AO PEDIR ACESSO.", -- MENSAGEM AO PEDIR ACESSO. acessoc = "MENSAGEM CASO JÁ TENHA ACESSO.", -- MENSAGEM CASO JÁ TENHA ACESSO. acessop = "MENSAGEM QUANDO LIBERAR O ACESSO." -- MENSAGEM QUANDO LIBERAR O ACESSO. } local config = { storagen = 55505, -- Storage para não ganhar o item varias vezes. storage = 55501, -- Storage para acesso. item = 2160 } 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 msg = msg:lower(); local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'acesso') then if getPlayerStorageValue(cid, config.storagen) < 1 then selfSay(message.acesso, cid) talkState[talkUser] = 1 else selfSay(message.acessoc, cid) talkState[talkUser] = 0 end elseif msgcontains(msg, 'yes') then if talkState[talkUser] == 1 then selfSay(message.acessop, cid) doPlayerAddItem(cid, config.item, 1) setPlayerStorageValue(cid, config.storage, 1) end elseif msgcontains(msg, 'no') then if talkState[talkUser] == 1 then selfSay('Ok.', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) XML do npc que dá acesso e item: <?xml version="1.0" encoding="UTF-8"?> <npc name="Nome_do_npc" script="data/npc/scripts/nome_do_arquivo.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="138" head="57" body="59" legs="40" feet="76" addons="0"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|. MENSAGEM AO FALAR COM O NPC."/> </parameters> </npc> Portal com acesso: "Data/movements/scripts", nome_do_arquivo.lua: local config = { anel = 2121, -- ID do anel. toPos = {x = 160, y = 54, z = 7} } function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerSlotItem(cid, CONST_SLOT_RING).itemid == config.anel then doTeleportThing(cid, config.toPos) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) doSendMagicEffect(getThingPosition(item.uid), CONST_ME_TELEPORT) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Você precisa equipar o anel "..getItemNameById(config.anel).." para passar.") doSendMagicEffect(getThingPosition(item.uid), CONST_ME_TELEPORT) end return true end "Data/movements", no arquivo movements.xml adicione a TAG: <movevent type="StepIn" actionid="actionID_desejada" event="script" value="nome_do_arquivo.lua" /> Só colocar a actionID_desejada no teleport. Não testei os NPC's, se der erro me avise. ➥ Regras | Seções OTServ | Seções BOT
Postado Maio 20, 2015 10 anos Autor Amigo, cuidado com os "UP" no tópico, leia as regras: http://www.tibiaking.com/forum/topic/1281-regras-gerais/?p=7680 NPC que dá acesso: local message = { acesso = "MENSAGEM AO PEDIR ACESSO.", -- MENSAGEM AO PEDIR ACESSO. acessoc = "MENSAGEM CASO JÁ TENHA ACESSO.", -- MENSAGEM CASO JÁ TENHA ACESSO. acessop = "MENSAGEM QUANDO LIBERAR O ACESSO." -- MENSAGEM QUANDO LIBERAR O ACESSO. } local storage = 55500 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 msg = msg:lower(); local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'acesso') then if getPlayerStorageValue(cid, storage) < 1 then selfSay(message.acesso, cid) talkState[talkUser] = 1 else selfSay(message.acessoc, cid) talkState[talkUser] = 0 end elseif msgcontains(msg, 'yes') then if talkState[talkUser] == 1 then selfSay(message.acessop, cid) setPlayerStorageValue(cid, storage, 1) end elseif msgcontains(msg, 'no') then if talkState[talkUser] == 1 then selfSay('Ok.', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) XML do NPC que dá acesso: <?xml version="1.0" encoding="UTF-8"?> <npc name="Nome_do_npc" script="data/npc/scripts/nome_do_arquivo.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="138" head="57" body="59" legs="40" feet="76" addons="0"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|. MENSAGEM AO FALAR COM O NPC."/> </parameters> </npc> NPC que dá acesso e item: local message = { mission = "MENSAGEM AO PEDIR ACESSO.", -- MENSAGEM AO PEDIR ACESSO. acessoc = "MENSAGEM CASO JÁ TENHA ACESSO.", -- MENSAGEM CASO JÁ TENHA ACESSO. acessop = "MENSAGEM QUANDO LIBERAR O ACESSO." -- MENSAGEM QUANDO LIBERAR O ACESSO. } local config = { storagen = 55505, -- Storage para não ganhar o item varias vezes. storage = 55501, -- Storage para acesso. item = 2160 } 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 msg = msg:lower(); local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'acesso') then if getPlayerStorageValue(cid, config.storagen) < 1 then selfSay(message.acesso, cid) talkState[talkUser] = 1 else selfSay(message.acessoc, cid) talkState[talkUser] = 0 end elseif msgcontains(msg, 'yes') then if talkState[talkUser] == 1 then selfSay(message.acessop, cid) doPlayerAddItem(cid, config.item, 1) setPlayerStorageValue(cid, config.storage, 1) end elseif msgcontains(msg, 'no') then if talkState[talkUser] == 1 then selfSay('Ok.', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) XML do npc que dá acesso e item: <?xml version="1.0" encoding="UTF-8"?> <npc name="Nome_do_npc" script="data/npc/scripts/nome_do_arquivo.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="138" head="57" body="59" legs="40" feet="76" addons="0"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|. MENSAGEM AO FALAR COM O NPC."/> </parameters> </npc> Portal com acesso: "Data/movements/scripts", nome_do_arquivo.lua: local config = { anel = 2121, -- ID do anel. toPos = {x = 160, y = 54, z = 7} } function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerSlotItem(cid, CONST_SLOT_RING).itemid == config.anel then doTeleportThing(cid, config.toPos) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) doSendMagicEffect(getThingPosition(item.uid), CONST_ME_TELEPORT) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Você precisa equipar o anel "..getItemNameById(config.anel).." para passar.") doSendMagicEffect(getThingPosition(item.uid), CONST_ME_TELEPORT) end return true end "Data/movements", no arquivo movements.xml adicione a TAG: <movevent type="StepIn" actionid="actionID_desejada" event="script" value="nome_do_arquivo.lua" /> Só colocar a actionID_desejada no teleport. Não testei os NPC's, se der erro me avise. Desculpe pelo up excessivo, eu só tenho uma dúvida antes de testar os npc, a storage que o npc dá, é a actionID que tenho que arrumar na porta?
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.