Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Estou aprendendo a mexer em um sv antigo xml, e queria um script que o npc da uma storage,para passar em tal porta, que nesse cita obviamente do storage dado pelo npc, alguém pode me ajudar?

Link para o post
Compartilhar em outros sites

Este tópico foi movido para a área correta. Esta é uma mensagem automática!
Pedimos que leia as regras do fórum!

Spoiler

This topic has been moved to the correct area. This is an automated message!
Please read the forum rules.

 

@KotZletY uma porta que só passe se tiver uma certa storage ? 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

@raffizlindo09

 

tenta assim:

 

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

if (msgcontains(msg, 'storage') or msgcontains(msg, 'STORAGE')) then
selfSay("Voce quer receber uma storage para passar pela porta?")
talkState[talkUser] = 1
elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
setPlayerStorageValue(cid, AQUI STORAGE Q O NPC VAI DA, 1)
selfSay("Parabéns, você ganhou a storage.",cid)
talkState[talkUser] = 0 
elseif msg == "no" and talkState[talkUser] >= 1 then
selfSay("Bye", cid)
talkState[talkUser] = 0
npcHandler:releaseFocus(cid)
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Link para o post
Compartilhar em outros sites

Veja se é útil para você:

 

 

Depois disso, é só colocar o storage no actionid daquelas portas de quest ou colocar um actionid em uma porta qualquer e adicionar o script abaixo:

 

Em actions/scripts, crie um arquivo.lua:

 

local storage = 4151
local newPos = {x = 1, y = 1, z = 1}

function onUse(cid, item, fromPosition, itemEx, toPosition)
if getPlayerStorageValue(cid, storage) == -1 then
    return doPlayerSendCancel(cid, "You are not allowed to enter.") and true
end
doTeleportThing(cid, newPos)
doSendMagicEffect(newPos, CONST_ME_TELEPORT)
return true
end

Em actions.xml, adicione a tag: <action actionid="ACTION_ID_DA_PORTA" script="NOMEDOARQUIVO.lua" />

Contato:

 

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
Em 18/11/2017 em 16:21, igorcano1 disse:

@raffizlindo09

 

tenta assim:

 

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

if (msgcontains(msg, 'storage') or msgcontains(msg, 'STORAGE')) then
selfSay("Voce quer receber uma storage para passar pela porta?")
talkState[talkUser] = 1
elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
setPlayerStorageValue(cid, AQUI STORAGE Q O NPC VAI DA, 1)
selfSay("Parabéns, você ganhou a storage.",cid)
talkState[talkUser] = 0 
elseif msg == "no" and talkState[talkUser] >= 1 then
selfSay("Bye", cid)
talkState[talkUser] = 0
npcHandler:releaseFocus(cid)
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

mas e na porta eu coloco o storage a onde?

 

Em 19/11/2017 em 10:37, Dwarfer disse:

Veja se é útil para você:

 

 

Depois disso, é só colocar o storage no actionid daquelas portas de quest ou colocar um actionid em uma porta qualquer e adicionar o script abaixo:

 

Em actions/scripts, crie um arquivo.lua:

 


local storage = 4151
local newPos = {x = 1, y = 1, z = 1}

function onUse(cid, item, fromPosition, itemEx, toPosition)
if getPlayerStorageValue(cid, storage) == -1 then
    return doPlayerSendCancel(cid, "You are not allowed to enter.") and true
end
doTeleportThing(cid, newPos)
doSendMagicEffect(newPos, CONST_ME_TELEPORT)
return true
end

Em actions.xml, adicione a tag: <action actionid="ACTION_ID_DA_PORTA" script="NOMEDOARQUIVO.lua" />

cara não esta lendo o arquivo o meu exe, por que será? diz que esses users que vc tem no seu não é suportado, ( OBS: a versão que estou mexendo é a 7.92)

Em 18/11/2017 em 16:21, igorcano1 disse:

@raffizlindo09

 

tenta assim:

 

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

if (msgcontains(msg, 'storage') or msgcontains(msg, 'STORAGE')) then
selfSay("Voce quer receber uma storage para passar pela porta?")
talkState[talkUser] = 1
elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
setPlayerStorageValue(cid, AQUI STORAGE Q O NPC VAI DA, 1)
selfSay("Parabéns, você ganhou a storage.",cid)
talkState[talkUser] = 0 
elseif msg == "no" and talkState[talkUser] >= 1 then
selfSay("Bye", cid)
talkState[talkUser] = 0
npcHandler:releaseFocus(cid)
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

meu a versão que mexo é a 7.92 e está dizendo que não é compativel help me

Em 19/11/2017 em 10:37, Dwarfer disse:

Veja se é útil para você:

 

 

Depois disso, é só colocar o storage no actionid daquelas portas de quest ou colocar um actionid em uma porta qualquer e adicionar o script abaixo:

 

Em actions/scripts, crie um arquivo.lua:

 


local storage = 4151
local newPos = {x = 1, y = 1, z = 1}

function onUse(cid, item, fromPosition, itemEx, toPosition)
if getPlayerStorageValue(cid, storage) == -1 then
    return doPlayerSendCancel(cid, "You are not allowed to enter.") and true
end
doTeleportThing(cid, newPos)
doSendMagicEffect(newPos, CONST_ME_TELEPORT)
return true
end

Em actions.xml, adicione a tag: <action actionid="ACTION_ID_DA_PORTA" script="NOMEDOARQUIVO.lua" />

