Ir para conteúdo

Leoxtibia

Visconde
  • Total de itens

    489
  • Registro em

  • Última visita

  • Dias Ganhos

    15

Tudo que Leoxtibia postou

  1. local msg = "Seja vip e adquira os seguintes benefícios: Novas hunts.. etc" function onStepIn(cid, item, position, fromPosition) if item.actionid == 13700 and not HaveCharaterAcess(cid) then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,msg) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"bem vindo.") return true end
  2. function onSay(cid, words, param, channel) if words == "/buyvip" then local item = 2160 -- id do item local count = 10 -- quantidade do item local days = 30 if doPlayerRemoveItem(cid, item, count) then addVipDays(cid, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip, agora você possui "..getVipDays(cid).." dia(s) de vip.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de "..count.." "..getItemNameById(item).." para adicionar "..days.." dia(s) de vip.") end elseif words == "/vipdays" then local duration = getVipDate(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) end return TRUE end Edite aqui: local item = 2160 -- id do item local count = 10 -- quantidade do item
  3. Voto a favor, mas é preciso que tenha um controle nele. Acho que o chat evitaria de fazerem 200 tópicos para perguntar: Onde coloco esse script? já que é uma coisa bem simples, e que poderia ser resolvida em uma única mensagem, não precisando se criar um tópico pra isso. Um chat que você pudesse invitar quem quisesse e ambas as partes teriam que concordar em entrar no chat, além da área pra todos (quem quiser entrar, entra).
  4. local t = { ["demon"] = {start = 3800, required = 5, reward = {{2160,1}, {2113,1}}, storage = 3934}, ["dragon"] = {start = 3801, required = 5, reward = {{2160,2}, {2387,1}}, storage = 3935} } function onUse(cid, item, fromPosition, itemEx, toPosition) local remove = t[getCreatureName(itemEx.uid):lower()] function isSummon(uid) return uid ~= getCreatureMaster(uid) or false end if remove then if getPlayerStorageValue(cid, remove.storage) == 1 then return doCreatureSay(cid, "You already have the permission.", TALKTYPE_ORANGE_1) end if isSummon(itemEx.uid) then return doPlayerSendCancel(cid, "You cannot remove summons.") end if getPlayerStorageValue(cid, remove.start) < remove.required then if getPlayerStorageValue(cid, remove.start) < 0 then setPlayerStorageValue(cid, remove.start, 0) end setPlayerStorageValue(cid, remove.start, getPlayerStorageValue(cid, remove.start)+1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, " ".. getCreatureName(itemEx.uid) .." removed. Total = [".. getPlayerStorageValue(cid, remove.start) .."/".. remove.required .."]") doRemoveCreature(itemEx.uid) doSendMagicEffect(toPosition, 2) else for i=1, #remove.reward do doPlayerAddItem(cid, remove.reward[i][1], remove.reward[i][2]) end setPlayerStorageValue(cid, remove.storage, 1) doCreatureSay(cid, "You have gained the permission!", TALKTYPE_ORANGE_1) end end return true end Configuração: ["nome do monstro"] = {start = não mexa, required = quantidade que tem q remover, reward = {{ID_do_ITEM,QUANTIDADE}, {ID_do_ITEM,QUANTIDADE}}, storage = storage que ganhará}, Como não sabia se o monstro que você colocou pode ser sumonado ou não, coloquei para não poder ser removido, se o monstro for um summon. Espero ter ajudado.
  5. Crie um arquivo.lua em data/actions/scripts e cole isto dentro: local monster = "Demon" -- nome do monstro local id,count = 2160,1 -- id do item, quantidade function onUse(cid, item, fromPosition, itemEx, toPosition) if getCreatureName(itemEx.uid) == monster then doSendMagicEffect(toPosition, 2) doRemoveCreature(itemEx.uid) doPlayerAddItem(cid, id, count) else doPlayerSendCancel(cid, "Esse monstro não pode ser removido.") end return true end Em actions.xml coloque a tag: <action itemid="ID_DO_ITEM" event="script" value="NOMEDOSEUARQUIVO.lua"/>
  6. Esse problema aí ocorre porque não tem o atributo type "depot" no id do item em items.xml. Se você perceber, na foto que você enviou tem Id 2589: "(não tem o nome locker)". Então, você tem que colocar o type.. <attribute key="type" value="depot"/> Isso vai fazer aparecer a opção de trocar o Id da cidade. Veja se resolve.
  7. local storage = 1234 e na parte que dá os 200k so eh por: setPlayerStorageValue(cid, storage, 1)
  8. dofile("./_woe.lua") local config = woe_config local reward = 200000 -- 200k local itemsgain = {{2113,1}, {2498,2}} -- {id_do_item, quantidade} local function EndWoe() Woe.getInfo() setGlobalStorageValue(stor.Started, 0) setGlobalStorageValue(stor.WoeTime, 0) Woe.expulsar(infoLua[2], Castle.salas.a.fromx, Castle.salas.a.tox, Castle.salas.a.fromy, Castle.salas.a.toy, Castle.salas.a.z, Castle._exit) Woe.expulsar(infoLua[2], Castle.salas.b.fromx, Castle.salas.b.tox, Castle.salas.b.fromy, Castle.salas.b.toy, Castle.salas.b.z, Castle._exit) Woe.expulsar(infoLua[2], Castle.salas.c.fromx, Castle.salas.c.tox, Castle.salas.c.fromy, Castle.salas.c.toy, Castle.salas.c.z, Castle._exit) doBroadcastMessage("WoE is finished", config.bcType) doBroadcastMessage("The castle " .. Castle.name .. " is owned by ".. Woe.guildName() ..".", config.bcType) if isCreature(getThingFromPos(Castle.empePos).uid) then doRemoveCreature(getThingFromPos(Castle.empePos).uid) end Woe.removePre() Woe.removePortals() doRemoveItem(getThingFromPos(Castle.desde).uid) Woe.save() for _, cid in ipairs(getPlayersOnline()) do if infoLua[2] == getPlayerGuildId(cid) and getPlayerLevel(cid) >= 100 then doPlayerAddMoney(cid, reward) for i=1, #itemsgain do doPlayerAddItem(cid, itemsgain[i][1], itemsgain[i][2]) end end end Woe.remove() setGlobalStorageValue(24503, -1) end function onThink(interval, lastExecution) Woe.getInfo() if Woe.isTime() then if not Woe.isStarted() then doSummonCreature("empe", Castle.empePos) doSummonCreature("pre1", Castle.PreEmpes[1]) doSummonCreature("pre2", Castle.PreEmpes[2]) doBroadcastMessage("War has started...", config.bcType) setGlobalStorageValue(stor.Started, 1) Woe.updateInfo({os.time(), infoLua[2], infoLua[3], infoLua[4]}) doCreateTeleport(1387, Castle.pos, Castle.desde) addEvent(EndWoe, config.timeToEnd * 60 * 1000) end end return true end local itemsgain = {{2113,1}, {2498,2}} -- {id_do_item, quantidade}
  9. É só procurar o id do item no items.xml e colocar a descrição: <attribute key="description" value="This item improves your life in 1000 health points."/> ou, como no time ring: <item id="2206" article="a" name="time ring (speed +30)">
  10. É porque na maioria dos servers, o actionid vai somente até esse número: 65535... se você está usando o sistema por MOD, é só trocar aqui nessa linha: <action actionid="84005" event="script"><![CDATA[
  11. local t = { {"Demon",{x=1, y=1, z=1}}, -- nome do monstro, posição {"Dragon",{x=1, y=1, z=1}}, {"Rotworm",{x=1, y=1, z=1}} } function onThink(interval, lastExecution, thinkInterval) local tempo = 1 -- tempo para remover o monstro doBroadcastMessage("MERCENARYOS INVADEM CARLIN!",22) for i = 1, #t do pid = doCreateMonster(t[i][1], t[i][2]) addEvent(remove, tempo*60*1000, pid) end return TRUE end function remove(pid) if (isMonster(pid) == true) then doRemoveCreature(pid) end end
  12. Em data/globalevents/scripts crie um arquivo.lua e cole isto dentro: local t = { {"Demon",{x=1, y=1, z=1}}, -- nome do monstro, posição {"Dragon",{x=1, y=1, z=1}}, {"Rotworm",{x=1, y=1, z=1}} } function onThink(interval, lastExecution, thinkInterval) local tempo = 1 -- tempo para remover o monstro em minutos doBroadcastMessage("MERCENARYOS INVADEM CARLIN!") for i = 1, #t do pid = doCreateMonster(t[i][1], t[i][2]) addEvent(remove, tempo*60*1000, pid) end return TRUE end function remove(pid) if (isMonster(pid) == true) then doRemoveCreature(pid) end end Em globalevents.xml cole a tag: <globalevent name="invasao" interval="1800" event="script" value="NOMEDOSEUARQUIVO.lua"/> Eu coloquei um tempo para o monstro ser removido, para evitar de que fique muitos monstros caso ninguém vá matá-lo. Ali onde tem 1800 é o tempo em segundos que acontecerá uma outra invasão.
  13. local time = 1 -- tempo em horas function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, 3917) < os.time() then bp = doPlayerAddItem(cid, 1988, 1) doAddContainerItem(bp, 2160, 2000) setPlayerStorageValue(cid, 3917, os.time() + time*60*60) else doPlayerSendCancel(cid, "Você deve esperar ".. getPlayerStorageValue(cid, 3917) - os.time() .." horas.") end return true end
  14. Como um amigo tinha pedido pra fazer, resolvi postar porque pode ser que ajude outras pessoas. É um simples script de !bless, porém, esse script segue o esquema do global. (eu sei que no global não é por talkaction =p) No global: - Até level 30 o custo das 5 bless é 10k. - Do level 31 ao 120, cada level aumenta 1k no preço total das bless, ou seja, 200 gps em cada bless. Exemplo: Level 30 - 10k Level 31 - 11k Level 48 - 28k E aí vai... - A partir do level 120, a bless custa 100k e não aumenta mais de acordo com o level. O script já está configurado igualmente ao do global, mas você pode configurar como quiser. Em data/talkactions/scripts crie um arquivo chamado bless.lua e cole isto dentro: local t = { price = 2000, --- preço de cada bless antes do lvl [min] min = 30, --- level maximo para que cada bless custe o [price] add = 200, --- quanto cada bless irá aumentar depois do lvl [min] stop = 20000, --- quanto cada bless irá custar ao atingir o lvl [max] max = 120 --- a partir desse lvl a bless vai custar [stop] } function onSay(cid, words, param) local lvl = getPlayerLevel(cid) if lvl <= t.min then cost = t.price elseif lvl > t.min and lvl < t.max then cost = t.price + (lvl - t.min)*t.add elseif lvl >= t.max then cost = t.stop end for a = 1,5 do if getPlayerBlessing(cid, a) then return doPlayerSendCancel(cid,'You have already got one or more blessings!') elseif doPlayerRemoveMoney(cid, cost*5) ~= true then return doPlayerSendCancel(cid, "You need ".. cost .." gold coins for each blessing or "..(cost*5).." to get all blessings!") end doPlayerAddBlessing(cid,a) return doPlayerSendTextMessage(cid, 19,"You have been blessed by the gods!") end return true end Em talkactions.xml cole a tag: <talkaction words="!buybless;/buybless;!bless;/bless" script="bless.lua" /> Vlw, espero que ajude alguém.
  15. Ok, tópico reportado para moverem.
  16. @caotic Vlw caotic, considerando que estou nisso por volta de 1 mês, acho que consegui aprender um pouco com scripts feitos por scripters mais experientes como você e outros.. @Raidou é, também não tinha encontrado algo parecido. Espero que tenha te ajudado.
  17. Esse script é um simples sistema de alquimia, porém é diferente dos outros. Alquimia era uma prática antiga que combinava alguns elementos a fim de formar outros. Esse meu sistema, faz com que os itens sejam "misturados" em um caldeirão e se pareça mais como era antigamente. Abaixo, um vídeo de demonstração e de como instalar. Deixei as mesmas posições no script pra que vocês possam se basear ao instalar no seu. Bom, vamos ao script: -- Como funciona: O player deve colocar os itens da receita emcima do counter (balcão de pedra) e puxar a alavanca. Feito isso, os itens serão "misturados" no caldeirão e com a colher (wooden spoon) o player poderá pegar o seu item. Crie um arquivo.xml em data/mods chamado Alchemist.xml e cole isto dentro: <?xml version="1.0" encoding="UTF-8"?> <mod name="Alchemist System" version="1.0" author="Leoxtibia" contact="none" enabled="yes"> <config name="alch_sys"><![CDATA[ counter = {x = 17, y = 56, z = 7} efeitos = {x=17, y=53, z=7} receitas = { {items = {{2160,1}, {2157,2}} , itemgain = {{5878,100}}, storage = 56000}, {items = {{2148,5}, {2155,1}} , itemgain = {{2113,1}}, storage = 56001}, {items = {{2498,1}, {2113,1}} , itemgain = {{2472,1}}, storage = 56002} } function Caldeiron() local B = { {3693,{x=17, y=53, z=7, stackpos = 1}}, {3694,{x=18, y=53, z=7, stackpos = 1}} } for i = 1, #B do doTransformItem(getThingfromPos(B[i][2]).uid,getTileItemById(B[i][2], B[i][1]).uid == 0 and B[i][1] or (B[i][1]-4)) end end function getItemsInPos(items, pos) for i = 1,#items do local stack = getTileItemById(pos, items[i][1]) if stack.uid > 0 and math.max(1, stack.type) >= items[i][2] and i == #items then return true end end return false end function doRemoveItensInPos(items, pos) local items = type(items) == "table" and items or {items} for i = 1, table.maxn(items) do doRemoveItem(getThingFromPos({x=pos.x,y=pos.y,z=pos.z,stackpos=2}).uid) end return nil end function effets(position,delay) local text = {"Ishhh!", "Kaboom", "Tic Tac", "BUM!", "Blop Blop!", "Cronch!"} local effects = {2, 6, 25, 31, 36,40, 54, 51, 65, 66, 67, 68} if delay ~= 0 then doSendAnimatedText(position, text[math.random(1, #text)], math.random(1, 255)) doSendMagicEffect(position, effects[math.random(1, #effects)]) addEvent(effets, 1000, position, delay -1) end end]]></config> <action actionid="4780" event="script"><![CDATA[ domodlib('alch_sys') function onUse(cid, item, fromPosition, itemEx, toPosition) doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) for _, t in ipairs(receitas) do if getItemsInPos(t.items, counter) then doRemoveItensInPos(t.items, counter) effets(efeitos,6) Caldeiron() return setPlayerStorageValue(cid, t.storage, 1) end end return doPlayerSendCancel(cid, "You must put the correct items in the counter.") end]]></action> <action itemid="2567" event="script"><![CDATA[ domodlib('alch_sys') function onUse(cid, item, fromPosition, itemEx, toPosition) if itemEx.actionid == 4781 then for _, x in ipairs(receitas) do if getPlayerStorageValue(cid, x.storage) >= 0 then for i=1,#x.itemgain do doPlayerAddItem(cid, x.itemgain[i][1], x.itemgain[i][2]) doPlayerPopupFYI(cid, "You have prepared ".. x.itemgain[i][2] .." ".. getItemNameById(x.itemgain[i][1]) ..".") end Caldeiron() setPlayerStorageValue(cid, x.storage, -1) end end end return true end]]></action> </mod> Configuração: Para adicionar mais receitas, é só adicionar mais uma linha, mudando o storage para +1. Lembrando que a última linha não tem vírgula no final. {items = {{2666,1}, {2671,1}} , itemgain = {{2672,1}}, storage = 56003} Ainda pretendo incrementar o sistema com novas funções. Mas, por hoje é isso. Espero que tenham gostado.
  18. Leoxtibia

    Hunted System

    DB = database... acesse sua database e execute essa query
  19. Esses que tem, No such file or directory é porque você colocou a tag no arquivo.xml das spells, mas não o arquivo em data/spells/scripts, ou está com nome diferente. O dos monstros, [28/07/2012 07:49:14] [spawn::addMonster] Cannot find "Fantasma do Riacho Molhado" é a mesma coisa, você deve ter esquecido de por a tag do monstro no arquivo monsters.xml ou está com nome diferente. Esses, [28/07/2012 07:49:16] [Warning - Npc::loadFromXml] Cannot load npc file (data/npc/King Tibianus.xml). [28/07/2012 07:49:16] Info: failed to load external entity "data/npc/King Tibianus.xml" são porque você deve ter pego um mapa já com o Npc, mas você não tem o arquivo.xml dele ou o arquivo está com nome diferente.
  20. Então fica assim: local t = { storage = 6234, time = 5, [2134] = {monster = "Demon", pos = {x=1,y=1,z=1}}, [2135] = {monster = "Morgaroth", pos = {x=1,y=1,z=1}}, [2136] = {monster = "Apocalypse", pos = {x=1,y=1,z=1}}, [2137] = {monster = "Ghazbaran", pos = {x=1,y=1,z=1}} } function onUse(cid, item, fromPosition, itemEx, toPosition) table = t[item.actionid] if getPlayerStorageValue(cid, t.storage) < os.time() then if table then doSummonCreature(table.monster, table.pos) doPlayerSendTextMessage(cid, 22, "Você sumonou um ".. table.monster ..".") setPlayerStorageValue(cid, t.storage, os.time() + t.time*60) doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) end else doPlayerSendCancel(cid, "Você deve esperar ".. t.time .." minutos.") end return true end Dentro do [ ] você coloca o actionid da alavanca. Exemplo: A alavanca de actionid de 2134 vai sumonar um Demon, a de 2135 um Morgaroth e aí vai. O script está para o player sumonar quantas vezes quiser, se quiser que só use uma vez... fala aí. Em actions.xml cole a tag: <action fromaid="2134" toaid="2137" event="script" value="NOMEDOSEUARQUIVO.lua"/>
  21. Eu acho que tem que ter um pré-requisito sim, e seria os reps. Assim, até que o scripter pudesse colocar seu código à venda, teria que ter ajudado bastante pessoas (de graça). A moeda de compra seria uma moeda do xtibia, na qual o xtibia ganharia uma % por cada código vendido e isso ajudaria a expandir o fórum. O dinheiro poderia ser utilizado para incentivar toda a equipe ou com novos concursos, e venceria os concursos os melhores scripts... estes estariam livres para toda a comunidade. Ainda acho que teria que haver um período de testes para isso, mas se tudo ocorrer bem e na forma com que eu falei (só uma opinião), poderia ser implantado sim.
  22. Em data/actions/scripts crie um arquivo.lua e cole isto dentro: local t = { storage = 6234, -- n mexa time = 5, -- tempo em minutos monster = "Demon", -- monstro pos = {x=1,y=1,z=1} -- posição } function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, t.storage) < os.time() then doSummonCreature(t.monster, t.pos) doPlayerSendTextMessage(cid, 22, "Você sumonou um ".. t.monster ..".") setPlayerStorageValue(cid, t.storage, os.time() + t.time*60) else doPlayerSendCancel(cid, "Você deve esperar ".. t.time .." minutos.") end return true end Em actions.xml cole a tag: <action actionid="AID_DA_ALAVANCA" script="NOMEDOSEUARQUIVO.lua"/> Espero ter ajudado. À propósito, veja aquele tópico dos addons.
  23. Ok, tópico reportado para moverem.
  24. Esse daí é o script de criar item pelo /i. Se não funcionou e você fez tudo certo, pode ser que ao tentar passar de versão, tenha afetado algumas funções do server.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...