Postado Novembro 16, 2018 6 anos Autor @Vodkart, se você puder, leia a resposta anterior que deixei. Eu preciso registrar o evento do NPC ter aparecido alguma vez para seguir uma quest válida para todos os players. Não estou tendo problemas em duplicar o NPC nem nada. Enquanto o servidor está rodando o script funciona perfeitamente conforme o planejado. O problema é que ao fechar/reiniciar o servidor a globalstorage perde o valor e aí tudo recomeça, o que eu não quero que aconteça. Para solucionar isso eu preciso ou manter o valor da globalstorage, que eu não sei por que diabos some, ou atualizar o valor de uma storage dos players (o que consumiria mais processamento e memória, mas estou disposto a tentar ). Edit: vou deixar de lado o código e explicar com palavras a mecânica esperada. Talvez ajude. -> Se o NPC ainda não apareceu na história do servidor, um jogador pode fazê-lo aparecer ao pisar em um sqm. -> Se o NPC já apareceu alguma vez na história, ele não deve aparecer jamais, em hipótese alguma, mesmo que o servidor seja reiniciado e etc. Para solucionar isso eu imaginei que a globalstorage servisse, ou um registro geral em todos os players. Editado Novembro 16, 2018 6 anos por Tadelho Atualização de informações. (veja o histórico de edições)
Postado Novembro 16, 2018 6 anos executa essa query: CREATE TABLE npc_quest ( create INT NOT NULL DEFAULT 0, PRIMARY KEY ( id ) ); e usa o script assim: 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 if db.getResult("SELECT `create` FROM `npc_quest`;"):getDataInt("create") <= 0 then doCreateNpc(npc, pos) db.executeQuery("UPDATE `npc_quest` SET `create` = 1;") end end return true end futuramente, quando for "remover o npc usa esta linha para voltar para 0 db.executeQuery("UPDATE `npc_quest` SET `create` = 0;") ------------------------------------------------------------- ai para dar sequencia a sua quest, e se ele tiver aparecido alguma vez na vida, você usa assim: if db.getResult("SELECT `create` FROM `npc_quest`;"):getDataInt("create") > 0 then -- sim o npc ja foi criado alguma vez end ----------------------------------------------------------------------------------------------- @Tadelho Conseguiu? fiz exatamente o que descreveu... aguardo respostas! [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Novembro 16, 2018 6 anos Autor @Vodkart irei testar logo menos e já respondo. É que este padrão se repetirá muitas vezes com outras actions e conforme a história da quest avança. O valor da tabela mudará muitas vezes por isso eu estava tentando lidar com as storages com as quais sou mais familiarizado e sei que funcionam bem para gerenciar isso. A propósito, eu fiz um teste aqui: tentei executar a função pronta de "doServerSave" logo após mudar o valor da globalstorage para ver se assim salvava, e obtive uma mensagem de erro no console. setGlobalStorageValue(9000, 1) doSaveServer() Isso explicaria o porquê da globalstorage não salvar?
Postado Novembro 16, 2018 6 anos Que estranho, parece que não existe essa coluna. [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Novembro 16, 2018 6 anos Autor Solução @Vodkart , exatamente. Só descobri isso porque executei um serversave, até então eu não tinha recebido qualquer mensagem de erro. Consegui resolver, aparentemente! Eu simplesmente adicionei a coluna "world_id" na tabela "global_storage" e agora está funcionando. Fechei e abri o servidor e agora o script original funciona da maneira esperada e novos jogadores não ativam mais o script. O evento ocorre apenas uma vez! Ficou assim: Obrigado a todos que deram atenção ao tópico! O problema não era no script, mas sim no meu database. Obs: eu coloquei o valor padrão do world_id como "0" porque este é valor configurado no meu config.lua. Se alguém que estiver lendo isso utilizar um valor diferente, terá de adaptar. Editado Novembro 16, 2018 6 anos por Tadelho (veja o histórico de edições)
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.