Jump to content
Close

Search the Community

Showing results for tags 'CreatureScript%2FGlobalEvent%2FMoveMent'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Community
    • Rules
    • Portal
    • Resources
    • Commerce
    • Clubs
  • OTServers
    • Discussion
    • Support
    • Tutorial
    • Download
    • Code Development
    • Contests and Events
    • Form Team
    • Advertise your Server
  • Tibia and Bots
    • Discussion
  • League of Legends's Geral
  • League of Legends's Suporte
  • Jogos Gerais's Geral
  • Nto New Season's Tópicos
  • Fakes's Fakes
  • Tibia's Geral
  • Tibia's Notícias
  • Tibia's Media
  • Tibia's Life Thread
  • Gráficos's Geral
  • Gráficos's Tutoriais
  • Gráficos's Recursos
  • Gráficos's Aprendizagem & Recursos
  • Gráficos's Galeria
  • Gráficos's Duelos & Batalhas
  • Gráficos's Suporte
  • Desenvolvimento e Programação's Geral
  • Desenvolvimento e Programação's Tutoriais
  • Desenvolvimento e Programação's Trabalhos
  • Desenvolvimento e Programação's Suporte
  • Computação's Geral
  • Computação's Dicas e Tutoriais
  • Computação's Suporte
  • Roleplaying's Roleplaying
  • Playground's (Off-topic)
  • Divulgações's Tópicos
  • Academia de Mapping's Quadro da Clopin
  • Academia de Mapping's Dev Area
  • Academia de Mapping's Quadro do Nolis
  • Academia de Mapping's Quadro do Namikaze
  • Styller's Tópicos

Calendars

  • Official Calendar
  • OTServs Calendar
  • Several Calendars

Product Groups

  • Advertisements in Top
  • Advertisements In Signatures
  • Advertisements in Topics
  • Others Advertisements

Categories

  • Sales Section
    • Scripting Sales
    • Codes Sales
    • Mapping Sales
    • Websites Sales
    • Design/Sprites Sales
    • Bots Sales
  • Look Jobs
  • Looking for Freelancers
  • Team Formation

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Localization


My character


Favorite OTServ


Bot preferred


Interests

