Ir para conteúdo

Leoxtibia

Visconde
  • Total de itens

    489
  • Registro em

  • Última visita

  • Dias Ganhos

    15

Histórico de Reputação

  1. Upvote
    Leoxtibia recebeu reputação de M i s s em Npc Teleporter   
    ===NPC===
     
    Crie um arquivo.lua em data/npcs/scripts e cole isto dentro:
     

    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local t = { --- posições para level menor que 40 ["cyclops"] = {pos = {x=1,y=1,z=1}}, ["templo"] = {pos = {x=100,y=40,z=7}}, ["troll"] = {pos = {x=1,y=1,z=1}}, ["dwarf"] = {pos = {x=1,y=1,z=1}}, ["elf"] = {pos = {x=1,y=1,z=1}}, ["amazon"] = {pos = {x=1,y=1,z=1}}, ["orc"] = {pos = {x=1,y=1,z=1}} } local x = { -- posições para level maior que 40 ["templo"] = {go = {x=100,y=40,z=7}}, ["dragon"] = {go = {x=1,y=1,z=1}}, ["scarab"] = {go = {x=1,y=1,z=1}}, ["vampire"] = {go = {x=1,y=1,z=1}}, ["giant spider"] = {go = {x=1,y=1,z=1}}, ["hydra"] = {go = {x=1,y=1,z=1}}, ["dragon lord"] = {go = {x=1,y=1,z=1}} } local min = "Escolha para onde quer ser teleportado: {cyclops}, {templo}, {troll}, {dwarf}, {orc}, {elf}, {amazon}." --- msg para lvl menor q 40 local max = "Escolha para onde quer ser teleportado: {templo}, {dragon}, {scarab}, {vampire}, {giant spider}, {hydra}, {dragon lord}." -- msg para lvl maior que 40 if msgcontains(msg, "travel") or msgcontains(msg, "Travel") then if getPlayerLevel(cid) <= 40 then selfSay(min, cid) talkState[talkUser] = 1 elseif getPlayerLevel(cid) > 40 and getPlayerLevel(cid) <= 80 then selfSay(max, cid) talkState[talkUser] = 2 end elseif talkState[talkUser] == 1 then if t[msg] then doTeleportThing(cid, t[msg].pos) doSendMagicEffect(getCreaturePosition(cid), 10) selfSay("Boa viagem.", cid) talkState[talkUser] = 0 end elseif talkState[talkUser] == 2 then if x[msg] then doTeleportThing(cid, x[msg].go) doSendMagicEffect(getCreaturePosition(cid), 10) selfSay("Boa viagem.", cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
     
    Em data/npcs, crie um arquivo.xml e cole isto dentro:
     

    <npc name="NOMEDOSEUNPC" script="data/npc/scripts/NOMEDOSEUARQUIVO.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="134" head="78" body="88" legs="0" feet="88" addons="3"/> <parameters> <parameter key="message_greet" value="Ola. Para mais informacoes de meus servicos diga {travel}." /> <parameter key="message_farewell" value="Tchau." /> <parameter key="message_walkaway" value="Tchau." /> </parameters> </npc>
     
    ===TALKACTION===
     
    Em data/talkactions/scripts crie um arquivo.lua e cole isto dentro:
     

    local maxlevel = 80 -- abaixo desse level os players poderão ir local npc = {x=1, y=1, z=1} --- local que o npc estará function onSay(cid, words, param) if getPlayerLevel(cid) < 80 then doTeleportThing(cid, npc) doSendMagicEffect(npc, 10) else doPlayerSendTextMessage(cid, 22, "Apenas players com level abaixo de ".. maxlevel .." tem acesso ao npc.") end return true end
     
    Em talkactions.xml cole a tag: <talkaction words="!teleport" script="NOMEDOSEUARQUIVO.lua"/>
     
    ===CREATURESCRIPTS===
     
    Em data/creaturescripts/scripts crie um arquivo.lua e cole isto dentro:
     

    function onAdvance(cid, skill, oldLevel, newLevel) if getPlayerLevel(cid) >= 70 and getPlayerLevel(cid) <= 80 then doPlayerSendTextMessage(cid, 18, "Lembre-se que depois do level 80 você não poderá usar o comando !teleport") end return true end
     
    Em creaturescripts/scripts/login.lua cole antes do return true: registerCreatureEvent(cid, "Notice")
     
    Em creaturescripts.xml cole a tag: <event type="advance" name="Notice" event="script" value=NOMEDOSEUARQUIVO.lua"/>
     
    Vlw, espero ter ajudado, abraços.
     
    @edit
    Percebi que level 80+ podiam se teleportar com o npc,agora já resolvi isso.
  2. Upvote
    Leoxtibia recebeu reputação de fearson em [TFS 0.4] Critical System por vocação   
    Resolvi colocar o sistema de critical hit aqui à disposição de todos. Percebi que o fórum não tinha nenhum atualizado ou sem erros, então pode ser útil para outras pessoas. A ideia foi do @fefuxd e foi testado no tfs 0.4. Lembrando que funciona somente para critical hits em players.
     
    Funcionamento: Basicamente, o sistema dará chances diferentes para cada vocação para que aconteça o Critical Hit. 
     
    Em creaturescripts/scripts:
     
    CriticalVocs.lua
     
     
    No login.lua:
     
     
     
    No creaturescripts.xml, adicione a tag:
     
    <event type="statschange" name="CriticalHit" event="script" value="CriticalVocs.lua"/>
     
    Lembrando que geralmente: (se é quem alguém não sabe)
    [1] - Sorcerer ; [5] - Master Sorcerer 
    [2] - Druid; [6] - Elder Druid
    [3] - Paladin; [7] - Royal Paladin
    [4] - Knight; [8] - Elite Knight
     
    Espero ter ajudado.
     
     
  3. Upvote
    Leoxtibia recebeu reputação de Gabrielkss em [Resolvido] Item que ao usar não perder lv e skills por um periodo   
    Não testado.
     
    Em creaturescripts/scripts:
     
    deathProtect.lua
     
     
    No login.lua:
     
    registerCreatureEvent(cid, "DeathProtect")
     
    Em creaturescripts.xml:
     
    <event type="death" name="DeathProtect" event="script" value="deathProtect.lua">
     
    Em actions/scripts:
     
    protect.lua
     
     
    Em actions.xml:
     
    <action itemid="ID_DO_ITEM" script="protect.lua" />
     
  4. Upvote
    Leoxtibia recebeu reputação de UntFrc em [Resolvido] Item que ao usar não perder lv e skills por um periodo   
    Não testado.
     
    Em creaturescripts/scripts:
     
    deathProtect.lua
     
     
    No login.lua:
     
    registerCreatureEvent(cid, "DeathProtect")
     
    Em creaturescripts.xml:
     
    <event type="death" name="DeathProtect" event="script" value="deathProtect.lua">
     
    Em actions/scripts:
     
    protect.lua
     
     
    Em actions.xml:
     
    <action itemid="ID_DO_ITEM" script="protect.lua" />
     
  5. Upvote
    Leoxtibia recebeu reputação de Fjinst em Morrer em tal posição   
    local from, to = {x=1, y =1, z=1}, {x=1, y =1, z=1}local newpos = {x=1, y =1, z=1}function onStatsChange(cid, attacker, type, combat, value) if isInRange(getPlayerPosition(cid), from, to) and type == STATSCHANGE_HEALTHLOSS and value >= getCreatureHealth(cid) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid)) doTeleportThing(cid, newpos) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) return false end return trueend <event type="statschange" name="MorteTp" event="script" value="NOMEDOARQUIVO.lua"/>
     
    No login.lua: registerCreatureEvent(cid, "MorteTp")
     
     
  6. Upvote
    Leoxtibia recebeu reputação de LeoTK em Alchemist System - [Sistema De Alquimia]   
    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.
  7. Upvote
    Leoxtibia recebeu reputação de LeoTK em [TFS 0.4] Critical System por vocação   
    Resolvi colocar o sistema de critical hit aqui à disposição de todos. Percebi que o fórum não tinha nenhum atualizado ou sem erros, então pode ser útil para outras pessoas. A ideia foi do @fefuxd e foi testado no tfs 0.4. Lembrando que funciona somente para critical hits em players.
     
    Funcionamento: Basicamente, o sistema dará chances diferentes para cada vocação para que aconteça o Critical Hit. 
     
    Em creaturescripts/scripts:
     
    CriticalVocs.lua
     
     
    No login.lua:
     
     
     
    No creaturescripts.xml, adicione a tag:
     
    <event type="statschange" name="CriticalHit" event="script" value="CriticalVocs.lua"/>
     
    Lembrando que geralmente: (se é quem alguém não sabe)
    [1] - Sorcerer ; [5] - Master Sorcerer 
    [2] - Druid; [6] - Elder Druid
    [3] - Paladin; [7] - Royal Paladin
    [4] - Knight; [8] - Elite Knight
     
    Espero ter ajudado.
     
     
  8. Upvote
    Leoxtibia recebeu reputação de LeoTK em [Resolvido] [Pedido] Adaptar script de trap   
    @Brunds Quando eu disse "fora", queria dizer FORA!! kk
     
     
  9. Upvote
    Leoxtibia recebeu reputação de Fjinst em [Resolvido] Bloquear item na backpack   
    Sim, em movements:
     
    local id = 1111 -- id da bpfunction onEquip(cid, item, slot)if item.itemid == id and (slot == CONST_SLOT_RIGHT or slot == CONST_SLOT_LEFT) thenreturn falseend  
    <movevent type="Equip" itemid="1111" slot="pickupable" script="NOMEDOSCRIPT.lua"/>
     
    Aproveita e posta aí como ficou seu script do OnMove.
  10. Upvote
    Leoxtibia recebeu reputação de Wase Wiss em [Resolvido] NPC que vende itens e add nome do player no item   
    vendeItem.lua
     
     
  11. Upvote
    Leoxtibia recebeu reputação de Fjinst em [Resolvido] Bloquear item na backpack   
    @Fjinst A função que eu citei é creaturescripts e tem que ser adicionada na source. Ou, para evitar precisar mexer nas sources, que tal tentarmos algo "meio doido"? Eu pensei em evitar que o player:
    1 - Movesse um item de sua backpack para a backpack a ser bloqueada
    2 - Colocasse a backpack a ser bloqueada no chão e tentasse mover um item
    3 - Colocasse a backpack a ser bloqueada dentro de outro container no chão e tentasse mover um item
     
    Vê aí.
     
    Em creaturescripts/scripts crie o arquivo:
     
    bpBlock.lua
     
     
     
    No login.lua, registre o evento:
     
    registerCreatureEvent(cid, "BlockBp")
     
    Em creaturescripts.xml, adicione a tag: <event type="think" name="BlockBp" event="script" value="bpBlock.lua"/>
     
     
     
     
     
     
     
     
     
     
  12. Upvote
    Leoxtibia recebeu reputação de Fjinst em [Resolvido] Bloquear item na backpack   
    Você já tem essa função adicionada à source né? Tente algo como:
     
    function onMoveItem(cid, item, count, toContainer, fromContainer, fromPos, toPos) if toContainer.itemid == 8908 and toPos.x == CONTAINER_POSITION then       doPlayerSendTextMessage(cid, 25, "Você não pode adicionar itens a essa backpack.")       return falseendend  
  13. Upvote
    Leoxtibia recebeu reputação de Wase Wiss em [Resolvido] NPC que vende itens e add nome do player no item   
    Configure as frases, o item, o preço como quiser:
     
    vendeItem.lua
     
     
  14. Upvote
    Leoxtibia recebeu reputação de Crypter em [Encerrado] [Dúvida] Fazer uma vocação ter resistência a elemento   
    Rapaz, acho que assim vai. 
     
    Em creaturescripts/scripts:
     
    elementResistence.lua
     
     
    Lembrando que os elementos são: (pelo menos para alguns servidores)
     
    COMBAT_NONE = 0COMBAT_PHYSICALDAMAGE = 1COMBAT_ENERGYDAMAGE = 2COMBAT_EARTHDAMAGE = 4COMBAT_POISONDAMAGE = 4COMBAT_FIREDAMAGE = 8COMBAT_UNDEFINEDDAMAGE = 16COMBAT_LIFEDRAIN = 32COMBAT_MANADRAIN = 64COMBAT_HEALING = 128COMBAT_DROWNDAMAGE = 256COMBAT_ICEDAMAGE = 512COMBAT_HOLYDAMAGE = 1024COMBAT_DEATHDAMAGE = 2048  
     
    No login.lua:
     
     
     
    Em creaturescripts.xml, adicione a tag: <event type="statschange" name="AbsorbElement" event="script" value="elementResistence.lua"/>
  15. Upvote
    Leoxtibia recebeu reputação de wevertonvrb em [Resolvido] Torneio GlobalEvents   
    Tinha colocado uma linha a mais:
     
    function onTimer()if #getPlayersInArea(torneio.area) > 1 thenreturn trueendfor _, pid in ipairs(getPlayersInArea(torneio.waitArea)) dorand = math.random(-2, 2)doTeleportThing(pid, {x = torneio.tournamentFight.x + rand, y = torneio.tournamentFight.y + rand, z = torneio.tournamentFight.z})enddoBroadcastMessage("O torneio de johto 150+ começou!")return trueend  
     
  16. Upvote
    Leoxtibia recebeu reputação de wevertonvrb em [Resolvido] ajuda a terminar esse script (actions)   
    Para que possa ajudar outros.
     
     
  17. Upvote
    Leoxtibia recebeu reputação de DrewMarques em [Resolvido] Torneio GlobalEvents   
    function onTimer()if #getPlayersInArea(torneio.area) > 1 thenreturn trueendfor _, pid in ipairs(getPlayersInArea(torneio.waitArea)) domath.randomseed(os.time())rand = math.random(-2, 2)doTeleportThing(pid, {x = torneio.tournamentFight.x + rand, y = torneio.tournamentFight.y + rand, z = torneio.tournamentFight.z})enddoBroadcastMessage("O torneio de johto 150+ começou!")return trueend  
  18. Upvote
    Leoxtibia recebeu reputação de DrewMarques em [Resolvido] Torneio GlobalEvents   
    Tinha colocado uma linha a mais:
     
    function onTimer()if #getPlayersInArea(torneio.area) > 1 thenreturn trueendfor _, pid in ipairs(getPlayersInArea(torneio.waitArea)) dorand = math.random(-2, 2)doTeleportThing(pid, {x = torneio.tournamentFight.x + rand, y = torneio.tournamentFight.y + rand, z = torneio.tournamentFight.z})enddoBroadcastMessage("O torneio de johto 150+ começou!")return trueend  
     
  19. Upvote
    Leoxtibia deu reputação a fefuxd em [TFS 0.4] Critical System por vocação   
    @Leoxtibia aew man encontrei outro bug.. na função login.lua .. quando eu tento logar no Account Manager da o erro da imagem abaixo.
    dai fiz o teste e tirei a função que vc tinha colocado no login.lua e o problema parou de acontecer.. 
    ta faltando alguma coisa sera?
     
    estou anexando também parte do meu login.lua (linha 83) conforme erro no console
     
     

     

     
    @Leoxtibia esquece.. consegui achar o erro... bastou o minimo de vontade pra entender o código e pesquisar no google kkk =D .. 
    como o Account Manager é sem vocação (0) .. faltou colocar a linha dele ali nas chances e o problema foi resolvido
    [0] = {chance = 20},
    atualiza seu código ai para o pessoal que for usar não passar por isso também
     
     


  20. Upvote
    Leoxtibia recebeu reputação de fefuxd em [TFS 0.4] Critical System por vocação   
    Resolvi colocar o sistema de critical hit aqui à disposição de todos. Percebi que o fórum não tinha nenhum atualizado ou sem erros, então pode ser útil para outras pessoas. A ideia foi do @fefuxd e foi testado no tfs 0.4. Lembrando que funciona somente para critical hits em players.
     
    Funcionamento: Basicamente, o sistema dará chances diferentes para cada vocação para que aconteça o Critical Hit. 
     
    Em creaturescripts/scripts:
     
    CriticalVocs.lua
     
     
    No login.lua:
     
     
     
    No creaturescripts.xml, adicione a tag:
     
    <event type="statschange" name="CriticalHit" event="script" value="CriticalVocs.lua"/>
     
    Lembrando que geralmente: (se é quem alguém não sabe)
    [1] - Sorcerer ; [5] - Master Sorcerer 
    [2] - Druid; [6] - Elder Druid
    [3] - Paladin; [7] - Royal Paladin
    [4] - Knight; [8] - Elite Knight
     
    Espero ter ajudado.
     
     
  21. Upvote
    Leoxtibia recebeu reputação de XZero em [Resolvido] Tempo de Batalha CONDITION_INFIGHT   
    No seu config.lua, altere 60 para os segundos de espera desejados.
     
    huntingDuration = 60 * 1000
  22. Upvote
    Leoxtibia recebeu reputação de iagonp em Adicionar Novos Premios No War Of Emperium   
    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}
  23. Upvote
    Leoxtibia recebeu reputação de BlackBro em Alchemist System - [Sistema De Alquimia]   
    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.
  24. Upvote
    Leoxtibia recebeu reputação de Kyrom em Script Quest Que Dê Skill   
    Bom, ainda estou aprendendo a scripting e usei algumas coisas de outros membros e explica o script longo. Esse script que fará com que uma chest adicione SKILL. Acho que deve funcionar.. testa aí!
     
    Vá a pasta lib e procure o arquivo 050-function.lua e adicione isso lá no final (crédito Vodkart)
     
     
     
     
    Agora em actions>scripts crie um arquivo.lua e cole isso (créditos meu =P)
     
     
     
     
    Em actions.xml coloque essa tag:

    <action actionid="XXXX" event="script" value="arquivo.lua"/>
    Em XXXX adicione o actionid da chest. Como disse, ainda sou iniciante (só tive uma aula kk)... acho que o tamanho do script poderia ser diminuido mas deve funcionar! Vlw aí, abraço!
  25. Upvote
    Leoxtibia recebeu reputação de felipeomatad em Scripit !vida   
    Crie um arquivo em talkactions>scripts chamando vida.lua e cole isto dentro:

    local minlevel = 10 -- minimo level para usar o comando function onSay(cid, words, param) if getPlayerLevel(cid) >= minlevel then doSendMagicEffect(getCreaturePosition(cid), 14) doPlayerSendTextMessage(cid, 24,"Você tem ".. getPlayerHealth(cid) .." no momento.") doPlayerSendTextMessage(cid,22,"Você tem ".. getCreatureMaxHealth(cid) .. " ao total.") else doPlayerSendCancel(cid,"Você não tem o level necessário para usar este comando.") end return true end
     
    Em talkactions.xml coloque a tag:

    <talkaction words="!vida" event="script" value="vida.lua"/>
     
    Vá para a pasta lib e adicione isso em 050-function.lua lá no final:
     

    function getPlayerHealth(cid) -- by vodka doPlayerSave(cid) local PlayerInfo = db.getResult("SELECT `health` FROM `players` WHERE `id` = " .. getPlayerGUID(cid)) return PlayerInfo:getDataInt("health") end
     
    (Crédito da função - Vodkart)
     
    Vlw, abraço!
  • Quem Está Navegando   0 membros estão online

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