-
Total de itens
2553 -
Registro em
-
Última visita
-
Dias Ganhos
72
Tudo que zipter98 postou
-
Desculpe, não jogo Tibia e, logo, não entendi as referências acima. Basicamente, você quer uma spell que só possa ser usada a 1 SQM de distância do alvo e que altere a sprite do jogador por uma fração de segundo, simulando um soco? Um vídeo ou gif poderiam também ajudar na compreensão.
-
action Ajuda como modificar action do oneshot
tópico respondeu ao maikons de zipter98 em Lixeira Pública
-
data/creaturescripts/scripts local config = { name = "monster_name", --Nome do monstro. minDamage = 7000, --Dano mínimo para receber as recompensas. items = { prize = {itemid, count}, --{ID do item, quantidade} medal = xxx, --ID da medalha. }, storage = 91828, } function onStatsChange(cid, attacker, type, combat, value) if isPlayer(attacker) and isMonster(cid) and getCreatureName(cid) == config.name and type == STATSCHANGE_HEALTHLOSS then local damage = getPlayerStorageValue(attacker, config.storage) < 1 and 0 or getPlayerStorageValue(attacker, config.storage) setPlayerStorageValue(attacker, config.storage, damage + value) end return true end function onDeath(cid, corpse, deathList) for _, pid in pairs(deathList) do local damage = getPlayerStorageValue(pid, config.storage) if damage >= config.minDamage then doPlayerSendTextMessage(pid, 27, "For helping killing "..config.name..", you received a medal and "..config.items.prize[2].."x "..getItemNameById(config.items.prize[1])..".") doPlayerAddItem(pid, config.items.prize[1], config.items.prize[2]) doItemSetAttribute(doPlayerAddItem(pid, config.items.medal, 1), "description", "Medalha de honra ganha por "..getCreatureName(pid).." por ajudar a derrotar o "..config.name.." no dia "..os.date("%D")..".") setPlayerStorageValue(pid, config.storage, -1) end end db.executeQuery("UPDATE player_storage SET value = -1 WHERE key = "..config.storage) return true end Tags: <event type="statschange" name="mDamage" event="script" value="nome_do_arquivo.lua"/> <event type="death" name="mItems" event="script" value="nome_do_arquivo.lua"/> Em login.lua: registerCreatureEvent(cid, "mDamage") No arquivo .xml do monstro: <script> <event name="mItems"/> </script>
-
action Essa pot healar no máximo 150k de health e mana!
pergunta respondeu ao Animal Pak de zipter98 em Scripts
Desculpe minha má interpretação, mas você quer que a poção cure 150k ou, caso o valor máximo de HP/mana ultrapasse esse limite, a quantia curada seja essa? -
local tpId = 1387 local tp = { info = { pos = {x = 761, y = 57, z = 7}, toPos = {x = 767, y = 52, z = 7}, time = 30, }, kill = { ["Hell's Knight"] = {count = 2, str = 10629}, ["Lok"] = {count = 1, str = 10630}, }, } function checkTask() for name, info in pairs(tp.kill) do if getGlobalStorageValue(info.str) < info.count then return false end end return true end function removeTp(tp) local t = getTileItemById(tp.info.pos, tpId) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(tp.info.pos, CONST_ME_POFF) end end function onDeath(cid) local m = tp.kill[getCreatureName(cid)] if not tp then return true end setGlobalStorageValue(m.str, getGlobalStorageValue(m.str) < 0 and 1 or getGlobalStorageValue(m.str) + 1) if checkTask() then doCreateTeleport(tpId, tp.info.toPos, tp.info.pos) doCreatureSay(cid, "O teleport irá sumir em "..tp.info.time.." segundos.", TALKTYPE_ORANGE_1) addEvent(removeTp, tp.info.time * 1000, tp) for _, info in pairs(tp.kill) do setGlobalStorageValue(info.str, -1) end end return true end
-
local config = { lottery_hora = "60 Minutos", reward_count = 1, website = 0 } function onThink(interval, lastExecution) local players = getPlayersOnline() local list = {} for i, tid in ipairs(players) do list = tid end local winner = list[math.random(1, #list)] if(config.website == 1) then db.executeQuery("INSERT INTO `lottery` (`name`) VALUES ('".. getCreatureName(winner) .."');") end doBroadcastMessage('[Loteria Mineira] Ganhador: '.. getCreatureName(winner) ..', Recompensa: '.. config.reward_count ..'moedas! - Parabens ! (Proxima em: '.. config.lottery_hora ..')') doPlayerAddItem(winner, 8303, config.reward_count) doAccountAddPoints(winner, 1) return true end Sobre o problema do comando não adicionar corretamente os pontos, troque (em AddPoints.lua): doAccountAddPoints(cid, count) por: doAccountAddPoints(pid, count)
-
Use a base que eu disse ter usado para testar o sistema. As únicas diferenças que o meu tem da PxG é que, enquanto no que escrevi a mensagem é "Mega Evolve!", no deles é o nome da mega evolução, e também porque cada mega evolução deles tem um ícone diferente na CD Bar. Como já disseram, estou viajando, logo não darei suporte por um bom tempo.
- 166 respostas
-
- mega stone
- megevolution
-
(e 1 mais)
Tags:
-
O cooldown diminuído será em % baseado no CD total da magia, ou será diferente para cada uma? Responde rápido se possível, logo vou sair e amanhã irei viajar e só voltarei mês que vem. Enfim, escrevi para que o cooldown seja diminuído em 30% (achei esta a melhor porcentagem de redução de tempo de recarga). Se este valor não lhe agradar, mude o 0.3 (que equivale a 30%). O código talvez possa ser escrito de maneira mais simples, porém, como já disse, estou com pressa para sair. pokemon moves.lua: Nas spells que apliquem condições negativas (como Silence, Sleep, Slow, etc), haverá esta linha: local ret = {} Abaixo dela, coloque: ret.Spell = {cid, spell} Depois, em newStatusSyst.lua, abaixo de: doSendAnimatedText(getThingPosWithDebug(ret.id), "BOOST", 215) --alterado v1.8 coloque: local user, spell = ret.Spell[1], ret.Spell[2] if user and spell and isSummon(user) then local pid = getCreatureMaster(user) if isPlayer(pid) then local ball, index, cooldown = getPlayerSlotItem(pid, 8).uid, 0, 0 for i = 1, 12 do local move = getNewMoveTable(movestable[getCreatureName(user)], i) if move and move.name == spell then index = i cooldown = move.cd break end end if index ~= 0 then local newCd = math.floor(cooldown - cooldown * 0.3) setCD(ball, "move"..index, newCd) end end end
-
Cara, esse evento não se registra em login.lua, e sim no arquivo XML dos monstros. Você tem certeza que instalou corretamente o onSpawn nas sources?
-
Ops, código corrigido. Falta de atenção minha. Usa esta tag: <event type="spawn" name="bossSpawn" event="script" value="nome_do_arquivo.lua"/>
-
[Resolvido] [Pedido] Heavy Slam e Passiva Iron Body
pergunta respondeu ao FlamesAdmin de zipter98 em Resolvidos
Já terminei faz tempo, só estou esperando você avisar que criou o item. Certamente não ficou igual a PxG, porque, caso tenham usado esse método, deve ter demorado um bom tempo para achar o tempo ideal para representar um pulo "perfeito" (como o da gif). E, sinceramente, não estava com paciência de ficar procurando tal tempo. Função de pulo: function jump(cid, rounds) doChangeSpeed(cid, -getCreatureSpeed(cid)) doCreatureSetNoMove(cid, true) for i = 1, rounds do addEvent(function() if isCreature(cid) then local pos = getThingPos(cid) local item = doCreateItem(ITEM_INVISIVEL, 1, pos) addEvent(function() local it = getTileItemById(pos, ITEM_INVISIVEL).uid if it > 0 then doRemoveItem(it) end if i == rounds then doRegainSpeed(cid) doCreatureSetNoMove(cid, false) end end, rounds == 1 and 200 or (i + 2) * 100) end end, i * (rounds == 1 and 200 or 100)) end end Use jump(cid, 1) para um pulo de altura "1" (como o causado pelo Earthquake), e jump(cid, 2) para pulos como do Heavy Slam. Código do Heavy Slam: local config = { areas = {area1, area2}, --Áreas, em ordem de execução. effect = 160, --Efeito. combat = NORMALDAMAGE, --Elemento. } local function doPushCreature(target, cid) if target > 0 then if not isNpc(target) then local position = getThingPosition(cid) local fromPosition = getThingPosition(target) local x = ((fromPosition.x - position.x) < 0 and -1 or ((fromPosition.x - position.x) == 0 and 0 or 1)) local y = ((fromPosition.y - position.y) < 0 and -1 or ((fromPosition.y - position.y) == 0 and 0 or 1)) local toPosition = {x = fromPosition.x + x, y = fromPosition.y + y, z = fromPosition.z} if doTileQueryAdd(target, toPosition) == 1 and getTileInfo(toPosition).house == false then doTeleportThing(target, toPosition, true) end end end end jump(cid, 2) addEvent(function() for i = 0, #config.areas - 1 do addEvent(function() local pos = getPosfromArea(cid, config.areas[i + 1]) doMoveInArea2(cid, config.effect, config.areas[i + 1], config.combat, min, max) for j = 1, #pos do local pid = getTopCreature(pos[j]).uid if ehMonstro(pid) then doPushCreature(pid, cid) elseif isSummon(pid) then local master = getCreatureMaster(pid) if isSummon(cid) then if getPlayerStorageValue(master, 52480) >= 1 and getPlayerStorageValue(master, 52481) >= 0 then local masterCid = getCreatureMaster(cid) if isDuelingAgainst(masterCid, master) then doPushCreature(pid, cid) end end else doPushCreature(pid, cid) end end end end, i * 230) end end, 650) -
data/creaturescripts/scripts.
-
Teoricamente sim, de 1 em 1 hora. Se não funcionar, teste o primeiro código.
-
Não se esqueçam de registrar o evento no arquivo .XML dos monstros que poderão spawnar um boss. local config = { chance = 1, --Coloquem apenas números inteiros (1 - 0.0001%). bosses = { --["monster_name"] = "boss", ["Dragon Lord"] = "Demodras", }, } function onSpawn(cid) if isMonster(cid) then addEvent(function() if isCreature(cid) then local boss = config.bosses[getCreatureName(cid)] if boss and math.random(1, 1000000) <= config.chance then local pos = getThingPos(cid) doRemoveCreature(cid) doCreateMonster(boss, pos) end end end, 5) end return true end
-
<globalevent name="monster1" type="start" event="script" value="nome_do_arquivo.lua"/> <globalevent name="monster2" interval="3600" event="script" value="nome_do_arquivo.lua"/>
-
Tem a maneira mais prática, que envolve apenas o onSpawn. Entretanto, você precisaria registrar o evento no arquivo XML de todos os monstros do jogo. (creaturescript) function backToPos(cid, pos) if isCreature(cid) then doTeleportThing(cid, pos) addEvent(backToPos, 60 * 60 * 1000, cid, pos) end end function onSpawn(cid) backToPos(cid, getThingPos(cid)) return true end Se achar muito cansativo, há uma outra maneira, que apesar de gastar muita memória no processo, você só precisará registrar 2 tags. (globalevent) function onStartup() for _, m in pairs(getMonstersOnline()) do local value = ":"..getThingPos(m).x.."/"..getThingPos(m).y.."/"..getThingPos(m).z setPlayerStorageValue(m, 9182, value) end return true end function onThink() for _, m in pairs(getMonstersOnline()) do local t = getPlayerStorageValue(m, 9182):sub(2):explode("/") doTeleportThing(m, {x = tonumber(t[1]), y = tonumber(t[2]), z = tonumber(t[3])}) end return true end
-
Se você instalar essas duas funções nas sources, eu faço o código em Lua.
-
Isso é bem simples, porém é necessário ter as sources do servidor e instalar as funções onSpawn (tem aqui no fórum, só procurar) e getMonstersOnline (o código desta função tem tanto na OTLand quanto no Tibia King).
-
Não se preocupem, fazer o que vocês querem é bem simples. Como estou ocupado no momento, mais tarde farei o código para vocês. Pelas sources, é necessário apenas instalar aquele creatureevent que citei (onSpawn).
-
Provavelmente você esqueceu de configurar alguma coisa (ou configurou errado) na tabela config. Se possível, poste como ficou seu código configurado.
-
data/creaturescripts/scripts, geralmente spawn.lua. Você deve registrar o evento no arquivo XML do(s) monstro(s). Entretanto, em servidores de pokémon, os pokémons shinies são gerados pelo script apenas adicionando o prefixo "Shiny " no nome. No seu caso, este método não seria possível.
-
Claro, seria quase o mesmo processo. Porém, neste caso, você teria que configurar uma tabela indicando os monstros e seus respectivos "shinies". Já adianto a ambos: será necessário instalar nas sources o creatureevent onSpawn. Link para a versão 0.3.6 Link para a versão 0.4
-
OK. Você saberia dizer se há alguma tabela no seu servidor (em algum arquivo da lib) em que os pokémons são configurados para alguma coisa (por exemplo, status e spells, como no PDA)? Se sim, peço que diga o nome desta tabela. Assim, não haverá margens de erros na criação do shiny. Caso contrário, eu posso criar uma função para verificar se o monstro existe (meio gambiarra, mas enfim).
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.