Postado Novembro 15, 2018 6 anos Base: TFS 0.4.0 Qual erro está surgindo/O que você procura? Resolvi fazer um script para quando o player pisasse em um determinado SQM, surgisse um NPC em certo ponto do mapa. A minha ideia era que o npc surgisse apenas uma vez, então resolvi utilizar uma globalstorage para que assim que o primeiro player acionasse o evento, todos os demais não conseguissem. O script funcionou perfeitamente, e de fato apenas o primeiro player consegue trazer o NPC para o local desejado. O problema é que a global storage não fica salva no valor que eu determinei (no caso, "1") e quando o servidor é fechado/reinicia, os outros jogadores conseguem acionar o evento - o que eu não quero que aconteça. Gostaria de saber se as globalstorage permanecessem salvas, ou o que fazer para que elas fiquem salvas. Notei que no config.lua há a seguinte opção: "saveGlobalStorage = true", mas ela já está configurada como "true", então não creio que seja isso. Acho que não é a opção ideal, mas para solucionar o caso, também seria possível atualizar a storage de todos os players do servidor (ao invés de utilizar a global storage). Se alguém puder me ajudar com o script, eu agradeço. Imagino que ficaria algo como: "for (id do primeiro ao último player do banco de dados) atualizar o value de uma key da tabela player_storage", mas eu não faço ideia de como isso fica em código. Você tem o código disponível? Se tiver publique-o aqui: local pos = {x=875,y=398,z=7} -- Local do NPC function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if getGlobalStorageValue(9000) <= 0 then if isPlayer(cid) and getPlayerAccess(cid) < 3 and getPlayerStorageValue(cid, 9000) <= 0 then doCreateNpc("GoblinAssustadoOesteCidade", pos) end setGlobalStorageValue(9000, 1) end return true end
Postado Novembro 15, 2018 6 anos local pos = {x=875,y=398,z=7} -- Local do NPC function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if not (npc_tile) then if getGlobalStorageValue(9000) <= 0 then if isPlayer(cid) and getPlayerAccess(cid) < 3 and getPlayerStorageValue(cid, 9000) <= 0 then npc_tile = doCreateNpc("GoblinAssustadoOesteCidade", pos) end setGlobalStorageValue(9000, 1) end end return true end Acredito que isso resolva, colega. A solução é guardar o uid do npc criado e fazer a verificação se ele existe ou não cada vez que o jogador pisar no piso. Caso não resolva, buscaremos outra forma para solucionar isso aí, :). Feliz daquele que ensina o que sabe, e aprende o que ensina.
Postado Novembro 15, 2018 6 anos Autor @lordzetros o problema é que eu quero que seja um evento único ao longo de todo o jogo, entende? Esse NPC inclusive irá sumir depois de outro acontecimento. Preciso que o aparecimento dele fique registrado mesmo depois do servidor ser fechado/reiniciado. Eu pretendia utilizar as storages porque depois as usarei como andamento de uma quest que vale para todo e qualquer jogador. Eu sei que isso será possível da seguinte forma: 1) a globalstorage 9000 recebe o valor 1 e isso fica salvo, mesmo quando o servidor reiniciar (seria o ideal, acredito), ou... 2) todos os players recebem o valor 1 na player_storage 9000.
Postado Novembro 15, 2018 6 anos @Tadelho Estranho, nunca vi esse caso do globalStorage não salvar, eu ia recomendar dá uma olhada no config.lua, mas como você já disse que alterou para true, já deveria está funcionando. Em questão de alterar o storage, o mais viável para se fazer isso seria atualizando pela database, já que nem todos os jogadores estariam online. Daqui a pouco penso em uma solução para isso. Feliz daquele que ensina o que sabe, e aprende o que ensina.
Postado Novembro 16, 2018 6 anos Não precisa usar global storage, pega o cid do npc: local pos = {x=875,y=398,z=7} -- Local do NPC local npc = "GoblinAssustadoOesteCidade" function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if isPlayer(cid) and getPlayerAccess(cid) < 3 then local creature = getCreatureByName(npc) if creature ~= nil then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "O NPC ja esta andando por este mapa!.") else doCreateNpc(npc, pos) end end return true end [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
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.