Ir para conteúdo

zipter98

Herói
  • Total de itens

    2553
  • Registro em

  • Última visita

  • Dias Ganhos

    72

Tudo que zipter98 postou

  1. Fiz rapidinho aqui, porque jaja estou saindo: XML do NPC: <?xml version="1.0" encoding="UTF-8"?> <npc name="Flawless Ice Crystal" script="flawlesscrystal.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="523" head="114" body="119" legs="114" feet="114" corpse="2212"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|, voce deseja trocar 10 life crystal por 1 Flawless Ice Crystal?"/> </parameters> </npc> data/npc/scripts, crie um arquivo com extensão .lua com o nome flawlesscrystal. 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 cfg = { life_crystal = xxx, --ID do life crystal life_crystal_qnt = 10, --Quantidade de life crystal necessários. flawless_ice_crystal = xxx, --ID do flawless ice crystal. flawless_ice_crystal_qnt = 1, --Quantidade de flawless ice crystal que o player irá receber. } if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then if getPlayerItemCount(cid, cfg.life_crystal) >= cfg.life_crystal_qnt then selfSay("Aqui está seu Flawless Ice Crystal!", cid) doPlayerRemoveItem(cid, cfg.life_crystal, cfg.life_crystal_qnt) doPlayerAddItem(cid, flawless_ice_crystal, flawless_ice_crystal_qnt) talkState[talkUser] = 0 return true else selfsay("Você não tem "..life_crystal_qnt.." Life Crystals para trocar...", cid) talkState[talkUser] = 0 return true end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Qualquer erro, é só postar.
  2. zipter98

    Script de war

    Verde: function onStepIn(cid, item, frompos, item2, topos) local outfit = {lookType = 128, lookHead = 82, lookBody = 114, lookLegs = 114, lookFeet = 82, lookAddons = 3} if item.actionid == 5031 then if not isCreature(cid) then return true end doSetCreatureOutfit(cid, outfit, -1) end return true end Vermelho: function onStepIn(cid, item, frompos, item2, topos) local outfit = {lookType = 128, lookHead = 94, lookBody = 114, lookLegs = 114, lookFeet = 94, lookAddons = 3} if item.actionid == 5032 then if not isCreature(cid) then return true end doSetCreatureOutfit(cid, outfit, -1) end return true end
  3. Não. Só é necessário mexer nas coordenadas. Esse [1] é o valor da storage. Se quiser se orientar melhor sobre qual número é qual clan, siga a tabela que o Akumah postou logo acima.
  4. Suponho que não haja muita diferença, porém, melhor prevenir do que remediar. O script em si, pelo que vi, está funcionando direitinho. É só configurar corretamente no map editor.
  5. Pensei que você soubesse fazer ;/ jaja edito com a tag. <action actionid="xxx" event="script" value="arquivo.lua"/> Troque xxx pelo actionid da porta. Troque arquivo pelo nome do arquivo .lua com o conteúdo que passei acima.
  6. zipter98

    Script de war

    Só pra testar, veja se está mudando a outfit, e retirando no de saída. Blue team function onStepIn(cid, item, frompos, item2, topos) local outfit = {lookType = 128, lookHead = 88, lookBody = 114, lookLegs = 114, lookFeet = 88, lookAddons = 3} if item.actionid == 5031 then if not isCreature(cid) then return true end doSetCreatureOutfit(cid, outfit, -1) end return true end Saída function onStepIn(cid, item, frompos, item2, topos) if getCreatureCondition(cid, CONDITION_OUTFIT) then doRemoveCondition(cid, CONDITION_OUTFIT) end return true end
  7. Tenta upar seu char exatamente pra um dos levels da tabela: function onAdvance(cid, skill, oldLevel, newLevel) local t = { [100] = {items = {2160}, quantidade = {1}, storage = 110291}, [300] = {items = {2160, 12618}, quantidade = {3, 1}, storage = 110292}, [500] = {items = {2160, 12618}, quantidade = {5, 1}, storage = 110293}, } if skill == 8 then if t[newLevel] then item = t[newLevel].items quantidade = t[newLevel].quantidade for a, b in pairs(t) do if newLevel >= a and getPlayerStorageValue(cid, b.storage) < 1 then for i = 1, #item do doPlayerAddItem(cid, item[i], quantidade[i]) setPlayerStorageValue(cid, b.storage, 1) end end end end end return true end
  8. function onAdvance(cid, skill, oldLevel, newLevel) local t = { [100] = {items = {2160}, quantidade = {1}, storage = 110291}, [300] = {items = {2160, 12618}, quantidade = {3, 1}, storage = 110292}, [500] = {items = {2160, 12618}, quantidade = {5, 1}, storage = 110293}, } if t[newLevel] then item = t[newLevel].items quantidade = t[newLevel].quantidade end if skill == 8 then for a, b in pairs(t) do if newLevel >= a and getPlayerStorageValue(cid, b.storage) < 1 then for i = 1, #item do doPlayerAddItem(cid, item[i], quantidade[i]) setPlayerStorageValue(cid, b.storage, 1) end end end end return true end
  9. Tenta: data/creaturescripts/scripts. function onAdvance(cid, skill, oldLevel, newLevel) local t = { [100] = {items = {2160}, quantidade = {1}, storage = 110291}, [300] = {items = {2160, 12618}, quantidade = {3, 1}, storage = 110292}, [500] = {items = {2160, 12618}, quantidade = {5, 1}, storage = 110293}, } local item = t[newLevel].items local quantidade = t[newLevel].quantidade if skill == 8 then for a, b in pairs(t) do if newLevel >= a and getPlayerStorageValue(cid, b.storage) < 1 then for i = 1, #item do doPlayerAddItem(cid, item[i], quantidade[i]) setPlayerStorageValue(cid, b.storage, 1) end end end end return true end Não se esqueça de registrar no login.lua. Você deve alterar apenas a tabela t. local t = { [100] = {items = {2160}, quantidade = {1}, storage = 110291}, [300] = {items = {2160, 12618}, quantidade = {3, 1}, storage = 110292}, [500] = {items = {2160, 12618}, quantidade = {5, 1}, storage = 110293}, } "Traduzindo" uma linha dela, ficaria assim: [Level] = {items = {IDs do(s) item(s)}, quantidade = {quantidade do(s) item(s)}, storage = 110291}, Na parte quantidade =, você deve colocar em ordem, igual à items. Por exemplo, no lv 300, items está {2160, 12618}. O primeiro ID, é o do thousand dollar (prefiri utilizá-lo, como dica de um amigo, já que 100 HDs = 1 TD, mais fácil); o segundo, Boost Stone. No quantidade, está {3, 1}. O primeiro valor (3), está relacionado ao primeiro valor de items (o TD). O segundo, (1), está relacionado ao segundo valor de items; no caso, a Boost Stone.
  10. Eu não coloquei nada sobre adicionar bônus de speed e.e Depois, se quiser, eu edito lá. Mas, de resto, o script está funcionando direitinho?
  11. O prêmio será apenas 1 item específico e uma quantidade x de level? Você poderia informar o(s) ID(s) do(s) do(s) item(s), a quantidade de levels que o player irá receber e o level que o player irá receber os prêmios? E, suponhamos que o level necessário para receber os prêmios seja 45. Se o player estiver, por exemplo, no level 44, e avançar 2 levels, irá mesmo assim receber o prêmio? Ou apenas se avançar para 45, exato?
  12. /\ http://www.xtibia.com/forum/topic/222682-pokemon-mysterion-dowload/
  13. se quiser tentar.. e sobre as skills bônus, acho q só sei fazer a de speed :x function onUse(cid, item, frompos, item2, topos) local max_time = 100 --tempo máximo (no caso do seu exemplo, 1min e 40 segundos). local min_soul = 200 --Mínimo de soul pra usar o item. local slot = 8 --Slot do item. local id_item = xxx --ID do item. local storage = 410294 local t = { [1] = {xxx, xxx, xxx, xxx}, --[id da vocation] = {id da outfit male de lv 100 a 150, female de 100 a 150, male de 200+, female de 200+}, [2] = {xxx, xxx, xxx, xxx}, [3] = {xxx, xxx, xxx, xxx}, [4] = {xxx, xxx, xxx, xxx}, } if getPlayerSlotItem(cid, slot).itemid ~= id_item then return doPlayerSendCancel(cid, "Você deve colocar o item no local correto!") end if getPlayerStorageValue(cid, storage) < 1 then return doPlayerSendCancel(cid, "Você não pode usar esse item.") end if getPlayerSoul(cid) < min_soul then return doPlayerSendCancel(cid, "Você precisa ter no mínimo "..min_soul.." soul para poder usar esse item.") end if getPlayerStorageValue(cid, 110291) > os.time () then return doPlayerSendCancel(cid, "Aguarde "..getPlayerStorageValue(cid, 110291) - os.time ().." segundo(s) para usar este item novamente.") end i = 2 local function doRemoveSoul(cid) if i == max_time then return true end if not isCreature(cid) then return true end if getPlayerSlotItem(cid, slot).itemid ~= id_item then doRemoveCondition(cid, CONDITION_OUTFIT) doRemoveSoul(cid) return true end i = i + 2 doPlayerAddSoul(cid, -1) addEvent(doRemoveSoul, 2000, cid) end local d = getPlayerVocation(cid) doRemoveSoul(cid) setPlayerStorageValue(cid, 110291, os.time () + max_time) if getPlayerLevel(cid) >= 100 and getPlayerLevel(cid) <= 150 then if getPlayerSex(cid) == 0 then doSetCreatureOutfit(cid, {lookType = t[d][2]}, -1) elseif getPlayerSex(cid) == 1 then doSetCreatureOutfit(cid, {lookType = t[d][1]}, -1) end elseif getPlayerLevel(cid) >= 200 then if getPlayerSex(cid) == 0 then doSetCreatureOutfit(cid, {lookType = t[d][4]}, -1) elseif getPlayerSex(cid) == 1 then doSetCreatureOutfit(cid, {lookType = t[d][3]}, -1) end end addEvent(function() if not isCreature(cid) then return true end if getCreatureCondition(cid, CONDITION_OUTFIT) then doRemoveCondition(cid, CONDITION_OUTFIT) end end, max_time*1000) return true end
  14. Poderia informar as storages de cada clan, e a storage de rank 5?
  15. /\ Isso que você mudou, é o custo base de stones. O que o brunnoo quer, é que a boost stone dê 10 boosts. Só editar a variável boost_id (tá indicado no script, é logo no comecinho). Testado, funcionando.
  16. Eu também penso isso, já houveram inúmeras vezes que procurei sobre tal coisa, e quando pensava que finalmente tinha encontrado o que procurava (pelo fato de estar na seção de resolvidos), apenas via o pedido do autor, e, ou o tópico sem resposta alguma, ou com apenas o comentário do moderador sobre o tópico ter sido movido; maaas, regras são regras :x desculpem meu flood ._.
  17. Caso passe 7 dias e seu tópico esteja sem movimento, do autor e nem da comunidade, o tópico será movido para a Lixeira da Moderação ou Duvida e pedido resolvido.
  18. Tenta: function onUse(cid, item, frompos, item2, topos) local max_time = 100 --tempo máximo (no caso do seu exemplo, 1min e 40 segundos). local min_soul = 200 --Mínimo de soul pra usar o item. local slot = 8 --Slot do item. local id_item = xxx --ID do item. local storage = 410294 local t = { [1] = {xxx, xxx, xxx, xxx}, --[id da vocation] = {id da outfit male de lv 100 a 150, female de 100 a 150, male de 200+, female de 200+}, [2] = {xxx, xxx, xxx, xxx}, [3] = {xxx, xxx, xxx, xxx}, [4] = {xxx, xxx, xxx, xxx}, } if getPlayerSlotItem(cid, slot).itemid ~= id_item then return doPlayerSendCancel(cid, "Você deve colocar o item no local correto!") end if getPlayerStorageValue(cid, storage) < 1 then return doPlayerSendCancel(cid, "Você não pode usar esse item.") end if getPlayerSoul(cid) < min_soul then return doPlayerSendCancel(cid, "Você precisa ter no mínimo "..min_soul.." soul para poder usar esse item.") end i = 2 local function doRemoveSoul(cid) if i == max_time then return true end if not isCreature(cid) then return true end if getPlayerSlotItem(cid, slot).itemid ~= id_item then doRemoveCondition(cid, CONDITION_OUTFIT) return true end i = i + 2 doPlayerAddSoul(cid, -1) addEvent(doRemoveSoul, 2000, cid) end local d = getPlayerVocation(cid) doRemoveSoul(cid) if getPlayerLevel(cid) >= 100 and getPlayerLevel(cid) <= 150 then if getPlayerSex(cid) == 0 then doSetCreatureOutfit(cid, {lookType = t[d][2]}, -1) elseif getPlayerSex(cid) == 1 then doSetCreatureOutfit(cid, {lookType = t[d][1]}, -1) end elseif getPlayerLevel(cid) >= 200 then if getPlayerSex(cid) == 0 then doSetCreatureOutfit(cid, {lookType = t[d][4]}, -1) elseif getPlayerSex(cid) == 1 then doSetCreatureOutfit(cid, {lookType = t[d][3]}, -1) end end addEvent(function() if not isCreature(cid) then return true end if getCreatureCondition(cid, CONDITION_OUTFIT) then doRemoveCondition(cid, CONDITION_OUTFIT) end end, max_time*1000) return true end
  19. De nada xD Sobre o caso de retirar o item do slot, já está corrigido (graças a um amigo meu; vide Akumah). Só vou dar uns ajustes finais, e edito aqui. Infelizmente, ainda não sou capaz de fazer isso que você pediu sobre as vocations :x
  20. O de, ao retirar o item parar o script, acho que já sei o que é. To testando aqui, e jaja edito lá, se funcionar. E sobre a diferença de outfit pra vocation, tentarei também.
  21. zipter98

    Consetar essa script

    Tenta trocar isso if getPlayerStorageValue(cid, 10005) > os.time() then doPlayerSendCancel(cid, "Você tem que esperar "..getPlayerStorageValue(cid, 10005) - os.time().." segundos para usar a magia novamente.") return false end Por: if getPlayerStorageValue(cid, 10005) > os.time() then return doPlayerSendCancel(cid, "Você tem que esperar "..getPlayerStorageValue(cid, 10005) - os.time().." segundos para usar a magia novamente.") end Suponho que seja porque está retornando falso esse seu sendcancel. (eu acho ._.)
  22. Substitua a tag por: <instant name="Susano Full" words="Susano'o" prem="0" aggressive="0" selftarget="1" lvl="200" mana="0" exhaustion="1000" event="script" value="madara/buff.lua"> <vocation id="210"/> <vocation id="211"/> <vocation id="212"/> <vocation id="213"/> <vocation id="214"/> <vocation id="215"/> <vocation id="216"/> <vocation id="217"/> <vocation id="218"/> </instant> Ou <instant name="Susano Full" words="Susano'o" prem="0" aggressive="0" selftarget="1" lvl="200" exhaustion="1000" event="script" value="madara/buff.lua"> <vocation id="210"/> <vocation id="211"/> <vocation id="212"/> <vocation id="213"/> <vocation id="214"/> <vocation id="215"/> <vocation id="216"/> <vocation id="217"/> <vocation id="218"/> </instant> Não conheço muito magias desse tipo, então não sei qual das duas formas é a correta. Portanto, se uma não funcionar, tente a outra.
  • Quem Está Navegando   0 membros estão online

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