
Tudo que Yamili postou
-
Verificar se existe XX item naquela position
Fiz seguindo o que você disse e funcionou. Mudei a parte do DelTp pra seguinte: Eu não sei muito sobre scripts, então fiz desse jeito aí. Se tiver problema em colocar assim ou tiver alguma forma melhor de fazer isso me diga. No mais, dúdiva solucionada rep ++
-
Verificar se existe XX item naquela position
-- Edit -- Editei o script aqui no tópico com a solução, para quem quiser usar -- Solucionado -- Bom guys, estou precisando de ajuda para colocar um efeito e fazer uma verificação (vou explicar melhor abaixo) no script a seguir . Imagens para melhor entendimento no final do tópico. Script (Movements/Step-in) Significados para melhor entendimento: posição final = posição para onde o jogador vai ao ser teleportado. p1 ao p4 no script = posições para onde o jogador poderá ser teleportado ao entrar no tp. pos1 ao pos4 no script = posições onde serão criados os itens (nesse caso uma porta) 1 sqm acima da posição final. O que esse script faz? 1 - Ao passar por um teleport o jogador será teleportado para uma das 4 posições pré-definidas (por chance no math.random). 2 - Ao mesmo tempo que o jogar é teleportado ao passar pelo TP será criado um item (no caso dos testes, uma porta) 1 sqm a cima do jogador em uma das 4 posições finais. (de acordo com a posição que ele foi parar, ou seja, se ele foi pra posição 1 não irá criar o item nas outras) 3 - 5 segundos depois de passar pelo tp, criar o item (no caso uma porta), o item será removido. A ajuda que necessito: Da forma que está ele funciona 100%, mas retorna erro porque o script tenta remover as "portas" (os itens) das 4 posições diferentes. 1 - Eu não sei como verificar se já existe o item naquela posição para depois remover, para assim, só remover se o script confirmar que existe a "porta" (o item) naquela posição. 2 - Eu queria saber também como eu coloco para quando remover as "portas" (os itens) aparecer um efeito onde eles foram removidos (no caso efeito número 35). Vídeo do script funcionando: Se alguém puder me ajudar nesses dois quesitos ficarei agradecido. Qualquer dúvida é só dizer que eu tento explicar. (Minhas explicações sempre confundem ao invés de ajudarem rs) Agradeço desde já.
-
(Resolvido)Skill Rate/Velocidade para upar skill
Olha eu também não entendo muito, but, pelo que você mostrou ali o multiplier do distance está 1.5. Eu sei que alguns servidores quanto maior o multiplier, mais difícil fica de upar (no meu servidor é o contrario). Então testa abaixar ou aumentar o multiplier do distance até você ver uma diferença. Se precisar de mais ajuda, crie outro tópico específico para o seu problema ou me manda teu discord no PV que eu tento te ajudar
-
(Resolvido)Colocar posição de efeito nesse action
Em: function efeitosAura(i,tm,cid) if(isCreature(cid)) then local atual = getCreaturePosition(cid) Muda para: function efeitosAura(i,tm,cid) if(isCreature(cid)) then local atual = {x = getPlayerPosition(cid).x + 1, y = getPlayerPosition(cid).y + 0, z = getPlayerPosition(cid).z}
-
(Resolvido)Spell de cura em area
Não sei se entendi direito o que você queria. Mas acho que eu tinha uma spell assim, que usei a um tempo atrás. Não testei atualmente (mas quando usei funcionava perfeitamente). Só funciona em party. local config = { tempo = 20, --- tempo que vai durar a spell intervalo = 1, --- intervalo que leva pra recuperar X de mana/vida (em segundos) hp = 5000, -- quanto de hp ganha a cada intervalo mana = 5000, -- quanto de mana ganha a cada intervalo } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 349) -- efeito setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE) CROSS5X5 = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, } local area = createCombatArea(CROSS5X5) setCombatArea(combat, area) local condition = createConditionObject(CONDITION_FOOD) setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setConditionParam(condition, CONDITION_PARAM_MANAGAIN, config.mana) setConditionParam(condition, CONDITION_PARAM_MANATICKS, config.intervalo*1000) setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, config.hp) setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, config.intervalo*1000) local baseMana = 120 function onCastSpell(cid, var) local waittime = 30 -- Tempo de exhaustion local storage = 115826 if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Podera usar novamente dentro de 30 segundos.") return false end local pos = getCreaturePosition(cid) local membersList = getPartyMembers(cid) if(membersList == nil or type(membersList) ~= 'table' or table.maxn(membersList) <= 1) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE) doSendMagicEffect(pos, CONST_ME_POFF) return LUA_ERROR end local affectedList = {} for _, pid in ipairs(membersList) do if(getDistanceBetween(getCreaturePosition(pid), pos) <= 36) then table.insert(affectedList, pid) end end local tmp = table.maxn(affectedList) if(tmp <= 1) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE) doSendMagicEffect(pos, CONST_ME_POFF) return LUA_ERROR end local mana = math.ceil((0.9 ^ (tmp - 1) * baseMana) * tmp) if(getCreatureMana(cid) < mana) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA) doSendMagicEffect(pos, CONST_ME_POFF) return LUA_ERROR end if(doCombat(cid, combat, var) ~= LUA_NO_ERROR) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) doSendMagicEffect(pos, CONST_ME_POFF) return LUA_ERROR end doCreatureAddMana(cid, -(mana - baseMana), FALSE) doPlayerAddSpentMana(cid, (mana - baseMana)) for _, pid in ipairs(affectedList) do doAddCondition(pid, condition) end exhaustion.set(cid, storage, waittime) return LUA_NO_ERROR end
-
(Resolvido)Skill Rate/Velocidade para upar skill
@BangxD Quando treinamos uma skill (fist, axe, sword...) os níveis mais baixos dela (do nível 1 ao 2, 3, 4, 5) sempre é muito fácil de upar. Mesmo com skill rate em 1x e o multiplier do vocations em 1.0 ainda era "fácil" (rápido) demais para o que eu queria. Exemplo para contexto (Só para contexto) Ao treinar a sword skill do nível 0 ao 1, você demoraria alguns segundos para chegar ao nível 1 (Isso se não upar rapidamente do 0 ao 9,10,11 e tals). Com essa alteração que eu fiz, para upar uma skill nos níveis mais baixos fica bem difícil (depende do quanto de dificuldade você quer). Na parte que eu editei no tópico também tem uma breve explicação minha. Mas se tu não entendeu essa parte vou dar outros exemplos abaixo. - Fórmula - (da source) (skillBase[skill] * std::pow(skillMultipliers[skill], (level - 11))); - Valores de testes, o máximo que consegui dificultar sem alterar na source - Com o skill rate (que você configura no config.lua) em 1x Multipliers de sword (que você configura no vocations.xml) em 1.0 O baseskill (que é configurado na source, se não me falha a memória é em vocation.cpp) em 50 E (level - 11) como padrão ! Com a sword skill no nível 1 ! A cada 1 hit que eu dou em um monstro/player com uma sword, eu vou upar 2% da barra de sword skill. Então ao alterar o baseskill de 50 para -> 100 A cada 1 hit que eu dou em um monstro/player com uma sword, eu vou upar 1% (Ou 1,5%) da barra de sword skill. Ou seja, alterando o baseskill eu consigo dificultar para upar a skill em níveis baixos. A cada +50 de skill base = [ -0,5% para upar a skill ao dar um hit ] - Valores atuais no meu servidor - Skill rate: 1x (config.lua) Multipliers: 1.0 Baseskill: 4000 vocation.cpp (baseskill) vocation.xml (multipliers) Se ainda estiver com dúvidas pode me perguntar. Perdão a demora para responder. C ya!
-
(Resolvido)Skill Rate/Velocidade para upar skill
@Naze Eu sou totalmente leigo no assunto kk você consegue me ajudar a fazer essas alterações? (Seja no script ou na source) Ficaria muito grato se puder me ajudar E sobre a dúvida que você não entendeu, é que o rate skill minimo que consegui colocar no config.lua foi de 1x queria saber se da pra fazer ler em 0.5x por exemplo, mas creio que ela foi esclarecida com a frase "tudo possível so saber oq e onde modificar" hehe EDIT: Fiz alguns testes e coloquei o resultado no tópico, se puder conferir e me dizer se errei em algo (sobre qualquer coisa) grato estarei ^~^
-
(Resolvido)Skill Rate/Velocidade para upar skill
@Jeff Delay Eu estava utilizando este script só para alguns testes, como eu disse no post:
-
(Resolvido)Skill Rate/Velocidade para upar skill
Qual servidor ou website você utiliza como base? TFS 0.4 8.60 Olá a todos, eu gostaria de deixar bem (bastante) difícil para os jogadores uparem as skills (Do fist ao shield) nos valores mais baixos (Do 0 ao 25), o que ocorre é que não consigo deixar mais difícil de upar do que alguns segundos (Uns 2% da barrinha de skill a cada hit) para upar 1 skill level (Nos valores mais baixos, como upar do skill level 1 para o 2). Tem alguma forma de dificultar (mais ainda) a velocidade de up da skill nos valores mais baixos? Informações extras: Eu testei de várias formas e percebi que o mínimo de rate skill que dá pra colocar é 1x (Seja no config.lua ou em script de skills por stages). No vocations.xml do meu servidor a linha: <skill fist="1.5" club="1.5" sword="1.5" axe="1.5" distance="1.5" shielding="1.5" fishing="1.5" experience="2.0"/> Que serve para definir a velocidade com que a skill vai upar tem o valor minimo de "1.0", abaixo disso não upa (No meu servidor quanto menor o número, menor a velocidade que vai upar a skill). Tendo isso em mente eu testei com rate skill 1x no config e com skill fist="1.0" na tag das vocations (Que foi o mais lento que consegui colocar para upar nos níveis mais baixos das skills) mas ainda assim não é lento o suficiente para mim. O script de stages que eu estava usando para alguns testes era o: Eu reparei que esse script pega o valor do skill rate definido no config.lua e multiplica pelo valor definido no script, e como no magic level dá pra colocar valores como 0.3x (deixando assim extremamente difícil de upar) eu tentei fazer o mesmo com as skills e não tive sucesso. Nesse script dá para colocar um limite de skill level (Que vai setar a rate skill para 0x) e reparei que quanto mais perto de chegar no limite, mais difícil de upar fica (Do modo que eu quero para os valores baixos). Minhas dúvidas: É possível ajustar esse script para fazer a velocidade do up ser sempre igual a velocidade de quando está chegando no limite de skill? (Se é que esta diminuição está sendo aplicada por este script) Qual a função que faz essa velocidade diminuir perto do limite de skill? (O que está fazendo ela diminuir?) É possível de alguma forma abaixar o rate de skills para 0.X? É possível dificultar, extremamente, para upar as skills nos valores mais baixos? (Seja por script ou pela source) Ps: Sou bem leigo se tratando de scripts e tals, então me desculpem se não consegui me expressar bem. Perdão se eu não estiver na área correta, não estou acostumado com fóruns ainda. Obrigado a todos que tentarem me ajudar, peço perdão pelo texto enorme ? é justamente para evitar algumas dúvidas sobre o que eu estou tentando fazer. Caso ainda tenham dúvidas sobre algo que eu disse, me perguntem. E caso exista algum tópico sobre algo relacionado ao que eu quero, por favor, me mostrem. Não achei nada parecido sobre isso ? ! :EDIT: ! - :!Duvida solucionada!: Como o @Naze me guiou ao caminho de onde fica a formula na source, eu resolvi fazer alguns testes para entender melhor como funcionava. A formula é: (skillBase[skill] * std::pow(skillMultipliers[skill], (level - 11))); E entendi que é baseskill × multiplier do vocations ^(level da skill - 11), com os valores do meus servidor ficariam: 50 x 1.0 ^ (level - 11) (Onde com rate skill 1x cada hit upava cerca de 2% da barra de skill, o que me levou a crer que eram os hits necessário para upar) Então eu resolvi testar essa baseskill e aumentei para 100, o que resultou em 1% da barra por hit. (Que no caso a cada +50 de skill base = [ -0,5% para upar a skill ao dar um hit]) E seguindo isso consigo ajustar certinho a dificuldade que quero para upar skill. Se essa alteração na baseskill pode acarretar em algum problema me avisem, por favor (Pois não entendo muito de programação). Mas caso não acarrete em nenhum problema, funcionou perfeitamente para o que eu queria então. Para quem quer fazer o mesmo (Dificultar para upar a skill nos níveis mais baixos [como do skill level 0 ao 1]) está ai. Duvida encerrada! Rep++ @Naze Por me ajudar ^-^ ajudou muito mesmo, de coração, agradeço.
-
{Spell de teleport} Parecido com o Kamui in de NTO
Isso mesmo
-
{Spell de teleport} Parecido com o Kamui in de NTO
@ZikaLord Olá meu caro, seguinte, do modo que vc me disse ali, o que aconteceu foi que: Quando eu uso a spell, ou o target ou o caster irão voltar X segundos mais rápido que o outro da "dimensão". (exemplo: Usei a spell em X player, nós dois iremos para a pos designada, porém eu irei voltar 1 segundo mais rápido que ele) Perdão se eu expliquei errado, mas o que eu gostaria é justamente o oposto. No caso o caster da spell iria demorar 1 segundo a mais para IR para a "dimensão". (exemplo: Usei a spell em X player, o player X irá ser imediatamente teletransportado para a position designada, e o caster ira se teleportar 1 segundo depois de o target ter ido) Caso tenha alguma dúvida em algo que eu disse me avise E eu agora estou usando esse script (de Kamui) do White, mas o pedido ainda é o mesmo. local config = { pos = {x=42, y=234, z=7}, -- posição que o caster será teleportado pos2 = {x=46, y=234, z=7}, -- posição que o target será teleportado tempo = 5, -- tempo pra voltar effect1 = 66, -- efeito ao ser teleportado effect2 = 10, -- efeito ao voltar storage = 19329, -- storage que fica guardado o cooldown from = {x=35, y=228, z=7}, --- quina do kamui (pra impedir players de usarem o kamui dentro do kamui) to = {x=49, y=240, z=7}, --- quina do kamui (pra impedir players de usarem o kamui dentro do kamui) cooldown = 05, --- tempo entre um uso e outro (após usar a spell vc vai ficar X segundos sem poder usar ela novamente) msg = "DIMENSION OUT!" -- mensagem ao sair do kamui } local exceptions = {'trainer', 'aegis', 'god anderson'} --- nome das criaturas que não poderão ser levadas para a dimension (sempre em minúsculo e entre aspas) function canEffect(pos, pz, proj) -- Night Wolf based on Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 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 function onCastSpell(cid, var) local pos = getPlayerPosition(cid) if isInRange(pos, config.from, config.to) then doPlayerSendCancel(cid, "You cannot use Dimension spell inside the Dimension!") return false end if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then doPlayerSetStorageValue(cid, config.storage, os.time()) if isCreature(getCreatureTarget(cid)) then target = getCreatureTarget(cid) for i = 1, #exceptions do if getCreatureName(target):lower() == exceptions[i] then doPlayerSendCancel(cid, "You can't take ".. getCreatureName(target) .." to Dimension.") return false end end --------------- PLAYER----------- addEvent(doTeleportThing, 1000*config.tempo, cid, pos, true) addEvent(doCreatureSay, 1000*config.tempo, cid, config.msg, 20, false) addEvent(doSendMagicEffect, 1000*config.tempo, pos, config.effect2) doSendMagicEffect(pos, config.effect1) doTeleportThing(cid, config.pos) -------------------- OPONENTE ---------------- addEvent(doTeleportThing, 1000*config.tempo, target, getThingPos(target), true) addEvent(doSendMagicEffect, 1000*config.tempo, getThingPos(target), config.effect2) doSendMagicEffect(getThingPos(target), config.effect1) doTeleportThing(target, config.pos2) ------------------------------------- if isPlayer(target) and isCreature(cid) then doPlayerSendTextMessage(target, 27, "You were teleported by ".. getCreatureName(cid) ..".") end if isPlayer(cid) and isCreature(target) then doPlayerSendTextMessage(cid, 27, "You teleported ".. getCreatureName(target) .."!") end for i = 1,config.tempo do addEvent(function() if isPlayer(target) then doPlayerSendTextMessage(target,25,"You'll be back in " .. config.tempo -i +1 .. " second(s)") end if isPlayer(cid) then doPlayerSendTextMessage(cid,25,"You'll be back in " .. config.tempo -i +1 .. " second(s)") end end, 1000*i) end else ---------- levar quem tá em volta do player --------------- local teleportPosition = { {x = pos.x, y = pos.y - 1, z = pos.z}, {x = pos.x, y = pos.y + 1, z = pos.z}, {x = pos.x - 1, y = pos.y, z = pos.z}, {x = pos.x + 1, y = pos.y, z = pos.z}, {x = pos.x - 1, y = pos.y + 1, z = pos.z}, {x = pos.x - 1, y = pos.y - 1, z = pos.z}, {x = pos.x + 1, y = pos.y - 1, z = pos.z}, {x = pos.x + 1, y = pos.y + 1, z = pos.z} } local mobas = {} local checker = 0 for _, tPos in ipairs(teleportPosition) do doSendMagicEffect(tPos, config.effect2) local mob = getTopCreature(tPos).uid if canEffect (tPos) and mob ~= 0 and (isMonster(mob) or isPlayer(mob)) then for i = 1, #exceptions do if getCreatureName(mob):lower() == exceptions[i] then checker = 1 break end end if checker ~= 1 then table.insert(mobas, mob) end end end if #mobas > 0 then for _, pid in ipairs(mobas) do addEvent(doTeleportThing, 1000*config.tempo, pid, getThingPos(pid), true) addEvent(doSendMagicEffect, 1000*config.tempo, getThingPos(pid), config.effect2) doSendMagicEffect(getThingPos(pid), config.effect1) doTeleportThing(pid, config.pos) if isPlayer(pid) and isCreature(cid) then doPlayerSendTextMessage(pid, 27, "You were teleported by ".. getCreatureName(cid) ..".") end for i = 1,config.tempo do addEvent(function() if isPlayer(pid) then doPlayerSendTextMessage(pid,25,"You'll be back in " .. config.tempo -i +1 .. " second(s)") end end, 1000*i) end end end ---------------------------- addEvent(doTeleportThing, 1000*config.tempo, cid, pos, true) addEvent(doCreatureSay, 1000*config.tempo, cid, config.msg, 20, false) addEvent(doSendMagicEffect, 1000*config.tempo, pos, config.effect2) doSendMagicEffect(pos, config.effect1) doTeleportThing(cid, config.pos) if isPlayer(cid) then doPlayerSendTextMessage(cid, 27, "You teleported yourself.") end for i = 1,config.tempo do addEvent(function() if isPlayer(cid) then doPlayerSendTextMessage(cid,25,"You'll be back in " .. config.tempo -i +1 .. " second(s)") end end, 1000*i) end end else doPlayerSendCancel(cid, "Your skill is in cooldown, you must wait "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.") end return true end
-
{Spell de teleport} Parecido com o Kamui in de NTO
Bom, primeiramente perdão se eu estiver na área errada, é meu primeiro tópico nesse fórum. Seguinte, eu peguei um script de uma spell de kamui in, e eu queria usar no meu DBO. A skill funcionou normalmente (Ela funciona da seguinte forma: quando o jogador X usa a spell em um jogador Y, ambos os jogadores são teleportados para certa position) Eu queria saber se alguém consegue fazer com que ao usar a spell, o caster (conjurador) demore 1 ou 2 segundos para se teleportar (se puder ser configurável tb é ótimo) (Exemplo: o caster usa a spell no target, o target se teleporta para o local configurado imediatamente e depois de 2 segundos o caster também se teleporta para o local configurado) Caso tenham alguma dúvida, avisem! Edit: Percebi que eu estava na área errada, se alguém puder mover meu tópico fico agradecido. Agradeço desde já. Lua da spell - Xml da Spell