Histórico de Curtidas
-
apollo333 recebeu reputação de .Smile em [Tutorial] Mudar Versão do seu MapaOlá a todos trago hoje em vídeo, um tutorial de como mudara a versão do mapa de seu Otserv.
-
apollo333 recebeu reputação de Cat em [Tutorial] Mudar Versão do seu MapaOlá a todos trago hoje em vídeo, um tutorial de como mudara a versão do mapa de seu Otserv.
-
apollo333 recebeu reputação de Werner em [Tutorial] Mudar Versão do seu MapaOlá a todos trago hoje em vídeo, um tutorial de como mudara a versão do mapa de seu Otserv.
-
apollo333 deu reputação a Dyego em Zenfia Online MappingUpdate
faça parte da equipe
Programador OTC
Spriter
Scripter
-
apollo333 deu reputação a Dyego em Zenfia Online MappingHaha tá ficando bom kkk.
Update
Nova parede de madeira feita por mim xD
Nova Montanha de Caça com Orcs
Participe da Equipe, Vagas Abertas
-
apollo333 deu reputação a Cat em [DOWNLOAD] Spells 8.60Spells 8.60 (8 pastas)
Créditos: Otland (imagens: Daaniel)
Quote
Imagem:
-
apollo333 deu reputação a grafit em erro ao iniciar servidorapt-get install libmysqlclient-dev Se mesmo assim não for, tente:
install mysql-server -y
-
apollo333 deu reputação a marcot em (Resolvido)[ Pedido ] tem que lança magia@apollo333, @Samu DS
Desculpem nao ter respondido, estava maratonando uma série ontem.
Aqui a versão upando ML e com exausted:
local config = { requiredLevel = 100, -- Level necessario usingMana = 200, -- Mana que sera gasta storageID = 40001, -- Mude se ja estiver em uso timeExausted = 1, -- Tempo de exausted global } local errorMsg = { level = "Not enough level.", exausted = "You are exausted.", mana = "Not enough mana.", } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -1.1, 0) local arr = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 2, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } local area = createCombatArea(arr) setCombatArea(combat, area) function onUse(cid, item, frompos, item2, topos) if getPlayerLevel(cid) > config.requiredLevel then if getPlayerStorageValue (cid, config.storageID) < os.time() then if getPlayerMana(cid) > config.usingMana then doPlayerAddMana(cid, -config.usingMana) doPlayerAddSpentMana(cid, config.usingMana, true) setPlayerStorageValue(cid, config.storageID, os.time() + config.timeExausted) return doCombat(cid, combat, numberToVariant(cid)) else doPlayerSendCancel(cid, errorMsg.mana) doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, errorMsg.exausted) doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, errorMsg.level) end return TRUE end
-
apollo333 deu reputação a marcot em (Resolvido)[ Pedido ] tem que lança magiaVocê vai fazer o seguinte: copia tudo que está na magia e cola no action, depois procura essa parte:
function onCastSpell(cid, var) return doCombat(cid, combat, var) end e substitua por:
function onUse(cid, item, frompos, item2, topos) return doCombat(cid, combat, numberToVariant(cid)) end
-
apollo333 deu reputação a marcot em (Resolvido)[ Pedido ] tem que lança magiaVou tentar explicar dando um exemplo.
Quero fazer um item que solte "Exevo Mas San", o script equivalente no meu servidor é o holy light.lua. A princípio temos:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -1.1, 0) local arr = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Quando você usa uma skill o que você chamou na verdade é a parte do script:
function onCastSpell(cid, var) return doCombat(cid, combat, var) end E a parte responsável por soltar uma magia é o "doCombat(cid, combat, var)". Botando os parâmetros "cid" e "var" de lado, quem é "combat"? A parte a seguir não é necessária para compreender totalmente como fazer para o item usar uma skill mas vamos lá:
Vamos voltar ao começo do script para entender quem é combat:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -1.1, 0) local arr = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } local area = createCombatArea(arr) setCombatArea(combat, area) Na primeira linha criamos a variável "combat" e usamos uma espécie de construtor dessa variável. Depois disso definimos cada parte do script.
Na segunda linha definimos o "COMBAT_PARAM_TYPE", que é o tipo de dano.
Na terceira linha, definimos "COMBAT_PARAM_EFFECT", que é o efeito (49).
Na quarta linha, definimos "COMBAT_FORMULA_LEVELMAGIC" que vai ser a quantidade de dano.
Depois disso definimos a área, criamos a variável arr que é uma matriz definindo a área da skill, facilitando a vida de pessoas que vão fazer skills. E depois simplesmente "linkamos" essa matriz ao combat.
Enfim, quando usamos uma magia temos a função onCastSpell e quando usamos um action temos a função onUse, logo, não podemos simplesmente dar ctrl+c e ctrl+v para fazê-lo. Então vamos fazer o que está sendo feito dentro do onCastSpell dentro do onUse. O que temos dentro do onCastSpell que queremos no onUse?
function onCastSpell(cid, var) return doCombat(cid, combat, var) end E o que temos no action?
function onUse(cid, item, frompos, item2, topos) <codigo> end Note que no doCombat(cid, combat, var) temos uma variável que não temos no onUse, então vamos colocar numberToVariant(cid) no lugar, ficando assim:
function onUse(cid, item, frompos, item2, topos) return doCombat(cid, combat, numberToVariant(cid)) end No final das contas, o script do exevo mas san por item ficaria assim:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -1.1, 0) local arr = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } local area = createCombatArea(arr) setCombatArea(combat, area) function onUse(cid, item, frompos, item2, topos) return doCombat(cid, combat, numberToVariant(cid)) end
[EDIT]:
Tinha me esquecido desse detalhe. Já edito e mando o exemplo acima gastando mana.
[EDIT2]:
local config = { requiredLevel = 100, usingMana = 200 } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -1.1, 0) local arr = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } local area = createCombatArea(arr) setCombatArea(combat, area) function onUse(cid, item, frompos, item2, topos) if getPlayerLevel(cid) > config.requiredLevel then if getPlayerMana(cid) > config.usingMana then doPlayerAddMana(cid, -config.usingMana) return doCombat(cid, combat, numberToVariant(cid)) else doPlayerSendCancel(cid, "Not enough mana.") end else doPlayerSendCancel(cid, "Not enough level.") end return TRUE end
-
apollo333 deu reputação a marcot em (Resolvido)[ Pedido ] tem que lança magiaEssa ultima script que você mandou está com vários erros.
Tem um erro de sintaxe de um if sem then, e a função RunPart está sendo chamada sem todos seus 5 parâmetros, onde 2 deles não foram definidos no código (dirList e dirEmitPos)
-
apollo333 deu reputação a marcot em (Resolvido)[ Pedido ] tem que lança magiaUm action não vai funcionar se tiver o function onCastSpell (cid, var). Então você troca para function onUse(cid, item, frompos, item2, topos) e para o action chamar a skill você deve ter o doCombat(cid, combat, var), mas você não tem var numa action, então você troca para doCombat(cid, combat, numberToVariant(cid)).
Se você preferir faz assim:
Pega o spell que você quer que seja o item e copie numa nova action.
Adicione ao começo
local config = { requiredLevel = 100, usingMana = 200 } E substitua o
function onCastSpell(cid, var) return doCombat(cid, combat, var) end Por
function onUse(cid, item, frompos, item2, topos) if getPlayerLevel(cid) > config.requiredLevel then if getPlayerMana(cid) > config.usingMana then doPlayerAddMana(cid, -config.usingMana) return doCombat(cid, combat, numberToVariant(cid)) else doPlayerSendCancel(cid, "Not enough mana.") end else doPlayerSendCancel(cid, "Not enough level.") end return TRUE end
-
apollo333 deu reputação a marcot em (Resolvido)[ Pedido ] tem que lança magiaVocê pode fazer assim no caso da exura, cria o arquivo item_skill.lua em data/actions/scripts:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) function onGetFormulaValues(cid, level, maglevel) min = (level * 2 + maglevel * 3) * 0.5 - 30 max = (level * 2 + maglevel * 3) * 0.6 if min < 25 then min = 25 end return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onUse(cid, item, frompos, item2, topos) return doCombat(cid, combat, numberToVariant(cid)) end E adicionar em actions.xml a tag:
<action itemid="2195" script="item_skill.lua" /> Isso no OTServ SVN Version 0.6.0.
Basicamente, qual a diferença? Um action você teria que ter a função "onUse". Dentro dela você chama o "doCombat" e como não temos o parâmetro "var" vamos usar o "numberToVariant(cid)".