a versão que estou mexendo é a 7.92 e não está dando certo, por favor se poder me ajudar wahts 011 94994 8216

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.


  • Conteúdo Similar

    • Por Nazo
      Buenas, TK!
      Um usuário pediu ajuda em um script, onde queria limitar para a quest ser feita apenas uma vez por IP, mesmo que ainda seja possível mudá-lo, resolvi postar aqui xd
       
      Execute esse código SQL no seu banco de dados MySQL, para a criação da tabela onde ficarão as storages e o IP armazenado do player:
      CREATE TABLE player_ip_storage( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, player_id INT NOT NULL, ip CHAR(15) NOT NULL, storage INT NOT NULL ); ALTER TABLE player_ip_storage ADD CONSTRAINT FK_PLAYER_ID FOREIGN KEY (player_id) REFERENCES players(id);  
      Ou caso seja SQLITE, utilize esse código:
      CREATE TABLE player_ip_storage( player_id INT NOT NULL, ip CHAR(15) NOT NULL, storage INT NOT NULL ); ALTER TABLE player_ip_storage ADD CONSTRAINT FK_PLAYER_ID FOREIGN KEY (player_id) REFERENCES players(id);  
      Crie um arquivo chamado nazo-functions.lua em data/lib e adicione o seguinte conteúdo:
      -- by Nazo (tibiaking.com) -- IP Storage System function getIpQuestStatus(cid, storage) storages = db.getResult("SELECT * FROM `player_ip_storage` WHERE `ip` = \"" .. doConvertIntegerToIp(getPlayerIp(cid)) .. "\" and `storage` = "..storage..";") if(storages:getID() ~= -1) then return false end return true end function setIpQuestStatus(cid, storage) db.executeQuery("INSERT INTO player_ip_storage(player_id, ip, storage) VALUES("..getPlayerGUID(cid)..",\""..doConvertIntegerToIp(getPlayerIp(cid)).."\","..storage..")") return true end  
      Agora, quando você tiver uma quest, adicione na verificação a função getIpQuestStatus na checagem junto, e quando finalizar a quest utilize o setIpQuestStatus, com os parâmetros cid e número da storage, porém a função só armazena que essa storage tem algo no banco de dados, ou seja, a quest já foi feita, você não armazena o valor da storage junto (como a função normal que geralmente adiciona "1" na storage).
       
      Exemplo de quest abaixo:
      -- by Nazo (tibiaking.com) config = { storage = 123123, -- storage da quest premio = {2160, 1} -- {itemid, quantia} } function onUse(cid, item, frompos, item2, toPosition) queststatus = getPlayerStorageValue(cid,config.storage) if(queststatus == -1 and getIpQuestStatus(cid, config.storage)) then -- note que eu só adicionei a função, nenhuma comparação, explicarei abaixo do código doPlayerSendTextMessage(cid,22,"Tome seu prêmio.") doPlayerAddItem(cid,config.premio[1],config.premio[2]) setPlayerStorageValue(cid,config.storage,1) setIpQuestStatus(cid,config.storage) -- função que adiciona a storage no banco de dados else doPlayerSendTextMessage(cid,22,"Você já fez esta quest.") end end  
      Explicação básica do motivo da função não possuir comparação na verificação e ficar como a seguir:
       
      if(getIpQuestStatus(cid, config.storage)) then Quando você faz um if, com uma função dentro sem comparações, ela continuará o bloco de comando apenas se o retorno da mesma for verdadeiro, assim quando você fizer a quest, e tentar novamente, o get retorna falso, e isso cancela a condição e vai para o bloco de comando do "else".
    • Por Digoshow
      Gente e o seguinte, eu fiz uma quest com o RME, e no final da quest quero que um player de use no Bau e Catar um item, o item seria Document = ID: 952, e apos ele dar use nesse document, e liberado e certo lugar para ele passar.
      Ele faz a quest, e quando ele pega o Document e ele der use, ira sair uma mensagem assim, Parabens, Voce conseguiu Acesso Full.
      E ai ia liberar tiles para ele passa para um Hunt sempre que ele quiser, entendero?
      Tipo uma quest da vip 2, Os player que termina a quest, e liberado acesso a vip 2 !
      Alguem pode me ajudar, sim eu procurei nao como eu nao so la aquelas coisas nao consegui, eu ate tentei mais deu o erro a seguir, e ainda o script nem dava item, mais tentei mesmo assim, olhem o erro que da.
       


        Ai gente alguem pode me ajudar com esse script? Que ao da use la no bau pega o item e quando usar, voce ganha acesso a lugares novos, tipo voce usa o item, e voce podera passar nos tiles. Obrigado, REP+ .
    • Por O.J
      Olá amigos estou aqui mais uma vez para pedir uma coisa, um NPC que peça items para o player e se o player trazer os itens ele ganha um prêmio, só que depois que ele pegasse o prêmio ele não pudesse fazer a quest novamente colocassem tipo uma storage que checa se ele ja fez a quest entendem? Por favor se puderem ajudar agradeço muito meu Ot é 8.60 obrigado comunidade .
    • Por 919894
      Olá TKbianos, baum?
       
       Seguinte, gostaria de uma action para uma alavanca que:
       
       --> O player só possa usar 1x na sua vida, ou seja, com storage.
       --> A alavanca só pode ser usada 1x por dia, ou seja, sever save.
       --> Teleporte para o local x697 y486 z7, se possível com um qualquer efeito e a mensagem de "Look for Loki and kill him!".
       
       Procurei no fórum, porém, sem sucesso.
       
       Desde já agradeço!
    • Por allanzinh
      fala galera estou presisando de um tile(piso) que remova a storage do player quando ele passe por ele  
       
      Storage que ira remover do player : 6598799
       
      Agradeço des de ja e do REEP + para quem me ajudar 
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo