Ir para conteúdo

139

Membro
  • Registro em

  • Última visita

Tudo que 139 postou

  1. function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerGuildId(cid) > 0 then doPlayerSendTextMessage(cid, 27, "Voce entrou, Guild "..getPlayerGuildName(cid)..".") else doPlayerSendTextMessage(cid, 27, "Desculpe,mais somente players que possuem guild pode entrar nessa area.") doTeleportThing(cid, fromPosition) end return true end
  2. Coloca o código de algum script que ta usando essa função, pode ser esse ember.lua mesmo. Basicamente tem um parâmetro dela que deveria receber um player, mas está recebendo outra coisa. Por isso o retorno do erro.
  3. Coloca isso na linha acima do return(doCombat...): local rng = math.random(0, 1) local pos = getCreaturePosition(target) local toposA = {x = pos.x + rng-1, y = pos.y + rng, z = pos.z} local toposB = {x = pos.x + rng, y = pos.y + rng-1, z = pos.z} doSendDistanceShoot(pos, toposA, 41) doSendDistanceShoot(pos, toposB, 41)
  4. local misseis = 5 -- quantidade de misseis local delay = 100 -- tempo entre o disparo de cada missel (milisegundos) local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -78.2, 1, -88.2, 1) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 41) function onTargetCreature(cid, target) for i = 1, misseis do addEvent(function() if isCreature(cid) and isCreature(target) then doCombat(cid, combat2, {type = 2, pos = getCreaturePosition(target)}) end end, delay*i) end end setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") function onCastSpell(cid, var) local waittime = 2 -- Tempo de exhaustion local storage = 1000600 if exhaustion.check(cid, storage) then return false end local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y+1, z=getThingPosition(getCreatureTarget(cid)).z} local position2 = {x=getCreaturePosition(cid).x+3, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z} doSendMagicEffect(position1, 106) doSendMagicEffect(position2, 189) exhaustion.set(cid, storage, waittime) return doCombat(cid, combat, var) end
  5. Testa se o erro é só por conta da ausência de vírgula: { itemId = 2187, type = WEAPON_WAND, wandType = "fire", level = 33, mana = 8, damage = {56, 74}, vocation = { {"Sorcerer", true}, {"Master Sorcerer"}, {"Epic Master Sorcerer"}, }, }, -- wand of inferno
  6. addEvent(player:setAttackSpeed, tempo, valor_original_do_atk_speed) Tenta assim, se não for, eu não faço idéia.
  7. Tenta isso: addEvent(function() local p = getTileItemById(fromPosition, porta).uid if p > 0 then doTransformItem(p, porta-1) end end, 2000)
  8. Explica direito amigão. Não da pra entender o que você escreveu.
  9. addEvent(player, tempo, setAttackSpeed(valor original do atk speed)) Não mexo com tfs 1.2 Testa se isso aí resolve, coloca embaixo do "player:setAttackSpeed(500)"
  10. Vou te dar um exemplo de como é na versão 8.6 (otx ou tfs mais antiga), que é o que eu uso. data/creaturescripts/creaturescripts.xml: <event type="extendedopcode" name="ExtendedOpcode" event="script" value="opcode.lua"/> data/creaturescripts/scripts/opcodes.lua: function onExtendedOpcode(cid, opcode, buffer) --> Recebe os extendedopcodes enviados pelo client. if opcode == 80 and buffer == "apple" then --> O buffer é a informação que foi enviada do client pro server side. doPlayerFeed(cid, 50) elseif opcode == 80 and buffer == "cake" then doPlayerFeed(cid, 150) elseif opcode == 80 and buffer == "coconut" then doPlayerFeed(cid, 50) doSendPlayerExtendedOpcode(cid, 82, texto) --> Envia informação pro client, mas a informação tem que do tipo string. --> Até tem como enviar outros tipos, mas tem que fazer todo um rolê no client e na pasta data. end return true end Como a doSendPlayerExtendedOpcode é uma função, você pode usar ela em qualquer .LUA, seja de dentro da creaturescripts ou em actions, movements, spells, etc. E no caso nos modules, o que você disse ter feito ta certo, exceto na function TESTE. Teria que ser algo assim: function TESTE(protocol, code, buffer) local protocolGame = g_game.getProtocolGame() if protocolGame then if buffer == "160" then Image:setVisible(true) else Image:hide() end end end Não faço idéia do quanto isso tudo muda de tfs 0.4 pra 1.2, mas acho que deve te dar uma luz.
  11. local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, 205) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 1) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -99.0, 0, -190.5, 0) function onTargetCreature(cid, target) local position = {x=getThingPosition(target).x+1, y=getThingPosition(target).y+1, z=getThingPosition(target).z} doSendMagicEffect(position, 329) end setCombatCallback(combat1, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") function onCastSpell(cid, var) local waittime = 9 local storage = 99 if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "You are exhausted.") doSendMagicEffect(getCreaturePosition(cid), 2) return false end for i = 1, 10 do addEvent(function() if isCreature(cid) and isCreature(variantToNumber(var)) then doCombat(cid, combat1, var) end end, ((i-1) * 300)) end exhaustion.set(cid, storage, waittime) return true end
  12. 139 postou uma resposta no tópico em Suporte Tibia OTServer
    Erro corrigido:
  13. 139 postou uma resposta no tópico em Suporte Tibia OTServer
    local chance = 50 local condition = createConditionObject(CONDITION_MUTED) setConditionParam(condition, CONDITION_PARAM_TICKS, 5000) function onCastSpell(cid, var) if not isPlayer(cid) then return false end if math.random(1,100) > chance then doSendAnimatedText(getCreaturePosition(cid), "Miss!", 215) return false end if exhaustion.check(cid, 13117) == true then doPlayerSendCancel(cid, "Podera usar novamente dentro de 15 segundos.") doSendMagicEffect(getCreaturePosition(cid), 2) return false end local tar = variantToNumber(var) if hasCondition(tar, CONDITION_MUTED) == true then return false else if isPlayer(tar) == true then doAddCondition(tar, condition) doSendAnimatedText(getCreaturePosition(tar), "Silenced!", 215) else doPlayerSendCancel(cid, "Silence can be cast only on other players.") return false end end exhaustion.set(cid, 13117, 15.0) return true end
  14. Coloquei alguns comentários pra vc entender passo a passo.
  15. creaturescripts.xml: <event type="statschange" name="hpCheck" event="script" value="hpCheck.lua"/> creaturescripts/scripts/hpCheck.lua: local percentage = 50 local area1 = {x = x, y = y, z = z} -- canto superior esquerdo local area2 = {x = x, y = y, z = z} -- canto superior direito local area3 = {x = x, y = y, z = z} -- destino a ser teleportado local function getHpPercentage(cid) percent = 100 * getCreatureHealth(cid) / getCreatureMaxHealth(cid) percent = math.floor(percent) return(percent) end function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS then if getHpPercentage(cid) <= percentage then isInArea(getCreaturePosition(cid), area1, area2) then doTeleportThing(cid, area3, false) end end return true end e no seu login.lua registre o evento: registerCreatureEvent(cid, "hpCheck")
  16. É pra checar se existe um ITEMID X com a descrição X no SLOT 1 e caso sim, remover? Se não for isso reformule a sua ideia.
  17. 139 postou uma resposta no tópico em Suporte Tibia OTServer
  18. É só literalmente você pegar o script do exeta res (challenge) de qualquer OT e aumentar a área. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) local arr1 = { {1, 1, 1}, {1, 3, 1}, {1, 1, 1}, } local area = createCombatArea(arr1) setCombatArea(combat, area) function onTargetCreature(cid, target) return doChallengeCreature(cid, target) end setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") function onCastSpell(cid, var) return doCombat(cid, combat, var) end
  19. Se nem via creaturescripts resolve, sua source ta com alguma alteração esquisita. Acho que é mais fácil pegar uma versão limpa do que tentar arrumar isso :x
  20. Ou a sua distro ta muito zoada, ou essas spells foram criadas pra causarem dano em players de fato. Poste o .lua de uma delas.
  21. Solução do outfit: Sobre a vocação bugada, já te falei a função que altera vocação, usa ela pra corrigir. Se não der pra corrigir com ela, altera o char direto na database.
  22. Tira a virgula dessa linha: local msg = "Voce precisa aguardar %d segundos.",
  23. Se deslogar, morrer, ou passar 30 min, perde a transformação. O cooldown é 30 min e continua contando mesmo se o player morrer.
  24. Agora que eu parei pra ler o script inteiro. Tava cheio de problemas, esse do tempo era um deles, a vocação de fato mudava pra 11, mas 0.030 segundos depois o char voltava pra voc original Essa variável tempo tava setada em 30, mas era pra ser 30 minutos, só que você não multiplicava esse 30 por 60 (segundos), pra dar 30 minutos em lugar nenhum. E a escala de tempo dos eventos é em milisegundos. Então o que for ser acionado em segundos você tem que multiplicar por 1000, como você vai ver varias vezes ao longo do código. Acho que refiz tudo que precisava, agora deve rodar.

Informação Importante

Confirmação de Termo