cara,vo falar a verdade,gostei bastante do tutorial mesmo,ta bem organizado,bem explicado e muito bem feito.
Aprovado.
cara,vo falar a verdade,gostei bastante do tutorial mesmo,ta bem organizado,bem explicado e muito bem feito.
Aprovado.
info
Grupo: Conde
Registrado: 24/09/07
Posts: 606
Reputação: +9
Char no Tibia: Pain Niihzamun

Faaala brother!
Excelente tutorial mesmo em... da forma que você tinha comentado ![]()
Parabéns pelo desenvolvimento e muito obrigado por compartilhar o tutorial com o XTibia.
Aprovado!
@editado, 18-maio-2010
Decidi fazer algo mais interativo com vocês,
Vocês podem escolher o tema do próximo tutorial da série Scripting, o que vocês gostariam de ver e aprender sobre a linguagem LUA? Fale comigo ![]()
Editado Maio 18 por Oneshot
info
Grupo: Artesão
Registrado: 13/05/10
Posts: 114
Reputação: +11

Ótimo,
muito bom, vale apena botar nos Ot's.
Aprovado :button_ok:
info
Grupo: Marquês
Registrado: 05/07/09
Posts: 1.3k
Reputação: +732
Bem-vindos, Ékstibianos.
Este é um dos tutoriais que explicam os Advanced Systems que eu criei
para um projeto de servidor alternativo que não se efetivou.
Além de mostrar-lhes o sistema, explicarei cada função usada e como
configurar cada magia no seu servidor.
1 - Requisitos
Ékstibiano, você irá precisar de:
- Uma dose de conhecimento em LUA.
- Uma dose de funções.
- E... senso de localização... os scripts das magias irão ficar grandes.
2 - O corpo do script
local combat_lv1 = createCombatObject() setCombatParam(combat_lv1, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat_lv1, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) local combat_lv2 = createCombatObject() setCombatParam(combat_lv2, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat_lv2, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) local combat_lv3 = createCombatObject() setCombatParam(combat_lv3, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat_lv3, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) local area_lv1 = createCombatArea({ {3} }) local area_lv2 = createCombatArea({ {1}, {3} }) local area_lv3 = createCombatArea({ {0, 1, 0}, {1, 3, 1} }) setCombatArea(combat_lv1, area_lv1) setCombatArea(combat_lv2, area_lv2) setCombatArea(combat_lv3, area_lv3) function onGetFormulaValues_lv1(cid, level, maglevel) local magDamage, levelDamage = maglevel, level / 5 return -(magDamage * 1 + levelDamage), -(magDamage * 2 + levelDamage) end function onGetFormulaValues_lv2(cid, level, maglevel) local magDamage, levelDamage = maglevel, level / 5 return -(magDamage * 1.5 + levelDamage), -(magDamage * 3 + levelDamage) end function onGetFormulaValues_lv3(cid, level, maglevel) local magDamage, levelDamage = maglevel, level / 5 return -(magDamage * 2.25 + levelDamage), -(magDamage * 4.5 + levelDamage) end setCombatCallback(combat_lv1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues_lv1") setCombatCallback(combat_lv2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues_lv2") setCombatCallback(combat_lv3, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues_lv3") local function onCastSpell1(parameters) doCombat(parameters.cid, combat_lv1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, combat_lv2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, combat_lv3, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var} local spell_storage = 48502 if getPlayerStorageValue(cid, spell_storage) < 20 then addEvent(onCastSpell1, 0, parameters) setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1) elseif getPlayerStorageValue(cid, spell_storage) == 20 then addEvent(onCastSpell2, 0, parameters) setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1) doPlayerSendTextMessage(cid, 22, "Your Ice Strike advanced to level 2") elseif getPlayerStorageValue(cid, spell_storage) > 20 and getPlayerStorageValue(cid, spell_storage) < 40 then addEvent(onCastSpell2, 0, parameters) setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1) elseif getPlayerStorageValue(cid, spell_storage) == 40 then addEvent(onCastSpell3, 0, parameters) setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1) doPlayerSendTextMessage(cid, 22, "Your Ice Strike advanced to level 3") elseif getPlayerStorageValue(cid, spell_storage) > 40 then addEvent(onCastSpell3, 0, parameters) setPlayerStorageValue(cid, spell_storage, getPlayerStorageValue(cid, spell_storage)+1) end return TRUE endEsse é o script mais básico de Spell System que criei, ele permite que a magia Ice Strike possa avançar do nível 1 (básico) ao nível 3 (ótimo)
Irei explicar o script em blocos, exatamente abaixo:
3 - Explicações
local area_lv1 = createCombatArea({ {3} }) local area_lv2 = createCombatArea({ {1}, {3} }) local area_lv3 = createCombatArea({ {0, 1, 0}, {1, 3, 1} }) setCombatArea(combat_lv1, area_lv1) setCombatArea(combat_lv2, area_lv2) setCombatArea(combat_lv3, area_lv3)local function onCastSpell1(parameters) doCombat(parameters.cid, combat_lv1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, combat_lv2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, combat_lv3, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var} local SPELL_LEVEL_STORAGE = 70000 local SPELL_TRIES_STORAGE = 70001 local spell_level = getPlayerStorageValue(cid, SPELL_LEVEL_STORAGE) local spell_tries = getPlayerStorageValue(cid, SPELL_TRIES_STORAGE) if spell_level == -1 then spell_level = 1 end if spell_level == 1 then addEvent(onCastSpell1, 0, parameters) if spell_tries >= 1 then setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, spell_tries+1) else setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, 1) end elseif spell_level == 2 then addEvent(onCastSpell2, 0, parameters) if spell_tries >= 1 then setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, spell_tries+1) else setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, 1) end elseif spell_level == 3 then addEvent(onCastSpell3, 0, parameters) end if spell_tries >= ((spell_level)*12) then if spell_level < 3 then setPlayerStorageValue(cid, SPELL_LEVEL_STORAGE, spell_level + 1) setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, 0) doPlayerSendTextMessage(cid, 22, "You advanced from level " .. spell_level .. " to level " .. spell_level + 1 .. " in Ice Strike spell") doSendMagicEffect(getCreaturePosition(cid),14) doSendAnimatedText(getCreaturePosition(cid), 'Advanced!', 18) end end return TRUE endAté mais, te vejo no próximo tutorial de Advanced System.
Editado Maio 15 por Oneshot