Ir para conteúdo

Yan Oliveira

Moderador
  • Total de itens

    2221
  • Registro em

  • Última visita

  • Dias Ganhos

    60

Tudo que Yan Oliveira postou

  1. Sim, tanto é que no Login.lua em baixo do onLogin() ele sempre recebe o tempo atual que ele logou pela função os.time(): setPlayerStorageValue(cid, 777777, os.time()) Como pode ver na linha acima, ele seta o tempo atual do login para a storage 777777. Então sempre que o cara logar, vai começar a contar a partir desse momento.
  2. Que bom que funcionou! Tem como sim! Troque o código do arquivo Teleporter.lua (arquivo lua do NPC) por esse: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function GetHourFromSeconds(hour) return 60 * 60 * hour end function GetTime(time_seconds) local out = {} local dateFormat = { {'hora', time_seconds / 60 / 60}, {'minuto', time_seconds / 60 % 60}, } for k, t in ipairs(dateFormat) do local v = math.floor(t[2]) if (v > -1) then table.insert(out, (k < #dateFormat and '' or ' and ') .. v .. '' .. (v <= 1 and t[1] or t[1].."s")) end end if tonumber(dateFormat[1][2]) == 0 and tonumber(dateFormat[2][2]) == 0 then return "segundos" end return table.concat(out) end function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end -- VARIÁVEIS -- msg = string.lower(msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local position = {x= 1500, y= 1500, z= 7} -- POSIÇÃO PARA ONDE SERÁ TELEPORTADO local tempo_minimo = 8 -- QUANTIDADE DE HORAS QUE SERÁ NECESSÁRIO ESTAR ONLINE PARA SER TELEPORTADO local local_name = 'Village' -- NOME DO LOCAL OU PARA ONDE SERÁ TELEPORTADO local storage_time = 777777 -- STORAGE QUE ARMAZENA O TEMPO ONLINE DO PLAYER local level = 100 -- LEVEL MÍNIMO PARA TELEPORTAR local effect = true -- true PARA TER EFEITO E false SEM EFEITO AO TELEPORTAR local effect_id = 25 -- ID DO EFEITO AO TELEPORTAR ----------------------------------- [ DIALOGO COM NPC] --------------------------------- if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') then selfSay("If you want to teleport to {" .. local_name .. "} you need to be at least {" .. tempo_minimo .. "} hour(s) online. Are you online the enough time to be teleported?", cid) talkState[talkUser] = 1 elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then if getPlayerLevel(cid) >= level then if (getPlayerStorageValue(cid, storage_time) + GetHourFromSeconds(tempo_minimo)) <= os.time() then selfSay("Good journey!", cid) doTeleportThing(cid, position) if effect then doSendMagicEffect(getThingPos(cid), effect_id) end else selfSay("Only is possible to teleport if you are online at least " .. tempo_minimo .. " hours. You are online " .. GetTime(getPlayerStorageValue(cid, storage_time)) .. ".", cid) end else selfSay("You need to be at least level " .. level .. " to teleport.", cid) end talkState[talkUser] = 0 return true elseif (msgcontains(msg, 'no') or msgcontains(msg, 'não')) and talkState[talkUser] == 1 then selfSay("Ok, goodbye!", cid) talkState[talkUser] = 0 return true else selfSay("I didn't understand what you said", cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Na variável level você coloca o nível mínimo, na variável effect mude para false caso não queira efeito ao teleportar e na variável effect_id coloque o id do efeito que quer ao teleportar caso opte pelo efeito. Também precisa ajustar os valores das variáveis que você tinha colocado, no caso da posição e nome do lugar. De resto não precisa alterar mais nada, só colocar o tempo em horas que quer na variável tempo_minimo.
  3. Pode ser que o seu server trabalhe somente com a pasta scripts. Manda uma print das pastas que fica dentro de Data, onde fica as pastas Actions, Creaturescripts, Globalevents e etc. Preciso entender como está a estrutura de diretório do seu servidor.
  4. Pelo que entendi a partir do momento que o player tiver X horas online ele pode ser teleportado quantas vezes quiser certo? Vamos lá! Primeiro, vá em Data/Creaturescripts/Scripts e abra o arquivo login.lua e embaixo da função onLogin() coloque essa linha: setPlayerStorageValue(cid, 777777, os.time()) Agora vá em Data/Npc e crie um arquivo XML chamado Teleporter.xml (ou o nome que achar melhor) e adicione o código dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Telep" script="Teleporter.lua" walkinterval="4000" floorchange="0" level="1" maglevel="1"> <health now="150" max="150"/> <look type="1421" head="114" body="119" legs="114" feet="114" corpse="2212"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|! Would you like to be teleported? Say {help} or {ajuda} for more informations."/> </parameters> </npc> Agora abra a pasta Scripts dentro da pasta NPC e crie um arquivo chamado Teleporter.lua e adicione o código dentro: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function GetHourFromSeconds(hour) return 60 * 60 * hour end function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end -- VARIÁVEIS -- msg = string.lower(msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local position = {x= 1500, y= 1500, z= 7} -- POSIÇÃO PARA ONDE SERÁ TELEPORTADO local tempo_minimo = 1 -- QUANTIDADE DE HORAS QUE SERÁ NECESSÁRIO ESTAR ONLINE PARA SER TELEPORTADO local local_name = 'Village' -- NOME DO LOCAL OU PARA ONDE SERÁ TELEPORTADO local storage_time = 777777 -- STORAGE QUE ARMAZENA O TEMPO ONLINE DO PLAYER ----------------------------------- [ DIALOGO COM NPC] --------------------------------- if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') then selfSay("If you want to teleport to {" .. local_name .. "} you need to be at least {" .. tempo_minimo .. "} hour(s) online. Are you online the enough time to be teleported?", cid) talkState[talkUser] = 1 elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then if (getPlayerStorageValue(cid, storage_time) + GetHourFromSeconds(tempo_minimo)) <= os.time() then selfSay("Good journey!", cid) doTeleportThing(cid, position) else selfSay("You aren't online enough time to be teleported", cid) end talkState[talkUser] = 0 return true elseif (msgcontains(msg, 'no') or msgcontains(msg, 'não')) and talkState[talkUser] == 1 then selfSay("Ok, goodbye!", cid) talkState[talkUser] = 0 return true else selfSay("I didn't understand what you said", cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora vá na pasta Data/Globalevents/Scripts e crie um arquivo chamado ResetTeleportTime.lua e adicione o código dentro: local storage = 777777 -- STORAGE QUE ARMAZENA O TEMPO ONLINE DO PLAYER function onTimer() for _, player in pairs(getPlayersOnline()) do if getPlayerStorageValue(player, storage) > 0 then setPlayerStorageValue(player, storage, 0) end end return true end E por fim, volte na pasta Data/Globalevents e abra o arquivo globalevents.xml e adicione o seguinte código dentro: <globalevent name="reset_teleport" time="00:00" event="script" value="ResetTeleportTime.lua"/> Eu deixei todas as variáveis comentadas, só alterar os valores desejado nelas. Teste e me avise se der algum problema.
  5. Pode ser as duas coisas que os amigos acima falaram, tanto nas propriedades da sprite/item que pode estar faltando o atributo de equipar, quanto o id do pokemon na tabela de icones. Precisa ver essas duas questões.
  6. Essa spell que vai mudar a outfit durante a animação da spell para 329 e depois voltar ao normal, está funcionando normal e você só quer que adicione a outfit? Sobre sua dúvida ficou um pouco confuso, mas que efeitos serão? Todos esses efeitos são em uma única spell? Precisa deixar mais claro o funcionamento da spell e os id. Poste o script da spell do seu primeiro pedido.
  7. Que bom que deu certo! A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico. Tópico movido de Suporte > OTServ > Scripts para Suporte > OTServ > Resolvidos.
  8. Substitua o código por este: local message_color = 25 -- COR DA MENSAGEM function getSpectators(fromPos, toPos) -- Function made by Vodkart local players = {} for _, pid in ipairs(getSpectators()) do if isInRange(getSpectators(pid), fromPos, toPos) then table.insert(players, pid) end end return players end -- Do not remove the credits ---- [MOVEEVENT] Limite de player por sala ---- Developed by Rigby ---- Especially for the Xtibia.com -- function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) local config = { [2233] = {area = getPlayersInArea({x = 696, y = 971, z = 11}, {x = 821, y = 1063, z = 12}), amountOfPlayers = 4, teleport = Position(721, 1003, 11)}, [2234] = {area = getPlayersInArea({x = 725, y = 1069, z = 11}, {x = 895, y = 1126, z = 12}), amountOfPlayers = 4, teleport = Position(685, 991, 11)}, [2235] = {area = getPlayersInArea({x = 448, y = 192, z = 11}, {x = 523, y = 230, z = 12}), amountOfPlayers = 4, teleport = Position(464, 202, 11)}, } if config[item.actionid] then if #config[item.actionid].area < config[item.actionid].amountOfPlayers then cid:teleportTo(config[item.actionid].teleport) cid:sendTextMessage(message_color, "Welcome") else cid:sendTextMessage(message_color, "The room already reached its limit " .. config[item.actionid].amountOfPlayers .. " player 's wait someone out.") cid:teleportTo(fromPosition) end end return true end Também criei uma variável para armazenar a cor do texto para ficar mais fácil caso queira mudar. Teste e me informe se der algum problema.
  9. Tópico movido de Downloads > OTServ > OTServer Alternativo (ATS) para Pedidos > OTServ > Datapacks. Fique atento às regras do fórum.
  10. Para te ajudarmos, poste o código de forma organizada e dentro de CODES ou Spoiler para ficar mais fácil de visualizar e te ajudar, pois desse jeito está difícil visualizar.
  11. Tópico movido de Suporte > OTServ > Programação para Suporte > OTServ > Scripts. Fique atento às regras do fórum. Sobre suas dúvidas, para alterar a chance do catch de cada pokémon individual, tem que olhar na tabela dos pokémons no arquivo Data/Lib/configurations.lua e procure a tabela de pokémons que contém os campos chance e corpse: pokecatches = { ["Bulbasaur"] = {chance = 1, corpse = 5969}, ["Ivysaur"] = {chance = 800, corpse = 5982}, ["Venusaur"] = {chance = 1800, corpse = 5962}, Só alterar o valor no campo chance. E sobre a rate da exp, nesse mesmo arquivo configurations.lua, no começo do código, procure por: rateExp = 2.8 -- 6
  12. Tópico movido de Suporte > OTServ > Programação para Suporte > OTServ > Infraestrutura. Fique atento às regras do fórum.
  13. Tópico fechado e resolvido!
  14. A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
  15. Troque o código por este: local storage_buff_catch = 3133586 -- STORAGE DO BONUS DE CATCH local minutes_buff = 5 -- MINUTOS PARA TER O BUFF DO CATCH local ballcatch = { --id normal, id da ball shiy [2394] = {cr = 1, on = 193, off = 192, ball = {11826}, send = 86, typeee = "poke", boost = "0"}, --alterado v1.9 \/ [2391] = {cr = 2, on = 198, off = 197, ball = {11832}, send = 87, typeee = "great", boost = "0"}, [2393] = {cr = 3, on = 202, off = 201, ball = {11835}, send = 88, typeee = "super", boost = "0"}, [2392] = {cr = 4, on = 200, off = 199, ball = {11829}, send = 89, typeee = "ultra", boost = "0"}, [12617] = {cr = 4, on = 204, off = 203, ball = {12621}, send = 84, typeee = "saffari", boost = "0"}, [12832] = {cr = 100000, on = 23, off = 24, ball = {12826}, send = 85, typeee = "master", boost = "50"}, [15677] = {cr = 6, on = 313, off = 314, ball = {16204}, send = 72, typeee = "magu", boost = "0", type = {"fire", "ground"}}, [15676] = {cr = 6, on = 316, off = 317, ball = {16205}, send = 73, typeee = "sora", boost = "0", type = {"water", "ice"}}, [15678] = {cr = 6, on = 319, off = 320, ball = {16206}, send = 74, typeee = "yume", boost = "0", type = {"fairy", "psychic"}}, [15680] = {cr = 6, on = 322, off = 323, ball = {16207}, send = 75, typeee = "dusk", boost = "0", type = {"ghost", "dark"}}, [15673] = {cr = 6, on = 331, off = 332, ball = {16210}, send = 78, typeee = "tale", boost = "0", type = {"dragon", "flying"}}, [15674] = {cr = 6, on = 334, off = 335, ball = {16211}, send = 79, typeee = "moon", boost = "0", type = {"fighting", "normal"}}, [15675] = {cr = 6, on = 337, off = 338, ball = {16212}, send = 80, typeee = "net", boost = "0", type = {"bug", "poison"}}, [15681] = {cr = 6, on = 346, off = 347, ball = {16215}, send = 83, typeee = "tinker", boost = "0", type = {"electric", "steel"}}, [15679] = {cr = 1, on = 343, off = 344, ball = {16214}, send = 82, typeee = "premier", boost = "0"}, [15682] = {cr = 6, on = 325, off = 326, ball = {16208}, send = 76, typeee = "fast", boost = "0", pokes = {"Pidgeot", "Kadabra", "Rapidash", "Scyther", "Electabuzz", "Manectric", "Persian", "Starmie", "Sneasel", "Dugtrio", "Alakazam", "Sceptile", "Swellow", "Jolteon", "Crobat", "Electrode", "Ninjask", "Raichu", "Dodrio", "Gengar", "Tauros", "Jumpluff", "Espeon", "Shiny Raichu", "Shiny Dodrio", "Shiny Tauros", "Shiny Gengar", "Shiny Espeon"}}, [15672] = {cr = 6, on = 328, off = 329, ball = {16209}, send = 77, typeee = "heavy", boost = "0", pokes = {"Golem", "Gyarados", "Snorlax", "Onix", "Tyranitar", "Metang", "Steelix", "Camerupt", "Lapras", "Mantine", "Hariyama", "Aggron", " Wailord", "Glalie", "Metagross", "Rhyperior", "Shiny Golem", "Shiny Gyarados", "Shiny Snorlax", "Shiny Onix", "Shiny Tyranitar", "Shiny Metang", "Shiny Steelix", "Shiny Camerupt", "Shiny Lapras", "Shiny Mantine", "Shiny Hariyama", "Shiny Aggron", "Shiny Wailord", "Shiny Glalie", "Shiny Metagross", "Shiny Rhyperior"}}, } function onUse(cid, item, frompos, item3, topos) local item2 = getTopCorpse(topos) if item2 == null then return true end if getPlayerStorageValue(cid, 55006) >= 1 then doPlayerSendCancel(cid, "Você não pode capturar nenhum pokémon enquanto está em duel.") return true end if getItemAttribute(item2.uid, "catching") == 1 then return true end local name = string.lower(getItemAttribute(item2.uid, "pokeName")) name = string.gsub(name, "fainted ", "") name = string.gsub(name, "defeated ", "") name = doCorrectPokemonName(name) local storage = newpokedex[name].stoCatch if type(getPlayerStorageValue(cid, storage)) ~= "string" or not string.find(getPlayerStorageValue(cid, storage), "magu") then --alterado v1.9 setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0, dark = 0, magu = 0, sora = 0, yume = 0, dusk = 0, tale = 0, moon = 0, net = 0, premier = 0, tinker = 0, fast = 0, heavy = 0;") --alterado v1.9 end local owner = getItemAttribute(item2.uid, "corpseowner") local pOwner = getPlayerByName(owner) local isInParyWithPlayer = false if isInParty(cid) and isInParty(pOwner) then isInParyWithPlayer = isPartyEquals(pOwner, cid) end if owner and isCreature(pOwner) and isPlayer(pOwner) and cid ~= pOwner and not isInParyWithPlayer then doPlayerSendCancel(cid, "Desculpa. Isso não é possivel.") return true end local newidd = isShinyName(name) and ballcatch[item.itemid].ball[2] or ballcatch[item.itemid].ball[1] or false --alterado v1.9 local typeee = ballcatch[item.itemid].typeee local boost = ballcatch[item.itemid].boost local catchBlocks = {"Kabuto", "Kabutops", "Omanyte", "Omastar","Shiny Vileplume", "Shiny Marowak", "Shiny Umbreon", "Shiny Fearow", "Shiny Espeon", "Shiny Flareon", "Shiny Jolteon", "Shiny Vaporeon", "Shiny Salamence", "Shiny Magmortar", "Shiny Electivire", "Shiny Scizor", "Moltres", "Articuno", "Zapdos", "Aerodactyl", "Hitmonlee", "Hitmonchan", "Hitmontop", "Raikou", "Entei", "Suicune", "Lugia", "Ho-oh"} if isInArray(catchBlocks, name) then doSendMsg(cid, "Você não pode capturar este pokemon.") return true end local catchCyber = {"Shiny Dodrio", "Shiny Magneton", "Shiny Espeon", "Shiny Umbreon", "Shiny Rhydon", "Shiny Ninetales", "Shiny Onix", "Shiny Ariados", "Shiny Stantler", "Shiny Politoed"} if isInArray(catchCyber, name) and getPlayerStorageValue(cid, 50926) ~= 1 then doSendMsg(cid, "Você não concluiu a Cyber Quest!") return true end if getPlayerStorageValue(cid, 1654987) >= 1 then doSendMsg(cid, "Você não pode capturar pokémons nesse local.") return true end if typeee == "master" and isShinyName(name) then doSendMsg(cid, "Você não pode capturar pokemon shiny com a master ball.") return true end -- // New's Bag \\ -- if typeee == "poke" then local valor = getPlayerStorageValue(cid, 233200) <= 0 and 1 or getPlayerStorageValue(cid, 233200) setPlayerStorageValue(cid, 233200, valor + 1) elseif typeee == "great" then local valor1 = getPlayerStorageValue(cid, 233201) <= 0 and 1 or getPlayerStorageValue(cid, 233201) setPlayerStorageValue(cid, 233201, valor1 + 1) elseif typeee == "super" then local valor2 = getPlayerStorageValue(cid, 233202) <= 0 and 1 or getPlayerStorageValue(cid, 233202) setPlayerStorageValue(cid, 233202, valor2 + 1) elseif typeee == "ultra" then local valor3= getPlayerStorageValue(cid, 233203) <= 0 and 1 or getPlayerStorageValue(cid, 233203) setPlayerStorageValue(cid, 233203, valor3 + 1) end if getPlayerStorageValue(cid, 233200) >= 100 and getPlayerStorageValue(cid, 232200) ~= 1 then doPlayerAddItem(cid, 12683, 1) setPlayerStorageValue(cid, 233200, 0) elseif getPlayerStorageValue(cid, 233201) >= 250 and getPlayerStorageValue(cid, 232201) ~= 1 then doPlayerAddItem(cid, 12682, 1) setPlayerStorageValue(cid, 233201, 0) elseif getPlayerStorageValue(cid, 233202) >= 500 and getPlayerStorageValue(cid, 232202) ~= 1 then doPlayerAddItem(cid, 12684, 1) setPlayerStorageValue(cid, 233202, 0) elseif getPlayerStorageValue(cid, 233203) >= 1000 and getPlayerStorageValue(cid, 232203) ~= 1 then doPlayerAddItem(cid, 12685, 1) setPlayerStorageValue(cid, 233203, 0) end if getPlayerStorageValue(cid, 244787) >= 1 and typeee ~= "saffari" then doPlayerSendCancel(cid, "Você não pode capturar esse pokémon com essa Pokébola.") return true end if getPlayerStorageValue(cid, 244787) >= 1 and getPlayerItemCount(cid, 12617) <= 1 then --alterado v1.9 setPlayerStorageValue(cid, 244787, -1) doTeleportThing(cid, {x = 925, y = 1535, z = 6}, false) doSendMagicEffect(getThingPos(cid), 21) doPlayerSendTextMessage(cid, 27, "Você não tem mais Saffari Ball!") end --[[ if getPlayerStorageValue(cid, 141416) >= 1 then return true end]]-- local catchinfo = {} if isShinyName(name) then catchinfo.rate = ballcatch[item.itemid].cr + getPlayerSorte() else catchinfo.rate = ballcatch[item.itemid].cr + getPlayerSorteInNormal() end catchinfo.catch = ballcatch[item.itemid].on catchinfo.fail = ballcatch[item.itemid].off catchinfo.newid = newidd catchinfo.name = doCorrectPokemonName(name) catchinfo.topos = topos --catchinfo.chance = x.chance doBrokesCount(cid, newpokedex[doCorrectPokemonName(name)].stoCatch , typeee) doSendDistanceShoot(getThingPos(cid), topos, ballcatch[item.itemid].send) doRemoveItem(item.uid, 1) ---- newsBalls if (ballcatch[item.itemid].type ~= nil or ballcatch[item.itemid].pokes ~= nil) then catchinfo.rate = getBallsRate(catchinfo.name, item.itemid) + getPlayerSorte() end if isGod(cid) or getPlayerStorageValue(cid, 394672) >= 1 then catchinfo.rate = 100000 end if getPlayerStorageValue(cid, storage_buff_catch) <= os.time() then if getPlayerStorageValue(cid, 121212) >= 1 then catchinfo.rate = 1000 setPlayerStorageValue(cid, storage_buff_catch, os.time() + (60 * minutes_buff)) end end local d = getDistanceBetween(getThingPos(cid), topos) setPlayerStorageValue(cid, 141416, 1) addEvent(setPlayerStorageValue, 725, cid, 141416, -1) doItemSetAttribute(item2.uid, "catching", 1) addEvent(doSendPokeBall, d * 70 + 100 - (d * 14) , cid, catchinfo, false, false, typeee, 1.5) addEvent(doSendMagicEffect, (d * 70 + 100 - (d * 14)) - 100, topos, 3) return true end function getPlayerSorte() if math.random(1, 200) >= 199 then ballS = math.random(250, 450) else ballS = math.random(1, 35) end return ballS end function getPlayerSorteInNormal() if math.random(1, 100) >= 95 then ballS = math.random(250, 450) else ballS = math.random(1, 35) end return ballS end function getBallsRate(name, id) if pokes[name] then if isInArray(ballcatch[id].type, pokes[name].type) or isInArray(ballcatch[id].type, pokes[name].type2) or isInArray(ballcatch[id].pokes, name) then return 6 end end return 4 end Nas duas primeiras linhas do código tem uma variável que armazena o valor da storage que irá guardar o tempo para usar o buff novamente e embaixo tem a variável que contém o tempo em minutos para usar o buff, só alterar o tempo, pois eu deixei 5 apenas como valor fictício. Teste e se der algum problema, me avise.
  16. Se entendi bem você quer que mostre a vida e mana drenada, para isso pode mostrar em um animated text: -- Código feito por Omega -- function getPlayerTopMeleeSkill(cid) skill = 0 value = 10 for i = 1, 4 do if getPlayerSkillLevel(cid, i) > value then value = getPlayerSkillLevel(cid, i) skill = i end end return { skill = i, value = value } end -- Porcentagem do dano que será healado pelo jogador local healPercent = 35 local effect = 8 --Distance effect. function onUseWeapon(cid, var) local target = getCreatureTarget(cid) if not target then return true end if getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid == 8855 or getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid == 8855 then local skill, local attack, level = getPlayerTopMeleeSkill(cid).value, getItemInfo(getPlayerWeapon(cid).itemid).attack, getPlayerLevel(cid) -- Use skill (maior valor entre melee e distance), level e attack (ataque da arma) para configurar a fórmula do dano local formula = 0.5 * (skill * 3 + attack * 3 + level * 2) local dmg = math.random(8, 12) / 10 * formula * -1 doTargetCombatHealth(cid, target, COMBAT_LIFEDRAIN, dmg, dmg, CONST_ME_DRAWBLOOD) doSendDistanceShoot(getThingPos(cid), getThingPos(target), effect) local heal = math.ceil(- 1.0 * dmg * healPercent / 100) local healmana = math.ceil(- 1.0 * dmg * healPercent / 100) doCreatureAddHealth(cid, heal) doCreatureAddMana(cid, healmana) doSendAnimatedText(getThingPos(cid), "HEALTH\n" .. heal .. "\n\nMANA\n" .. healmana, math.random(1, 255)) return true end end Teste e veja se é assim que você quer.
  17. Tópico movido de Downloads > OTServ > OTServer Alternativo (ATS) para Suporte > OTServ > Programação. Fique atento às regras do fórum.
  18. Tópico movido de Scripting > Recursos > OTServ > Libs and Functions para Suporte > OTServ > Scripts. Fique atento às regras do fórum.
  19. Yan Oliveira

    [AJUDA] Pokedex

    Que bom que conseguiu resolver o problema! Mas, poste a solução para que futuramente outras pessoas com o mesmo problema consigam resolver o problema. Pode editar o post que criou o tópico mesmo para isso.
  20. Yan Oliveira

    Npc dando erro

    Que bom que conseguiu resolver! Entretanto, informe a solução para que futuramente outras pessoas com o mesmo problema consigam resolver o problema. Pode editar o post que criou o tópico mesmo.
  21. Yan Oliveira

    Pedido de Mapa

    Tópico movido de OTServ > OTServlist para Pedidos > OTServ > Mapping. Fique atento às regras do fórum.
  22. Você mudou para 10x a Exp via script (rate) ou mudando nas configurações?
  23. Yan Oliveira

    Revive Com Tempo

    Entendi, troque o código por esse: local level = 200 -- LEVEL MÍNIMO PARA USAR O REVIVE local storage_time = 68789 -- STORAGE PARA VERIFICAR O TEMPO PARA USAR O REVIVE local minutes = 10 -- MINUTOS PARA USAR O REVIVE local message_color = MESSAGE_STATUS_CONSOLE_BLUE -- COR DO TEXTO --------------- CÓDIGO --------------- function onUse(cid, item, frompos, item2, topos) if getPlayerLevel(cid) < level then doPlayerSendCancel(cid, "You need to be at least level " .. level .. " to use this revive.") return doPlayerSendTextMessage(cid, message_color, "You need to be at least level " .. level .. " to use this revive.") else if getPlayerStorageValue(cid, storage_time) <= os.time() then if getPlayerStorageValue(cid, 990) >= 1 then doPlayerSendCancel(cid, "You can't use revive during gym battles.") return true end if getPlayerStorageValue(cid, 52481) >= 1 then return doPlayerSendCancel(cid, "You can't do that while a duel.") --alterado v1.6 end -- if item2.itemid <= 0 or not isPokeball(item2.itemid) then doPlayerSendCancel(cid, "Please, use revive only on pokeballs.") return true end for a, b in pairs (pokeballs) do if item2.itemid == b.on or item2.itemid == b.off then doTransformItem(item2.uid, b.on) doSetItemAttribute(item2.uid, "hp", 1) for c = 1, 15 do local str = "move"..c setCD(item2.uid, str, 0) end setCD(item2.uid, "control", 0) setCD(item2.uid, "blink", 0) --alterado v1.6 doSendMagicEffect(getThingPos(cid), 13) doRemoveItem(item.uid, 1) doCureBallStatus(item2.uid, "all") cleanBuffs2(item2.uid) setPlayerStorageValue(cid, storage_time, os.time() + (60 * minutes)) return true end end else doPlayerSendCancel(cid, "You need to wait " .. minutes .. " minutes to use this revive.") return doPlayerSendTextMessage(cid, message_color, "You need to wait " .. minutes .. " minutes to use this revive.") end end return true end
  24. Yan Oliveira

    Revive Com Tempo

    Eu tinha baixado essa base em 2019, mas o arquivo do revive está bem diferente do que eu tenho aqui. Poste novamente o arquivo revive.lua, mas poste tudo, pois esse que colocou na criação do tópicos parece que faltou partes. Edita lá mesmo e coloca lá. Ai eu dou uma olhada melhor.
  25. Yan Oliveira

    Revive Com Tempo

    Qual a base do seu ot? É DXP?
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...