Jump to content

Tottin

Member
  • Content Count

    21
  • Joined

  • Last visited

  • Days Won

    1

Tottin last won the day on July 20

Tottin had the most liked content!

About Tottin

  • Rank
    Precursor

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Mano não é por nada, mas o tópico é de 2014, se tu tiver interesse em alguma alteração pra esse sistema, cria 1 novo tópico explicando o objetivo da script, ve se alguém faz pra você, ou então acessa o discord da academia e pede suporte por lá, até mesmo anuncia no classificados.
  2. Troca essa parte da script: if (isPlayer(target)) then doPlayerSendCancel(cid, "This spell can only be used in Player.") return false end por esta: ifnot (isPlayer(target)) then doPlayerSendCancel(cid, "This spell can only be used in Player.") return false end
  3. Deu editei lá denovo, e sim somente quem bater no boss vai receber a storage, mesmo que esteja perto ou na party, não irá receber se não atacar.
  4. Tenta denovo, editei ali, estava faltando o fechamento de um if.
  5. Resolvendo seu problema onde ao matar o monstro só quem fragava recebia o storage: local tps = { ["hyaena"] = {pos = {x=349, y=1103, z=15}, toPos = {x = 518, y = 840, z = 7}, time = 10, storage = 46000}, } local storage = 46000 local function removeTp(tp) local t = getTileItemById(tp.pos, 5023).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(tp.pos, CONST_ME_POFF) end function onDeath(cid, corpse, deathList, frompos, topos) local tp = tps[getCreatureName(cid)] if tp then doCreateTeleport(5023, tp.toPos, tp.pos) doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1) addEvent(removeTp, tp.time*1000, tp) for _, check in pairs(deathList) do if isPlayer(check) then setPlayerStorageValue(check, tp.storage, 5) end end end return true end registra no creaturescripts: <event type="death" name="Storage" event="script" value="seuarquivo.lua"/> registra no arquivo.xml do boss: <script> <event name="Storage"/> </script>
  6. Mas se o evento onDeath só ativa em monstros cujo tiveram a tag da script registrada (me corrija se eu estiver errado), não seria 1 tanto quanto desnecessário adicionar uma checagem pra ver se o monstro morto deve ou não ativar a script de autoloot, sendo que bastaria não registrar a tag nos monstros que você não quer que ative a script. Claro que a situação mudaria se a função fosse de onKill.
  7. Isso tudo vai variar da forma com que você quer fazer seu script, sua dúvida principal era sobre como trabalhar em cima da defesa do shield. E isso como mencionei acima pode ser feito da seguinte forma, utilizando a função: getItemAttribute(uid,'defense') Pra checar se o item é 1 shield, você pode utilizar uma função que o mock disponibilizou já faz um bom tempo: local function isShield(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 5 then return true end return false end Com isso você vai ter todas informações necessárias pra fazer seu script trabalhar em cima da defesa do shield que estiver equipado, e claro vai poder checar se o item que você está "pegando" a defesa, é de fato um shield ou não.
  8. Cara vou te passar um código que fiz pra 0.4, deve funcionar pra 0.36 também: código lua: local config = { itemid = 1451, itemid2 = 1451, itemid3 = 1451, pos = {x=718, y=1534, z=10}, pos2 = {x= 107, y=1507, z=8}, pos3 = {x= 111, y=1507, z=8}, chance = 50 } function onTime(interval) if config.chance >= math.random(1, 100) then doBroadcastMessage("Os items X Y Z foram spawnados!") --- Caso queira que mande uma mensagem pra todos players online, ja deixei pronto. doCreateItem(config.itemid, 1, config.pos) doCreateItem(config.itemid1, 1, config.pos2) doCreateItem(config.itemid2, 1, config.pos3) end return true end tag no xml: <globalevent name="nomedoevento" time="04:05:00" event="script" value="nomedoarquivo.lua"/>
  9. Vou te mandar a script que uso em meu servidor, com o texto adicionado já, possivelmente deve resolver seu problema, segue a script: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1.0, 0, 1.0, 0) function onUseWeapon(cid, var) local chance = 20 if chance <= math.random(1,100) then doCombat(cid, combat, var) else doCreatureSay(cid, "DOUBLE HIT", 19) doCombat(cid, combat, var) addEvent(doCombat, 500, cid, combat, var) end return true end
  10. Exatamente, a primeira parte é pra "registrar as posições do efeito" (isso dentro da tabela), na segunda parte é onde a script vai trabalhar em cima dessas posições pra executar o efeito na posição desejada. Basta trocar esta linha do seu script: addEvent(doAreaCombatHealth, 100, cid, wx.dmg, getThingPos(target), 0, -min, -max, wx.ef) por estas duas: local pos = {x = getThingPos(target).x + (wx.posx), y = getThingPos(target).y + (wx.posy), z = getThingPos(target).z} -- Aqui vai trabalhar em cima das posições definidas la na tabela. addEvent(doAreaCombatHealth, 100, cid, wx.dmg, pos, 0, -min, -max, wx.ef) -- E aqui vai aplicar o efeito na posição final.
  11. Provavelmente ta dando erro pela versão de seu servidor. Se ainda tiver precisando disso, testa desta forma: Troca esta linha: target:say("!DOUBLEHIT", TALKTYPE_MONSTER_SAY) ,<<<<<<<<<<<<<<<<<<<<< por esta: doCreatureSay(target, "DOUBLE HIT", 19)
  12. Pra obter a defesa de 1 item você pode fazer da seguinte forma: 1º escolhe o slot a ser conferido. (Provalvemente mão direita/esquerda). 2º utiliza esta função: getItemAttribute(uid,'defense') pra obter a defesa do item. A forma que você vai aplicar isso dentro do script vai depender muito do que você deseja fazer nela. Mas em geral com isso você ja vai obter a defesa do seu shield.
  13. É, bem provável que eu esteja confundindo, são sistemas "bem similares" né, mas td bem.
  14. Meu querido, eu acabei de te mandar exatamente isso, ele vai enviar o loot pra quem fragou o monstro. Se o jogo te reconheceu como "dono do loot" então o loot vai ser enviado pra você, Vou ser gente boa e vou montar a função pra tu. Isso possivelmente vai resolver o seu problema, se não funcionar, então seu servidor reconhece o "dono do loot" de outra forma. Seria interessante descobrir qual. function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) local killer = lastHitKiller[1]pos = getCreaturePosition(cid)addEvent(loot,1,killer,pos)return trueend

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

Tibia King Recomenda

DokeHost - Soluções em Hospedagem

VPS Windows
VPS Linux
Servidor VPS
×
×
  • Create New...