Tudo que Reds postou
-
(Resolvido)[ juda ] Dano Da Wand Por Magic Level
ele usa, mas não sei exatamente como é o cálculo.. mas realmente, armas configuradas por script é muito melhor
-
(Resolvido)[ juda ] Dano Da Wand Por Magic Level
min = -(100 * maglevel) max = -(240 * maglevel) return min, max end o ataque varia entre 100 * ml e 240 * ml se o ml for 10 o ataque vai variar entre 1000 e 2400 se você trocar o 100 por 150, vai variar entre 1500 e 2400.. para criar isso, você precisa utilizar um weapons.xml e customizar para cada arma que você quiser, o bom é que você tem controle 100% do dano, efeitos e etc.. quando você define no weapons.xml o ataque definido em items.xml não é utilizado..
-
(Resolvido)[ juda ] Dano Da Wand Por Magic Level
coloca no lugar de: setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") isso: setCombatCallback(combat.object, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
-
(Resolvido)[ juda ] Dano Da Wand Por Magic Level
que erro deu? qual tfs é isso?
-
Como executar vários addEvent sem erro?
local function onCastSpell4(parameters) local target = getCreatureTarget(cid) if isCreature(target) == TRUE then -- adiciona isso para verificar se o alvo é valido addEvent(fear, 0, target) doCombat(parameters.cid, parameters.combat4, parameters.var) addEvent(onCastSpell3, 800, parameters) end end
-
(Resolvido)[ juda ] Dano Da Wand Por Magic Level
exatamente, ali você pode configurar como você quiser
-
(Resolvido)[ juda ] Dano Da Wand Por Magic Level
local combat_types = { [1] = {cond = CONDITION_FREEZING, effect = CONST_ME_ICEATTACK, anim = CONST_ANI_ICE, damage = COMBAT_ICEDAMAGE}, [2] = {cond = CONDITION_FIRE, effect = CONST_ME_FIREATTACK, anim = CONST_ANI_FIRE, damage = COMBAT_FIREDAMAGE}, [3] = {cond = CONDITION_POISON, effect = CONST_ME_SMALLPLANTS, anim = CONST_ANI_EARTH, damage = COMBAT_EARTHDAMAGE}, [4] = {cond = CONDITION_ENERGY, effect = CONST_ME_ENERGYHIT, anim = CONST_ANI_ENERGY, damage = COMBAT_ENERGYDAMAGE}, [5] = {effect = CONST_ME_HOLYDAMAGE, anim = CONST_ANI_HOLY, damage = COMBAT_HOLYDAMAGE}, [6] = {cond = CONDITION_CURSED, effect = CONST_ME_MORTAREA, anim = CONST_ANI_SUDDENDEATH, damage = COMBAT_DEATHDAMAGE}, default = {damage = COMBAT_PHYSICALDAMAGE}, } local config = { storage = 303030, block_armor = true, condition_rounds = 0, condition_value = 0, condition_time = 2000, } for key, combat in pairs(combat_types) do combat.object = createCombatObject() setCombatParam(combat.object, COMBAT_PARAM_TYPE, combat.damage or COMBAT_PHYSICALDAMAGE) setCombatParam(combat.object, COMBAT_PARAM_EFFECT, combat.effect or CONST_ME_NONE) setCombatParam(combat.object, COMBAT_PARAM_DISTANCEEFFECT, combat.anim or CONST_ANI_NONE) setCombatParam(combat.object, COMBAT_PARAM_BLOCKARMOR, config.block_armor and 1 or 0) function onGetFormulaValues(cid, level, maglevel) min = -(100 * maglevel) max = -(240 * maglevel) return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") if combat.cond then local condition = createConditionObject(combat.cond) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) addDamageCondition(condition, config.condition_rounds, config.condition_time, config.condition_value) setCombatCondition(combat.object, condition) end end local function find_combat(id) return combat_types[id] or false end function onUseWeapon(cid, var) local combat = find_combat(getCreatureStorage(cid, config.storage)) if not combat then if getDistanceBetween(getThingPosition(cid), getThingPosition(var.number)) > 1 then return false end combat = combat_types.default end return doCombat(cid, combat.object, var) end
-
Utilizando o Visual Studio Code, Notepad++ nunca mais
Fala galera, por muito tempo utilizei o notepad++ para desenvolver meus códigos em lua. Agora voltando a desenvolver meu servidor, utilizo o Visual Studio Code e digo que ajuda muito em relação ao notepad++. Vantagens: 1) Você pode abrir a pasta de seu servidor, tendo uma estrutura semelhante a um projeto Java por exemplo, tudo isso de uma forma bem fácil. Se não me engano o notepad++ tem uma funcionalidade parecida, mas acredito que a maioria aqui não usa. Para fazer isso é só utilizar o atalho CTRL + K + O, ou file > Open Folder e selecionar a pasta de seu servidor. 2) Diversos atalhos. Com o VS Code, você pode utilizar atalhos, como o CTRL + P, ao fazer isso ele abre um box no topo da IDE onde o desenvolvedor pode escrever o nome do arquivo e ele encontra dentro do projeto. Fazia mais de ano que eu não abria meu servidor, então eu não lembrava de diversas coisas, como os monstros que dropavam o item 10566, então com o Visual Studio Code, eu consegui descobrir que eu não tinha configurado nenhum monstro para dropar aquele item. Para fazer essa pesquisa utilizei o atalho CTRL + SHIFT + F, onde ele pesquisa alguma palavra em específica entre os arquivos do seu projeto. E muitos outros, que você pode encontrar pesquisando pela internet. 3) Diversas extensões. Com o VS Code você pode instalar diversas extensões que auxiliam no seu desenvolvimento, por enquanto adicionei a padrão de Lua. Com ela, ao escrever códigos Lua é utilizado intellisense, facilitando muito no desenvolvimento. 4) Criação de snippets para utilização das funções do Tibia. 5) Muito mais.. Utilizo há algum tempo o VS Code para desenvolvimento de front e sempre descubro coisas novas sobre ele.. O VS Code esta disponível em: https://code.visualstudio.com/download.
-
(Resolvido)Spell que hita a vida do alvo em %.
function onCastSpell(cid, var) local target = getCreatureTarget(cid) local Hp = (getCreatureHealth(target))*0.2 if isCreature(target) then doCreatureAddHealth(target, -Hp) -- remove o valor de 20% da vida do jogador doSendMagicEffect(getCreaturePosition(target), 10) -- EFEITO DA MAGIA end return true end ^^^^ assim pega no target
-
Attack speed - 2018
só pra deixar claro que nunca precisou mexer nas sources para criar algo assim
-
Quer aprender mais sobre Servers ?
Eu planejo no ano que vem fazer um server com a maioria dessas características. Mas já digo, tive servidor com esse tipo de sprites e custa muito dinheiro...
-
DOUBLE XP COM POT SÓ USA 1X
Olhei bem por cima: troca : setPlayerStorageValue(cid, 62164, os.time()) por: setPlayerStorageValue(cid, 62164, os.time() + configs.time *60*1000) apaga: creatureEvent(setPlayerStorageValue, , cid, 62164, 0) troca: if getPlayerStorageValue(cid, 62164) >= 1 then return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da Potion.")end por: if getPlayerStorageValue(cid, 62164) - os.time() >= 1 then return doPlayerSendCancel(cid, "Voce ja ta Sob o Efeito da Potion.")end
-
HELP QUERO COLOCAR ITENS 8.6 SO QUE O OT ERA 8.5
Abre no remeres, só que ao invés de apertar OPEN apertar no IMPORT e procura o mapa
-
Arma com lifesteal
meu, se o dano é impar ta curando 1 a mais, pq botei o math.ceil, mas ta curando certinho, 50% do dano que causa, oq ta dando de errado no seu? vc ta referenciando o script correto em weapons.xml?
-
Arma com lifesteal
-
(Resolvido)Ajuda Dodge Ne Items
nao entendi muito bem, pode explicar melhor?
-
Ajuda em Spell
no meu ot essa spell funciona contra qualquer dano, a spell só da o storage para o player, o que faz com que ele n receba o dano está nos creaturescript, posta ai para eu ver se está td certo
-
(Resolvido)Ajuda Dodge Ne Items
apaga isso: if level==0 then setItemName(itemEx.uid, nm..' +'..(level+1)..slot) elseif level<=9 then setItemName(itemEx.uid, string.match(string.match(string.sub(nm, 1, -3), "%S.*"), ".*%S")..' +'..(level+1)..slot) else setItemName(itemEx.uid, string.match(string.match(string.sub(nm, 1, -4), "%S.*"), ".*%S")..' +'..(level+1)..slot) end isso: setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..slot) e isso: setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level-1)..slot)
-
Error MoveEvent executeEquip Call stack overflow
nao sei muito desse lua error, mas trocando por (return false) deve fazer a mesma coisa stack overflow significa que o código entra em um loop infinito, ai eu apaguei a parte que causava esse loop que era: addEvent(Paralizy, 1*100, cid)
-
Error MoveEvent executeEquip Call stack overflow
function Paralizy(cid)if not isCreature(cid) then return LUA_ERROR endlocal HelmetID = 12692 --- ID DO ITEMif getPlayerSlotItem(cid, CONST_SLOT_FEET).itemid == HelmetID thendoRemoveCondition(cid, CONDITION_PARALYZE)endreturn trueendfunction onEquip(cid, item, slot)doRemoveCondition(cid, CONDITION_PARALYZE)addEvent(Paralizy, 1*100, cid)return trueend era esse que causava o erro, retirei a linha
-
Arma com lifesteal
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, 0, 0, 1.0, 0) function onUseWeapon(cid, var) local skill = getPlayerSkill(cid,SKILL_SWORD) -- Change this to the type of weapon you are using local mat = 0.085*0.5*50*skill+(getPlayerLevel(cid)/5) -- Change 50 to the attack of the weapon local min = 5 -- this means 5% minimum healing local max = 15 -- this means 15% maximum healing local dmg = math.random((mat * (min/100)), (mat * (max/100))) if getPlayerLevel(cid) >= 20 then local target = getCreatureTarget(cid) doCreatureAddHealth(target, -dmg) doCreatureAddHealth(cid, (math.ceil(dmg/2))) doSendAnimatedText(getPlayerPosition(target),"-"..dmg.."", TEXTCOLOR_RED) doSendMagicEffect(getThingPos(target), 0) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) else doPlayerSendCancel(cid, 'You need level 20 to use this weapon.') end end ta na mão
-
(Resolvido)Ajuda Dodge Ne Items
saquei, faz assim então, cola ai o que vc usa para dar +1, +2, +3 e etc..
-
(Resolvido)Ajuda Dodge Ne Items
apaga isso: setItemDodgePercent(itemEx.uid, atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10)doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(level+1)) e coloca isso: local porcentagem = atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10 setItemDodgePercent(itemEx.uid, porcentagem)doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(porcentagem)) olhei bem por cima o código, se n der me avisa
-
(Resolvido)Ajuda Dodge Ne Items
doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(level+1)) voce modifica aqui o texto
-
Dano de spell por storage
o script ta referenciado corretamente no xml?