
WalkerKing
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
WalkerKing recebeu reputação de Patrickg em [Resolvido] Items.otbVlw Gabriel... Deu certo REP+
-
WalkerKing deu reputação a Skydangerous em [Ajuda] Siteno config,lua existe comentários?
isso " -- " , se existir, retire tudo.
-
WalkerKing deu reputação a Skydangerous em [Website] CipSoft Layout para Nicaw@Maik.
Está enganado, aqui é area de pedidos/dúvida relacionado a todos os tipos seja ela programação,scripts,web sites.
-
WalkerKing deu reputação a Kimoszin em [Action] Key Door SystemBem pessoal, pensei que uma action dessa ia deixar o servidor de vocês com mais RPG, então resolvi botar a ideia para funcionar.
- Para que serve?
Para o seu servidor ficar com mais RPG, serve para quest mais elaboradas
- Como funciona?
Você instala a quest e a action no seu servidor, depois para passar na porta, o player ira precisar da chave, quando ele der use, a porta vai se abrir e ficar aberta, quando ele der use denovo a porta irá se fechar e ficar trancada.
- Qual a vantagem disso?
Na verdade, quase nenhuma, pois só vai trazer mais RPG para o seu servidor se você tiver criatividade para usa-la, alguns players valorizam isso.
- Como "instalo" no meu servidor ?
Simples, vamos adicionar dois scripts em \data\actions\script e adicionar duas linhas em \data\actions\actions.xml
Vamos lá
Instalação
data\actions\scripts\portas.lua
function onUse(cid, item, fromPosition, itemEx, toPosition) local doors = {[5098]={id=5100}, [5099]={id=5100}, [5101]={id=5102}, [5107]={id=5109}, [5108]={id=5109}, [5110]={id=5111}} local config = { actionid = 1221, -- Uma action normal, só para a portar nao abrir. keyaid = 1222 -- A action que deve ter na key } for i, x in pairs(doors) do if ((itemEx.itemid == i) and (itemEx.actionid == config.actionid) and (item.actionid == config.keyaid)) then doTransformItem(itemEx.uid, x.id) doItemSetAttribute(itemEx.uid, "aid", 0) elseif (itemEx.itemid == x.id) and (itemEx.actionid == 0) and (item.actionid == config.keyaid) then doTransformItem(itemEx.uid, i) doItemSetAttribute(itemEx.uid, "aid", config.actionid) elseif (itemEx.itemid == i) and (itemEx.actionid == 0) and (item.actionid == config.keyaid) then doTransformItem(itemEx.uid, i) doItemSetAttribute(itemEx.uid, "aid", config.actionid) end end return TRUE end data\actions\actions.xml <action itemid="IDdeUmaChave" event="script" value="portas.lua" /> Agora uma quest para ganhar a chave que abre a porta. data\actions\scripts\darkey.lua function onUse(cid, item, fromPosition, itemEx, toPosition) local config = { storage = 3235, -- Uma storage, se quiser nao precisa modificar keyID = 2088, -- ID de uma chave, você pode trocar. aid = 1222, -- ActionID, tem que ser o mesmo do script acima. } if getPlayerStorageValue(cid, config.storage) == -1 then local item = doPlayerAddItem(cid, config.keyID,1) if item then doItemSetAttribute(item, "aid", config.aid) setPlayerStorageValue(cid, config.storage, 1) doPlayerSendCancel(cid, "Você recebeu uma key") end else doPlayerSendCancel(cid, "Desculpe, mais você ja fez essa quest") end end data\actions\actions.xml <action actionid="7777" event="script" value="darkey.lua" /> " Lembrando que o bau, ou qualquer outra coisa, deve conter o action id = 7777 " Se você preferir, aqui tem um NPC que vende a mesma key que é pega na quest. data/npc/Diog.xml <?xml version="1.0"?> <npc name="Diog" script="data/npc/scripts/diog.lua" walkinterval="7000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="76" body="96" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|! Eu vendo keys, Diga {keys} para saber quais eu vendo e o valor delas." /> <parameter key="module_keywords" value="1" /> <parameter key="keywords" value="keys" /> <parameter key="keyword_reply1" value="Eu vendo {Key Quest Editada} por 1000 gps." /> </parameters> </npc> data/npc/scripts/diog.lua 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 keys = { ["Key Quest Editada"] = {id_key = 2088, price = 1000, action_id = 1222}, } local m = keys[msg] if (not m) then selfSay("Eu não vendo esta key ", cid) return FALSE end if doPlayerRemoveMoney(cid, m.price) == TRUE then a = doPlayerAddItem(cid, m.id_key, 1) doItemSetAttribute(a, "aid", m.action_id) selfSay("Obrigado, aqui esta sua key", cid) talkState[talkUser] = 0 else selfSay(" Você não tem ".. m.price.." gps para comprar ", cid) talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
Configuração
Como você viu, eu nao adicionei todas as portas no script portas.lua, então só iram funcionar em um tipo.
Nao adicionei porque sou preguiçoso, então para você adicionar é simples.
Só seguir esses parametros [iDPortaFechada]={id=IDPortaAberta}, e adicionar em local doors = {}
Agora para adicionar mais keys para o npc vender, é muito simples tambem,
Só você adicionar mais linhas em local keys,
Siga os parametros ["NomeQueOPlayerTemQueFalar"] = {id_key = IDDaKey, price = PreçoDaKey, action_id = 1222},
E mudar para quando o player falar com o npc: <parameter key="keyword_reply1" value="Eu vendo {Key Quest Editada} por 1000 gps e {NomeQueOPlayerTemQueFalar} por 122 gps." />
Script bem facil que eu fiz, qualquer duvida só falar comigo,
Até mais.
-
WalkerKing deu reputação a Gabriel Dias em [Resolvido] Items.otbVocê precisa fornecer informações mais precisas sobre a versão do seu Open Tibia Server.
Somente assim algum membro poderá resolver o seu problema, caso o contrario ficaríamos dando "tiros no escuro".
Tente informar o nome e a versão do seu distro.
Qualquer dúvida, estou disponível no msn da minha assinatura
Obs.: Tente utilizar o arquivo "items.otb" que está em anexo, não postei o scan pois o virustotal está apresentando erros (uma fila de 887 arquivos e um erro que faz travar o navegador).
items.rar