Found 45 results

  1. SCREENSHOT ______________________________________________ COMANDOS!autoloot add, itemId ou name -- Adicionando um item na lista !autoloot remove, itemId or name -- Remover um item da lista !autoloot show -- Mostrar a lista do autoLoot !autoloot clear -- Limpar a lista do autoLoot ______________________________________________ SCRIPT data/global.lua-- AutoLoot config AUTO_LOOT_MAX_ITEMS = 5 -- Reserved storage AUTOLOOT_STORAGE_START = 10000 AUTOLOOT_STORAGE_END = AUTOLOOT_STORAGE_START + AUTO_LOOT_MAX_ITEMS -- AutoLoot config end talkactions/talkactions.xml<talkaction words="!autoloot" separator=" " script="autoloot.lua"/> talkactions/scripts/autoloot.luafunction onSay(player, words, param) local split = param:split(",") local action = split[1] if action == "add" then local item = split[2]:gsub("%s+", "", 1) local itemType = ItemType(item) if itemType:getId() == 0 then itemType = ItemType(tonumber(item)) if itemType:getId() == 0 then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "There is no item with that id or name.") return false end end local itemName = tonumber(split[2]) and itemType:getName() or item local size = 0 for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do local storage = player:getStorageValue(i) if size == AUTO_LOOT_MAX_ITEMS then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "The list is full, please remove from the list to make some room.") break end if storage == itemType:getId() then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, itemName .." is already in the list.") break end if storage <= 0 then player:setStorageValue(i, itemType:getId()) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, itemName .." has been added to the list.") break end size = size + 1 end elseif action == "remove" then local item = split[2]:gsub("%s+", "", 1) local itemType = ItemType(item) if itemType:getId() == 0 then itemType = ItemType(tonumber(item)) if itemType:getId() == 0 then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "There is no item with that id or name.") return false end end local itemName = tonumber(split[2]) and itemType:getName() or item for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do if player:getStorageValue(i) == itemType:getId() then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, itemName .." has been removed from the list.") player:setStorageValue(i, 0) return false end end player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, itemName .." was not founded in the list.") elseif action == "show" then local text = "-- Auto Loot List --\n" local count = 1 for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do local storage = player:getStorageValue(i) if storage > 0 then text = string.format("%s%d. %s\n", text, count, ItemType(storage):getName()) count = count + 1 end end if text == "" then text = "Empty" end player:showTextDialog(1950, text, false) elseif action == "clear" then for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do player:setStorageValue(i, 0) end player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "The autoloot list has been cleared.") else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Use the commands: !autoloot {add, remove, show, clear}") end return false end creaturescripts/creaturescripts.xml<event type="kill" name="AutoLoot" script="autoloot.lua" /> creaturescripts/scripts/autoloot.lualocal function scanContainer(cid, position) local player = Player(cid) if not player then return end local corpse = Tile(position):getTopDownItem() if not corpse then return end if corpse:getType():isCorpse() and corpse:getAttribute(ITEM_ATTRIBUTE_CORPSEOWNER) == cid then for i = corpse:getSize() - 1, 0, -1 do local containerItem = corpse:getItem(i) if containerItem then for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do if player:getStorageValue(i) == containerItem:getId() then containerItem:moveTo(player) end end end end end end function onKill(player, target) if not target:isMonster() then return true end addEvent(scanContainer, 100, player:getId(), target:getPosition()) return true end creaturescripts/scripts/login.luaplayer:registerEvent("AutoLoot") ______________________________________________ CRÉDITOSPrinter
  2. Achei esse script na OtLand, e achei interessante, é um script para addon doll e mount doll, mas ele usa Modal Window. Sem digitar !addon mage. Tudo o que voce precisa fazer é selecionar a montaria/addon na lista. Testado em TFS 1.1 e 1.2 Registre no login.lua 'modalAD', 'modalMD' actions.xml <action itemid="8982" script="modalAD.lua"/> <action itemid="9019" script="modalMD.lua"/> actions - modalMD.lua local mounts = { [1] = {name = "Widow Queen", ID = 1}, [2] = {name = "Racing Bird", ID = 2}, [3] = {name = "War Bear", ID = 3}, [4] = {name = "Black Sheep", ID = 4}, [5] = {name = "Midnight Panther", ID = 5}, [6] = {name = "Draptor", ID = 6}, [7] = {name = "Titanica", ID = 7}, [8] = {name = "Tin Lizard", ID = 8}, [9] = {name = "Blazebringer", ID = 9}, [10] = {name = "Rapid Boar", ID = 10}, [11] = {name = "Stampor", ID = 11}, [12] = {name = "Undead Cavebear", ID = 12}, [13] = {name = "Donkey", ID = 13}, [14] = {name = "Tiger Slug", ID = 14}, [15] = {name = "Uniwheel", ID = 15}, [16] = {name = "Crystal Wolf", ID = 16}, [17] = {name = "War horse", ID = 17}, [18] = {name = "Kingly Deer", ID = 18}, [19] = {name = "Tamed Panda", ID = 19}, [20] = {name = "Dromedary", ID = 20}, [21] = {name = "King Scorpion", ID =21}, [22] = {name = "Rented Horse", ID = 22}, [23] = {name = "Armoured War Horse", ID = 23}, [24] = {name = "Shadow Draptor", ID =24}, [25] = {name = "Rented Horse", ID = 25}, [26] = {name = "Rented Horse", ID = 26}, [27] = {name = "Ladybug", ID = 27}, [28] = {name = "Manta Ray", ID = 28}, [29] = {name = "Ironblight", ID =29}, [30] = {name = "Magma Crawler", ID = 30}, [31] = {name = "Dragonling", ID = 31}, [32] = {name = "Gnarlhound", ID = 32}, [33] = {name = "Crimson Ray", ID = 33}, [34] = {name = "Steelbeak", ID = 34}, [35] = {name = "Water Buffalo", ID = 35}, [36] = {name = "Tombstinger", ID = 36}, [37] = {name = "Platesaurian", ID = 37}, [38] = {name = "Ursagrodon", ID = 38}, [39] = {name = "The Hellgrip", ID = 39}, [40] = {name = "Noble Lion", ID = 40}, [41] = {name = "Desert King", ID = 41}, [42] = {name = "Shock Head", ID = 42}, [43] = {name = "Walker", ID = 43}, [44] = {name = "Azudocus", ID = 44}, [45] = {name = "Carpacosaurus", ID = 45}, [46] = {name = "Death Crawler", ID = 46}, [47] = {name = "Flamesteed", ID = 47}, [48] = {name = "Jade Lion", ID = 48}, [49] = {name = "Jade Pincer", ID = 49}, [50] = {name = "Nethersteed", ID = 50}, [51] = {name = "Tempest", ID = 51}, [52] = {name = "Winter King", ID = 52}, [53] = {name = "Doombringer", ID = 53}, [54] = {name = "Woodland Prince", ID = 54}, [55] = {name = "Hailtorm Fury", ID = 55}, [56] = {name = "Siegebreaker", ID = 56}, [57] = {name = "Poisonbane", ID = 57}, [58] = {name = "Blackpelt", ID = 58}, [59] = {name = "Golden Dragonfly", ID = 59}, [60] = {name = "Steel Bee", ID = 60}, [61] = {name = "Copper Fly", ID = 61}, [62] = {name = "Tundra Rambler", ID = 62}, [63] = {name = "Highland Yak", ID = 63}, [64] = {name = "Glacier Vagabond", ID = 64}, [65] = {name = "Glooth Glider", ID = 65}, [66] = {name = "Shadow Hart", ID = 66}, [67] = {name = "Black Stag", ID = 67}, [68] = {name = "Emperor Deer", ID = 68}, [69] = {name = "Flying Divan", ID = 69}, [70] = {name = "Magic Carpet", ID = 70}, [71] = {name = "Floating Kashmir", ID = 71}, [72] = {name = "Ringtail Wazzoon", ID = 72}, [73] = {name = "Night Wazzoon", ID = 73}, [74] = {name = "Emerald Waccoon", ID = 74}, } function onUse(player, item, fromPosition, itemEx, toPosition, isHotkey) player:registerEvent("modalMD") local title = "Choose your mount!" local message = "You will receive the mount you select!" local window = ModalWindow(1001, title, message) if player:getItemCount(9019) >= 1 then window:addButton(100, "Confirm") window:setDefaultEnterButton(100) else window:setDefaultEnterButton(101) end window:addButton(101, "Cancel") window:setDefaultEscapeButton(101) for i = 1, #mounts do local o = mounts[i].name if not player:hasMount(mounts[i].ID) then window:addChoice(i, o) end end if window:getChoiceCount() == 0 then window:setMessage("You have all the mounts! You have been awarded the achievement and a custom mount!") --add achievement end window:sendToPlayer(player) return true end actions - modalAD.lua local outfits = { [1] = {name = "Citizen", male = 128, female = 136}, [2] = {name = "Hunter", male = 129, female = 137}, [3] = {name = "Mage", male = 130, female = 138}, [4] = {name = "Knight", male = 131, female = 139}, [5] = {name = "Noble", male = 132, female = 140}, [6] = {name = "Summoner", male = 133, female = 141}, [7] = {name = "Warrior", male = 134, female = 142}, [8] = {name = "Barbarian", male = 143, female = 147}, [9] = {name = "Druid", male = 144, female = 148}, [10] = {name = "Wizard", male = 145, female = 149}, [11] = {name = "Oriental", male = 146, female = 150}, [12] = {name = "Pirate", male = 151, female = 155}, [13] = {name = "Assassin", male = 152, female = 156}, [14] = {name = "Beggar", male = 153, female = 157}, [15] = {name = "Shaman", male = 154, female = 158}, [16] = {name = "Norse", male = 251, female = 252}, [17] = {name = "Nightmare", male = 268, female = 269}, [18] = {name = "Jester", male = 273, female = 270}, [19] = {name = "Brotherhood", male = 278, female = 279}, [20] = {name = "Demonhunter", male = 289, female = 288}, [21] = {name = "Yalaharian", male = 325, female = 324}, [22] = {name = "Warmaster", male = 335, female = 336}, [23] = {name = "Wayfarer", male = 367, female = 366}, [24] = {name = "Afflicted", male = 430, female = 431}, [25] = {name = "Elementalist", male = 432, female = 433}, [26] = {name = "Deepling", male = 463, female = 464}, [27] = {name = "Insectoid", male = 465, female = 466}, [28] = {name = "Entrepreneur", male = 472, female = 471}, [29] = {name = "Crystal Warlord", male = 512, female = 513}, [30] = {name = "Soil Guardian", male = 516, female = 514}, [31] = {name = "Demon", male = 541, female = 542}, [32] = {name = "Cave Explorer", male = 574, female = 575}, [33] = {name = "Dream Warden", male = 577, female = 578}, [34] = {name = "Champion", male = 633, female = 632}, [35] = {name = "Conjurer", male = 634, female = 635}, [36] = {name = "Beastmaster", male = 637, female = 636}, [37] = {name = "Chaos Acolyte", male = 665, female = 664}, [38] = {name = "Death Herald", male = 667, female = 666}, [39] = {name = "Ranger", male = 684, female = 683}, [40] = {name = "Ceremonial Garb", male = 695, female = 694}, [41] = {name = "Puppeteer", male = 697, female = 696}, [42] = {name = "Spirit Caller", male = 699, female = 698}, } function onUse(player, item, fromPosition, itemEx, toPosition, isHotkey) player:registerEvent("modalAD") local title = "Choose your outfit!" local message = "You will receive the outfit and both addons!" local window = ModalWindow(1000, title, message) if player:getItemCount(8982) >= 1 then window:addButton(100, "Confirm") window:setDefaultEnterButton(100) else window:setDefaultEnterButton(101) end window:addButton(101, "Cancel") window:setDefaultEscapeButton(101) for i = 1, #outfits do local o = outfits[i].name if not player:hasOutfit(outfits[i].male, 3) and not player:hasOutfit(outfits[i].female, 3) then if outfits[i].name == "Noble" or outfits[i].name == "Norse" then if player:getSex() == 0 then o = o .. "woman" else o = o .. "man" end end window:addChoice(i, o) end end if window:getChoiceCount() == 0 then window:setMessage("You have all the outfits! You have been awarded the achievement and a custom outfit!") --add achievement end window:sendToPlayer(player) return true end creaturescripts.xml <event type="modalwindow" name="modalAD" script="modalAD.lua"/> <event type="modalwindow" name="modalMD" script="modalMD.lua"/> creaturescripts - modalMD.lua local mounts = { [1] = {name = "Widow Queen", ID = 1}, [2] = {name = "Racing Bird", ID = 2}, [3] = {name = "War Bear", ID = 3}, [4] = {name = "Black Sheep", ID = 4}, [5] = {name = "Midnight Panther", ID = 5}, [6] = {name = "Draptor", ID = 6}, [7] = {name = "Titanica", ID = 7}, [8] = {name = "Tin Lizard", ID = 8}, [9] = {name = "Blazebringer", ID = 9}, [10] = {name = "Rapid Boar", ID = 10}, [11] = {name = "Stampor", ID = 11}, [12] = {name = "Undead Cavebear", ID = 12}, [13] = {name = "Donkey", ID = 13}, [14] = {name = "Tiger Slug", ID = 14}, [15] = {name = "Uniwheel", ID = 15}, [16] = {name = "Crystal Wolf", ID = 16}, [17] = {name = "War horse", ID = 17}, [18] = {name = "Kingly Deer", ID = 18}, [19] = {name = "Tamed Panda", ID = 19}, [20] = {name = "Dromedary", ID = 20}, [21] = {name = "King Scorpion", ID =21}, [22] = {name = "Rented Horse", ID = 22}, [23] = {name = "Armoured War Horse", ID = 23}, [24] = {name = "Shadow Draptor", ID =24}, [25] = {name = "Rented Horse", ID = 25}, [26] = {name = "Rented Horse", ID = 26}, [27] = {name = "Ladybug", ID = 27}, [28] = {name = "Manta Ray", ID = 28}, [29] = {name = "Ironblight", ID =29}, [30] = {name = "Magma Crawler", ID = 30}, [31] = {name = "Dragonling", ID = 31}, [32] = {name = "Gnarlhound", ID = 32}, [33] = {name = "Crimson Ray", ID = 33}, [34] = {name = "Steelbeak", ID = 34}, [35] = {name = "Water Buffalo", ID = 35}, [36] = {name = "Tombstinger", ID = 36}, [37] = {name = "Platesaurian", ID = 37}, [38] = {name = "Ursagrodon", ID = 38}, [39] = {name = "The Hellgrip", ID = 39}, [40] = {name = "Noble Lion", ID = 40}, [41] = {name = "Desert King", ID = 41}, [42] = {name = "Shock Head", ID = 42}, [43] = {name = "Walker", ID = 43}, [44] = {name = "Azudocus", ID = 44}, [45] = {name = "Carpacosaurus", ID = 45}, [46] = {name = "Death Crawler", ID = 46}, [47] = {name = "Flamesteed", ID = 47}, [48] = {name = "Jade Lion", ID = 48}, [49] = {name = "Jade Pincer", ID = 49}, [50] = {name = "Nethersteed", ID = 50}, [51] = {name = "Tempest", ID = 51}, [52] = {name = "Winter King", ID = 52}, [53] = {name = "Doombringer", ID = 53}, [54] = {name = "Woodland Prince", ID = 54}, [55] = {name = "Hailtorm Fury", ID = 55}, [56] = {name = "Siegebreaker", ID = 56}, [57] = {name = "Poisonbane", ID = 57}, [58] = {name = "Blackpelt", ID = 58}, [59] = {name = "Golden Dragonfly", ID = 59}, [60] = {name = "Steel Bee", ID = 60}, [61] = {name = "Copper Fly", ID = 61}, [62] = {name = "Tundra Rambler", ID = 62}, [63] = {name = "Highland Yak", ID = 63}, [64] = {name = "Glacier Vagabond", ID = 64}, [65] = {name = "Glooth Glider", ID = 65}, [66] = {name = "Shadow Hart", ID = 66}, [67] = {name = "Black Stag", ID = 67}, [68] = {name = "Emperor Deer", ID = 68}, [69] = {name = "Flying Divan", ID = 69}, [70] = {name = "Magic Carpet", ID = 70}, [71] = {name = "Floating Kashmir", ID = 71}, [72] = {name = "Ringtail Wazzoon", ID = 72}, [73] = {name = "Night Wazzoon", ID = 73}, [74] = {name = "Emerald Waccoon", ID = 74}, } function onModalWindow(player, modalWindowId, buttonId, choiceId) player:unregisterEvent("modalMD") if modalWindowId == 1001 then if buttonId == 100 then if player:getItemCount(9019) == 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must have a Mount Doll in your backpack!") return false end if choiceId == 0 then return false end player:removeItem(9019, 1) player:addMount(mounts[choiceId].ID) player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_YELLOW) end end end creaturescripts - modalAD.lua local outfits = { [1] = {name = "Citizen", male = 128, female = 136}, [2] = {name = "Hunter", male = 129, female = 137}, [3] = {name = "Mage", male = 130, female = 138}, [4] = {name = "Knight", male = 131, female = 139}, [5] = {name = "Noble", male = 132, female = 140}, [6] = {name = "Summoner", male = 133, female = 141}, [7] = {name = "Warrior", male = 134, female = 142}, [8] = {name = "Barbarian", male = 143, female = 147}, [9] = {name = "Druid", male = 144, female = 148}, [10] = {name = "Wizard", male = 145, female = 149}, [11] = {name = "Oriental", male = 146, female = 150}, [12] = {name = "Pirate", male = 151, female = 155}, [13] = {name = "Assassin", male = 152, female = 156}, [14] = {name = "Beggar", male = 153, female = 157}, [15] = {name = "Shaman", male = 154, female = 158}, [16] = {name = "Norse", male = 251, female = 252}, [17] = {name = "Nightmare", male = 268, female = 269}, [18] = {name = "Jester", male = 273, female = 270}, [19] = {name = "Brotherhood", male = 278, female = 279}, [20] = {name = "Demonhunter", male = 289, female = 288}, [21] = {name = "Yalaharian", male = 325, female = 324}, [22] = {name = "Warmaster", male = 335, female = 336}, [23] = {name = "Wayfarer", male = 367, female = 366}, [24] = {name = "Afflicted", male = 430, female = 431}, [25] = {name = "Elementalist", male = 432, female = 433}, [26] = {name = "Deepling", male = 463, female = 464}, [27] = {name = "Insectoid", male = 465, female = 466}, [28] = {name = "Entrepreneur", male = 472, female = 471}, [29] = {name = "Crystal Warlord", male = 512, female = 513}, [30] = {name = "Soil Guardian", male = 516, female = 514}, [31] = {name = "Demon", male = 541, female = 542}, [32] = {name = "Cave Explorer", male = 574, female = 575}, [33] = {name = "Dream Warden", male = 577, female = 578}, [34] = {name = "Champion", male = 633, female = 632}, [35] = {name = "Conjurer", male = 634, female = 635}, [36] = {name = "Beastmaster", male = 637, female = 636}, [37] = {name = "Chaos Acolyte", male = 665, female = 664}, [38] = {name = "Death Herald", male = 667, female = 666}, [39] = {name = "Ranger", male = 684, female = 683}, [40] = {name = "Ceremonial Garb", male = 695, female = 694}, [41] = {name = "Puppeteer", male = 697, female = 696}, [42] = {name = "Spirit Caller", male = 699, female = 698}, [43] = {name = "Glooth Engineer", male = 610, female = 618}, } function onModalWindow(player, modalWindowId, buttonId, choiceId) player:unregisterEvent("modalAD") if modalWindowId == 1000 then if buttonId == 100 then if player:getItemCount(8982) == 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must have a Addon Doll in your backpack!") return false end if choiceId == 0 then return false end player:removeItem(8982, 1) if player:getSex() == 0 then player:addOutfitAddon(outfits[choiceId].female, 3) else player:addOutfitAddon(outfits[choiceId].male, 3) end player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_YELLOW) end end end não sou a melhor pessoa para explicar as coisas, basicamente é isso: AD = Addon Doll MD = Mount Doll Se voce quiser trocar o doll, mude no actions.xml o ID, e mude nos scripts, na linha if player:getItemCount(ID) == 0 then - Substitui o ID pelo o ID do doll que voce queira. Créditos: beastn
  3. Fala galera, Um membro fez um pedido, e achei que deveria compartilhar com vocês, algo simples porém útil. Principalmente em OT's do estilo Baiak. O que o script faz ? Ele simplesmente manda um efeito para o Top Level caso ele estiver online. Instalação: Em data/creaturescripts/creaturescripts.xml adicione: <event type="login" name="TopEffect" event="script" value="topeffect.lua"/> <event type="advance" name="CheckTop" event="script" value="topeffect.lua"/> Agora crie um arquivo em data/creaturescripts/scripts com o nome topeffect.lua e adicione: --[[ Script by Bruno Minervino para o Tibia King Caso for postar, colocar os créditos ]] local config = { tempo = 10, --tempo em segundos mensagem = { texto = "[TOP]", --não use mais de 9 caracteres efeito = TEXTCOLOR_LIGHTBLUE --efeito para a função doSendAnimatedText }, efeito = 30, --efeito da função doSendMagicEffect globalstr = 5687 -- uma global storage qualquer q esteje vazia } --[[ Não mexa em nada abaixo ]] local topPlayer = getGlobalStorageValue(config.globalstr) > 0 and getGlobalStorageValue(config.globalstr) or 0 function onLogin(cid) local query = db.getResult("SELECT `id`, `name`, `level` FROM `players` WHERE `group_id` < 2 ORDER BY `level` DESC LIMIT 1") if (query:getID() ~= -1) then local pid = query:getDataString("id") local name = query:getDataString("name") if getPlayerName(cid) == name then if topPlayer ~= getPlayerID(cid) then topPlayer = getPlayerID(cid) end setGlobalStorageValue(config.globalstr, pid) TopEffect(cid) end end registerCreatureEvent(cid, "CheckTop") return true end function onAdvance(cid, skill, oldlevel, newlevel) if skill == 8 then local query = db.getResult("SELECT `id`, `name`, `level` FROM `players` WHERE `group_id` < 2 ORDER BY `level` DESC LIMIT 1") if (query:getID() ~= -1) then local level = tonumber(query:getDataString("level")) if level < newlevel and topPlayer ~= getPlayerID(cid) then doBroadcastMessage("O jogador " .. getPlayerName(cid) .. " tornou-se o novo Top Level. Parabens!", 22) topPlayer = getPlayerID(cid) doSaveServer() setGlobalStorageValue(config.globalstr, getPlayerID(cid)) TopEffect(cid) end end end return true end function TopEffect(cid) if not isPlayer(cid) then return true end if topPlayer == getPlayerID(cid) then doSendAnimatedText(getCreaturePosition(cid), config.mensagem.texto, config.mensagem.efeito) doSendMagicEffect(getCreaturePosition(cid), config.efeito) addEvent(TopEffect, config.tempo * 1000, cid) end end function getPlayerNameById(id) local query = db.getResult("SELECT `name` FROM `players` WHERE `id` = " .. db.escapeString(id)) if query:getID() ~= -1 then return query:getDataString("name") end return 0 end function getPlayerIdByName(name) local query = db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(name)) if query:getID() ~= -1 then return tonumber(query:getDataString("id")) end return 0 end function getPlayerID(cid) return getPlayerIdByName(getPlayerName(cid)) end Espero ajudar!
  4. Bom galera, tem uma coisa bem simples que nem o tibia global fez e que eu to trazendo aqui pra vocês. Trata-se de um pequeno sistema que fará você sempre virar pra direção do seu target ao atacar. Testado em TFS 0.3.6 Cliente 8.54. Imagem auto explicativa: Chega de atacar de costas! Agora pra instalar é bem tranquilo. Abra um arquivo .lua em data\creaturescripts\scripts chamado target e coloque o seguinte conteudo dentro dele: Feito isso adicione essa linha no creaturescripts.xml: <event type="attack" name="targetCreature" script="target.lua"/> E para finalizar adicione a seguinte tag em creaturescripts\scripts\login.lua: registerCreatureEvent(cid, "targetCreature") Espero que vcs tenham curtido, é algo bem simples mas ninguém havia pensado nisso antes (nem o próprio Tibia), é uma coisa bem básica e que torna o jogo bem mais importante e sério. EDIT:: Usem essa versão que está mais completa, na anterior se o target estivesse na diagonal ele não virava.
  5. Bom como via muita gente "nem tanta" com dúvidas, problemas etc.. Resolvi criar esse tópico para acabar com os seus problemas ! ---------------------------------------------------------------------------------------//----------------------------------------------------------------------------------------------- Bom então vamos lá ! ------------------------------------//-------------------------------------- Pasta do seu servidor --> Data --> movements --> scripts Agora crie um arquivo .lua Renomeie com o nome de sua preferencia ! Ps: Tem que ser obrigatoriamente .LUA Bom no meu caso coloquei "TileLevel" E então cole este script dentro: ------------------------------------------------------------------------------//------------------------------------------------------------------------------------------- {´~.~´} Legenda Vermelho: Level do player que irá poder passar no Teleport/tiler Dourado: Posição de onde desejar colocar Teleport/tiler -------------------------------------------------------------------------------------------//----------------------------------------------------------------------------------------------- Agora salve o arquivo! -----------------------------------------------------------------//----------------------------------------------------------------------- Agora vamos para Segunda Parte ! Me acompanhe ! ---------------------------------------------------------------------------------------------------//--------------------------------------------------------------------------------------------------- Vamos em: Pasta do seu servidor --> Data --> Movements.xml Agora adicione o seguinte código/tag: {´~.~´} Legenda Roxo: É o nome do arquivo.lua que você criou na pasta Scripts Azul: É o level do player, tem que estar igual no script acima. Obs: Caso queria colocar level 100 é só mudar parte 250 para 100 isso vale mesma coisa na "PS" que acabei de explica embaixo \/ -----------------------------------//------------------------------------------ Ps:No Remeres Editor coloque no tile o actionID: 1250 ou level da sua preferencia. Quer level 100? então no tile coloque "1100" Bom espero que ajudem a todos ! Créditos @vankk pelo script, que ele postou individualmente em um tópico, sem muitos detalhes. A TAG E AS DEMAIS COISAS FEITO POR MIM !
  6. Fiz esse script a bastante tempo a pedido de um membro e resolvi postar para vocês . Versão testada: 8.60 TFS: 0.4 / 0.3.6 Função: Ao sair de uma zona de proteção, caso o player esteja sem bless, ele manda uma mensagem na tela avisando que está sem bless. Em "Data/creaturescripts/scripts", copie e cole um arquivo.LUA e renomeie para checkBless.lua, apague tudo e cole: function onThink(cid, lastExecution, thinkInterval) if(getTilePzInfo(getCreaturePosition(cid))) == false and getPlayerStorageValue(cid, 23333) <= 0 then for b = 1,5 do if getPlayerBlessing(cid, b) == false then setPlayerStorageValue(cid, 23333, 1) return doPlayerSendTextMessage(cid, 22, "Você não tem todas as bless, tome cuidado.") end end elseif (getTilePzInfo(getCreaturePosition(cid))) == true and getPlayerStorageValue(cid, 23333) == 1 then setPlayerStorageValue(cid, 23333, -1) end return true end Em "Data/creaturescripts", abra o creaturescripts.xml e adicione: <event type="think" name="checkBless" event="script" value="checkBless.lua"/> Novamente em "Data/creaturescripts/scripts", abra o arquivo login.lua e adicione: registerCreatureEvent(cid, "checkBless") Espero que gostem , caso dê algum erro, me avise! Créditos: Wakon - Script ScythePanthom -- Pela idéia.
  7. Introdução: Quando o player equipa x item, o outfit dele muda para x outfit. Se ele deixa de equipar esse item, o outfit dele volta ao de antes. Vá em data/movements/scripts e crie um arquivo changeoutfit.lua, coloque: local look = 3 -- Coloque o ID do outfit function onEquip(cid, item) doSetCreatureOutfit(cid, {lookType = look}, -1) return true end function onDeEquip(cid, item) doRemoveCondition(cid, CONDITION_OUTFIT) return true end Agora em Movements.xml, acrescente: <movevent type="Equip" itemid="ID DO ITEM" slot="ammo" script="changeoutfit.lua"/> <movevent type="DeEquip" itemid="ID DO ITEM" slot="ammo" script="changeoutfit.lua"/> Créditos: tev
  8. [CREATURESCRIPT] Buy Summon Scroll Fala galera do TibiaKing, eu vim postar pra vocês um script que eu fiz muito rapidinho aqui, só pra passar o tempo enquanto eu compilava umas sourcers :x Esse script é o seguinte, você tem um scroll e dentro dele você escreve o nome da criatura que você quer sumonar, porém para cada criatura você precisa de uma certa quantia de gold coins e level. Para saber o nome das criaturas disponíveis você digita "monsters" ou "monster". Testado: 0.3.6pl1 [8.54] Instalação Data/Creaturescript/Scripts/ScrollMonsters.lua --- Créditos: Tony Araújo (OrochiElf) ---- local monsters = { ["orc berserker"] = {price = 1000, lv = 40, exhaustSto = 99900, exhaustTime = 120}, ["dragon"] = {price = 10000, lv = 80, exhaustSto = 99901, exhaustTime = 300}, -- [nome do monstro] {price = preço(gold coins), lv = level necessário, exhaustSto = storage para salvar o exhaust, exhaustTime = quantos segundos de exhaust}, } local removeOnUse = true -- Remover ao usar? true / false function onTextEdit(cid, item, newText) local i = monsters[newText:lower()] local str = "~~ Scroll Monsters ~~" if isInArray({"monsters", "monster"}, newText:lower()) then for monsterName, monsterInfo in ipairs(monsters) do str = str "\n" .. monsterName .." [lv: "..monsterInfo.lv.." GP$: ".. monsterInfo.price end doShowTextDialog(cid, item.itemid, str) return true end if i then if getPlayerLevel(cid) >= i.lv then if doPlayerRemoveMoney(cid, i.price) then if not exhaustion.get(cid, i.exhaustSto) then if removeOnUse then doRemoveItem(cid, item.uid, 1) end doSummonCreature(cid, newText:lower()) exhaustion.set(cid, i.exhaustSto, i.exhaustTime) return true else doPlayerSendCancel(cid, "Voce precisa esperar "..exhaustion.get(cid, i.exhaustSto).." segundos.") return true end else doPlayerSendCancel(cid, "Voce precisa de "..i.price.." gold coins.") return true end else doPlayerSendCancel(cid, "Voce precisa do level "..i.lv) return true end else doPlayerSendCancel(cid, "Esta criatura não existe.") return true end end Data/Creaturescript/Creaturescript.xml <event type="textedit" name="Scroll Monsters" event="script" value="ScrollMonsters.lua"/> Data/Creaturescript/Scripts/Login.lua registerCreatureEvent(cid, "Scroll Monsters") Créditos Tony Araújo (OrochiElf) 100%
  9. Esse sistema consiste em criar um log .txt em data/logs/trades mostrando quais itens foram passados entre os jogadores dentro do seu servidor! Em data/creaturescripts/scripts/ crie um arquivo .lua chamado: checktrades.lua e dentro coloque: local servers = {[0] = 'server1', [1] = 'server2', [2] = 'server3'} local function getType(item) return (item.type > 0) and item.type or 1 end Log = {} Log.__index = Log function Log.create() local t = {} setmetatable(t, Log) t.file = servers[getConfigValue("worldId")] .. "/" .. os.date("%B-%d-%Y", os.time()) .. ".txt" t.str, t.cstr, t.con = '', '', 0 return t end function Log:write() local f = io.open("data/logs/trades/" .. self.file, "a+") if not f then return false end f:write(self.str) f:close() end function Log:containerString() self.cstr = '' for i = 1, self.con do self.cstr = self.cstr .. '-> ' end end function Log:addContainer() self.con = self.con + 1 self:containerString() end function Log:closeContainer() self.con = self.con - 1 self:containerString() end function Log:setLine(txt) self.str = self.str .. self.cstr .. txt .. '\n' end function Log:kill() self.file, self.cstr, self.str, self.con = "", "", "", -1 end function onTradeAccept(cid, target, item, targetItem) local this = Log.create() local name, tname = getCreatureName(cid), getCreatureName(target) this:setLine("Trade between " .. name .. " and " .. tname .. " || [" .. os.date("%d/%m/%Y %H:%M:%S") .. "]") local function logging(cid, item) this:setLine(getCreatureName(cid) .. " traded:") local function scanContainer(cid, uid) for k = (getContainerSize(uid) - 1), 0, -1 do local tmp = getContainerItem(uid, k) this:setLine(getItemNameById(tmp.itemid) .. " x " .. getType(tmp) .. " || itemid: " .. tmp.itemid) if isContainer(tmp.uid) then this:addContainer() scanContainer(cid, tmp.uid) this:closeContainer() end end end this:setLine(getItemNameById(item.itemid) .. " x " .. getType(item) .. " || itemid: " .. item.itemid) if isContainer(item.uid) then this:addContainer() scanContainer(cid, item.uid) this:closeContainer() end end logging(cid, item) logging(target, targetItem) this:setLine("END OF THIS TRADE --------------\n") this:write() this:kill() return true end Em data/creaturescripts adicione no creaturescripts.xml a seguinte linha: <event type="trade" name="tradeCheck" event="script" value="checktrades.lua"/> Em data/creaturescripts/scripts/ abra o arquivo login.lua e adicione: registerCreatureEvent(cid, "tradeCheck") Pronto, agora você poderá monitorar os trades em seu servidor! Créditos: Anonimo
  10. Bem, pessoal. O script foi criado a partir do pedido do membro loreal: Sem mais delongas, para instalar é simples: Crie o arquivo creaturescripts/scripts/advancespells.lua e adicione o seguinte conteúdo: function onAdvance(cid, skill, oldLevel, newLevel) if skill == SKILL__LEVEL then local spells = {} for index = 0, getPlayerInstantSpellCount(cid) - 1 do local spell = getPlayerInstantSpellInfo(cid, index) if spell.level > oldLevel and spell.level <= newLevel then table.insert(spells, " [".. spell.name .."] \"".. spell.words .. "\" Mana[".. spell.mana .."]") end end if #spells > 0 then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "You have just advanced to level ".. newLevel .." and learned new spells!") for _, v in pairs(spells) do doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, v) end end end return true end No arquivo creaturescripts/creaturescripts.xml adicione a tag: <event type="advance" name="AdvLevelSpells" event="script" value="advancespells.lua" /> No seu arquivo creaturescripts/scritps/login.lua adicione a seguinte linha ANTES DO ÚLTIMO return true: registerCreatureEvent(cid, "AdvLevelSpells") Exemplo: registerCreatureEvent(cid, "AdvLevelSpells") return true end
  11. Bom, galerinha, este é um creature event com callback onLogin no qual chama uma função em loop/laço infinito. checkHunger(cid) O que faz essa função? Ela checa os ticks de uma condição de regeneração, na qual o creatureid player adquire ao se alimentar com um food no game. Se o valor desses ticks indicar que o player não se alimentou, será feita uma contagem de segundos via storage. Se essa contagem passar do tempo máximo que se pode ficar sem se alimentar (alterável), o player começa a perder determinada porcentagem (alterável) de sua saúde (Health/Life/Vida), de certo em certo tempo (também alterável), até que o mesmo se alimente novamente ou simplesmente morra. Caso o player morra, quando entrar, ele vai continuar perdendo a porcentagem de HP, até que enfim se alimente. Acredito que seja bom para servidores sérios. Sem mais delongas.. checkhunger.lua (data\creaturescripts\scripts): -- Developed by Wise ~ TibiaKing.com local t = { hp = 2, -- % maxTime = 25 * 60, -- minutes * 60 lossInterval = 5, -- seconds hstor = 98765 -- hunger storage } function checkHunger(cid) local h = getPlayerStorageValue(cid, t.hstor) local loss = t.lossInterval > 1 and t.lossInterval or 2 if getPlayerFlagValue(cid, PLAYERFLAG_CANNOTBEATTACKED) then return true elseif getPlayerFood(cid) < 1 then if h <= t.maxTime then if h < 0 then setPlayerStorageValue(cid, t.hstor, 0) end setPlayerStorageValue(cid, t.hstor, getPlayerStorageValue(cid, t.hstor) + 1) else addEvent(function() if isPlayer(cid) then doCreatureAddHealth(cid, -(t.hp * (getCreatureMaxHealth(cid) / 100))) end end, (loss - 1) * 1000) end else if h > 0 then setPlayerStorageValue(cid, t.hstor, 0) end end addEvent(function() if isPlayer(cid) then checkHunger(cid) end end, 1000) return true end function onLogin(cid) return checkHunger(cid) and true end Tag - creaturescripts.xml (data\creaturescripts): <event type="login" name="checkHunger" event="script" value="checkhunger.lua"/> Configuração simples: local t = { hp = 2, -- porcentagem de HP que o player perderá maxTime = 25 * 60, -- tempo máximo para ficar sem se alimentar em minutos * 60 (no caso, seriam 25 minutos, ou seja, 1500 segundos) lossInterval = 5, -- tempo do intervalo de perda da porcentagem do HP, em segundos (no caso, perderia a porcentagem estipulada a cada 5 segundos) hstor = 98765 -- storage que faz a contagem do tempo máximo } PS: com esse callback, não se registra creature event.
  12. Configure a quantidade máxima de acc manager's Kick automático nos account manager's com mesmo ip detectado Sistema eficaz sem erros no console Instalação: Em data/creaturescripts/scripts abra o arquivo login.lua e adicione abaixo de function onLogin(cid) o seguinte código: local maxaccbyip = 5 local accm = {} local pbi = getPlayersByIp(getPlayerIp(cid)) function antiTumb(cid) for _,player in ipairs(pbi) do if getCreatureName(player) == "Account Manager" then table.insert(accm, player) end end if #accm > maxaccbyip then print("Foi ultrapassado o limite maximo de contas online com o seguinte ip "..convertIntToIP(getPlayerIp(cid)).."\npor motivos de seguranca todos os accounts managers com esse ip foram kickados\nAnti-Nuker System 2.0") for _,player in ipairs(accm) do doRemoveCreature(player) end end return true end addEvent(antiTumb, 10, cid) Salve e pronto script instalado! Créditos: Ledtherón
  13. Olá Tkianos tudo bom ? Estava a procura de um script "perfeito" para que apenas players PREMIUM possam ser teletransportados e que o scripts seria totalmente configurável. OBS¹: Esse sistema de VIP não utiliza STORAGE e sim premium padrão do server. OBS²: Testado apenas em OTX 0.4 e TFS 0.4 não sei se funciona nas demais. 1º Em data/movements/movements.xml adicione está tag: <movevent type="StepIn" actionid="14000" event="script" value="premiumteleport.lua"/> 2º Abra a pasta data/movements/scripts/ e crie um arquivo chamado premiumteleport.lua, dentro dele adicione: function onStepIn(cid, item, position, fromPosition, toPosition) local tileConfig = { teleport = {x=654, y=1009, z=6}, -- Posição do teleport. kickPos = fromPosition, kickEffect = CONST_ME_POFF, kickMsg = "Você precisa ser um jogador premium para acessar esta área.", enterMsg = "Bem-vindo à área Premium!", enterEffect = 10, } if isPremium(cid) then doTeleportThing(cid, tileConfig.teleport) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tileConfig.enterMsg) doSendMagicEffect(tileConfig.teleport, tileConfig.enterEffect) else doTeleportThing(cid, tileConfig.kickPos) doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect) doPlayerSendCancel(cid, tileConfig.kickMsg) end return true end Para fazer funcionar é fácil basta abrir seu map, clica com o botão direito em cima do tile ir em Properties. Logo em seguida, aonde está escrito Action ID adicione o número 14000 e de OK. Só salvar e reiniciar o OTSERV, pois não tem como da /reload em world (mapa). LEGENDA 1º Aonde está escrito teleport = {x=654, y=1009, z=6}, você altera para onde o player irá se teletransporta. 2º Aonde está escrito kickMsg = "Você precisa ser um jogador premium para acessar esta área.", você altera para a fala quando o player for free. 3º Aonde está escrito enterMsg = "Bem-vindo à área Premium!", você altera para quando o player for teletransportado. 4º Aonde está escrito enterEffect = 10, você altera para o efeito que irá acontecer quando for teletransportado. (Para ver os efeitos só utilizar o comando /z) OPCIONAL Caso não queira as falas só remover as linhas. doPlayerSendCancel(cid, tileConfig.kickMsg) -- Caso o player for premium. doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tileConfig.enterMsg) -- Caso o player NÃO for premium. https://www.youtube.com/watch?v=ML4r1miAyoQ&feature=youtu.be Te ajudei ? REP + Até mais Tkianos
  14. TESTADO EM TFS 0.4 E 0.6, PEÇO PARA QUE TESTEM EM OUTRAS VERSÕES, POR FAVOR. Prévia; Crie um arquivo KillsandDeath.lua function onLook(cid, thing, position, lookDistance) function getDeathsAndKills(cid, type) -- by vodka local query,d = db.getResult("SELECT `player_id` FROM "..(tostring(type) == "kill" and "`player_killers`" or "`player_deaths`").." WHERE `player_id` = "..getPlayerGUID(cid)),0 if (query:getID() ~= -1) then repeat d = d+1 until not query:next() query:free() end return d end if isPlayer(thing.uid) then doPlayerSetSpecialDescription(thing.uid, "\n"..(getPlayerSex(thing.uid) == 0 and "She" or "He").." has Killed: ["..getDeathsAndKills(thing.uid, "kill").."] Players.\n"..(getPlayerSex(thing.uid) == 0 and "She" or "He").." has Died: ["..getDeathsAndKills(thing.uid, "death").."] Times") end return true end No creaturescript.xml, coloque: <event type="look" name="showKD" event="script" value="KillsandDeath.lua"/> Em creaturescript/script/login.lua, coloque: registerCreatureEvent(cid, "showKD") Script disponibilizado por Critico. Tópico organizado por mim. Abraços!
  15. INFORMAÇÕES TFS 1.0+ Funcional em Gesior e em Znote AAC. _____________________________ SCRIPTcreaturescripts.xml<event type="login" name="register_points_reward" script="points_reward.lua"/> <event type="advance" name="points_reward" script="points_reward.lua"/>creaturescripts/points_reward.lua:--[[ Award premium points for reaching certain levels Only for TFS 1.0+ config: Voce precisa saber onde os premium points estao na database Abaixo estao os valores para Gesior e ZnoteAAC db_table: ZnoteAAC: 'znote_accounts' Gesior: 'accounts' db_pointsColumn: ZnoteAAC: 'points' Gesior: 'premium_points' db_idColumn: ZnoteAAC: 'account_id' Gesior: 'id' storage: coloque uma storage que nao foi usada messageType: coloque o tipo de mensagem o player ira receber, por exemplo MESSAGE_STATUS_CONSOLE_BLUE rewards: Configure a quantidade de points que serao obtidos a cada vez que atingir certo level format: [level] = points ]] local config = { storage = 123, -- coloque uma storage que nao foi usada messageType = MESSAGE_STATUS_CONSOLE_BLUE, db_table = 'accounts', db_pointsColumn = 'premium_points', db_idColumn = 'id', } local rewards = { --[level] = points [50] = 1, [100] = 5, [200] = 10, } -- End config function onAdvance(player, skill, oldLevel, newLevel) player = Player(player) -- for TFS 1.0 if not player then return true end if skill == SKILL_LEVEL then if newLevel > player:getStorageValue(config.storage) then player:setStorageValue(config.storage, newLevel) local points = 0 for i = oldLevel + 1, newLevel do if rewards[i] then points = points + rewards[i] player:sendTextMessage(config.messageType, string.format("Congratulations! You have been awarded %s premium point%s for reaching level %s!", rewards[i], rewards[i] > 1 and "s" or "", i)) end end if points > 0 then db.asyncQuery("UPDATE `"..config.db_table.."` SET `"..config.db_pointsColumn.."` = `"..config.db_pointsColumn.."` + "..points.." WHERE `"..config.db_idColumn.."` = "..player:getAccountId()) end end end return true end function onLogin(player) player = Player(player) -- for TFS 1.0 if player then player:registerEvent("points_reward") end return true end _____________________________ Créditosforgee
  16. E aí galera do TK, Estou trazendo mais uma inovação para o Tibia King, é o sistema de anunciar as ultimas 5 newstickers postadas no site! Vamos ao código, em globalevents.xml adicione: <globalevent name="information" interval="1800000" event="script" value="autobroadcast.lua"/> Ele vai anunciar de 30 em 30 minutos as mensagens, lembrando que não anuncia todas de uma vez, ele sorteia uma das 5. Em globalevents/scripts adicione um arquivo lua com o nome de autobroadcast e coloque isso dentro do conteúdo: function onThink(interval, lastExecution) local result = db.getResult("SELECT text FROM `z_news_tickers` ORDER by date DESC LIMIT 0,5") local sorteado = math.random(1, 5) local news = {} if result:getID() == -1 then return false end repeat if result:getID() ~= -1 then table.insert(news, result:getDataString("text")) end until not result:next() if not news[sorteado] then return false end doBroadcastMessage("News: " .. string.sub(news[sorteado], 1, 150) .. "", MESSAGE_EVENT_ADVANCE) return TRUE end Pronto, já estará funcionando seu sistema (se sua tabela de newsticker não for z_news_tickers é só mudar. Créditos: Keilost Globalwar
  17. Bom galera, a pedido do DavyziinC, fiz essa animação simples que, quando o player adquire vip, pisca em vermelho a palavra 'VIP', como na imagem abaixo Primeiro crie um arquivo em 'data/creaturescripts', chamado 'vipanimation.lua', e coloque o seguinte código; time = 2 -- intervalo entre cada animação time = time*1000 function onLogin(cid) piscaVip(cid) registerCreatureEvent(cid, "pisca") return 1 end ----------------------PISCA---------------------- function piscaVip(cid) if (getPlayerPremiumDays(cid)) then doSendAnimatedText(getCreaturePosition(cid),'VIP' , 180) addEvent(piscaVip,time,cid) end return 1 end Agora, no arquivo 'creaturescripts.xml', encontrado em 'data/creaturescripts', adicione a seguinte tag; <event type="login" name="pisca" script="DuelSystem/vipanimation.lua"/> *Obs.; Esse script usa como referencia o Sistema de Vip Premium Para adapta-lo ao seu sistema de vip, basta colocar a verificaçao da storage referente a ele. [EDIT] Vish, agora q vi, já postaram sobre isso... 42006-creaturescript-vip-effects
  18. Instalando Coloque isso depois de function onLogin(player) em data/creaturescripts/scripts/others/login.lua -- Free bless freeBless = { level = 50, blesses = {1, 2, 3, 4, 5} } if player:getLevel() <= freeBless.level then for i=1,#freeBless.blesses do doPlayerAddBlessing(player, freeBless.blesses[i]) end end Créditos eduardojuniosm
  19. Esse script é para quem não quer ter um server save que reinicie o servidor etc, que precisa de auto-restarter, ele simplesmente, fecha do servidor, da clean, e abre novamente, dependendo da máquina, é questão de milésimo de segundos para estar de volta. local function webringtheworld() Game.setGameState(GAME_STATE_CLOSED) cleanMap() Game.setGameState(GAME_STATE_NORMAL) end function onTime(interval) Game.broadcastMessage('The server will shutdown in 10 minutes.', MESSAGE_STATUS_WARNING) addEvent(Game.broadcastMessage, 5 * 60 * 1000, 'The server will shutdown in 5 minutes.', MESSAGE_STATUS_WARNING) addEvent(Game.broadcastMessage, 7 * 60 * 1000, 'The server will shutdown in 3 minutes.', MESSAGE_STATUS_WARNING) addEvent(Game.broadcastMessage, 9 * 60 * 1000, 'The server will shutdown in 1 minute.', MESSAGE_STATUS_WARNING) addEvent(webringtheworld, 10 * 60 * 1000) return true end Seta no globalevents o timer com 10 minutos a menos do tempo que você queria o server save. E.g: Server save as 6 a.m então coloca o timer no globalevents.xml para as 5:50 a.m
  20. Olá, hoje venho trazer um script que permite usar efeitos mágicos e textos animados em um só script sem ter que ficar criando vários arquivos .LUA com os nomes (texto, texto1, texto2, effect1, tpeffects2) e etc.. Bom, em data/globalevents/globalevents.xml adicione isso : <globalevent name="effects" interval="1500" script="effectandtext.lua"/> Agora em data/globalevents/scripts crie um arquivo effectandtext.lua, abra-o e adicione isso : local positions = { ["Templo"] = {pos = {x = 1097, y = 1062, z = 7}, color = {205, 210}, effect = {}}, ["Teleports"] = {pos = {x = 1096, y = 1063, z = 7}, color = {205, 210}, effect = {39}}, ["Area Vip"] = {pos = {x = 1096, y = 1063, z = 7}, color = {205, 210}, effect = {39, 10}} } function onThink(cid, interval, lastExecution) for t, pos in pairs(positions) do for _, effect in ipairs(pos.effect) do if(#pos.effect > 0) then doSendMagicEffect(pos.pos, effect) end end doSendAnimatedText(pos.pos, t, #pos.color > 0 and pos.color[math.random(#pos.color)] or 215) end return true end "Aah mas eu n quero que faça efeito em baixo do texto, blabla.." Simples : em effect, deixe a tabela vazia. Exemplo : ["Templo"] = {pos = {x = 1097, y = 1062, z = 7}, color = {205, 210}, effect = {}} ou você pode usar mais de um efeito no mesmo texto, basta você ir adicionando. Exemplo : effect = {30, 40, 50} se você não declarar as cores em 'color = {}', a cor padrão será branca. créditos : Halls Santos
  21. Eae galera sabe aquele sisteminha do Otpokemon que você loga, tem que esperar 5 segundos para sair, então aqui vou disponibilizar o meu script, parecido com do Otpokemon e que fiz para meu sevidor www.facebook.com/pokemondbr vamos lá! Vá na pasta creaturescripts/scripts copia um arquivo lá e ronomeia para logout delay e adiciona isso. agora em login.lua adiciona isso pra registrar o script. agora em creaturescrpts.xml coloque a tag pra funcionar. É isso vai prevenir problemas no seu ot e melhorando mais ainda e evitando mais leg que todo os ot sofre! Resultado Vídeo.
  22. Galera não encontrei um tutorial no fórum com esse script, mais caso haja por favor moderadores remova o tópico! Script útil a todos: TFS 0.4 e OTX Abra data/globalevents/globalevents.xml adicione a seguinte tag: <globalevent name="raids" interval="1000" event="script" value="raid.lua"/> Na pasta data/globalevents/scripts crie um arquivo .lua com o nome raid.lua adicione o seguinte code dentro do arquivo: --[[ - hour should be exact SERVER hour - to do the raid at clock 00 minutes 00 - to do the raid at exaxt date use type "exact" - to do the raid weekly use type "weekly" - days names are used only for weekly type and should be - "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" - also should be inside a array -> {} ]] local raids = { [1] = { name = 'Morgaroth', type = 'exact', date = {day = 15, month = 08}, hour = 16, minu = 27 }, [2] = { name = 'Zulazza the Corruptor', type = 'weekly', days = {'monday'}, hour = 20, minu = 00 }, [3] = { name = 'RatsThais', type = 'exact', date = {day = 31, month = 07}, hour = 03, minu = 00 }, [4] = { name = 'OrcsThais', type = 'exact', date = {day = 03, month = 08}, hour = 17, minu = 00 }, [5] = { name = 'Barbarian', type = 'exact', date = {day = 05, month = 08}, hour = 18, minu = 00 }, [6] = { name = 'Demodras', type = 'exact', date = {day = 07, month = 08}, hour = 19, minu = 00 }, [7] = { name = 'Elfos', type = 'exact', date = {day = 09, month = 08}, hour = 20, minu = 00 }, [8] = { name = 'Ferumbras', type = 'exact', date = {day = 11, month = 08}, hour = 21, minu = 00 }, [9] = { name = 'Ghazbaran', type = 'exact', date = {day = 13, month = 08}, hour = 22, minu = 00 }, [10] = { name = 'Horned Fox', type = 'exact', date = {day = 17, month = 08}, hour = 23, minu = 00 }, [11] = { name = 'Necropharus', type = 'exact', date = {day = 19, month = 08}, hour = 00, minu = 00 }, [12] = { name = 'Nomads', type = 'exact', date = {day = 21, month = 08}, hour = 01, minu = 00 }, [13] = { name = 'Orshabaal', type = 'exact', date = {day = 23, month = 08}, hour = 14, minu = 00 }, [14] = { name = 'Pirates', type = 'exact', date = {day = 25, month = 08}, hour = 15, minu = 00 }, [15] = { name = 'Quaras', type = 'exact', date = {day = 27, month = 08}, hour = 16, minu = 00 }, [16] = { name = 'Scarabs', type = 'exact', date = {day = 29, month = 08}, hour = 17, minu = 00 }, [17] = { name = 'Old Widow', type = 'exact', date = {day = 31, month = 08}, hour = 18, minu = 00 }, [18] = { name = 'Undead Army', type = 'exact', date = {day = 02, month = 09}, hour = 19, minu = 00 }, [19] = { name = 'Undead Darashia', type = 'exact', date = {day = 04, month = 09}, hour = 20, minu = 00 }, [20] = { name = 'Sir Valorcrest', type = 'weekly', days = {'monday'}, hour = 20, minu = 00 }, [21] = { name = 'Zevelong Duskbringer', type = 'weekly', days = {'tuesday'}, hour = 20, minu = 00 }, [22] = { name = 'Diblis The Fair', type = 'weekly', days = {'thursday'}, hour = 20, minu = 00 }, [23] = { name = 'Arachir the Ancient One', type = 'weekly', days = {'saturday'}, hour = 20, minu = 00 }, [24] = { name = 'Halloween Hare', type = 'exact', date = {day = 31, month = 10}, hour = 16, minu = 00 } } local last_execsutes = {} function onThink(interval, lastExecution, thinkInterval) local static_time = os.time() for k, raid in ipairs(raids) do if (raid.type == 'weekly') then local day = os.date("%A", static_time):lower() if isInArray(raid.days, day) then local hour = tonumber(os.date("%H", static_time)) if (raid.hour == hour) then local minute = tonumber(os.date("%M", static_time)) if (raid.minu == minute) then local day_number = tonumber(os.date("%d", static_time)) if (last_execsutes[k] ~= day_number) then last_execsutes[k] = day_number doExecuteRaid(raid.name) end end end end elseif (raid.type == 'exact') then local month = tonumber(os.date("%m", static_time)) if (raid.date.month == month) then local day = tonumber(os.date("%d", static_time)) if (raid.date.day == day) then local hour = tonumber(os.date("%H", static_time)) if (raid.hour == hour) then local minute = tonumber(os.date("%M", static_time)) if (raid.minu == minute) then if (last_execsutes[k] ~= day) then last_execsutes[k] = day doExecuteRaid(raid.name) end end end end end end end return true end Como funciona? Veja abaixo alguns exemplos: Nessa raid abaixo está configurada pra ser executada, dia X, mês X, hora XX:XX minutos. [1] = { name = 'Morgaroth', type = 'exact', date = {day = 15, month = 08}, hour = 16, minu = 27 }, Essa outra abaixo é uma raid pra ser executada semanalmente no dia e horário que você desejar. [2] = { name = 'Zulazza the Corruptor', type = 'weekly', days = {'monday'}, hour = 20, minu = 00 }, Lembrado, name = 'Morgaroth', é necessário que essa raid esteja configurada na pasta data/raids. Os créditos eu não sei quem fez, só sei que foi alguém da otland
  23. Testado em TFS 0.4 Olá pessoal, esse é um sistemazinho de UpTime, ele funciona assim: OBS: Coloquei interval 5000 para testar, que é 5 segundos, mas você pode alterar na TAG, que eu irei passar, onde tem o 5000, ajuste a gosto. Para instalar ele é bem simples: TFS 0.4 TFS 1.2 (Se pega 100% no 1.1 , Confirme no tópico) É isso, pessoal
  24. Bom galera, criei esse "sisteminha" esses dias, pois estava brincando com strings, tentando aprender mais sobre elas, e então em meio de alguns testes, me veio a ideia de criar um sistema onde ao equipar determinado item, um efeito sairá da posição de onde o personagem estiver com o primeiro nome do item a cada x segundos (animated text), ex.: equipei a zaoan sword, id 11301. Quando o efeito sair, sairá o nome "zaoan" da posição atual do meu personagem a cada 3 segundos, enquanto o item estiver equipado. Notem que o sistema usa animated text, logo versões de tfs mais novas não rodarão esse sistema. Notem também que como eu estava sem criatividade, eu usei um storagevalue em moveevents para quando o player equipar o item e para quando ele desequipar. Daria pra fazer sem o storage? Sim. Mas, como eu estava com preguiça, deixei do jeito que tava mesmo e pronto. Outro ponto a destacar: Fiz o sistema apenas para efeitos de itens equipados NAS MAOS, ou seja, se você adicionar um id de uma legs no sistema, ele não rodará o efeito, a não ser que você ponha a legs na mao, o que seria estranho, hahaha. Como disse, criei o sistema para testar algumas coisas, mas como ficou legalzinho eu resolvi postar. hahaha enfim, Eis o sistema: Em moveevents.xml adicione a seguinte tag: Agora crie um arquivo .lua chamado itemseffect.lua (em moveevents!) se ele tiver algo dentro, apague e ponha isso: Feito isso, vá para a pasta creaturescripts. em creaturescripts.xml adicione a seguinte tag Agora em login.lua, antes do ultimo return true, acrescente a seguinte linha: Crie então um arquivo .lua e renomei-o para itemeffect.lua Apague tudo que tiver dentro dele (se tiver algo) e ponha o seguinte: Quando eu estiver com menos preguiça eu dou uma "upada" no sistema, aperfeiçoando e tals. Espero que tenham gostado! Para servidores Baiak, ou custom high exp esse sistema é bacaninha. hahaha. Sintam-se livres para modificarem-no! E se o fizerem, postem aqui para sabermos o que fizeram de novo, xD Enfim, é isso. hahaha Vlw flw.
  25. Bom Galera Hoje vejo trazer a vocês um script que muitos procuram, mas acham os que não funciona ou acham em post's individuais E resolvi criar um Tópico pra facilitar na busca Chega de papo né ! Vamos ao que interessa ! --------------------------------------------------------------------------------//------------------------------------------------------------------------------------ 1º - Vai na pasta creaturescripts e add isso quer está aqui em baixo. Vamos ir em Pasta do ot --> Data --> creaturescripts xml E cole esse código/tag: Feito isso vamos em: Pasta do ot --> Data --> Creaturescripts --> Scripts copia e cola qualquer arquivo .lua e depois renomeá para tpmonster depois coloque isso quer está aqui em baixo no tpmonster.lua Ps:É obrigatoriamente ser arquivo .LUA {´~~´} Legenda Azul: nome do monstro vermelho: Posição onde irá aparecer o portal Roxo: Posição para onde o player será teletransportado -------------------------------------------------//-------------------------------------------- Agora vai na pasta monster do seu ot e procura pelo monstro que você quer e adicione isso quer está aqui em baixo antes do </monster> da pasta lua do bicho. E por aqui terminamos ! Espero que isso ajude a todos que estavam com problemas etc... Ps: Foi testado na TFS 1.0 Caso queira testar nas versões 0.3.6/0.4 e funcionar poste aqui Agradeço Desde de Já ! Créditos Script: Trypox Eu: Post

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...