Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado

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)

Postado

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.

Postado
  • Autor

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

Postado

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.

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo