Ir para conteúdo

Storm

Héroi
  • Registro em

  • Última visita

Tudo que Storm postou

  1. È mais fácil criar um client próprio e evitar esse erro do Ip changer , já tentou utilizar outros programas que mudam o IP ?
  2. Sobre os monstros , eles seriam somente um ou seria monstros aleatórios de uma tabela ?
  3. Storm postou uma resposta no tópico em Suporte Tibia OTServer
    O ùnico jeito de identificar se o player usou o item é através da storage cara.
  4. creature:registerEvent("RewardLevel")
  5. Você adicionou no login.lua ?
  6. Você está copiando a script errado , vai na linha 14 e remove o simbolo 'ï'
  7. function repeatEff(cid, eff, tempo, health) local pos = {x = getCreaturePosition(cid).x + 0, y = getCreaturePosition(cid).y + 0, z = getCreaturePosition(cid).z} if not isCreature(cid) or tempo == 0 then return end doSendMagicEffect(pos, eff) doCreatureAddHealth(cid, health) addEvent(repeatEff, 1000, cid, eff, tempo-1) end function onCastSpell(cid, var) local eff = 7 -- Efeito local tempo = 30 -- em segundos local health = 200 -- Quanto ganhará de vida em aproximadamente alguns segundos quebrados if isPlayer(cid) then doCreatureSetNoMove(cid, true) repeatEff(cid, eff, tempo, health) addEvent(doCreatureSetNoMove, tempo * 1000, cid, false) return true end return true end
  8. Storm postou uma resposta no tópico em Suporte Tibia OTServer
    Após o function onCastSpell(cid, var) Adicione : local storage = 15234 -- Coloque aqui a storage que o player ganhou ao completar a quest if getPlayerStorageValue(cid, storage) == -1 then doPlayerSendTextMessage(cid, 27, "Você precisa concluir a quest para usar a magia") doSendMagicEffect(getCreaturePosition(cid), 4) return true end
  9. Usa essa <event type="death" name="Boss" event="script" value="Peterson/doomboss.lua"/>
  10. Você errou na configuração na XML , posta ai pra mim ver como ficou
  11. Não.
  12. Creaturescripts , basta substituir a que você postou aqui.
  13. Interessante , mas no caso seria apenas um tipo de monstro para matar ou o player escolheria qual daqueles matar ?
  14. local a = { ["Rabbit"] = {[1] = {2150, 3}, -- [MONSTERNAME] = {[1] = {ITEM ID, COUNT}} // Você pode criar quantas quiser e deve separalas por virgula , observe meu exemplo. [2] = {2160, 4}, [3] = {2155, 10}, } ------------------------------ } function onDeath(cid, corpse, deathList) local b = a[getCreatureName(cid)] local killer = deathList[1] if not isMonster(cid) or not isPlayer(killer) then return true end if b then for _, v in ipairs(b) do doPlayerAddItem(killer, v[1], v[2] or 1) end doBroadcastMessage("O player [".. getCreatureName(killer) .."] matou o boss [".. getCreatureName(cid) .."]", 27) return true end end Na XML do monstro, adicione : <script> <event name="Boss"/> </script>
  15. Storm postou uma resposta no tópico em Suporte OTServer Derivados
    local blocked = {2150, 2155, 2180} -- ID dos itens não permitidos local group = 4 -- GROUP ID não permitido a usar o comando e criar os itens da tabela acima // 4 por exemplo , isso significa que nenhum GROUP que for igual a quatro ou menor que quatro seria permitido a criar os itens da tabela function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, ",") local ret = RETURNVALUE_NOERROR local pos = getCreaturePosition(cid) local id = tonumber(t[1]) if(not id) then id = getItemIdByName(t[1], false) if(not id) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item wich such name does not exists.") return true end end if isInArray(blocked, id) and getPlayerGroupId(cid) <= group then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce nao pode criar alguns itens especificos.") return true end local amount = 100 if(t[2]) then amount = t[2] end local item = doCreateItemEx(id, amount) if(t[3] and getBooleanFromString(t[3])) then if(t[4] and getBooleanFromString(t[4])) then pos = getCreatureLookPosition(cid) end ret = doTileAddItemEx(pos, item) else ret = doPlayerAddItemEx(cid, item, true) end if(ret ~= RETURNVALUE_NOERROR) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Couldn't add item: " .. t[1]) return true end doDecayItem(item) if(not isPlayerGhost(cid)) then doSendMagicEffect(pos, CONST_ME_MAGIC_RED) end return true end Basta substituir sua script atual do /i por essa.
  16. @peterson18 Perdão , erro meu na script , agora vai : local t = { ["Rabbit"] = {1003, "Demon", 2, l = { [1] = {x = 92, y = 129, z = 7}, -- ["Nome do monstro"] = {Storage, NOME DO MONSTRO, QNT NECESSARIA PARA NASCER O BOSS, l = POSIÇÕES} [2] = {x = 93, y = 129, z = 7}, }} ------------------------------ } function onDeath(cid, corpse, deathList) local killer = deathList[1] if not isMonster(cid) or not isPlayer(killer) then return true end local a = t[getCreatureName(cid)] if a then if getGlobalStorageValue(a[1]) >= a[3] then doCreateMonster(a[2], a.l[math.random(#a.l)]) setGlobalStorageValue(a[1], 0) doBroadcastMessage("O monstro ".. a[2] .." nasceu!", math.random(10, 27)) else setGlobalStorageValue(a[1], getGlobalStorageValue(a[1]) + 1) end end return true end
  17. local t = { ["Rabbit"] = {1001, "[Boss]Rabbit", 100, l = {[1] = {x = 100, y = 100, z = 7}, -- ["Nome do monstro"] = {Storage, NOME DO MONSTRO, QNT NECESSARIA PARA NASCER O BOSS, l = POSIÇÕES} [2] = {x = 100, y = 200, z = 7}, } } } function onDeath(cid, corpse, deathList) local a = t[getCreatureName(cid)] local killer = deathList if not isMonster(cid) or not isPlayer(killer[1]) then return true end if a then local random = math.random(1, #a.l) if getGlobalStorageValue(a[1]) >= a[3] then doCreateMonster(a[2], random) setGlobalStorageValue(a[1], 0) doBroadcastMessage("O monstro ".. a[2] .." nasceu!", math.random(10, 27)) return true else setGlobalStorageValue(a[1], getGlobalStorageValue(a[1]) + 1) return true end return true end return true end È uma script para todos os monstros , registre na XML de cada monstro que estiver na tabela e registre no CreatureScripts.XML; bastante cuidado com essa tabela.
  18. @peterson18 Após matar uma quantidade de monstro o monstro nascerá no lugar onde o último monstro morreu ou nascerá em outro local ?
  19. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -60.2, 1, -60.2, 1) function onCastSpell(cid, var) local storage = 1004 local waittime = 4.0 -- Exaust local effect = 16 -- Efeito que vai sair no player que usa a spell local effect2 = 18 -- efeito que vai sair no player que vai receber dano local distance = 3 -- ShootEffect local position = {x = getThingPosition(getCreatureTarget(cid)).x - 3, y = getThingPosition(getCreatureTarget(cid)).y + 1, z = getThingPosition(getCreatureTarget(cid)).z} local position1 = {x = getThingPosition(getCreatureTarget(cid)).x, y = getThingPosition(getCreatureTarget(cid)).y, z = getThingPosition(getCreatureTarget(cid)).z} local position2 = {x = getCreaturePosition(cid).x , y = getCreaturePosition(cid).y, z = getCreaturePosition(cid).z} if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Você tem que espera " .. exhaustion.get(cid, storage) .. " segundos.") return false end doSendMagicEffect(position2, effect) addEvent(doSendMagicEffect, 750, position1, effect2) addEvent(doSendDistanceShoot, 500, position, getCreaturePosition(getCreatureTarget(cid)), distance) exhaustion.set(cid, storage, waittime) return doCombat(cid, combat, var) end
  20. function onUse(cid, item, frompos, item2, topos) if getCreatureSkullType(cid) == SKULL_RED then doPlayerSendTextMessage(cid, 21, "Você não pode usar este item enquanto estiver RED SKULL") return false end local nplayer1pos = {x=160, y=54, z=7} if getPlayerMana(cid) >= 0 then doSendMagicEffect(nplayer1pos,65535) doPlayerAddMana(cid,0) doTeleportThing(cid,nplayer1pos) doSendMagicEffect(topos,65535) doPlayerSendTextMessage(cid,22,"") else doPlayerSendTextMessage(cid,22,"Você não tem mana.") return false end return true end
  21. function onCastSpell(cid, var) local tempo = 5 local target = getCreatureTarget(cid) local position = getPlayerPosition(cid) doCreatureSetNoMove(target, true) setPlayerStorageValue(cid, 5421, os.time()+tempo) movePlayer(position, target, cid) local distance = 4 local effect = 56 addEvent(doSendMagicEffect, 150, getCreaturePosition(target), effect) doSendDistanceShoot(getCreaturePosition(cid), getCreaturePosition(target), distance) return true end function movePlayer(position, target, cid) if isCreature(target) and isPlayer(cid) then local pos = getCreaturePosition(target) if getPlayerPosition(cid).x ~= position.x then pos = {x = getCreaturePosition(target).x+(getPlayerPosition(cid).x +(- 1 * position.x)), y = getCreaturePosition(target).y, z = getCreaturePosition(target).z} elseif getPlayerPosition(cid).y ~= position.y then pos = {x = getCreaturePosition(target).x, y = getCreaturePosition(target).y+(getPlayerPosition(cid).y +(- 1 * position.y)), z = getCreaturePosition(target).z} end if isWalkable(pos) then doTeleportThing(target, pos) end if (getPlayerStorageValue(cid, 5421) - os.time()) > 0 then addEvent(movePlayer, 100, getPlayerPosition(cid), target, cid) else doPlayerSendTextMessage(cid, 22, "Voce perdeu o controle.") doCreatureSetNoMove(target, false) end end end function isWalkable(pos, creature, pz, proj) -- nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end local creature = getTopCreature(pos) if creature.type > 0 then return false end if getTilePzInfo(pos) and not pz then return false end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end
  22. local condition = createConditionObject(CONDITION_POISON) -- FIRE, POISON, etc.. setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) addDamageCondition(condition, 5, 3000, -45) -- vezes, intervalo, dano setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) setCombatCondition(combat, condition) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
  23. Sim , está certa.
  24. Utilize a script que você mesmo colocou aqui , mas deixando a minha script ativa também.

Informação Importante

Confirmação de Termo