Postado Maio 20, 2016 9 anos 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 Maio 20, 2016 9 anos por koete (veja o histórico de edições)
Postado Maio 20, 2016 9 anos 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 Maio 21, 2016 9 anos 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 Maio 21, 2016 9 anos 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 Maio 21, 2016 9 anos 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. 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 Maio 21, 2016 9 anos Autor Me ajudou bastante amigo, consegui fazer tudo que eu queria. +REP Dúvida sanada!
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.