Ir para conteúdo

xWhiteWolf

Héroi
  • Registro em

  • Última visita

Tudo que xWhiteWolf postou

  1. essa é a lógica: local contagem = 0 local pos = {XXX, YYY, Z} -- posição do templo for absice = nxp, pxp do for coordinate = nyp, pyp do for distance = nzp, pzp do local pos = {x = absice, y = coordinate, z = distance, stackpos = 253} local thing = getThingfromPos(pos) if isPlayer(thing.uid) then contagem = contagem +1 end end end end while contagem >= 4 -- numero de players do else for absice = nxp, pxp do for coordinate = nyp, pyp do for distance = nzp, pzp do local pos = {x = absice, y = coordinate, z = distance, stackpos = 253} local thing = getThingfromPos(pos) if isPlayer(thing.uid) then doTeleportThing(thing.uid, pos) end end end end ​end considere essa área aqui como um retangulo imaginario onde a diagonal é{nx, ny, nz} e a diagonal inversa é a ela é {px, py, pz}, daí vc tem que atribuir valores a isso e uma das maneiras é essa daqui: local nxp = 340 local pxp = 300 local nyp = 120 local pyp = 100 local nzp = 7 local pzp = 7 ele irá buscar players numa área igual a essa daqui 300/120.___________. | | |___________|340/100
  2. sim, é só desenhar as areas e colocar addEvent... segue esse exemplo aqui: local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 17) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -4, -70, -3, -90, 2, 2, 1, 4) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 17) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -4, -70, -3, -90, 2, 2, 1, 4) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 17) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -4, -70, -3, -90, 2, 2, 1, 4) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat4, COMBAT_PARAM_EFFECT, 17) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -4, -70, -3, -90, 2, 2, 1, 4) local combat5 = createCombatObject() setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat5, COMBAT_PARAM_EFFECT, 17) setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -4, -70, -3, -90, 2, 2, 1, 4) local combat6 = createCombatObject() setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat6, COMBAT_PARAM_EFFECT, 17) setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -4, -70, -3, -90, 2, 2, 1, 4) local combat7 = createCombatObject() setCombatParam(combat7, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat7, COMBAT_PARAM_EFFECT, 17) setCombatFormula(combat7, COMBAT_FORMULA_LEVELMAGIC, -4, -70, -3, -90, 2, 2, 1, 4) local combat8 = createCombatObject() setCombatParam(combat8, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat8, COMBAT_PARAM_EFFECT, 17) setCombatFormula(combat8, COMBAT_FORMULA_LEVELMAGIC, -4, -70, -3, -90, 2, 2, 1, 4) arr1 = { {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, 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}, } arr2 = { {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, 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}, } arr3 = { {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, 1, 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}, } arr4 = { {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, 2, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 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, 0, 0, 0, 0}, } arr5 = { {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, 2, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 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, 0, 0, 0}, } arr6 = { {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, 2, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 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, 0, 0}, } arr7 = { {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, 2, 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, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr8 = { {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, 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}, } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) local area3 = createCombatArea(arr3) local area4 = createCombatArea(arr4) local area5 = createCombatArea(arr5) local area6 = createCombatArea(arr6) local area7 = createCombatArea(arr7) local area8 = createCombatArea(arr8) setCombatArea(combat1, area1) setCombatArea(combat2, area2) setCombatArea(combat3, area3) setCombatArea(combat4, area4) setCombatArea(combat5, area5) setCombatArea(combat6, area6) setCombatArea(combat7, area7) setCombatArea(combat8, area8) local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, parameters.combat3, parameters.var) end local function onCastSpell4(parameters) doCombat(parameters.cid, parameters.combat4, parameters.var) end local function onCastSpell5(parameters) doCombat(parameters.cid, parameters.combat5, parameters.var) end local function onCastSpell6(parameters) doCombat(parameters.cid, parameters.combat6, parameters.var) end local function onCastSpell7(parameters) doCombat(parameters.cid, parameters.combat7, parameters.var) end local function onCastSpell8(parameters) doCombat(parameters.cid, parameters.combat8, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5, combat6 = combat6, combat7 = combat7 , combat8 = combat8 } --local nor = doCreatureSetLookDirection(cid, 0) --local sul = doCreatureSetLookDirection(cid, 2) --local les = doCreatureSetLookDirection(cid, 1) --local oes = doCreatureSetLookDirection(cid, 3) --addEvent(sul, 90) addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 200, parameters) addEvent(onCastSpell3, 300, parameters) addEvent(onCastSpell4, 400, parameters) addEvent(onCastSpell5, 500, parameters) addEvent(onCastSpell6, 600, parameters) addEvent(onCastSpell7, 700, parameters) addEvent(onCastSpell8, 800, parameters) --1 addEvent(onCastSpell1, 900, parameters) addEvent(onCastSpell2, 1000, parameters) addEvent(onCastSpell3, 1200, parameters) addEvent(onCastSpell4, 1400, parameters) addEvent(onCastSpell5, 1500, parameters) addEvent(onCastSpell6, 1600, parameters) addEvent(onCastSpell7, 1700, parameters) addEvent(onCastSpell8, 1800, parameters) --2 addEvent(onCastSpell1, 1900, parameters) addEvent(onCastSpell2, 2000, parameters) addEvent(onCastSpell3, 2100, parameters) addEvent(onCastSpell4, 2200, parameters) addEvent(onCastSpell5, 2300, parameters) addEvent(onCastSpell6, 2400, parameters) addEvent(onCastSpell7, 2500, parameters) addEvent(onCastSpell8, 2600, parameters) --3 addEvent(onCastSpell1, 2700, parameters) addEvent(onCastSpell2, 2800, parameters) addEvent(onCastSpell3, 2900, parameters) addEvent(onCastSpell4, 3000, parameters) addEvent(onCastSpell5, 3100, parameters) addEvent(onCastSpell6, 3200, parameters) addEvent(onCastSpell7, 3300, parameters) addEvent(onCastSpell8, 3400, parameters) --4 addEvent(onCastSpell1, 3500, parameters) addEvent(onCastSpell2, 3600, parameters) addEvent(onCastSpell3, 3700, parameters) addEvent(onCastSpell4, 3800, parameters) addEvent(onCastSpell5, 3900, parameters) addEvent(onCastSpell6, 4000, parameters) addEvent(onCastSpell7, 4100, parameters) addEvent(onCastSpell8, 4200, parameters) --5 addEvent(onCastSpell1, 4300, parameters) addEvent(onCastSpell2, 4400, parameters) addEvent(onCastSpell3, 4500, parameters) addEvent(onCastSpell4, 4600, parameters) addEvent(onCastSpell5, 4700, parameters) addEvent(onCastSpell6, 4800, parameters) addEvent(onCastSpell7, 4900, parameters) addEvent(onCastSpell8, 5000, parameters) --6 addEvent(onCastSpell1, 5100, parameters) addEvent(onCastSpell2, 5200, parameters) addEvent(onCastSpell3, 5300, parameters) addEvent(onCastSpell4, 5400, parameters) addEvent(onCastSpell5, 5500, parameters) addEvent(onCastSpell6, 5600, parameters) addEvent(onCastSpell7, 5700, parameters) addEvent(onCastSpell8, 5800, parameters) --7 addEvent(onCastSpell1, 5900, parameters) addEvent(onCastSpell2, 6000, parameters) return true end
  3. toda vez que vc quiser uma magia que caia do céu vc pode se basear no meteor cast que o jovial deixou pra nós, esse é um exemplo da magia editada um pouquinho: local water = {490, 491, 492, 493} local combat = createCombatObject() local meteor = createCombatObject() setCombatParam(meteor, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(meteor, COMBAT_PARAM_EFFECT, 43) setCombatFormula(meteor, COMBAT_FORMULA_LEVELMAGIC, -9.0, -30, -10.0, 4) local stun = createConditionObject(CONDITION_PARALYZE) setConditionParam(stun, CONDITION_PARAM_TICKS, 5000) setConditionFormula(stun, -0.8, 0, -0.9, 0) setCombatCondition(meteor, stun) local meteor_water = createCombatObject() setCombatParam(meteor_water, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(meteor_water, COMBAT_PARAM_EFFECT, CONST_ME_LOSEENERGY) setCombatFormula(meteor, COMBAT_FORMULA_LEVELMAGIC, -9.0, -30, -10.0, 4) combat_arr = { {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, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 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, 0, 0, 0} } local combat_area = createCombatArea(combat_arr) setCombatArea(combat, combat_area) local function meteorCast(p) doCombat(p.cid, p.combat, positionToVariant(p.pos)) end local function stunEffect(cid) doSendMagicEffect(getThingPos(cid), CONST_ME_STUN) end function onTargetTile(cid, pos) if (math.random(0, 0) == 0) then local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}) if (isInArray(water, ground.itemid) == TRUE) then local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z} doSendDistanceShoot(newpos, pos, CONST_ANI_ICE) addEvent(meteorCast, 200, {cid = cid, pos = pos, combat = meteor_water}) else local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z} doSendDistanceShoot(newpos, pos, CONST_ANI_ICE) addEvent(meteorCast, 200, {cid = cid,pos = pos, combat = meteor}) end end end setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile") function onCastSpell(cid, var) return doCombat(cid, combat, var) end <instant name="exori mas frigo" words="exori mas frigo" lvl="150" mana="1200" prem="1" range="7" needtarget="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/gelo do ceu.lua"> <vocation id="2"/> <vocation id="6"/> </instant>
  4. faça um quadrado mentalmente cuja as diagonais sejam as posições abaixo local areaPosition = { {x=32705, y=32342, z=7, stackpos = 255}, {x=32726, y=32358, z=7, stackpos = 255} } a arvore não pode estar dentro desse quadrado. Então ou vc diminui o quadrado ou vc coloca a arvore pra fora dele.
  5. sim, os Id's ficam exatamente assim. O erro na linha 13 tá pedindo == no lugar de só =, vc editou alguma coisa, porque a linha 13 aqui é essa: [25] = {id = }, OBS: Não sei se vai funcionar porque eu não manjo dessas tables compostas: config = { [5] = {id = 7887}, [10] = {id= 7888}} nesse caso o config[1].id seria 7887 por ser o primeiro item da table ou o config[5].id que seria o 7887?? Se alguém souber me responder eu posso arrumar o script pra fazer ele funcionar 100% ​ EDIT: fiz uns testes e arrumei uns bugs que tavam dando, infelizmente o script ainda não tá funcionando mas a lógica continua correta ao meu ver: function onAdvance(cid, skill, oldlevel, newlevel) local config = { [1] = {id = 7887}, [2] = {id = 7888}, [5] = {id = 7889}, [7] = {id = 7890}, [10] = {id = 2129}, [13] = {id = 2130}, [16] = {id = 2131}, [20] = {id = 2132}, [25] = {id = 2133}, [30] = {id = 2134}, [35] = {id = 2135}, [40] = {id = 7898}, [45] = {id = 7899}, [50] = {id = 7900}, [55] = {id = 7901}, [60] = {id = 7902}, [65] = {id = 7903}, [70] = {id = 7904}, [75] = {id = 7905}, [80] = {id = 7906}, [85] = {id = 7907}, [90] = {id = 7908}, [95] = {id = 7909}, [100] = {id = 7910}, [125] = {id = 7911}, [150] = {id = 7912}, [175] = {id = 7913}, [200] = {id = 7914}, [250] = {id = 7915}, [300] = {id = 7916} } local function LevelPlayer(cid) local i = 2 while getPlayerLevel(cid) < config[i] and config[i]~= nil do if getPlayerLevel(cid) >= config[i-1] then local level = config[i-1] else local i = i+1 end end return i end local a = LevelPlayer(cid) -1 if skill == 8 and getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == config[a].id then if newlevel >= config[a] then doPlayerRemoveItem(cid, config[a].id, 1) doPlayerAddItem(cid, config[i].id, 1, FALSE, 2) if newlevel == config[i] then doPlayerSendTextMessage(cid, 22, "You received "..getItemNameById(level.id).." for reaching "..config[a].."") end end end return true end o erro que tá dando é bem bobo mas eu to tomando um baile aqui desse script [29/04/2014 07:33:18] [Error - CreatureScript Interface] [29/04/2014 07:33:18] data/creaturescripts/scripts/hueee.lua:onAdvance [29/04/2014 07:33:18] Description: [29/04/2014 07:33:18] data/creaturescripts/scripts/hueee.lua:40: attempt to compare number with table [29/04/2014 07:33:18] stack traceback: [29/04/2014 07:33:18] data/creaturescripts/scripts/hueee.lua:40: in function 'LevelPlayer' [29/04/2014 07:33:18] data/creaturescripts/scripts/hueee.lua:50: in function <data/creaturescripts/scripts/hueee.lua:1> ele não consegue comparar a table com um valor, por isso eu preciso saber como funciona esse esquema de table dentro de table.. caso contrário eu vou ter que fazer um script gigantesco e vai ficar feio pra caralho
  6. abra o xml do monster em questão e procure por isso: <flag attackable="1"/> mude pra <flag attackable="0"/>
  7. tenho razões pra acreditar que isso vai dar muito errado porque eu sou péssimo em fazer tables mas fica aí uma dica de como eu pensei em fazer o script: function onAdvance(cid, oldLevel, newLevel) local config = { [1] = {id =}, [2] = {id = }, [5] = {id = }, [7] = {id = }, [10] = {id = }, [13] = {id = }, [16] = {id = }, [20] = {id = }, [25] = {id = }, [30] = {id = }, [35] = {id = }, [40] = {id = }, [45] = {id = }, [50] = {id = }, [55] = {id = }, [60] = {id = }, [65] = {id = }, [70] = {id = }, [75] = {id = }, [80] = {id = }, [85] = {id = }, [90] = {id = }, [95] = {id = }, [100] = {id = }, [125] = {id = }, [150] = {id = }, [175] = {id = }, [200] = {id = }, [250] = {id = }, [300] = {id = }, [350] = {id = }, [400] = {id = }, [425] = {id = }, [450] = {id = }, [475] = {id = }, [500] = {id = }, [525] = {id = }, [550] = {id = }, [575] = {id = }, [600] = {id = }, [625] = {id = }, [650] = {id = }, [675] = {id = }, [700] = {id = } } function LevelPlayer(cid) i = 2 if getPlayerLevel(cid) < config[i] and getPlayerLevel(cid) >= config[i-1] then level == config[i-1] else i = i+1 end return level end if skill == 8 and getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == level.id then if newLevel >= LevelPlayer(cid) then doPlayerRemoveItem(cid, level.id, 1) doPlayerAddItem(cid, config[i].id, 1, FALSE, 2) if newLevel == config[i-1] then doPlayerSendTextMessage(cid, 22, "You received "..getItemNameById(level.id).." for reaching "..config[i-1].."") end end end return true end
  8. pronto --[[Script made 100% by Night Wolf for lagoa at tibiaking ~~~ enjoy it]] function onUse(cid, item, frompos, item2, topos) local config = { idconcha = XXXX, -- id da concha que vai abrir storaged = 45798, -- storage que será utilizado idperola = 2143, -- id da perola que ganha tempo = 20*60*60, --definido para 20 horas (20 HORAS * 60 MINUTOS * 60 SEGUNDOS) pos = getPlayerPosition (cid), --não mexa chance = 20 -- quanto % tem de chance de abrir a ostra e ganhar pérola } time = os.time() + config.tempo if item.itemid == config.idconcha then if os.time() - getCreatureStorage(cid, config.storaged) >= config.tempo then setPlayerStorageValue(cid, config.storaged, time) doTransformItem(item.uid,7553) if config.chance > math.random(1,100) then doPlayerAddItem(cid, config.idperola) 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, 19, "You are real lucky, a "..getItemNameById(config.idperola).."!") else doPlayerSendTextMessage(cid, 19, "The oyster was empty. Better luck next time!") end else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You must wait "..config.tempo/3600 .." hours to open another oyster. Next available will be at: " ..os.date("%c", getPlayerStorageValue(cid, config.storaged)).. " (Mes/Dia/Ano e horario).") end end return true end
  9. esse script tá me parecendo errado mas se não tá dando erro no console então na teoria era pra estar funcionando: experimenta tirar os returns da função onCastSpell e deixa só doCombat
  10. qq é isso daqui: if(bit.band(flags, 1) == 1 ?? meu server nao tem nada de bit.band, pode ser isso o erro que tá dando no dele.
  11. entendi mas a minha pergunta é: pra que serve o addItemEx? oque ele faz de diferente?
  12. não é gambiarra em movements, é um truque que um monte de gente faz em outros scripts só que nunca pensaram em fazer em movements '-' só uma coisa: nesse creaturescript você não remove o amuleto anterior? qual a diferença entre addItem e addItemEx e porque você utilizou ambos? edit: testa isso function onDeEquip(cid, item, position, fromPosition) if getPlayerStorageValue(cid, storage) <= 0 then doPlayerPopupFYI(cid, "You can't Unequip this item.") else doPlayerPopupFYI(cid, "You're free to use another necklace!") return true end end
  13. essa sala q vc diz seria uma sala grande ou apenas 4 posições igual a anihilator?
  14. eu tava falando do primeiro global storage if getGlobalStorageValue(storage_global) >= 0 then isso daí que você falou tá na segunda linha, é o storage de cada time e essa parte tá certa: if getGlobalStorageValue(team.one.storage) < getGlobalStorageValue(team.two.storage) then tenho razões pra acreditar q esse script tá certo mas qnd alguem com acesso maior q 3 pisa lá o script é desativado.
  15. não precisava ter usado item editor, a um tempo atrás um cara me pediu um script de Magic Plate Armor que só podia ser equipada se tivesse determinado storage, é só fazer a mesma coisa só que em vez de onEquip será onDe-Equip. Dessa forma você só seria capaz de retirar o amuleto caso tivesse determinado storage, e toda tentativa de fazer isso resultaria num pop-up com uma mensagem falando que não seria possível remover. Não sei se essa maneira é válida mas vale a pena testar porque daí era só colocar um creaturescript onAdvance pra remover o necklace anterior e adicionar o novo que o sistema tava feito. Eu vou tentar fazer isso no meu tempo livre e vou postando aqui o resultado, ok?
  16. o cara te passou tudo e vc ficou falando merda.. wtf mano, assim até broxa a minha vontade de te ajudar edit: nao tinha visto a data do tópico, por favor alguém tranque esse tópico
  17. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    vai em groups.xml e usa a calculadora de flags pra editar a flag dos players.. a partir daí qualquer vai poder ver vida e mana igual aos GM's
  18. desculpa a demora pra responder, vim passar o fds na casa dos meus pais (que é em outra cidade) pq é meu aniversário ahuauhauh nao entendi pq vc criou um storage_global se ja tinha criado um storage pra cada time, foi pra ativar/desativar o evento? tenta colocar um elseif ali no lugar do else pra evitar bugs no script pq else pode ser qualquer coisa diferente daquilo. Outra coisa é mudar o < pra <= pq daí vc pode tirar o else sem problema.. Tirando isso eu não sei oque poderia estar de errado, ele parece estar bem certinho e bem identado (parabens).. se nao der certo com essas mudanças bobas daí eu iria precisar de um tempinho pra fazer uns testes e ver oque poderia ser
  19. só fazer um script de movements de-equip que quando o player tirar do lugar, remova o amuleto e crie outro no lugar. Quando cria e não tem nada ele vai direto pro slot se n me engano
  20. items.xml e creaturescripts, algumas coisas também são nas configs ou até nas sources (daí nao tem como mudar) mas todo o resto é possível fuçando os scripts
  21. caricatura do script: local pos1 = {x=XXX, y=YYY, z= ZZ} local pos 2 = {x=XXX, y=YYY, z= ZZ} local outfit1 = {lookType = 152, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 3} local outfit2 = {lookType = 152, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 3} local storage = {123321, 123325, 123322, 123326} function onStepIn(cid, item, position, fromPosition) c = math.random(1,100) if c > 50 then setPlayerStorageValue (storage[1], 1) setPlayerStorageValue (storage[2], 1) doTeleportThing(cid, pos1, TRUE) doSetCreatureOutfit(cid, outfit1, -1) else setPlayerStorageValue (storage[3], 1) setPlayerStorageValue (storage[4], 1) doTeleportThing(cid, pos2, TRUE) doSetCreatureOutfit(cid, outfit2, -1) end return true end agora se vc quiser que separe os times de uma maneira mais balanceada (e menos randômica) salve dois globalstorage e chame ele a cada pisada de player, o time que o player for será o global storage +1 e ele checa se o globalstorage 1 é maior que o 2.
  22. local combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_TICKS, 33000) setConditionFormula(condition, 0.3, -24, 0.3, -24) setCombatCondition(combat, condition) function onCastSpell(cid, var) doCreatureSay(cid, Correr, 19) doCombat(cid, combat, var) end e coloca no config.lua pra não sair escrito a magia quando vc usa ela
  23. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    abre o xml do npc e deleta isso daqui: <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|.I've been waiting for you to come.. Say 'reset' or 'quantity'" /> </parameters> cada npc tem um paramater key diferente, os que não tiverem nada especificando de npc chat vc deleta
  24. alguns servers vem com mais de um sistema de potions ao mesmo tempo, esse daí aparenta ser o normalzão que deixa vials... deve ter outro. Procura em actions ou até em mods.
  25. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    o seu texto ficou meio confuso, os npcs respondem tanto na aba de NPC quanto na de default ou só na de default e você quer que eles respondam na de npc??

Informação Importante

Confirmação de Termo