-
Total de itens
246 -
Registro em
-
Última visita
-
Dias Ganhos
2
Tudo que MaXwEllDeN postou
-
Existe um comando que mostra os sendEffects, faz assim: Entra no teu god e usa o comando /x 1 e vai mudando o número, até mostrar a pedrinha, depois muda o valor alí nesse script em seffect_id e testa: local seffect_id = 1 -- ID DO EFEITO À DISTÂNCIA local MIN_DAMAGE = 100 -- Dano minimo local MAX_DAMAGE = 500 -- Dano maximo local level = 10 -- Level necessario function onUse(cid, item, p, itemEx, toPosition) local combate = COMBAT_PHYSICALDAMAGE -- tipo de dano local posz = { [1] = {x = p.x, y = p.y - 1, z = p.z}, [2] = {x = p.x, y = p.y - 2, z = p.z}, [3] = {x = p.x, y = p.y - 3, z = p.z}, [4] = {x = p.x, y = p.y - 4, z = p.z}, [5] = {x = p.x, y = p.y - 5, z = p.z}, [6] = {x = p.x, y = p.y - 6, z = p.z} -- end1 } if getPlayerStorageValue(cid, 3425) > 0 then return doPlayerSendCancel(cid, "You are exhausted.") end if getPlayerLevel(cid) < level then return doPlayerSendCancel(cid, "You must be level "..level..".") end setPlayerStorageValue(cid, 3425, 1) addEvent(setPlayerStorageValue, 5000, cid, 3425, -1) addEvent(doSendDistanceShoot, 100, p, posz[4], seffect_id) for a = 1, 5 do addEvent(doAreaCombatHealth, 100 * a, posz[a], combate, posz[a], 0, -MIN_DAMAGE, -MAX_DAMAGE, 2) end addEvent(doCreateItem, 600, 1294, 1, posz[6]) addEvent(doSendMagicEffect, 600, posz[6], 44) return true end
-
function onUse(cid, item, fromPosition, itemEx, toPosition) local config = { storage = 724877, hours = 12, item = {18422, 5} -- itemid, amount } if getPlayerStorageValue(cid, 71239) < 1 then return doPlayerSendCancel(cid, "Você deve matar o boss antes de abrir o baú.") end if getPlayerStorageValue(cid, config.storage) >= os.time() then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, mas voce deve aguardar ate " ..os.date("%d %B %Y %X ", getPlayerStorageValue(cid,config.storage)).." para pegar "..config.item[2].." " ..getItemNameById(config.item[1]).." novamente!") end doPlayerAddItem(cid, config.item[1], config.item[2]) setPlayerStorageValue(cid, config.storage, os.time()+config.hours*3600) return doPlayerSendTextMessage(cid,22,"Voce recebeu "..config.item[2].." "..getItemNameById(config.item[1])..", aguarde "..config.hours.." horas para pegar seu item novamente!") end Creaturescripts/scripts/ItemBau.lua function onPrepareDeath(cid, deathList) for _, v in pairs(deathList) do if isPlayer(v) then setPlayerStorageValue(cid, 71239, 1) end end return true end TAG: <event type = "preparedeath" name = "ItemBau" event = "script" value = "ItemBau.lua"/> No seu monstro procure algo parecido com isso: </monster> e deixe assim: <script> <event name="ItemBau"/> </script> </monster>
-
pedido Usar spell só se tiver pisando no sqm (ajuda Vodkart)
pergunta respondeu ao Allangod de MaXwEllDeN em Scripts
local areia = {1111, 2222, 3333} local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_EFFECT, 35) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_NONEDAMAGE) setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, 204) function onGetFormulaValues(cid, level, maglevel) min = -((level*1 + maglevel*1.6) + 125) max = -((level*1 + maglevel*1.8) + 125) return min, max end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_EFFECT, 19) setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_HITCOLOR, 204) function onGetFormulaValues(cid, level, maglevel) min = -((level*5.4 + maglevel*6.4)) max = -((level*5.5 + maglevel*6.5)) return min, max end setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local arr1 = { {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 2, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, } local arr2 = { {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 2, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) setCombatArea(combat1, area1) setCombatArea(combat2, area2) local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end local function onCastSpell2(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat2, parameters.var) end function onCastSpell(cid, var) local pos = getThingPos(cid) pos.stackpos = 0 if not isInArray(areia, getThingfromPos(pos).itemid) then return doPlayerSendTextMessage(cid, 20, "You can't use this spell out of sand!") end local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 100, parameters) return true end -
Por nada ^^. Olha, edita novamente! Eu esquecí de por o .uid no getTileItemById
-
pedido Usar spell só se tiver pisando no sqm (ajuda Vodkart)
pergunta respondeu ao Allangod de MaXwEllDeN em Scripts
Posta tua spell aqui, fazendo favor. -
Amigo, só uma correçãozinha, o isCorpse recebe como parâmetro o uid de um item. local stor = 4040 local corpseid = 5966 local pos1 = {x=111, y=222, z=333} local pos2 = {x=112, y=223, z=334} local pos3 = {x=113, y=224, z=335} -- isCorpse(uid) function onStepIn(cid, item, frompos, moveitem, tileitem, position) if isCorpse(getTileItemById(corpseid, pos1).uid) and isCorpse(getTileItemById(corpseid, pos2).uid) and isCorpse(getTileItemById(corpseid, pos3).uid) then setPlayerStorageValue(cid, stor, 1) else doPlayerSendCancel(cid, "Você não pode entrar no teleport.") return false end return true end function onStepOut(cid, item, frompos) if getPlayerStorageValue(cid, stor) >= 1 then setPlayerStorageValue(cid, stor, 0) end return true end
-
--------------------------- -- Configurations -- --------------------------- local STORAGE_SKILL_LEVEL = 10002 local STORAGE_SKILL_TRY = 10003 local config = { levels = { {level = {0,9}, quant = {1,2}, percent = 5}, {level = {10,19}, quant = {2,4}, percent = 10}, {level = {20,29}, quant = {3,6}, percent = 15}, {level = {30,39}, quant = {4,8}, percent = 20}, {level = {40,49}, quant = {5,10}, percent = 25}, {level = {50,59}, quant = {6,12}, percent = 30}, {level = {60,69}, quant = {7,14}, percent = 30}, {level = {70,79}, quant = {8,16}, percent = 35}, {level = {80,89}, quant = {9,18}, percent = 35}, {level = {90,99}, quant = {10,20}, percent = 40}, {level = {100}, quant = {11,22}, percent = 50} }, rocks = {1356, 1285, 3607, 3616}, -- Id das rochas que podem ser quebradas stones = {}, -- Modelo = {rock_id, rock_id} default_stone = 2157, 5880, 9971, -- pedra padrão rock_delay = 480, -- Tempo de volta da rocha (Em segundos) bonus_chance = 3, -- Chance (em porcentagem) de se conseguir um bonus de exp bonus_exp = 1 -- Bonus extra } ------------------------------------ -- END Configurations --- ------------------------------------ function getMiningLevel(cid) return getPlayerStorageValue(cid, STORAGE_SKILL_LEVEL) end function setPlayerMiningLevel(cid, n) setPlayerStorageValue(cid, STORAGE_SKILL_LEVEL, n) end function addMiningLevel(cid, n) setPlayerMiningLevel(cid, getMiningLevel(cid) + (isNumber(n) and n or 1)) setMiningTry(cid, 0) end function getMiningInfo(cid) for i = 1, #config.levels do min = config.levels[i].level[1]; max = config.levels[i].level[2] if (getMiningLevel(cid) >= min and getMiningLevel(cid) <= max) then return {quantity = {min = config.levels[i].quant[1], max = config.levels[i].quant[2]}, chance = config.levels[i].percent} end end end function getStoneByRock(rockid) for i = 1, #config.stones do if (config.stones[2] == rockid) then return config.stones[1] end end return config.default_stone end function getMiningTries(cid) return getPlayerStorageValue(cid, STORAGE_SKILL_TRY) end function setMiningTry(cid, n) setPlayerStorageValue(cid, STORAGE_SKILL_TRY, n) end function addMiningTry(cid, bonus) setMiningTry(cid, getMiningTries(cid) + 1 + (bonus and config.bonus_exp or 0)) if (getMiningTries(cid) >= getMiningExpTo(getMiningLevel(cid))) then -- Up doPlayerSendTextMessage(cid, 18, "You advanced from level " .. getMiningLevel(cid) .. " to level ".. (getMiningLevel(cid) + 1) .." in mining.") if ((getMiningLevel(cid)+1) == getMiningMaxLevel()) then doPlayerSendTextMessage(cid, 18, "Max level reached in mining.") end addMiningLevel(cid) doSendMagicEffect(getCreaturePosition(cid), math.random(28,30)) setMiningTry(cid, 0) end end function getMiningExpTo(level) return ((level*1.5)+((level+1)*7)) end function getMiningMaxLevel() return config.levels[#config.levels].level[#config.levels[#config.levels].level] end --------------------------- function onUse(cid, item, fromPosition, itemEx, toPosition) rock = { id = itemEx.itemid, uid = itemEx.uid, position = toPosition } player = { position = getCreaturePosition(cid) } if (getMiningLevel(cid) < 0) then setPlayerMiningLevel(cid, 0) end if (isInArray(config.rocks, rock.id)) then addMiningTry(cid) if (math.random(1,100) <= getMiningInfo(cid).chance) then local collected = math.random(getMiningInfo(cid).quantity.min, getMiningInfo(cid).quantity.max) doPlayerAddItem(cid, getStoneByRock(rock.id), collected) doPlayerSendTextMessage(cid, 18, "You got " .. collected .. " gold" .. " nuggets.") if (math.random(1,100) <= config.bonus_chance) then -- Bonus calc addMiningTry(cid, true) doSendAnimatedText(player.position, "Bonus!", COLOR_YELLOW) end event_rockCut(rock) else if (math.random(1,100) <= (10-getMiningInfo(cid).chance/10)) then doPlayerSendTextMessage(cid, 18, "You got nothing.") event_rockCut(rock) else doSendMagicEffect(rock.position, 3) doSendAnimatedText(rock.position, "Poff!", COLOR_WHITE) end end else doPlayerSendCancel(cid, "This can't be mined.") end end function event_rockCut(rock) addEvent(event_rockGrow, config.rock_delay * 1000, rock.position, rock.id) doTransformItem(rock.uid, 3610) doSendMagicEffect(rock.position, 3) doSendAnimatedText(rock.position, "Tack!", COLOR_RED) doItemSetAttribute(rock.uid, "name", "A trunk of " .. getItemNameById(rock.id)) end function event_rockGrow(rockPos, old_id) local rock = getThingFromPos(rockPos).uid doTransformItem(rock, old_id) doItemSetAttribute(rock, "name", getItemNameById(old_id)) doSendMagicEffect(rockPos, 3) end
-
[Pedido] Script De Clean Automatico No Server [Socorro]
pergunta respondeu ao luizhenrique99 de MaXwEllDeN em Scripts
mais na pasta do mue ot nao tem essa pasta global events Lembrando e DBKO Arena no meu ot de wodbo na pasta data nao tem essa global events nao Ninguem vai me ajudar? Qual a versão do teu servidor? -
pedido Usar spell só se tiver pisando no sqm (ajuda Vodkart)
pergunta respondeu ao Allangod de MaXwEllDeN em Scripts
Exatamente isso xD Poderia ter usado getTileThingByPos(pos). Mais seria a mesma coisa Sim, eu sabia que tinha uma função que pegava direto o item do piso, só não lembrava a syntax dela. -
function doRepeatSpell(cid, spellname, seconds) if isPlayer(cid) then doCastSpell(cid, spellname) addEvent(doRepeatSpell, 1000 * seconds, cid, spellname) end end function onSay(cid, words, param) if param == "exura" then doRepeatSpell(cid, "Exura", 3) end return false end Só uma adaptaçãozinha no teu código Hideki, pois com o addEvent fora do escopo da condição se o player existe, a recursion continuaria existindo mesmo sem o player existir. @eickhoff Lembrando que você tem que ter a função doCastSpell(cid, spellname) Instalada na sua source.
-
local outfits = { [PLAYERSEX_FEMALE] = {lookType = 129}, [PLAYERSEX_MALE] = {lookType = 137} } function onEquip(cid, item, slot) if outfits[getPlayerSex(cid)] then doSetCreatureOutfit(cid, outfits[getPlayerSex(cid)], -1) end return true end function onDeEquip(cid, item, slot) return doRemoveCondition(cid, CONDITION_OUTFIT) end
-
pedido Usar spell só se tiver pisando no sqm (ajuda Vodkart)
pergunta respondeu ao Allangod de MaXwEllDeN em Scripts
Exatamente isso xD -
pedido Usar spell só se tiver pisando no sqm (ajuda Vodkart)
pergunta respondeu ao Allangod de MaXwEllDeN em Scripts
Nem precisava de tudo isso, só era colocar pra verificar se o tile que o cara tá é de areia, nem precisava criar esse stepin ai mano. Sempre tente fazer o script o mais simples possível. -
Cara, variáveis que na inicialização não dependem do escopo principal não precisam ser declaradas nele, coloca elas antes da declaração do escopo principal, para economizar memória durante a execução. Flw.
-
local item_id = 2160 -- Id do arco que tem que estar equipado function onEquip(cid, item, slot) if (getPlayerSlotItem(cid, 5).uid < 1 and getPlayerSlotItem(cid, 6).uid < 1) or (getPlayerSlotItem(cid, 5).itemid ~= item_id and getPlayerSlotItem(cid, 6).itemid ~= item_id) then doPlayerSendCancel(cid, "Você deve ter ".. getItemNameById(item_id) .. " equipado para poder utilizar este arrow.") return false end return true end
-
Tipo, quando você for declarar um valor só para configuração, não crie ele dentro da função principal, pois o valor seria atribuído toda vez que um player executasse a função, se você fizer assim: O servidor economizará um pouco de memória pois não precisará declarar a variável novamente, entende? Assim fica melhor [:
-
CrystalArrow.lua local item_id = 2160 -- Id do arco que tem que estar equipado function onEquip(cid, item, slot) if (getPlayerSlotItem(cid, 5.uid < 1 and getPlayerSlotItem(cid, 6).uid < 1) or (getPlayerSlotItem(cid, 5).itemid ~= item_id and getPlayerSlotItem(cid, 6).itemid ~= item_id) then doPlayerSendCancel(cid, "Você deve ter ".. getItemNameById(item_id) .. " equipado para poder utilizar este arrow.") return false end return true end <movevent type="Equip" itemid="ID DO ARROW" slot="ammo" event="script" value="CrystalArrow.lua"/>
-
Por bondade você poderia anexar aqui a sua pasta de libs dos npcs? npc/lib
-
Para isto estar acontecendo provavelmente o servidor não carregou o script, ou na porta não foi colocada a uniqueid. Vou testar no meu servidor de testes e qualquer coisa posto aqui novamente. Abraços.
-
Me corrijam se eu estiver errado, mas a função getArticle(uid) Não retorna o artigo do nome do item? Acho que você queria fazer assim Tony: local items = { ["Demon Armor"] = {id=2378, vocation="all", weight="120.00oz",Price="$100.000.00"} } function onLook(cid, thing, position, lookDistance) local get = getItemNameById(thing.itemid) if not items[get] then return true end local text = "###--> Look <--###\n\nName: "..get.."\nVocation(s): "..items[get].vocation.."\nWeight: "..items[get].weight.."\nPrice: "..items[get].price.."" doShowTextDialog(cid,items[get].id,text) end
-
Amigo, então em vez de mudar a actionid mude a uniqueid e use esta tag no lugar da que te mandei antes: <action uniqueid = "7953" event = "script" value = "OnlyGM.lua"/> Lembrando a você que você terá que por a actionid da porta no map editor em 0 novamente.
-
Aulas Básicas Com O Sr. Iunix: 2# Lógica, Algorítimos E Organização
tópico respondeu ao iunix de MaXwEllDeN em Tutoriais de Scripting
Entendo ^^. Mas tipo, normalmente os comentários ajudam os iniciantes . Só é o programador saber utilizá-los bem. [: -
Amigo, não acha que isso é desnecessário? if(moveitem.itemid == config.itemId) then Já que o script só vai executar se o item movido for desse id: <movevent type="RemoveItem" itemid="id do item que nao podera ser movido" event="script" value="nome do seu script.lua"/> ?
-
Você modificou a lib dos npcs?
-
Aulas Básicas Com O Sr. Iunix: 2# Lógica, Algorítimos E Organização
tópico respondeu ao iunix de MaXwEllDeN em Tutoriais de Scripting
Dahora iunikiss, tô gostando de ver [: REP+ Mas os comentários são ignorados pelo compilador, então não deixa pesado xD.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.