Solutions
-
xWhiteWolf's post in (Resolvido)Monstro que enche vida e mana was marked as the answercria a spell que vai encher a vida/mana
local config = { health = 300, mana = 300 } function onCastSpell(cid, var) if getCreatureMaster(cid) then local master = getCreatureMaster(cid) if isInParty(master) then local members = getPartyMembers(getPlayerParty(master)) local health = math.ceil( config.health / #members ) local mana = math.ceil( config.mana / #members ) for i = 1, #members do doCreatureAddHealth(members[i], health) doCreatureAddMana(members[i], mana) doSendAnimatedText(getCreaturePosition(members[i]), "+"..health, 18) doSendMagicEffect(getCreaturePosition(members[i]), 12) end else doCreatureAddHealth(master, config.health) doCreatureAddMana(master, config.mana) doSendAnimatedText(getCreaturePosition(master), "+"..config.health, 18) doSendMagicEffect(getCreaturePosition(master), 12) end end return true end declara ela e coloca pra só monstros poderem usar:
<instant name="healmaster" words="healmaster" lvl="0" mana="0" prem="0" aggressive="0" exhaustion="1500" needlearn="1" event="script" value="especiais/healmaster.lua"> </instant> agora vá no xml do monstro que vc quer que solte essa magia e embaixo de
<defenses armor="7" defense="5"> coloque isso daqui:
<defense name="healmaster" interval="10000" chance="99" duration="100"> </defense> No final, se seu monstro não usar nenhuma outra magia de defesa, deve ficar assim:
<defenses armor="7" defense="5"> <defense name="healmaster" interval="10000" chance="99" duration="100"> </defense> </defenses> esse /defense fecha a magia e o /defenses fecha a armor lá em cima
-
xWhiteWolf's post in (Resolvido)Spell que da muted no target was marked as the answerlocal condition = createConditionObject(CONDITION_MUTED) setConditionParam(condition, CONDITION_PARAM_TICKS, 2000) local chance = 60 function silence(tar, text) if(isCreature(tar) == true) then doSendAnimatedText(getCreaturePosition(tar), text, 215) doAddCondition(tar, condition) end return true end function onCastSpell(cid, var) local tar = getCreatureTarget(cid) if hasCondition(tar, CONDITION_MUTED) == true then return false else if isCreature(tar) == true then if math.random(1,100) <= chance then local text = "SILENCE" silence(tar, text) else local text = "MISS" doSendAnimatedText(getCreaturePosition(tar), text, 215) end else if isPlayer(cid) == true then doPlayerSendCancel(cid, "Silence can be cast only on other creatures.") end return false end end return true end <instant name="Narutinho" words="naruto silence" lvl="300" mana="200" prem="1" range="4" needtarget="1" exhaustion="1000" needlearn="0" event="script" value="especiais/silencenaruto.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> </instant>
-
xWhiteWolf's post in (Resolvido)spell igual do video was marked as the answer-- =============== COMBAT VARS =============== -- Areas/Combat for 100ms local combat1_Ice_Area_Hit = createCombatObject() setCombatParam(combat1_Ice_Area_Hit, COMBAT_PARAM_EFFECT, 5) setCombatParam(combat1_Ice_Area_Hit, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatArea(combat1_Ice_Area_Hit,createCombatArea({ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 3, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } )) setCombatFormula(combat1_Ice_Area_Hit, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- Areas/Combat for 200ms local combat2_Ice_Area_Hit = createCombatObject() setCombatParam(combat2_Ice_Area_Hit, COMBAT_PARAM_EFFECT, 5) setCombatParam(combat2_Ice_Area_Hit, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatArea(combat2_Ice_Area_Hit,createCombatArea({ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, })) setCombatFormula(combat2_Ice_Area_Hit, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- Areas/Combat for 300ms local combat3_Ice_Area_Hit = createCombatObject() setCombatParam(combat3_Ice_Area_Hit, COMBAT_PARAM_EFFECT, 5) setCombatParam(combat3_Ice_Area_Hit, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatArea(combat3_Ice_Area_Hit,createCombatArea({ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, })) setCombatFormula(combat3_Ice_Area_Hit, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- Areas/Combat for 500ms local combat4_Ice_Area_Hit = createCombatObject() setCombatParam(combat4_Ice_Area_Hit, COMBAT_PARAM_EFFECT, 5) setCombatParam(combat4_Ice_Area_Hit, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatArea(combat4_Ice_Area_Hit,createCombatArea({ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, })) setCombatFormula(combat4_Ice_Area_Hit, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) local function RunPart(c,cid,var,dirList,dirEmitPos,startDir) -- Part if (isCreature(cid)) then doCombat(cid, c, var) if (dirList ~= nil) then -- Emit distance effects local i = 2; while (i < #dirList) do if (startDir == 0) then -- N doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1]) elseif (startDir == 2) then -- S doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x+dirList[i],y=dirEmitPos.y+dirList[i+1],z=dirEmitPos.z},dirList[1]) elseif (startDir == 1) then -- E doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x+dirList[i+1],y=dirEmitPos.y+dirList[i],z=dirEmitPos.z},dirList[1]) else -- W / Something weird happened doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i+1],y=dirEmitPos.y-dirList[i],z=dirEmitPos.z},dirList[1]) end i = i + 2 end end end end function onCastSpell(cid, var) local startPos = getCreaturePosition(cid) local startDir = getCreatureLookDirection(cid) addEvent(RunPart,200,combat1_Ice_Area_Hit,cid,var) addEvent(RunPart,350,combat2_Ice_Area_Hit,cid,var) addEvent(RunPart,500,combat3_Ice_Area_Hit,cid,var) addEvent(RunPart,600,combat4_Ice_Area_Hit,cid,var) return true end <instant name="ahahahaa" words="testinho" lvl="16" mana="500" prem="1" range="3" direction="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script" value="especiais/hahaha.lua"> <vocation id="3"/> <vocation id="7"/> </instant>
-
xWhiteWolf's post in (Resolvido)Spell Henge No Justu was marked as the answer<instant name="Nome Qualquer" words="henge no jutso" lvl="23" mana="25" range="4" needtarget="1" params="1" exhaustion="1000" blockwalls="1" needlearn="0" event="script" value="especiais/henge.lua"> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/></instant> function onCastSpell(cid, var) doSetCreatureOutfit(cid, getCreatureOutfit(variantToNumber(var)), 5000) return true end
-
xWhiteWolf's post in (Resolvido)[Pedido] Max Ml was marked as the answertenta assim
function onLogin(cid) if getPlayerMagLevel(cid) >= 150 then doPlayerSetRate(cid, 7, 0) end return true end function onAdvance(cid, skill, oldlevel, newlevel) if getPlayerMagLevel(cid) >= 150 then doPlayerSetRate(cid, 7, 0) end return true end LEMBRA DE REGISTRAR no creaturescripts\scripts\login.lua e adicionar as tags igualzinho o membro emerson te disse ali em cima
-
xWhiteWolf's post in (Resolvido)[Vip] Free Account was marked as the answervocê colocou antes do ultimo return true?? Me manda seu login.lua
-
xWhiteWolf's post in (Resolvido)[PEDIDO] SPELL KAMUI was marked as the answerfiz de uma forma diferente, tá mais ou menos como vc pediu mas ele ainda sai por tempo haha http://www.tibiaking.com/forum/topic/38901-kamui-in/
-
xWhiteWolf's post in (Resolvido)[Pedido][Action] Transporte de players. was marked as the answernão, não é um pedido simples e nunca diga que o pedido de alguém não é valido e que ela deve ir no google.. é pra isso que o fórum serve. Não quero voltar a ver esse tipo de atitude por aqui.
local pos = {x = 160, y = 54, z = 7} -- posição que será teleportado local from = {x = 145, y = 40, z = 7} ---- posição de um dos cantos do area que será analisado local to = {x = 151, y = 53, z = 7} ---- posição de um dos cantos da area que será analisado function onUse(cid, item, frompos, item2, topos) function getSpectatorsFromArea(fromPosition, toPosition) local width = (math.max(fromPosition.x, toPosition.x) - math.min(fromPosition.x, toPosition.x)) / 2 + 1 local height = (math.max(fromPosition.y, toPosition.y) - math.min(fromPosition.y, toPosition.y)) / 2 + 1 local center = {x = math.min(fromPosition.x, toPosition.x) + width, y = math.min(fromPosition.y, toPosition.y) + height, z = fromPosition.z} return getSpectators(center, width, height, false) end function TeleportAllInArea(from, to) for _, pid in pairs(getSpectatorsFromArea(from, to) or {}) do if isPlayer(pid) then doTeleportThing(pid, pos, true) doSendMagicEffect(getPlayerPosition(pid), 10) end end end TeleportAllInArea(from, to) doSendMagicEffect(getPlayerPosition(cid), 13) return true end -
xWhiteWolf's post in (Resolvido)Problema com Bike (Poketibia) was marked as the answervai em creaturescripts\scripts\login.lua e antes do último return true adiciona isso:
if getCreatureSpeed(cid) ~= getCreatureBaseSpeed(cid) then local delta = ( (getCreatureBaseSpeed(cid)) - (getCreatureSpeed(cid)) ) doChangeSpeed(cid, delta) end -
xWhiteWolf's post in (Resolvido)Dúvida em Script was marked as the answerfunction onLook(cid, thing, position, lookDistance) if not isCreature(thing.uid) then local house = getHouseFromPos(position) if house then local article = thing.type > 1 and thing.type.." " or getItemArticleById(thing.itemid)..(getItemArticleById(thing.itemid) == "" and "" or " ") local plural = getItemPluralNameById(thing.itemid) == "" and getItemNameById(thing.itemid).."s" or getItemPluralNameById(thing.itemid) local desc = getItemSpecialDescription(thing.uid) == "" and "" or getItemSpecialDescription(thing.uid).." " local str = "You see "..(article)..""..(thing.type > 1 and plural or getItemNameById(thing.itemid))..". "..desc..".\nPertence à casa '"..getHouseName(house).."'." if getHouseOwner(house) ~= 0 then str = str.." ".. getPlayerNameByGUID( getHouseOwner(house) ).." é dono dessa casa." else str = str.." Ninguém é dono dessa casa. Ela custa "..getHousePrice(house).." dólares." end if getPlayerAccess(cid) > 2 then str = str.."\nItemID: ["..(thing.itemid).."]" if thing.actionid > 0 then str = str..", ActionID: ["..(thing.actionid).."]" end if thing.uid < 65536 then str = str..", UniqueID: ["..(thing.uid).."]" end str = str..".\nPosition: [X: "..(getThingPos(thing.uid).x).."] [Y: "..(getThingPos(thing.uid).y).."] [Z: "..(getThingPos(thing.uid).z).."]." end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str) return false end end return true end deve resolver
-
xWhiteWolf's post in (Resolvido)Aprender a linguagem. was marked as the answerentao cara, vc vai precisar de 5 coisas:
Aprender Lua (linguagem em que é programado o tibia) Treinar muito Andar sempre com uma tabela de funções do seu servidor Fuçar as sources para ver oque as funções precisam e oque elas fazem Fuçar a lib pra ver as funções feitas em LUA e as constantes (conditions, efeitos, etc.)
cid é abreviação pra creatureid e significa a criatura que está executando o script..
uid é abreviação pra uniqueid e significa o numero único de uma determinada coisa.
-
xWhiteWolf's post in (Resolvido)[Pedido] Pìlar ao dar use nasce bixo e da storage was marked as the answerprecisa replicar pra todos.. coloca numero 2
<event type="kill" name="pilarquest2" script="nomequalquer2.lua"/> registerCreatureEvent(cid, "pilarquest2") e vai repetindo pros 11 (o script tb).
A action é bem facinho de fazer então fica aí como sua lição de casa tentar haha
dica: use as funções de storage e essa daqui pra criar o monstro:
-
xWhiteWolf's post in (Resolvido)[Pedido] Spell que transforma o player em Magic tower... \/ was marked as the answerera só procurar no fórum cara '-' http://www.tibiaking.com/forum/topic/33043-spell-kamui/page-2 aqui tem as duas, a de teleportar os outros e a de se teleportar.. no próprio script vc configura o cooldown dela, quantos segundos demora pra voltar dps de usar a magia e etc.
-
xWhiteWolf's post in (Resolvido)[PEDIDO] Item que da Vocation was marked as the answerfunction onUse(cid, item, frompos, item2, topos) local config = { [3222] = 500, [3223] = 600, [3224] = 700, [3225] = 800 } if config[item.itemid] ~= getPlayerVocation(cid) then doRemoveItem(item.uid, 1) doPlayerSetVocation(cid, config[item.itemid]) doSendMagicEffect(config.pos,math.random(28,30)) --aqui é a parte do efeito, coloquei um random entre o efeito 28~30 que são os fogos de artificio doPlayerSendTextMessage(cid, 22, "You are now a "..getPlayerVocationName(cid).."!") else doPlayerSendTextMessage(cid, 22, "You can't be promoted since you're already a "..getPlayerVocationName(cid).."!") end return true end actions.xml
<action itemid="3222" script="pedravoc.lua"/> <action itemid="3223" script="pedravoc.lua"/> <action itemid="3224" script="pedravoc.lua"/> <action itemid="3225" script="pedravoc.lua"/> -
xWhiteWolf's post in (Resolvido)slot system dúvida was marked as the answer---Script by mock the bear! local conditionMP,conditionHP,conditionML,conditionCLUB,conditionSHI,conditionDIST,conditionAMP = {},{},{},{},{},{},{} for i=1,100 do ---Carrega as conditions --- HP conditionHP[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionHP[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionHP[i], CONDITION_PARAM_STAT_MAXHEALTH, 0+i) setConditionParam(conditionHP[i], CONDITION_PARAM_BUFF, true) setConditionParam(conditionHP[i], CONDITION_PARAM_SUBID, 50) --MANA conditionMP[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionMP[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionMP[i], CONDITION_PARAM_STAT_MAXMANA, 0+i) setConditionParam(conditionMP[i], CONDITION_PARAM_BUFF, true) setConditionParam(conditionMP[i], CONDITION_PARAM_SUBID, 51) --Magic level conditionML[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionML[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionML[i], CONDITION_PARAM_STAT_MAGICLEVELPERCENT, 100+i) setConditionParam(conditionML[i], CONDITION_PARAM_BUFF, true) setConditionParam(conditionML[i], CONDITION_PARAM_SUBID, 52) --club axe sword conditionCLUB[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionCLUB[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_CLUBPERCENT, 100+i) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_SWORDPERCENT, 100+i) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_AXEPERCENT, 100+i) setConditionParam(conditionCLUB[i], CONDITION_PARAM_BUFF, true) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SUBID, 53) --- shield conditionSHI[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionSHI[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionSHI[i], CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+i) setConditionParam(conditionSHI[i], CONDITION_PARAM_BUFF, true) setConditionParam(conditionSHI[i], CONDITION_PARAM_SUBID, 54) --- dist conditionDIST[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionDIST[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionDIST[i], CONDITION_PARAM_SKILL_DISTANCEPERCENT, 100+i) setConditionParam(conditionDIST[i], CONDITION_PARAM_BUFF, true) setConditionParam(conditionDIST[i], CONDITION_PARAM_SUBID, 55) end function getSlotType(n) --By mock the bear if not n then return false end if n:match('%[(.+)%]') then n = n:match('%[(.+)%]') if n == '?' then return 0,n else return n:match('(.-)%.([+-])(%d+)%%') end else return false end end local function loadSet(cid) local t = {} for slot=1,9 do t[slot] = '' local s = getPlayerSlotItem(cid,slot).uid if s ~= 0 then t[slot] = getItemName(s) end end return t end function isInArray2(arr,var) -- Because in some servers it return 1 and 0 and others true and false for i,b in pairs(arr) do if var == b then return true end end return false end function check2(cid,i) if i == 5 or i == 6 then if isInArray({'head','necklace','backpack','body','legs','feet','ring'},getItemValue(getPlayerSlotItem(cid,i).itemid,'slotType') or '') then return false end end return true end function chk(cid,f) if not isPlayer(cid) then return end local t = loadSet(cid) for i=1,#f do if f[i] ~= t[i] then equip(cid,nil,slot) break end end addEvent(chk,200,cid,t) end items = { ---- Only to get attr: slotType because getItemName dont return it -.-' _VERSION='1.0 By mock', XML_DIR='data/items/items.xml', } do local ia = os.clock() io.write('Loading items') local i = io.open(items.XML_DIR,'r') local u = i:read(-1) i:close() local u = u:match('<items>(.+)</items>') for mi,id,mid,name,data,me in u:gmatch('<(%a-)%s*id%s*=%s*"(%d+)"%s*(.-)%s*name%s*=%s*"(.-)"%s*>(.-)</(%a*)>') do if mi == 'item' and me == 'item' then local td = {name=name,id=id,type=1} for key,value in data:gmatch('<attribute key="(.-)" value="(.-)"/>') do td[key] = value end for key,value in mid:gmatch('(.-)="(.-)"') do td[key] = value end items[tonumber(id)] = td items[name] = td end end for mi,id,mid,name,data in u:gmatch('<(%a-)%s*id%s*=%s*"(%d*)"%s*(.-)%s*name%s*=%s*"(%a+)"%s*/>') do if mi == 'item' then local td = {name=name,id=id,type=2} for key,value in mid:gmatch('(.-)="(.-)"') do td[key] = value end items[tonumber(id)] = td items[name] = td end end io.write('[done '..os.clock()-ia..']\n') end function getItemValue(item,value) return items[item] and items[item][value] end function equip(cid,item,slot) --By mock the bear local HP = getCreatureHealth(cid) local MP = getCreatureMana(cid) local t = {} if item then local mm,sinal,qto = getSlotType(getItemName(item.uid)) t[mm] = tonumber(qto) end for i=1,9 do -- Not on slot 10 > arrow if i ~= slot then if getPlayerSlotItem(cid,i).itemid ~= 0 then local aab = getPlayerSlotItem(cid,i).uid if aab and check2(cid,i) then for _ in getItemName(aab):gmatch('(%[.-%])') do local mm,sinal,qto2 = getSlotType(_) if mm then if not t[mm] then t[mm] = 0 end t[mm] = t[mm]+tonumber(qto2) t[mm] = t[mm] > 100 and 100 or t[mm] end end end end end end local fu = 0 local ca = {} local s = '' for sl,n in pairs(t) do fu = fu+1 s = s..''..n..'% more of '..sl..'\n' if sl == 'hp' then doAddCondition(cid,conditionHP[tonumber(n)]) doCreatureAddHealth(cid,HP-getCreatureHealth(cid)) ca[50] = 1 doPlayerSendTutorial(cid,19) elseif sl == 'mp' then doAddCondition(cid,conditionMP[tonumber(n)]) doCreatureAddMana(cid,HP-getCreatureMana(cid)) ca[51] = 1 doPlayerSendTutorial(cid,19) elseif sl == 'ml' then doAddCondition(cid,conditionML[tonumber(n)]) ca[52] = 1 elseif sl == 'cas' then doAddCondition(cid,conditionCLUB[tonumber(n)]) ca[53] = 1 elseif sl == 'shield' then doAddCondition(cid,conditionSHI[tonumber(n)]) ca[54] = 1 elseif sl == 'dist' then doAddCondition(cid,conditionDIST[tonumber(n)]) ca[55] = 1 end end if fu > 0 then addEvent(doPlayerSendTextMessage,100,cid,24,'You have:\n'..s) for i=50,55 do if not ca[i] then doRemoveCondition(cid,CONDITION_ATTRIBUTES,i) end end else for i=50,55 do doRemoveCondition(cid,CONDITION_ATTRIBUTES,i) end end return true end function onLogin(cid) ---Script by mock the bear! equip(cid,nil,slot) addEvent(chk,200,cid,loadSet(cid)) -- Here we check! return TRUE end
-
xWhiteWolf's post in (Resolvido)Database.s3db was marked as the answerSe você mudou de server o jeito é resetar.. tentar arrastar database de versões anteriores só vai te proporcionar dor de cabeça. Mas lembra de fazer tudo que vc tinha feito antes na sua database antiga pra que os scripts funcionem da forma correta. Pelo que eu andei vendo aí vc precisa criar a coluna dos resets na database dos players.
-
xWhiteWolf's post in (Resolvido)SPELL RAGE was marked as the answer--Tanker Method by NightWolf local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 36) setCombatParam(combat, COMBAT_PARAM_EFFECT, 13) setCombatParam(combat, COMBAT_PARAM_EFFECT, 0) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, 60000) setConditionParam(condition, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 200) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, 140) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setCombatCondition(combat, condition) function onCastSpell(cid, var) local ftanker = {lookType = 269, lookHead = 114, lookBody = 114, lookLegs = 114, lookFeet = 114, lookTypeEx = 0, lookAddons = 3} doSetCreatureOutfit(cid, ftanker, 60000) return doCombat(cid, combat, var) end setConditionParam(condition, CONDITION_PARAM_TICKS, 60000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 200)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, 140)
em ticks é o tempo em milisegundos que vai durar.. no caso aí dura 60 segundos
essas condições abaixo maxhitpointspercent e shielpercent são os atributos que serão adicionados... NESSE CASO sua vida dobra (200% da vida) e seu shield aumenta 40% (100% + 40% = 140%)
Aqui tem uma lista de todas as condições que podem ser inseridas:
CONDITION_PARAM_SKILL_MELEE = 19 CONDITION_PARAM_SKILL_FIST = 20 CONDITION_PARAM_SKILL_CLUB = 21 CONDITION_PARAM_SKILL_SWORD = 22 CONDITION_PARAM_SKILL_AXE = 23 CONDITION_PARAM_SKILL_DISTANCE = 24 CONDITION_PARAM_SKILL_SHIELD = 25 CONDITION_PARAM_SKILL_FISHING = 26 CONDITION_PARAM_STAT_MAXHEALTH = 27 CONDITION_PARAM_STAT_MAXMANA = 28 CONDITION_PARAM_STAT_SOUL = 29 CONDITION_PARAM_STAT_MAGICLEVEL = 30 CONDITION_PARAM_STAT_MAXHEALTHPERCENT = 31 CONDITION_PARAM_STAT_MAXMANAPERCENT = 32 CONDITION_PARAM_STAT_SOULPERCENT = 33 CONDITION_PARAM_STAT_MAGICLEVELPERCENT = 34 CONDITION_PARAM_SKILL_MELEEPERCENT = 35 CONDITION_PARAM_SKILL_FISTPERCENT = 36 CONDITION_PARAM_SKILL_CLUBPERCENT = 37 CONDITION_PARAM_SKILL_SWORDPERCENT = 38 CONDITION_PARAM_SKILL_AXEPERCENT = 39 CONDITION_PARAM_SKILL_DISTANCEPERCENT = 40 CONDITION_PARAM_SKILL_SHIELDPERCENT = 41 CONDITION_PARAM_SKILL_FISHINGPERCENT = 42 Se tiver dúvida em alguma pode perguntar
-
xWhiteWolf's post in (Resolvido)Element Arrow was marked as the answerlocal arrowice = 7839 local arrowenergy = 7838 local arrowfire = 7840 local arrowearth = 7850 -- =============== COMBAT VARS =============== -- Areas/Combat for 100ms local combat1_Ice_Area_Hit = createCombatObject() setCombatParam(combat1_Ice_Area_Hit, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) setCombatParam(combat1_Ice_Area_Hit, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatArea(combat1_Ice_Area_Hit,createCombatArea({{0, 1, 0}, {1, 2, 1}})) setCombatFormula(combat1_Ice_Area_Hit, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- Areas/Combat for 0ms local combat0_Ice_Arrow = createCombatObject() setCombatParam(combat0_Ice_Arrow, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SHIVERARROW) setCombatParam(combat0_Ice_Arrow, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatArea(combat0_Ice_Arrow,createCombatArea({{1}, {0}, {0}, {0}, {2}})) setCombatFormula(combat0_Ice_Arrow, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) local dfcombat0_Ice_Arrow = {CONST_ANI_SHIVERARROW,0,5} -- Areas/Combat for 200ms local combat2_Ice_Area_Hit = createCombatObject() setCombatParam(combat2_Ice_Area_Hit, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) setCombatParam(combat2_Ice_Area_Hit, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatArea(combat2_Ice_Area_Hit,createCombatArea({{0, 1, 0}, {1, 1, 1}, {1, 0, 1}, {0, 2, 0}})) setCombatFormula(combat2_Ice_Area_Hit, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- Areas/Combat for 300ms local combat3_Ice_Area_Hit = createCombatObject() setCombatParam(combat3_Ice_Area_Hit, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) setCombatParam(combat3_Ice_Area_Hit, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatArea(combat3_Ice_Area_Hit,createCombatArea({{1, 1, 1}, {1, 0, 1}, {0, 0, 0}, {0, 0, 0}, {0, 2, 0}})) setCombatFormula(combat3_Ice_Area_Hit, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- =============== COMBAT VARS =============== -- Areas/Combat for 200ms local combat2_Fire_Area = createCombatObject() setCombatParam(combat2_Fire_Area, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK) setCombatParam(combat2_Fire_Area, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatArea(combat2_Fire_Area,createCombatArea({{0, 1, 0}, {1, 1, 1}, {1, 0, 1}, {0, 2, 0}})) setCombatFormula(combat2_Fire_Area, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- Areas/Combat for 100ms local combat1_Fire_Area = createCombatObject() setCombatParam(combat1_Fire_Area, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK) setCombatParam(combat1_Fire_Area, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatArea(combat1_Fire_Area,createCombatArea({{0, 1, 0}, {1, 2, 1}})) setCombatFormula(combat1_Fire_Area, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- Areas/Combat for 0ms local combat0_Fire_Arrow = createCombatObject() setCombatParam(combat0_Fire_Arrow, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FLAMMINGARROW) setCombatParam(combat0_Fire_Arrow, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatArea(combat0_Fire_Arrow,createCombatArea({{1}, {0}, {0}, {0}, {2}})) setCombatFormula(combat0_Fire_Arrow, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) local dfcombat0_Fire_Arrow = {CONST_ANI_FLAMMINGARROW,0,5} -- Areas/Combat for 300ms local combat3_Fire_Area = createCombatObject() setCombatParam(combat3_Fire_Area, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK) setCombatParam(combat3_Fire_Area, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatArea(combat3_Fire_Area,createCombatArea({{1, 1, 1}, {1, 0, 1}, {0, 0, 0}, {0, 0, 0}, {0, 2, 0}})) setCombatFormula(combat3_Fire_Area, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- =============== COMBAT VARS =============== -- Areas/Combat for 200ms local combat2_Lightning_Area_Hit = createCombatObject() setCombatParam(combat2_Lightning_Area_Hit, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT) setCombatParam(combat2_Lightning_Area_Hit, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatArea(combat2_Lightning_Area_Hit,createCombatArea({{0, 1, 0}, {1, 1, 1}, {1, 0, 1}, {0, 2, 0}})) setCombatFormula(combat2_Lightning_Area_Hit, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- Areas/Combat for 100ms local combat1_Lightning_Area_Hit = createCombatObject() setCombatParam(combat1_Lightning_Area_Hit, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT) setCombatParam(combat1_Lightning_Area_Hit, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatArea(combat1_Lightning_Area_Hit,createCombatArea({{0, 1, 0}, {1, 2, 1}})) setCombatFormula(combat1_Lightning_Area_Hit, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- Areas/Combat for 0ms local combat0_Lightning_Arrow = createCombatObject() setCombatParam(combat0_Lightning_Arrow, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FLASHARROW) setCombatParam(combat0_Lightning_Arrow, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatArea(combat0_Lightning_Arrow,createCombatArea({{1}, {0}, {0}, {0}, {2}})) setCombatFormula(combat0_Lightning_Arrow, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) local dfcombat0_Lightning_Arrow = {CONST_ANI_FLASHARROW,0,5} -- Areas/Combat for 300ms local combat3_Lightning_Area_Hit = createCombatObject() setCombatParam(combat3_Lightning_Area_Hit, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT) setCombatParam(combat3_Lightning_Area_Hit, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatArea(combat3_Lightning_Area_Hit,createCombatArea({{1, 1, 1}, {1, 0, 1}, {0, 0, 0}, {0, 0, 0}, {0, 2, 0}})) setCombatFormula(combat3_Lightning_Area_Hit, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- =============== COMBAT VARS =============== -- Areas/Combat for 200ms local combat2_Brush = createCombatObject() setCombatParam(combat2_Brush, COMBAT_PARAM_EFFECT, CONST_ME_CARNIPHILA) setCombatParam(combat2_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE) setCombatArea(combat2_Brush,createCombatArea({{0, 1, 0}, {1, 1, 1}, {1, 0, 1}, {0, 2, 0}})) setCombatFormula(combat2_Brush, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- Areas/Combat for 0ms local combat0_Earth_Arrow = createCombatObject() setCombatParam(combat0_Earth_Arrow, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTHARROW) setCombatParam(combat0_Earth_Arrow, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE) setCombatArea(combat0_Earth_Arrow,createCombatArea({{1}, {0}, {0}, {0}, {2}})) setCombatFormula(combat0_Earth_Arrow, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) local dfcombat0_Earth_Arrow = {CONST_ANI_EARTHARROW,0,5}local combat0_Brush = createCombatObject() setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_CARNIPHILA) setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE) setCombatArea(combat0_Brush,createCombatArea({{0, 1, 0}, {1, 2, 1}})) setCombatFormula(combat0_Brush, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- Areas/Combat for 300ms local combat3_Brush = createCombatObject() setCombatParam(combat3_Brush, COMBAT_PARAM_EFFECT, CONST_ME_CARNIPHILA) setCombatParam(combat3_Brush, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE) setCombatArea(combat3_Brush,createCombatArea({{1, 1, 1}, {1, 0, 1}, {0, 0, 0}, {0, 0, 0}, {0, 2, 0}})) setCombatFormula(combat3_Brush, COMBAT_FORMULA_LEVELMAGIC, -2, 60, -2, 60) -- =============== CORE FUNCTIONS =============== local function RunPart(c,cid,var,dirList,dirEmitPos,startDir) -- Part if (isCreature(cid)) then doCombat(cid, c, var) if (dirList ~= nil) then -- Emit distance effects local i = 2; while (i < #dirList) do if (startDir == 0) then -- N doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1]) elseif (startDir == 2) then -- S doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x+dirList[i],y=dirEmitPos.y+dirList[i+1],z=dirEmitPos.z},dirList[1]) elseif (startDir == 1) then -- E doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x+dirList[i+1],y=dirEmitPos.y+dirList[i],z=dirEmitPos.z},dirList[1]) else -- W / Something weird happened doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i+1],y=dirEmitPos.y-dirList[i],z=dirEmitPos.z},dirList[1]) end i = i + 2 end end end end function onCastSpell(cid, var) local startPos = getCreaturePosition(cid) local startDir = getCreatureLookDirection(cid) if isInArray({arrowice}, getPlayerSlotItem(cid, 10).itemid) then addEvent(RunPart,100,combat1_Ice_Area_Hit,cid,var) RunPart(combat0_Ice_Arrow,cid,var,dfcombat0_Ice_Arrow,startPos,startDir) addEvent(RunPart,200,combat2_Ice_Area_Hit,cid,var) addEvent(RunPart,300,combat3_Ice_Area_Hit,cid,var) return true elseif isInArray({arrowfire}, getPlayerSlotItem(cid, 10).itemid) then addEvent(RunPart,200,combat2_Fire_Area,cid,var) addEvent(RunPart,100,combat1_Fire_Area,cid,var) RunPart(combat0_Fire_Arrow,cid,var,dfcombat0_Fire_Arrow,startPos,startDir) addEvent(RunPart,300,combat3_Fire_Area,cid,var) return true elseif isInArray({arrowenergy}, getPlayerSlotItem(cid, 10).itemid) then addEvent(RunPart,200,combat2_Lightning_Area_Hit,cid,var) addEvent(RunPart,100,combat1_Lightning_Area_Hit,cid,var) RunPart(combat0_Lightning_Arrow,cid,var,dfcombat0_Lightning_Arrow,startPos,startDir) addEvent(RunPart,300,combat3_Lightning_Area_Hit,cid,var) return true elseif isInArray({arrowearth}, getPlayerSlotItem(cid, 10).itemid) then addEvent(RunPart,200,combat2_Brush,cid,var) RunPart(combat0_Earth_Arrow,cid,var,dfcombat0_Earth_Arrow,startPos,startDir) RunPart(combat0_Brush,cid,var) addEvent(RunPart,300,combat3_Brush,cid,var) return true else doSendMagicEffect(startPos, 2) doPlayerSendCancel(cid, "You need to have elemental arrows on your ammunition slot.") return false end end
-
xWhiteWolf's post in (Resolvido)Ring virar magia was marked as the answer<instant name="Utana vid" words="exevo invisibility" lvl="55" aggressive="0" mana="650" selftarget="1" prem="1" exhaustion="1500" needlearn="0" event="script" value="especiais/invisible.lua"><vocation id="1"/> <vocation id="5"/> </instant> local duration = 5 -- em segundos local invisible = createConditionObject(CONDITION_GAMEMASTER, duration*1000, false, GAMEMASTER_INVISIBLE) local outfit = createConditionObject(CONDITION_INVISIBLE, duration*1000, false) local percent = 3 local tempo = 1 -- em segundos local cooldown = 30 -- em segundos local storage = 12339 -- local que fica salvo o cooldown function onCastSpell(cid, var) if os.time() - getPlayerStorageValue(cid, storage) >= cooldown then doPlayerSetStorageValue(cid, storage, os.time()) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "By using this spell you will become fully invisible and lose health over time because of it's curse.") function lifesteal(cid) if isCreature(cid) then doSendAnimatedText(getCreaturePos(cid), "-"..math.floor((getCreatureMaxHealth(cid) * (percent/100))), 144, cid) doCreatureAddHealth(cid, -math.floor(getCreatureMaxHealth(cid) * (percent/100))) end steal = addEvent(lifesteal, 1000*tempo, cid) end lifesteal(cid) doAddCondition(cid, invisible) doAddCondition(cid, outfit) doSendMagicEffect(getCreaturePos(cid), 12) addEvent(function() if isCreature(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You're no longer invisible..") stopEvent(steal) doSendMagicEffect(getCreaturePos(cid), 12) end end, 1000*duration) else doPlayerSendCancel(cid, "Your spell is in cooldown, you must wait "..(cooldown - (os.time() - getPlayerStorageValue(cid, storage))).." seconds.") doSendMagicEffect(getCreaturePos(cid), 2) end return true end pra editar muda aqui:
local duration = 5 -- em segundos
local percent = 3
local tempo = 1 -- em segundos
local cooldown = 30 -- em segundos
local storage = 12339 -- local que fica salvo o cooldown
duration é o tempo que fica invisivel após usar a magia
percent é a porcentagem de vida que perde por segundo enquanto tá invisivel
tempo é de quanto em quanto tempo perde vida
cooldown é quantos segundos vc vai ter que esperar pra usar a magia após ter usado ela
storage é onde vai ficar salvo o cooldown
-
xWhiteWolf's post in (Resolvido)[Pedido] Todos Players Premium Com Vip No Nome was marked as the answerif isPremium(cid) then function EddyHavoc(cid) if isPlayer(cid) then db.executeQuery("UPDATE `players` SET `name` = '"..string.sub(getCreatureName(cid), 7).."' WHERE `id` = "..getPlayerGUID(cid)..";") doRemoveCreature(cid) end end if string.find(tostring(getCreatureName(cid)),"[[Vip]]") then else local name = getCreatureName(cid) db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..name.."' WHERE `id` = "..getPlayerGUID(cid)..";") doRemoveCreature(cid) end elseif (not (isPremium)) and string.find(tostring(getCreatureName(cid)),"[[Vip]]") then addEvent(EddyHavoc, 3*1000, cid) end agora deve funcionar.. copiei a função de remover desse tópico aqui: http://www.tibiaking.com/forum/topic/12001-perfect-vip-system-22/
-
xWhiteWolf's post in (Resolvido){Pedido} Tile bueiro was marked as the answer2)
<action itemid="12749" script="buero.lua"/> <action itemid="12748" script="buero.lua"/> function onUse(cid, item, frompos, item2, topos) if item.itemid == 12748 then doTransformItem(item.uid, item.itemid+1) elseif item.itemid == 12749 then doTransformItem(item.uid, item.itemid-1) end return true end
1)
<movevent type="StepIn" itemid="12748" event="script" value="down.lua"/> function onStepIn(cid, item, position, fromPosition) doTeleportThing(cid, {x = position.x, y = position.y, z = position.z + 1} ) return true end -
xWhiteWolf's post in (Resolvido)comando para ver intens dos players was marked as the answerhttp://www.tibiaking.com/forum/topic/36462-comando-spy-players/
tenta dar uma procurada antes amigo
-
xWhiteWolf's post in (Resolvido)[Pedido] Dodge System 8.54 was marked as the answerterminei de fazer aqui, vendo o script por 500 reais AUHIHEAUHIEUHIAUHI brincadeira. Jajá eu posto ele no fórum e vai ficar na minha assinatura, ok?
-
xWhiteWolf's post in (Resolvido)[PEDIDO] BroadCast Em POPUP was marked as the answerfunction onSay(cid, words, param, channel) player = getPlayersOnline() for i = 1, #player do doPlayerPopupFYI(player[i], ""..getCreatureName(cid)..": "..param.."") end return true end <talkaction log="yes" words="/all" access="5" event="script" value="broadcastempopup.lua"/>
-
xWhiteWolf's post in (Resolvido)Dúvida [Spear Só Para Paladins] was marked as the answerpor se tratar de uma munição é no weapons.xml:
<distance id="7368" level="80" event="function" value="default"> <!-- Assassin Star --> <vocation id="3"/> <vocation id="7" showInDescription="0"/> </distance>
muda só o id e o level ali