Jump to content
×
×
  • Create New...

alecrim

Novato
  • Posts

    6
  • Joined

  • Last visited

About alecrim

Informações

  • Forma que conheci o xTibia
    Otservs
  • Sou
    Gamemaster

Recent Profile Visitors

71 profile views
  1. function onThink(cid, interval) local days = { ["Tuesday"] = {"20:20"}, -- Terça ["Thursday"] = {"20:25"}, -- Quinta ["Saturday"] = {"20:30"}, -- Sábado ["Sunday"] = {"20:35"} -- Domingo } local hrs = tostring(os.date("%X")):sub(1, 5) local msgBroadcast = "Evento Up Aberto No Segundo Andar Do Temple" -- Mensagem do Broacast if days[os.date("%A")] and isInArray(days[os.date("%A")], hrs) then doBroadcastMessage(msgBroadcast) end return true end
  2. Em data > npc > crie um arquivo chamado Maromba.xml (nome de exemplo) e adicione o código abaixo: <?xml version="1.0" encoding="UTF-8"?> <npc name="Maromba" script="data/npc/scripts/Maromba.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="160" head="77" body="79" legs="56" feet="115" addons="0"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|! Deseja {pegar} seu anabolizante, ou ver {informações} sobre os anabolizantes?"/> </parameters> </npc> em npc > scripts > crie um arquivo chamado Maromba.lua e adicione o código: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} local receita_ItemID = 6533 -- Aqui você coloca a ID do item Receita (Coloquei um item aleatorio só para testar o script) local anabolizante_ItemID = 2346 -- ID do Item anabolizante function creatureSayCallback(cid, type, msg, item) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local msg = string.lower(msg) if isInArray({"info", "informações", "informacoes"}, msg) then selfSay('Use anabolizantes para upar 40% mais rápidos todas suas skill durante 7 dias em nossa academia! "não se aplica a EXP", compre em nosso WebSHOP!', cid) elseif isInArray({"pegar"}, msg) then selfSay('Você trouxe com você sua {receita} medica?', cid) elseif isInArray({"receita", "yes", "sim"}, msg) and getPlayerItemCount(cid, receita_ItemID) >= 1 then doPlayerRemoveItem(cid, receita_ItemID, 1) doPlayerAddItemEx(cid, doCreateItemEx(anabolizante_ItemID, 1)) selfSay('Aqui esta, use com responsabilidade!', cid) npcHandler:releaseFocus(cid) elseif isInArray({"receita"}, msg) and getPlayerItemCount(cid, receita_ItemID) < 1 then selfSay('Lamento, mas sem receita não poderei vender para você! ', cid) npcHandler:releaseFocus(cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora em data > actions > actions.xml adicione a tag: <!-- Anabolizante --> <action itemid="2346" script="anabolizante.lua" /> dica: em itemid você coloca a ID do item anabolizante. em seguida, em actions > scripts > crie um arquivo chamado anabolizante.lua e adicione o código abaixo: function onUse(cid, item, frompos, item2, topos) local rateSkill = getConfigInfo('rateSkill') -- NAO MEXER local rateMagic = getConfigInfo('rateMagic') -- NAO MEXER local storage = 62164441555 -- Armazenar o tempo em que o player utilizou o anabolizante local timeInMinutes = 2 -- tempo em MINUTOS que o anabolizante terá efeito. 7 dias = 10080 | 24 horas = 1440, etc.. local porcentagem = 40.0 -- Quantos % vai aumentar de rate na skill? local magLevel = true -- Vai aumentar também a porcentagem de treinar magic level? local itemID = 2346 -- ID do anabolizante if item.itemid == itemID then -- function de tempo, by FeeTads - TibiaKing local function getTimeString(self) local format = { {'dia', self / 60 / 60 / 24}, {'hora', self / 60 / 60 % 24}, {'minuto', self / 60 % 60}, {'segundo', self % 60} } local out = {} for k, t in ipairs(format) do local v = math.floor(t[2]) if(v > 0) then table.insert(out, (k < #format and (#out > 0 and ', ' or '') or ' e ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or '')) end end local ret = table.concat(out) if ret:len() < 16 and ret:find('segundo') then local a, b = ret:find(' e ') ret = ret:sub(b+1) end return ret end if getPlayerStorageValue(cid, storage) - os.time() <= 0 then for skillID = 0, 6 do doPlayerSetSkillRate(cid, skillID, getConfigInfo('rateSkill') / 100 * porcentagem + getConfigInfo('rateSkill')) addEvent(doPlayerSetSkillRate, cid, skillID, rateSkill, timeInMinutes*60*1000) end if magLevel == true then doPlayerSetMagicRate(cid, getConfigInfo('rateMagic') / 100 * porcentagem + getConfigInfo('rateMagic')) addEvent(doPlayerSetMagicRate, cid, rateMagic, timeInMinutes*60*1000) end doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, storage, os.time() + (timeInMinutes*60)) doCreatureSay(cid, "Anabolizante usado! PAI TA MONSTRO!", 19) -- Mensagem após usar o anabolizante else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Espere "..getTimeString((getPlayerStorageValue(cid, storage)-os.time())).." para usar novamente o anabolizante") end end return true end e pronto!
  3. alecrim

    Item com comando

    Exemplo: data > actions > actions.xml: <action itemid="9020" event="script" value="itemSellAll.lua"/> actions > scripts > itemSellAll.lua: function onUse(player, item) local itemID = 9020 -- ID do item que o player vai clicar local removerAposUsar = true -- O item vai sumir da backpack após o player clicar nele? if item.itemid == itemID then if removerAposUsar == true then item:remove(1) end -- CONFIGURE AQUI O SCRIPT do comando !sellall -- end return true end
  4. em data > actions > actions.xml, adicione a seguinte tag: <!-- Quests --> <action uniqueid="9261" event="script" value="bauRecompensaAleatoria.lua"/> Depois, em actions > scripts > crie um arquivo chamado bauRecompensaAleatoria.lua e adicione o código abaixo: function onUse(cid, item, fromPosition, itemEx, toPosition) if item.uid == 9261 then local config = { recompensasID = {2378}, {2461}, {2518}, -- Coloque as ID's das recompensas que poderá ser entregue ao player de forma aleatória storage = 891281244 -- Valor responsável por verificar se o usuário já fez ou não a quest. } local randomItem = config.recompensasID[math.random(1, #config.recompensasID)] local nomeRecompensa = getItemNameById(randomItem) if (getPlayerStorageValue(cid, storage) == -1) then setPlayerStorageValue(cid, storage, 1) doPlayerAddItem(cid, randomItem) doPlayerSendTextMessage(cid, 22, "Parabens! Voce recebeu "..nomeRecompensa.." por completar a quest!") -- Mensagem que o player vai receber quando clicar no baú (Caso seja a primeira vez fazendo a quest). else doPlayerSendTextMessage(cid, 22, "Voce ja pegou a sua recompensa") -- Mensagem que o player vai receber quando clicar no baú (Caso Já tenha feito a quest anteriormente). end end return true end e pronto! Agora é só adaptar o código conforme a sua preferência. importante: não se esqueça de adicionar o UniqueID no baú da quest lá no seu editor de mapa.
  5. Veja se o problema é corrigido: -- make by FeeTads //assistente TibiaKing local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} -- function de tempo //NÃO MEXER local function getTimeString(self) local format = { {'dia', self / 60 / 60 / 24}, {'hora', self / 60 / 60 % 24}, {'minuto', self / 60 % 60}, {'segundo', self % 60} } local out = {} for k, t in ipairs(format) do local v = math.floor(t[2]) if(v > 0) then table.insert(out, (k < #format and (#out > 0 and ', ' or '') or ' e ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or '')) end end local ret = table.concat(out) if ret:len() < 16 and ret:find('segundo') then local a, b = ret:find(' e ') ret = ret:sub(b+1) end return ret end local itemid = { -- id dos items necessários pra troca [1] = {item = 7415, count = 1}, -- item = ID do item // count = quantidade de items } local save_items = 0 -- variavel apenas pra salvar a quantidade de items //nao mexer local tempo_de_espera = 1 -- em minutos local storage = 58458711 -- storage // se não souber, não mexer local storageAceitar = 58458712 -- storage // se não souber, não mexer local storageVerifica = 99983812 local item_trocado = 7775 -- id do item que vira após a troca local trocar_mais_de_uma_vez = true -- o player pode trocar varias vezes esse 4 items por 1? //true pode trocar mais de 1x //false só troca uma vez 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 msg = string.lower(msg) if isInArray({"items", "items", "lista"}, msg) then -- se o player disser "lista" local lista = '' -- string pra salvar a lista de items for i=1, #itemid do lista = lista..itemid[i].count..' - '..getItemNameById(itemid[i].item) -- salva a quantidade e o nome dos items if i+1 <= #itemid then lista = lista..', ' -- caso ainda tenha items, coloca uma virgula pra separar //n mexer end end selfSay("A lista de items são: {"..lista.."}", cid) -- mostra a lista de items selfSay("Você {aceita} pegar esses items?", cid) talkState[talkUser] = 10 elseif isInArray({"no", "não", "nop", "not"}, msg) and talkState[talkUser] == 10 then -- caso o player n aceite, só da BYE selfSay("OK, Bye!", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) elseif isInArray({"yes", "aceito", "sim"}, msg) and talkState[talkUser] == 10 then -- se o player aceitar selfSay("OK! estarei a espera!", cid) setPlayerStorageValue(cid, storageAceitar, 1) -- seta a storage pra1 talkState[talkUser] = 0 npcHandler:releaseFocus(cid) elseif isInArray({"trocar","troca","trocar item"}, msg) then -- mensagem do player if getPlayerStorageValue(cid, storageAceitar) == 1 then -- se o player ja tiver aceitado a missão local lista = '' for i=1, #itemid do lista = lista..itemid[i].count..' - '..getItemNameById(itemid[i].item) if i+1 <= #itemid then lista = lista..', ' end end selfSay("Você deseja trocar {"..lista.."} pelo supremo item?", cid) -- msg do NPC mostrando a lista talkState[talkUser] = 2 else selfSay("Primeiro gostaria de ver a {lista} de items?", cid) -- se o player não tiver aceitado, pede pra ele ver a lista talkState[talkUser] = 11 end elseif isInArray({"no","não","bye","not"}, msg) and talkState[talkUser] == 11 then selfSay("OK, Bye!", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) elseif isInArray({"sim","quero","yes","yeah"}, msg) and talkState[talkUser] == 11 then local lista = '' for i=1, #itemid do lista = lista..itemid[i].count..' - '..getItemNameById(itemid[i].item) if i+1 <= #itemid then lista = lista..', ' end end selfSay("A lista de items são: {"..lista.."}", cid) selfSay("Você {aceita} pegar esses items?", cid) talkState[talkUser] = 10 -- basicamente mostra a lista... elseif isInArray({"sim","quero","yes","yeah"}, msg) and talkState[talkUser] == 2 then if trocar_mais_de_uma_vez == false and getPlayerStorageValue(cid, storage) ~= -1 then -- se puder trocar apenas 1x deixar false selfSay("Desculpe, você já fez sua troca!", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) return true end for i=1, #itemid do -- for pra fazer a contagem dos items if getPlayerItemCount(cid, itemid[i].item) >= itemid[i].count then -- caso o player tenha o item save_items = save_items + 1 -- salva na variavel setPlayerStorageValue(cid, storageVerifica, 1) end end if save_items >= #itemid and getPlayerStorageValue(cid, storageVerifica) >= 1 then -- se tiver todos os items necessários selfSay("Parabéns! agora vou craftar seu item, ele irá demorar "..getTimeString(tempo_de_espera*60).." pra ficar pronto.", cid) -- manda a mensagem setPlayerStorageValue(cid, storage, os.time() + (tempo_de_espera*60)) -- seta a storage pra 60 minutos setPlayerStorageValue(cid, storageVerifica, 0) for i=1, #itemid do doPlayerRemoveItem(cid, itemid[i].item, itemid[i].count) -- remove os items do player end else selfSay("Desculpe, você não tem os items necessários!", cid) -- mensagem caso não tenha os items necessários talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end elseif isInArray({"no","não","nao","not"}, msg) and talkState[talkUser] == 2 then -- caso o player não queira trocar, só da tchau selfSay("Tudo bem então, Bye!", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) elseif isInArray({"receber","receber item"}, msg) then -- caso o player digite "receber" if (getPlayerStorageValue(cid, storage) - os.time() <= 0 and getPlayerStorageValue(cid, storage) > 1) then -- checa se já passou [tempo de espera], e não é 0 local new_item = doCreateItemEx(item_trocado, 1) local receive = doPlayerAddItemEx(cid, new_item) if receive == RETURNVALUE_NOERROR then -- caso o player tenha slot na bp, etc.. selfSay("Parabéns! seu item está entregue, bom jogo!", cid) -- msg do NPC setPlayerStorageValue(cid, storage, 0) -- seta a storage do player pra 0 talkState[talkUser] = 0 npcHandler:releaseFocus(cid) else selfSay("Seu item está pronto, deixe espaço em sua BP!", cid) -- caso não consiga entregar o item só pede pra deixar espaço talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end elseif getPlayerStorageValue(cid, storage) - os.time() > 0 then selfSay("Seu item {não está pronto}, volte em "..getTimeString((getPlayerStorageValue(cid, storage)-os.time()))..".", cid) -- caso ainda não esteja pronto o item talkState[talkUser] = 0 npcHandler:releaseFocus(cid) elseif getPlayerStorageValue(cid, storage) < 1 then selfSay("Você não me entregou nenhum item ainda!", cid) -- caso ainda não esteja pronto o item talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  6. Fiz algumas alterações, veja se isso resolve o problema BossCreature.lua: function doCreateMonsterWalkableAreaPosition(name, from, to) local pos = {x=math.random(from.x, to.x), y=math.random(from.y, to.y), z=math.random(from.z, to.z)} if isWalkable(pos, false, false, false) then doSummonCreature(name, pos) else doCreateMonsterWalkableAreaPosition(name, from, to) end end local t = { [{"Dragon", "Dragon lord"}] = {storage = 741320, amount = 10, boss = "Boss Dragon", from = {x = 80, y = 187, z = 8}, to = {x = 85, y = 191, z = 8}}, [{"Black Dragon", " Black Dragon lord"}] = {storage = 741321, amount = 10, boss = "Boss Black Dragon", from = {x = 800, y = 1817, z = 8}, to = {x = 851, y = 1911, z = 8}}, } function onKill(cid, target, lastHit) if not isMonster(target) or not isPlayer(cid) then return true end for v, r in pairs(t) do if isInArray(v, getCreatureName(target)) then local contador = getGlobalStorageValue(r.storage) <= 0 and 0 or getGlobalStorageValue(r.storage) if contador >= r.amount then for x = r.from.x - 1, r.to.x + 1 do for y = r.from.y - 1, r.to.y + 1 do local pos = {x=x, y=y, z=r.from.z} local m = getTopCreature(pos).uid if m ~= 0 and isMonster(m) then doRemoveCreature(m) end end end doCreateMonsterWalkableAreaPosition(r.boss, r.from, r.to) setGlobalStorageValue(r.storage, 0) doBroadcastMessage("O monstro ".. r.boss .." nasceu!", 20) else setGlobalStorageValue(r.storage, contador + 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Boss Spawning: "..(getGlobalStorageValue(r.storage)).." of "..r.amount.." "..getCreatureName(target).."'s killed to spawn boss.") end end end return true end em creaturescripts.xml altere a tag para: <event type="kill" name="BossSpawn" event="script" value="BossCreature.lua"/>
  • Recently Browsing   0 members

    • No registered users viewing this page.