Ir para conteúdo

Shiuns

Membro
  • Registro em

  • Última visita

  1. function onLogin(cid) if getPlayerStorageValue(cid, GRADUACAO_STORAGE) >= 300 then local kage = getPlayerRankGraduacao(getPlayerTown(cid)) if kage:getID() ~= -1 then if getPlayerName(cid) == kage:getDataString("name") then doAddCondition(cid, kages) doSendAnimatedText(getPlayerPosition(cid), "Kage!", COLOR_RED) doAddCondition(cid, kageskill) elseif getPlayerStorageValue(cid, GRADUACAO_STORAGE) >= kage:getDataInt("value")*0.7 then doAddCondition(cid, sannin) doAddCondition(cid, sanninskill) else doAddCondition(cid, anbu) doAddCondition(cid, anbuskill) end end else local graduacao = GRADUACAO_TYPES[getPlayerGraduacao(cid)] if graduacao == "Genin" then doAddCondition(cid, genin) elseif graduacao == "Chunnin" then doAddCondition(cid, chunnin) elseif graduacao == "Tokubetsu Jounin" then doAddCondition(cid, tokubetsujounin) elseif graduacao == "Jounin" then doAddCondition(cid, jounin) doAddCondition(cid, jouninskill) end end return true end e a função na lib deixa assim: function getPlayerRankGraduacao(cidade) return db.getResult("SELECT `player_storage`.`value`, `player_storage`.`player_id`, `players`.`id`, `players`.`name`, `players`.`town_id` FROM `player_storage`, `players` WHERE `player_storage`.`player_id` = `players`.`id` and `player_storage`.`value` >300 and `player_storage`.`key` = 7892120 and `players`.`town_id` = "..cidade.." GROUP BY `player_storage`.`value` DESC;") end
  2. Shiuns reagiu a uma resposta no tópico: Lottery system com limitação a trainers
  3. no caso aparece essa chest no meio do mapa e ai qndo eu clico na chest ganho os itens, entendeu?
  4. Mas dessa forma com brilho em cima, os jogadores não conseguem clicar no bau para pegar os items assim que o bau aparecer no mapa...
  5. É que eu não quero modificar nada do item editor pq essas chest são usadas em outro sistema tbm entende? além disso tem mais itens que se eu colocar essa ACTION ID não poria mover... consegue fazer maninho? obrigado
  6. E aí galera do tibiaking... Eu tenho um código que faz aparecer uma chest (id 1740) numa determinada pos, nessa mesma chest é atribuido uma AID: 15602 porém o qualquer jogador pode mover a chest. Eu queria que não pudesse mover nenhum item com determinada ACTION ID.
  7. Shiuns reagiu a uma resposta no tópico: Movements ativar piso
  8. local config = { wall = {id = 6973, pos = {x = 839, y = 868, z = 7}}, idpiso = 15295, transidpiso = 15296, time = 1 } function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end local ret = getTileItemById(position, idpiso).uid if ret == 0 then return true end local var = getTileItemById(config.wall.pos, config.wall.id).uid if var > 0 then doSendMagicEffect(config.wall.pos, CONST_ME_MAGIC_RED) doRemoveItem(var) end doTransformItem(item.uid, config.transidpiso) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Wall is removed.") addEvent(function() local x = getTileItemById(config.wall.pos, config.wall.id).uid if x == 0 then doCreateItem(config.wall.id, 1, config.wall.pos) end doTransformItem(getTileItemById(position, config.transidpiso).uid, idpiso) end, config.time*60*1000) return true end
  9. Poderia me enviar? estou precisando
  10. Vitorelias reagiu a uma resposta no tópico: Skill Limite
  11. Shiuns postou uma resposta no tópico em Suporte Tibia OTServer
    SKILL_CLUB = "skill_club" SKILL_DISTANCE = "skill_dist" SKILL_SHIELD = "skill_shielding" SKILL_MAGLEVEL = "maglevel" SKILL_SWORD = "skill_sword" SKILL_AXE = "skill_axe" local storage = 45611 local coinID = 9971 -- moeda para comprar skills local runas = { ["sd"] = {bag = 5926, item= 2268, bag_quant = 2, price= 50, msg= "Parabéns você comprou 4k de SD com sucesso."}, ["uh"] = {bag = 2002, item= 2273, bag_quant = 3, price= 30, msg= "Parabéns você comprou 6k de UH com sucesso."}, ["explo"] = {bag = 2001, item= 2313, bag_quant = 3, price= 10, msg= "Parabéns você comprou 6k de Explosion com sucesso."} } local itens = { ["super divine axe"] = {item = 8926, price= 60, msg= "Você comprou um super divine axe com sucesso."}, ["super divine staff"] = {item = 8922, price= 60, msg= "Você comprou um super divine staff com sucesso."}, ["super divine club"] = {item = 7423, price= 60, msg= "Você comprou um super divine club com sucesso."}, ["super divine sword"] = {item = 7403, price= 60, msg= "Você comprou um super divine sword com sucesso."}, ["super divine crossbow"] = {item = 8851, price= 60, msg= "Você comprou um super divine crossbow com sucesso."}, ["livro nivel 6"] = {item = 8921, price= 60, msg= "Você comprou um livro nivel 6 com sucesso."} } local vip = { ["vip10"] = {days= 10, price= 5}, ["vip30"] = {ays= 30, price= 10} } local skills = { ["magiclevel"] = {vocations = {1, 5, 2, 6, 11, 12}, voc_msg= "Somente Sorcerers, Druids e Infernalists podem comprar magic level.", lim = 200, lim_msg = "Você não pode ter magic level acima de 200.", price= 3, incre = 1, skill = SKILL_MAGLEVEL}, ["skillclub"] = {vocations = {9, 10}, voc_msg= "Somente Drunous podem comprar skill de club.", lim = 350, price= 1, incre = 1, skill = SKILL_CLUB}, ["skillsword"] = {vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de sword.", lim = 350, price= 1, incre = 1, skill = SKILL_SWORD}, ["skillaxe"] = {vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de axe.", lim = 350, price= 1, incre = 1, skill = SKILL_AXE}, ["skilldistance"] = {vocations = {3, 7}, voc_msg= "Somente Paladins podem comprar skill de distance.", lim = 350, price= 1, incre = 1, skill = SKILL_DISTANCE}, ["skillshielding"] = {vocations = {3, 7, 4, 8, 9, 10}, voc_msg= "Somente Paladins, Knights e Drunous podem comprar skill de shield.", lim = 350, lim_msg = "Você não pode ter skill shielding acima de 350.", price= 1, incre = 1, skill = SKILL_SHIELD}, } local frags = { ["removerfrag"] = {t= 6, price= 10} } function onSay(player, words, param) local player = Player(player) local pid = player:getGuid() local tile = player:getTile() local param = param:lower() if not tile:hasFlag(TILESTATE_PROTECTIONZONE) then player:sendCancelMessage("Você precisa está em área protegida para utilizar este comando.") return true end if player:getStorageValue(storage) >= os.time() then player:sendCancelMessage("Por medidas de segurança você só pode utilizar este comando em " .. player:getStorageValue(storage)-os.time() .. " segundos.") return true end if param == "" then player:popupFYI("Para comprar digite !comprar (nome do item)\nOpcoes:\nsd = 4000 em SD por 50 barras.\nuh = 6000 em UH por 40 barras.\nexplo = 6000 em explosion por 10 barras.\nvip10 = 10 dias de vip por 5 barras.\nvip30 = 30 dias de vip por 10 barras.\ndivine staff = divine staff por 30 barras.\ndivine axe = divine axe por 30 barras.\nlivro nivel 6 = livro nivel 6 por 60 barras.\ndivine club = divine club por 30 barras.\ndivine sword = divine sword por 30 barras.\ndivine crossbow = divine crossbow por 30 barras.\nlivro nivel 5 = livro nivel 5 por 30 barras.\nsuper divine axe = super divine axe por 60 barras.\nsuper divine club = super divine club por 60 barras.\nsuper divine sword = super divine sword por 60 barras.\nsuper divine staff = super divine staff por 60 barras.\nsuper divine crossbow = super divine crossbow por 60 barras.\nskillclub = adiciona 1 skill club por 1 barras.\nskillsword = adiciona 1 skill sword por 1 barras.\nskillaxe = adiciona 1 skill axe por 1 barras.\nskilldistance = adiciona 1 skill distance por 1 barras.\nskillshielding = adiciona 1 skill shielding por 1 barras.\nmagiclevel = adiciona 1 magic level por 3 barras.\nmagiclevel5 = adiciona 5 magic level por 15 barras.\nskillclub10 = adiciona 10 skills club por 10 barras.\nskillsword10 = adiciona 10 skills sword por 10 barras.\nskillaxe10 = adiciona 10 skills axe por 10 barras.\nskilldistance10 = adiciona 10 skill distance por 10 barras.\nskillshielding10 = adiciona 10 skill shielding por 10 barras.\nremoverfrag = remove todos frags por 100k.\nO Item desejado não existe em nosso stock. Veja a cima os detalhes dos items disponíveis.") return true end if runas[param] then local v = runas[param] if player:getItemCount(coinID) >= v.price then local item_quant = (v.bag_quant * 2000)/100 for x = 1, v.bag_quant do local bag = player:addItem(v.bag, 1) for i = 1, item_quant do bag:addItem(v.item, 100) end end player:removeItem(coinID, v.price) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg) player:setStorageValue(storage, os.time()+1) else player:sendCancelMessage("Você não possui a quantidade necessária para comprar.") end return true end if itens[param] then local v = itens[param] if player:getItemCount(coinID) >= v.price then item = player:addItem(v.item, 1) item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. player:getName() ..". Serial: ".. player:getGuid() ..".") player:removeItem(coinID, v.price) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg) player:setStorageValue(storage, os.time()+1) else player:sendCancelMessage("Você não possui a quantidade necessária para comprar.") end return true end if vip[param] then local v = vip[param] if player:getItemCount(coinID) >= v.price then player:addPremiumDays(v.days) player:removeItem(coinID, v.price) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou " .. v.days .. " dias de vip com sucesso.") player:setStorageValue(storage, os.time()+1) else player:sendCancelMessage("Você não possui a quantidade necessária para comprar.") end return true end if skills[param] then local v = skills[param] if param == "magiclevel" and player:getBaseMagicLevel() >= v.lim or (player:getBaseMagicLevel() + v.incre ) >= v.lim then player:sendCancelMessage(v.lim_msg) return true elseif player:getSkillLevel(v.skill) >= v.lim or (player:getSkillLevel(v.skill) + v.incre ) >= v.lim then player:sendCancelMessage(v.lim_msg) return true end if not isInArray(v.vocations, player:getVocation():getId()) then player:sendCancelMessage(v.voc_msg) return true end if player:getItemCount(coinID) >= v.price then player:removeItem(coinID, v.price) player:setStorageValue(storage, os.time()+1) player:remove() db.query("UPDATE players SET ".. v.skill .. " = " .. v.skill .. " + " .. v.incre .. " WHERE id = ".. pid) else player:sendCancelMessage("Você não possui a quantidade necessária para comprar.") end return true end if frags[param] then local v = frags[param] if player:getItemCount(2160) >= v.price then player:removeItem(2160, v.price) player:setSkull(SKULL_NONE) player:setSkullTime(0) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your skull and frags has been removed!") player:setStorageValue(storage, os.time()+1) db.query("UPDATE player_deaths SET unjustified = 0 WHERE unjustified = 1 AND killed_by = " .. db.escapeString(player:getName())) else player:sendCancelMessage("Você não possui a quantidade necessária para comprar.") end return true end return true end
  12. @vine96 Testou? ou ainda não?
  13. Shiuns reagiu a uma resposta no tópico: Ajuda - Action que vende itens da BP
  14. só usar os.date assim: if tonumber(os.date("%d")) == 01 or tonumber(os.date("%d")) == 15 then ... end
  15. Rogeriok reagiu a uma resposta no tópico: (Resolvido)Remover o item na backpack
  16. adc na lib essas funções: function getContainerItems(container, array, haveCap) array = array or {} haveCap = haveCap or false if not isContainer(container.uid) or getContainerSize(container.uid) == 0 then array[#array +1] = container else local size = getContainerSize(container.uid) haveCap = (getContainerCap(container.uid) -size) > 0 for slot = 0, (size -1) do local item = getContainerItem(container.uid, slot) if item.itemid > 1 then getContainerItems(item, array, haveCap) end end end return #array >= 1 and array, haveCap end function getContainerItemsById(container, itemid) local founds = {} local items = not container.uid and container or getContainerItems(container) for index, item in pairs(items) do if item.itemid == itemid then founds[#founds +1] = item end end return #founds >= 1 and founds end e tenta usar a função do npc assim: local onSell = function(cid, item, subType, amount, ignoreCap, inBackpacks) if getPlayerSlotItem(cid, CONST_SLOT_BACKPACK).itemid ~= 0 then local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK) local z = getContainerItemsById(bp, item) if #z >= amount and items[item].sellPrice ~= 0 then doPlayerAddMoney(cid, items[item].sellPrice * amount) for i = 1, amount do doRemoveItem(z[i].uid) end end end return true end
  17. local function hasBoss() local id = getGlobalStorageValue("bossSys") if id ~= -1 then if isMonster(id) then return true else return false end end return false end local postp, postpentrada = {x = 129, y = 66, z = 7},{x = 62, y = 339, z = 7} local days = {"thursday"} function onTime() if isInArray(days, os.date("%A")) then if not hasBoss() then local player = getTopCreature(postp).uid if player ~= 0 and isPlayer(player) then doTeleportThing(player, postpentrada) end doCreateTeleport(1387, postpentrada, postp) local id = doCreateMonster("Boss Stremoxy", {x = 38, y = 340, z = 7}) setGlobalStorageValue("bossSys", id) doBroadcastMessage("O Boss Stremoxy nasceu! Corram para matar ele -> Teleporte no templo!") end end return true end function onThink(interval, lastExecution) if hasBoss() then doSendAnimatedText(postp, "Boss", 245) doSendMagicEffect(postp, 11) end return true end

Informação Importante

Confirmação de Termo