
Tudo que 139 postou
-
0 Erro ao pokemon passar por cima de tile
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
-
Como debugar o código para encontrar o local do erro
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.
-
SCRIPT DE MÍSSIL (Por Favor, me ajudem)
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)
-
SCRIPT DE MÍSSIL (Por Favor, me ajudem)
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
-
Wands e Rods funcionando na segunda promotion
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
-
Atk speed com função diferente
addEvent(player:setAttackSpeed, tempo, valor_original_do_atk_speed) Tenta assim, se não for, eu não faço idéia.
-
Scripto alohomora simples
Tenta isso: addEvent(function() local p = getTileItemById(fromPosition, porta).uid if p > 0 then doTransformItem(p, porta-1) end end, 2000)
-
[HELP-ME] MAGIC LEVEL NÃO ESTÁ DANDO DANO, [FORÇA]
Explica direito amigão. Não da pra entender o que você escreveu.
-
Atk speed com função diferente
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)"
-
Me ajude a entender o opcodes pfvr
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.
-
(erro/bug) como consertar esse bug/visual da magia em target?
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
-
Boss Systeam
Erro corrigido:
-
SPELL ATTACK
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
-
Script para upgrade de Wands
Coloquei alguns comentários pra vc entender passo a passo.
-
[PEDIDO]Player é teleportado assim que tiver x porcentagem de HP em x area
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")
-
Somente remover o item se ele for o verdadeiro
É 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.
-
SPELL ATTACK
- Spell em área que puxa agro dos monstros.
É 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- [TFS 0.4] Player sendo atacado pelo próprio summon
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- [TFS 0.4] Player sendo atacado pelo próprio summon
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.- Fazer o Buff trocar de vocation por 30 min depois voltar ao normal.
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.- Fazer o Buff trocar de vocation por 30 min depois voltar ao normal.
Tira a virgula dessa linha: local msg = "Voce precisa aguardar %d segundos.",- Fazer o Buff trocar de vocation por 30 min depois voltar ao normal.
Se deslogar, morrer, ou passar 30 min, perde a transformação. O cooldown é 30 min e continua contando mesmo se o player morrer.- Fazer o Buff trocar de vocation por 30 min depois voltar ao normal.
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.- Fazer o Buff trocar de vocation por 30 min depois voltar ao normal.
Testa, - Spell em área que puxa agro dos monstros.
Informação Importante
Confirmação de Termo