Ir para conteúdo

Sh0z

Membro
  • Registro em

  • Última visita

  1. Ai é um revscript pra tfs 15x Só converter para o que precisa. ps: Antes tarde do que nunca né. rs. Código abaixo local DIABLO_STORAGE = 19338 local RAIN_DURATION = 10 local RAIN_INTERVAL = 1000 local RAIN_RADIUS = 6 local RAIN_DROPS = 16 local RAIN_MIN_DMG = -900 local RAIN_MAX_DMG = -600 local function diabloRainTick(casterId, ticksLeft) if ticksLeft <= 0 then return end local caster = Player(casterId) if not caster then return end local pos = caster:getPosition() -- Dano + efeito de fogo no tile de cada monstro atingido local spectators = Game.getSpectators(pos, false, false, RAIN_RADIUS, RAIN_RADIUS, RAIN_RADIUS, RAIN_RADIUS) for _, target in ipairs(spectators) do if target:isMonster() then doTargetCombatHealth(caster, target, COMBAT_PHYSICALDAMAGE, RAIN_MIN_DMG, RAIN_MAX_DMG, CONST_ME_FIREATTACK) end end -- Fireballs voando da borda superior para posições aleatórias no chão for _ = 1, RAIN_DROPS do local landX = pos.x + math.random(-RAIN_RADIUS, RAIN_RADIUS) local landY = pos.y + math.random(-RAIN_RADIUS, RAIN_RADIUS) local fromPos = Position(landX + math.random(-2, 2), pos.y - RAIN_RADIUS, pos.z) fromPos:sendDistanceEffect(Position(landX, landY, pos.z), CONST_ANI_FIRE) end addEvent(diabloRainTick, RAIN_INTERVAL, casterId, ticksLeft - 1) end local spell = Spell("instant") function spell.onCastSpell(creature, variant) local caster = creature:getPlayer() if not caster then return false end local charges = caster:getStorageValue(DIABLO_STORAGE) if charges <= 0 then caster:sendCancelMessage("You have no Diablo Rain charges.") return false end caster:setStorageValue(DIABLO_STORAGE, charges - 1) local remaining = charges - 1 local msg = remaining > 0 and ("Hellfire rains down! Charges remaining: " .. remaining) or "Hellfire rains down! No charges remaining." caster:sendTextMessage(MESSAGE_EVENT_ADVANCE, msg) local pos = caster:getPosition() for _ = 1, RAIN_DROPS do local landX = pos.x + math.random(-RAIN_RADIUS, RAIN_RADIUS) local landY = pos.y + math.random(-RAIN_RADIUS, RAIN_RADIUS) local fromPos = Position(landX + math.random(-2, 2), pos.y - RAIN_RADIUS, pos.z) fromPos:sendDistanceEffect(Position(landX, landY, pos.z), CONST_ANI_FIRE) end addEvent(diabloRainTick, RAIN_INTERVAL, caster:getId(), RAIN_DURATION) return true end spell:name("Diablo Rain") spell:words("diablo rain") spell:group("support") spell:id(9212) spell:level(1) spell:mana(0) spell:isPremium(false) spell:isAggressive(true) spell:isSelfTarget(true) spell:needLearn(false) spell:vocation("sorcerer;true", "druid;true", "paladin;true", "knight;true", "master sorcerer;true", "elder druid;true", "royal paladin;true", "elite knight;true") spell:register()
  2. Beleza, vamos lá então siga os passos abaixo para adicionar 1- vá em system/templates e procure por: characters.html.twig 2- abra o arquivo e procure por last login 3- debaixo do </tr> do last login cole o codigo abaixo {% set rows = rows + 1 %} <tr bgcolor="{{ getStyle(rows) }}"> <td>Bank Balance:</td> <td>{{ player.getBalance() }} Gold Coins.</td> </tr> Ficando assim {% set rows = rows + 1 %} <tr bgcolor="{{ getStyle(rows) }}"> <td>Last login:</td> <td>{% if player.getLastLogin() == 0 %}Never logged in.{% else %}{{ player.getLastLogin()|date("M d Y, H:i:s") }} CEST{% endif %}</td> </tr> {% set rows = rows + 1 %} <tr bgcolor="{{ getStyle(rows) }}"> <td>Bank Balance:</td> <td>{{ player.getBalance() }} Gold Coins.</td> </tr> Caso não consiga estarei mandando tambem o arquivo editado, basta alterar onde eu citei la em cima e depois entrar no admin e dar um clear cache characters.html.twig
  3. Boa tarde amigo, pra você colocar o bank do cara no site você tem que buscar o valor balance na database. Vou tentar te auxiliar por aqui, pra isso preciso de algumas informações qual o site que você esta usando?? Myaac, gesior, znote
  4. O primeiro deu certo, só tive que colocar um novo local pos junto com o ultimo else, estava dando erro na hora de soltar o efeito, Mas agora está perfeito. Só tenho que testar com 2 ou mais pessoas sumonando o npc... Vou fazer uns testes e depois edito aqui
  5. Não, este script vai servir pra sumonar npcs proprios do server que vai auxiliar nas caves, vendas de itens e tudo mais... vai ser um item pra vender no store no caso No caso cada pessoa que tiver o scroll pode sumonar apenas 1 npc até o outro que ele sumonou sumir, é como se fosse aqueles summons da vocação do global
  6. testei aqui ele não sumona, fica dando poff como se ja existisse um npc criado. Vou mandar um video 20211125_232815.mp4
  7. não deu certo, dessa forma nem sumona o npc fica dando o poff mesmo se eu nao tiver com o os.time
  8. .Qual servidor ou website você utiliza como base? Qual o motivo deste tópico? Está surgindo algum erro? Se sim coloque-o aqui. Você tem o código disponível? Se tiver publique-o aqui: function onUse(player, item, fromPosition, target, toPosition, isHotkey) local playerPos = player:getPosition() local position = Position(playerPos.x, playerPos.y + 1, playerPos.z) local npcName = "Mad" local storage = "2252" local npc = Game.createNpc(npcName, position) function removeNpc(creature) local target = Npc(npc) target:getPosition():sendMagicEffect(CONST_ME_TELEPORT) player:setStorageValue(storage, 0) target:remove() end if npc then npc:setMasterPos(position) position:sendMagicEffect(CONST_ME_POFF) player:say("can you help me?", TALKTYPE_MONSTER_SAY) player:setStorageValue(storage, os.time() + 1*60) addEvent(removeNpc, 1*60*1000, npcName) return true else position:sendMagicEffect(CONST_ME_POFF) end end Bom vamos lá Fiz um action que ao usar um certo scroll tu sumona um npc por 1 minuto. O codigo em si está 100% funcional porém quanto mais eu clico no scroll mais npcs eu gero. Queria limitar apenas a 1 npc. Mas não estou conseguindo... Alguem pode me auxiliar? Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  9. Testa esse aqui <attack name="manadrain" interval="15000" chance="100" range="7" min="100" max="200"> <attribute key="areaEffect" value="redshimmer"/> </attack>
  10. pergher reagiu a uma resposta no tópico: Regeneração de Mana nos Trainers
  11. tenta assim <attack name="manadrain" interval="1000" chance="7" range="7" min="900" max="10000"> <attribute key="shootEffect" value="energy" /> <attribute key="areaEffect" value="poff" /> </attack>
  12. Caso não der certo posso tentar ajudar com o método do @Zazeros
  13. pergher reagiu a uma resposta no tópico: Regeneração de Mana nos Trainers
  14. Abre o rme e vê a posição de cada piso que os players vai ficar, assim tu configura como desejar
  15. Tu pode fazer um globalevents (mesmo sistema que foi feito na magia das estatuas da library) porem tu pode tirar o dano e add a linha de add mana Testa esse ai, só configura o fromPosition e o toPosition para a mesma coordenada para assim soltar em 1 lugar só, ai é só repetir para todos os trainers! local effects = { {fromPosition = Position(32526, 32536, 12), toPosition = Position(32526, 32539, 12), effect = CONST_ME_HOLYDAMAGE}, } function onThink(interval, cid) local jolf for i = 1, #effects do local settings = effects[i] fromPosition = settings.fromPosition toPosition = settings.toPosition local spectators = Game.getSpectators(settings.fromPosition, false, true, 7, 7, 5, 5) if #spectators > 0 then if settings.effect then for y = fromPosition.y, toPosition.y do local newPosition = Position(fromPosition.x, y, fromPosition.z) newPosition:sendMagicEffect(settings.effect) jolf = Tile(newPosition):getTopCreature() if jolf and jolf:isPlayer() then doPlayerAddMana(cid, getPlayerMaxMana(cid)) end end for x = fromPosition.x, toPosition.x do local newPosition2 = Position(x, fromPosition.y, fromPosition.z) newPosition2:sendMagicEffect(settings.effect) jolf = Tile(newPosition2):getTopCreature() if jolf and jolf:isPlayer() then doPlayerAddMana(cid, getPlayerMaxMana(cid)) end end end end end return true end
  16. @FearWar eu coloquei essa linha do Query no mesmo local onde vc disse porém não está inserindo nada na DB
  17. Deu certo, Muito obrigado

Informação Importante

Confirmação de Termo