Ir para conteúdo
  • Cadastre-se

Normal GlobalStorageValue [Hunt um de cada vez]


Posts Recomendados

então, faz tempo que não mecho no meu server, estou voltando a editar agora desde a muito tempo resultando no esquecimento de muitas coisas. E uma delas e mais importantes é o GlobalStorageValue. Encontrei um script aqui no meu server e quis edita-lo OBS: esse script não é meu ele veio no server.

O que eu tentei fazer foi: O player se tiver o item "2962", o npc vai teleporta-lo para uma área de hunt, ele ficará la por determinado tempo e o npc o trará de volta, toda via o player estando na hunt outro não poderá pedir o npc para entrar na mesma hunt. Ele terá que esperar o player sair.

 

Porém ele não é funcional por dois simples motivo.

1°: Não consigo colocar voltar o globalstoragevalue para 0 quando o tempo de hunt acaba e ele retorna.

2°: Se o player morrer na hunt o globalstoragevalue ficara para sempre 1 bugando a hunt e não deixando ninguem mais fazer.

 

Se alguem puder me ajudar em alguma coisa ficarei muito grato.

 

esse é o script que estou editando:

 

Citar

 


	local pos = {x=398, y=558, z=7} -- Local da hunt
	local posreturn = {x=392, y=111, z=6} -- Posiçao onde o player sera teleportado quando acabar o tempo
	
	config = {
	time = 30 ---Tempo que ele vai ficar na hunt sabendo que cada numeral equivale a um segundo-----
	}
	function doReturnPos()
	doTeleportThing(cid, posreturn)
	end
	if(not npcHandler:isFocused(cid)) then
	return false
	end
	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	if msgcontains(msg, 'trainer') then
	if getGlobalStorageValue(24688) == 1 then
	doPlayerSendTextMessage(cid,22,"O player "..getGlobalStorageValue(24686).." esta na hunt")
	return true
	end
	if getPlayerItemCount(cid,2962) == 0 then
	doPlayerSendTextMessage(cid,22,""..getPlayerName(cid)..", voce precisa do hunt Pass para usar a hunt.")
	return true
	end
	doPlayerRemoveItem(cid, 2962, 1)
	doPlayerSendTextMessage(cid,22,"Obrigado! "..getPlayerName(cid).." foi teleportado.")
	doTeleportThing(cid, pos)
	setGlobalStorageValue(24688, 1)
	addEvent(doReturnPos, config.time*1000)
	else
	selfSay('Diga hunt', cid)
	end
	return true
	end
	npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
	npcHandler:addModule(FocusModule:new())
	

 

 

 

 

 

Editado por koete (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Eu estou um pouco sem tempo agora, eu faria exemplos e tal.

 

Enfim, faça como eu fiz no movements:

 

É só remover a verificação se o player tem X storage (que era para saber se ele tinha usado o item), pois seu sistema é por NPC.

Acho que não terá muitas dificuldades, por ser scripter.

 

A função verifica se tem algum jogador na área, caso não tiver, teleporta para a área. Se tiver, o jogador é teleportado para o tile anterior e não poderá entrar.

Você poderia usar o os.time() para fazer seu script, mas caso alguém morresse lá dentro, ninguém ia poder entrar até acabar o tempo.

 

Reforçando o que eu disse no tópico: o teleport é sem coordenadas, você dá coordenadas para o tile no qual ele fica em cima, pelo script.

 

Boa sorte.

Editado por Talesigorvr (veja o histórico de edições)

Não dou suporte via PM, crie um tópico caso tenha dúvidas.

Isso previne que outras pessoas com a mesma dúvida criem tópicos desnecessários.

Link para o post
Compartilhar em outros sites

Olha... confesso que fiquei impressionado com o seu Script Talesigorvr. Realmente da pra ver que você é um cara aplicado e direto no que faz. Script fácil de entender.

eu dei uma modificada para utilizar do jeito que eu queria, está funcional. Obs: Muito Bacana a função getPlayersInArea(left, right). aprendi muito com ela. +REP

só que não estou conseguindo fazer uma ultima coisa nele. 

Coloquei para sumonar um monstro em uma certa área. Farei depois em creature events para quando matar o monstro nascer outro, e depois outro e outro até matar o ultimo e ganhar o premio. Mas vou ter um problema nesse seu script que editei quando o cara morrer dentro da área o monstro não some assim o próximo jogador terá que lutar contra dois. e assim por diante se for morrendo varias pessoas por fim vai ter varios monstros na área. O que eu queria fazer é colocar o script checar se há monstro na área se tiver remover.

 

function onStepIn(cid, item, position, fromPosition)
	    local config = {
	    storage = 789456,
	    from = {x = 425, y = 115, z = 7}, -- coordenada do canto superior esquerdo da área.
	    to = {x = 435, y = 127, z = 7}, -- coordenada do canto inferior direito da área.
	    maxPlayers = 1, -- quantos jogadores poderão entrar na área ao mesmo tempo.
	    pos = {x = 430, y = 125, z = 7}, -- para onde o jogador será teleportado.
	    posmonster = {x = 430, y = 117, z = 7}, -- onde ira nascer o monstro.
	    nomeMonst = "CREATURE"    ----- nome do monstro que ira aparacer
	    }
	    
	    local function getPlayersInArea(left, right)
	        local playersInArea = {}
	        for _, cid in ipairs(getPlayersOnline()) do
	            if isInRange(getThingPos(cid), left, right) then
	                table.insert(playersInArea, cid)
	            end
	        end
	    return playersInArea
	    end
	    
	    if isPlayer(cid) then
	        if getPlayerStorageValue (cid, config.storage) < 1 then
	            doPlayerSendTextMessage(cid, 19, "MSG caso nao tenha acesso.")
	            doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
	            doTeleportThing(cid, fromPosition, true)
	        else
	            doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
	        end
	    
	        if table.getn(getPlayersInArea(config.from, config.to)) < config.maxPlayers and getPlayerStorageValue (cid, config.storage) == 1 then
	            doSendMagicEffect(fromPosition, CONST_ME_TELEPORT)
	            doTeleportThing (cid, config.pos)
	            doCreateMonster(config.nomeMonst,config.posmonster)
	            doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
	        elseif table.getn(getPlayersInArea(config.from, config.to)) >= config.maxPlayers and getPlayerStorageValue (cid, config.storage) == 1 then
	            doPlayerSendTextMessage (cid, 19, "MSG caso já tenha o limite de jogadores dentro da área.")
	            doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
	            doTeleportThing(cid, fromPosition, true)
	        end
	    end
	return true
	end

Link para o post
Compartilhar em outros sites

A função em si não foi eu quem fez, não recordo o nome do criador, mas realmente é bem útil. (:

 

Olha, tem uma função que eu usei em outro tópico (o nome do criador está no final do meu post) que remove os monstros na área X.

Eu fiz um globalevents, ou seja, é por tempo. Você pode fazer para verificar se tem X monstro na área a partir dela.

De novo, estou meio sem tempo, então só passarei o link do post.

 

 

Boa sorte. ;D

Não dou suporte via PM, crie um tópico caso tenha dúvidas.

Isso previne que outras pessoas com a mesma dúvida criem tópicos desnecessários.

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 Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo