Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 05/25/15 em todas áreas
-
[Encerrado][Oportunidade] Pokemon Skyfall / Recrutamento
Luga03 e um outro reagiu a Gabrieltxu por um tópico no fórum
Olá comunidade do Xtibia , a um longo tempo eu e minha equipe está em desenvolvimento de um projeto sério , ja passamos por muita coisa até chegar no atual pokemon skyfall , em tudo a equipe está carente de alguns profissionais em algumas áreas , e venho com o intuito desse tópico atraz dessas novas pessoas , sem mais delongas se quiserem saber mais sobre o servidor visite a pagina do facebook que estará no final do tópico , ou para mais informações favor entrar em contato comigo .... --------------------------------------------------- Vagas pendentes a serem preenchidas : 1 - Design 1 - WebDesign / WebDeveloper 1 - Mapper 1 - Spriter ---------------------------------------------------- Curriculum a ser preenchido : Nome: Idade: Tempo que atua na área interessada: Tempo que vai usar para se dedicar a equipe: Contato (Pode ser via PM) : Algum trabalho para mostrar (Pode ser via PM): ----------------------------------------------------- Obrigado para quem continuou até aqui para ler tudo , obrigado novamente pela atenção , Pokemon Skyfall agradeçe . para ir para o facebook do servidor clique na imagem logo abaixo2 pontos -
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) local talkState = {} local rtnt = {} 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 npcHandler:setMessage(MESSAGE_GREET, "Greetings |PLAYERNAME|. I need your help and I'll reward you with nice addons if you help me! Just say {addons} or {help} if you don't know what to do.") addoninfo = { ['first citizen addon'] = {cost = 0, items = {{5878,20}}, outfit_female = 136, outfit_male = 128, addon = 1, storageID = 10042}, ['second citizen addon'] = {cost = 0, items = {{5890,50}, {5902,25}, {2480,1}}, outfit_female = 136, outfit_male = 128, addon = 2, storageID = 10043}, ['first hunter addon'] = {cost = 0, items = {{5876,50}, {5948,50}, {5891,5}, {5887,1}, {5889,1}, {5888,1}}, outfit_female = 137, outfit_male = 129, addon = 1, storageID = 10044}, ['second hunter addon'] = {cost = 0, items = {{5875,1}}, outfit_female = 137, outfit_male = 129, addon = 2, storageID = 10045}, ['first knight addon'] = {cost = 0, items = {{5880,50}, {5892,1}}, outfit_female = 139, outfit_male = 131, addon = 1, storageID = 10046}, ['second knight addon'] = {cost = 0, items = {{5893,50}, {11422,1}, {5885,1}, {5887,1}}, outfit_female = 139, outfit_male = 131, addon = 2, storageID = 10047}, ['first mage addon'] = {cost = 0, items = {{2182,1}, {2186,1}, {2185,1}, {8911,1}, {2181,1}, {2183,1}, {2190,1}, {2191,1}, {2188,1}, {8921,1}, {2189,1}, {2187,1}, {2392,30}, {5809,1}, {2193,20}}, outfit_female = 138, outfit_male = 130, addon = 1, storageID = 10048}, ['second mage addon'] = {cost = 0, items = {{5903,1}}, outfit_female = 138, outfit_male = 130, addon = 2, storageID = 10049}, ['first summoner addon'] = {cost = 0, items = {{5878,20}}, outfit_female = 141, outfit_male = 133, addon = 1, storageID = 10050}, ['second summoner addon'] = {cost = 0, items = {{5894,35}, {5911,20}, {5883,40}, {5922,35}, {5879,10}, {5881,30}, {5882,40}, {2392,3}, {5905,30}}, outfit_female = 141, outfit_male = 133, addon = 2, storageID = 10051}, ['first barbarian addon'] = {cost = 0, items = {{5884,1}, {5885,1}, {5910,25}, {5911,25}, {5886,10}}, outfit_female = 147, outfit_male = 143, addon = 1, storageID = 10011}, ['second barbarian addon'] = {cost = 0, items = {{5880,25}, {5892,1}, {5893,25}, {5876,25}}, outfit_female = 147, outfit_male = 143, addon = 2, storageID = 10012}, ['first druid addon'] = {cost = 0, items = {{5896,20}, {5897,20}}, outfit_female = 148, outfit_male = 144, addon = 1, storageID = 10013}, ['second druid addon'] = {cost = 0, items = {{5906,100}}, outfit_female = 148, outfit_male = 144, addon = 2, storageID = 10014}, ['first nobleman addon'] = {cost = 300000, items = {}, outfit_female = 140, outfit_male = 132, addon = 1, storageID = 10015}, ['second nobleman addon'] = {cost = 300000, items = {}, outfit_female = 140, outfit_male = 132, addon = 2, storageID = 10016}, ['first oriental addon'] = {cost = 0, items = {{5945,1}}, outfit_female = 150, outfit_male = 146, addon = 1, storageID = 10017}, ['second oriental addon'] = {cost = 0, items = {{5883,30}, {5895,30}, {5891,2}, {5912,30}}, outfit_female = 150, outfit_male = 146, addon = 2, storageID = 10018}, ['first warrior addon'] = {cost = 0, items = {{5925,40}, {5899,40}, {5884,1}, {5919,1}}, outfit_female = 142, outfit_male = 134, addon = 1, storageID = 10019}, ['second warrior addon'] = {cost = 0, items = {{5880,40}, {5887,1}}, outfit_female = 142, outfit_male = 134, addon = 2, storageID = 10020}, ['first wizard addon'] = {cost = 0, items = {{2536,1}, {2492,1}, {2488,1}, {2123,1}}, outfit_female = 149, outfit_male = 145, addon = 1, storageID = 10021}, ['second wizard addon'] = {cost = 0, items = {{5922,40}}, outfit_female = 149, outfit_male = 145, addon = 2, storageID = 10022}, ['first assassin addon'] = {cost = 0, items = {{5912,20}, {5910,20}, {5911,20}, {5913,20}, {5914,20}, {5909,20}, {5886,10}}, outfit_female = 156, outfit_male = 152, addon = 1, storageID = 10023}, ['second assassin addon'] = {cost = 0, items = {{5804,1}, {5930,10}}, outfit_female = 156, outfit_male = 152, addon = 2, storageID = 10024}, ['first beggar addon'] = {cost = 0, items = {{5878,30}, {5921,20}, {5913,10}, {5894,10}}, outfit_female = 157, outfit_male = 153, addon = 1, storageID = 10025}, ['second beggar addon'] = {cost = 0, items = {{5883,30}, {2160,2}}, outfit_female = 157, outfit_male = 153, addon = 2, storageID = 10026}, ['first pirate addon'] = {cost = 0, items = {{6098,30}, {6126,30}, {6097,30}}, outfit_female = 155, outfit_male = 151, addon = 1, storageID = 10027}, ['second pirate addon'] = {cost = 0, items = {{6101,1}, {6102,1}, {6100,1}, {6099,1}}, outfit_female = 155, outfit_male = 151, addon = 2, storageID = 10028}, ['first shaman addon'] = {cost = 0, items = {{5810,5}, {3955,5}, {5015,1}}, outfit_female = 158, outfit_male = 154, addon = 1, storageID = 10029}, ['second shaman addon'] = {cost = 0, items = {{3966,5}, {3967,5}}, outfit_female = 158, outfit_male = 154, addon = 2, storageID = 10030}, ['first norseman addon'] = {cost = 0, items = {{7290,5}}, outfit_female = 252, outfit_male = 251, addon = 1, storageID = 10031}, ['second norseman addon'] = {cost = 0, items = {{7290,10}}, outfit_female = 252, outfit_male = 251, addon = 2, storageID = 10032}, ['first jester addon'] = {cost = 0, items = {{5912,20}, {5913,20}, {5914,20}, {5909,20}}, outfit_female = 270, outfit_male = 273, addon = 1, storageID = 10033}, ['second jester addon'] = {cost = 0, items = {{5912,20}, {5910,20}, {5911,20}, {5912,20}}, outfit_female = 270, outfit_male = 273, addon = 2, storageID = 10034}, ['first demonhunter addon'] = {cost = 0, items = {{5905,30}, {5906,40}, {5954,20}, {6500,50}}, outfit_female = 288, outfit_male = 289, addon = 1, storageID = 10035}, ['second demonhunter addon'] = {cost = 0, items = {{5906,50}, {6500,200}}, outfit_female = 288, outfit_male = 289, addon = 2, storageID = 10036}, ['first nightmare addon'] = {cost = 0, items = {{6500,750}}, outfit_female = 269, outfit_male = 268, addon = 1, storageID = 10037}, ['second nightmare addon'] = {cost = 0, items = {{6500,750}}, outfit_female = 269, outfit_male = 268, addon = 2, storageID = 10038}, ['first brotherhood addon'] = {cost = 0, items = {{6500,750}}, outfit_female = 279, outfit_male = 278, addon = 1, storageID = 10039}, ['second brotherhood addon'] = {cost = 0, items = {{6500,750}}, outfit_female = 279, outfit_male = 278, addon = 2, storageID = 10040}, ['first yalaharian addon'] = {cost = 0, items = {{9955,1}}, outfit_female = 324, outfit_male = 325, addon = 1, storageID = 10041}, ['second yalaharian addon'] = {cost = 0, items = {{9955,1}}, outfit_female = 324, outfit_male = 325, addon = 2, storageID = 10041} -- next storage 10052 -- next storage 10052 -- next storage 10052 -- next storage 10052 -- next storage 10052 -- next storage 10052 -- next storage 10052 -- } local o = {'citizen', 'hunter', 'knight', 'mage', 'nobleman', 'summoner', 'warrior', 'barbarian', 'druid', 'wizard', 'oriental', 'pirate', 'assassin', 'beggar', 'shaman', 'norseman', 'nighmare', 'jester', 'yalaharian', 'brotherhood'} function creatureSayCallback(cid, type, msg) local talkUser = cid if(not npcHandler:isFocused(cid)) then return false end if addoninfo[msg] ~= nil then if (getPlayerStorageValue(cid, addoninfo[msg].storageID) ~= -1) then npcHandler:say('You already have this addon!', cid) npcHandler:resetNpc() else local itemsTable = addoninfo[msg].items local items_list = '' if table.maxn(itemsTable) > 0 then for i = 1, table.maxn(itemsTable) do local item = itemsTable items_list = items_list .. item[2] .. ' ' .. ItemType(item[1]):getName() if i ~= table.maxn(itemsTable) then items_list = items_list .. ', ' end end end local text = '' if (addoninfo[msg].cost > 0) then text = addoninfo[msg].cost .. ' gp' elseif table.maxn(addoninfo[msg].items) then text = items_list elseif (addoninfo[msg].cost > 0) and table.maxn(addoninfo[msg].items) then text = items_list .. ' and ' .. addoninfo[msg].cost .. ' gp' end npcHandler:say('For ' .. msg .. ' you will need ' .. text .. '. Do you have it all with you?', cid) rtnt[talkUser] = msg talkState[talkUser] = addoninfo[msg].storageID return true end elseif msgcontains(msg, "yes") then if (talkState[talkUser] > 10010 and talkState[talkUser] < 10100) then local items_number = 0 if table.maxn(addoninfo[rtnt[talkUser]].items) > 0 then for i = 1, table.maxn(addoninfo[rtnt[talkUser]].items) do local item = addoninfo[rtnt[talkUser]].items if (getPlayerItemCount(cid,item[1]) >= item[2]) then items_number = items_number + 1 end end end if(getPlayerMoney(cid) >= addoninfo[rtnt[talkUser]].cost) and (items_number == table.maxn(addoninfo[rtnt[talkUser]].items)) then doPlayerRemoveMoney(cid, addoninfo[rtnt[talkUser]].cost) if table.maxn(addoninfo[rtnt[talkUser]].items) > 0 then for i = 1, table.maxn(addoninfo[rtnt[talkUser]].items) do local item = addoninfo[rtnt[talkUser]].items doPlayerRemoveItem(cid,item[1],item[2]) end end doPlayerAddOutfit(cid, addoninfo[rtnt[talkUser]].outfit_male, addoninfo[rtnt[talkUser]].addon) doPlayerAddOutfit(cid, addoninfo[rtnt[talkUser]].outfit_female, addoninfo[rtnt[talkUser]].addon) setPlayerStorageValue(cid,addoninfo[rtnt[talkUser]].storageID,1) npcHandler:say('Here you are.', cid) else npcHandler:say('You do not have needed items!', cid) end rtnt[talkUser] = nil talkState[talkUser] = 0 npcHandler:resetNpc() return true end elseif msgcontains(msg, "addon") then npcHandler:say('I can give you addons for {' .. table.concat(o, "}, {") .. '} outfits.', cid) rtnt[talkUser] = nil talkState[talkUser] = 0 npcHandler:resetNpc() return true elseif msgcontains(msg, "help") then npcHandler:say('To buy the first addon say \'first NAME addon\', for the second addon say \'second NAME addon\'.', cid) rtnt[talkUser] = nil talkState[talkUser] = 0 npcHandler:resetNpc() return true else if talkState[talkUser] ~= nil then if talkState[talkUser] > 0 then npcHandler:say('Come back when you get these items.', cid) rtnt[talkUser] = nil talkState[talkUser] = 0 npcHandler:resetNpc() return true end end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())1 ponto
-
Akatsuki System + Heart System Introdução - tava vendo muitas pessoas precisando desses dois sistema então resolvi criar o meu próprio. - Não ta igual ao do NTOUltimate pois nunca joguei esse servidor. O que tem no Akatsuki system 1.0? - Verifica se sua vocação pode fazer parte da akatsuki - Verificar sua vocação e adiciona outra diferente? - Troca de outfit dependendo da sua vocação - Da bonus de hp e mp - Adicionar o nome [Akatsuki] no seu nick exemplo [Akatsuki] RigBy - Aplica uma storage quando você entra pra akatsuki (com isso da pra você fazer bonusXp) - storage é 85798723243 valor 1 O que tem no Heart System - Ele só te da o coração se você for acima de tal level - adiciona o nome da pessoa no coração Vamos la a script Npc.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="[Akatsuki] Tobi" script="data/npc/scripts/AkatsukiSystem.lua" walkinterval="2000" speed="0" floorchange="0"> <health now="100" max="100"/> <look type="128" head="0" body="0" legs="0" feet="0" addons="0"/> <parameters> <parameter key="message_greet" value="Hello You who joins {akatsuki}?"/> </parameters> </npc> Npc/Script/AkatsukiSystem.lua -- Do not remove the credits -- -- [NPC] Akatsuki System -- -- developed by Rigby -- -- Especially for the Xtibia.com -- 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 local level = 1 -- Level preciso pra entra para akatsuki local itemid = 5943 -- id do coração local quantidade = 6 -- quantos hearts e preciso local bonushp = 300000 -- quanto de bonus de life vai ganha local bonusmp = 30000 -- quanto de bonus de mana vai ganha local config = { --[Vocation] = ( Nova Vocation, New Outfit ) [1] = { 5, 128}, [2] = { 6, 129}, [3] = { 7, 130}, [4] = { 8, 131}, } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'akatsuki') then if getPlayerVocation(cid) ~= config then if getPlayerStorageValue(cid, 85798723243) == -1 then if getPlayerLevel(cid) >= level then selfSay('Are you sure you want to join the Akatsuki?.', cid) talkState[talkUser] = 1 else selfSay('You there and very weak, vain talk to you when you have level '..level..'.', cid) end else selfSay('You already part of the akatsuki!', cid) end else selfSay('Do not need you now!', cid) end end if talkState[talkUser] == 1 and msgcontains(msg, 'yes') then selfSay('To prove their loyalty, you have to bring '..quantidade..' {hearts}.', cid) talkState[talkUser] = 2 end if talkState[talkUser] == 2 and msgcontains(msg, 'hearts') then if getPlayerItemCount(cid, 5943) >= 6 then local voc = config[getPlayerVocation(cid)] doPlayerSetVocation(cid, voc[1]) local outfit = {lookType = voc[2]} doCreatureChangeOutfit(cid, outfit) setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+bonushp) setCreatureMaxMana(cid, getCreatureMaxMana(cid)+bonusmp) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) doPlayerRemoveItem(cid, 5943, 6) doCreatureAddMana(cid, getCreatureMaxMana(cid)) setPlayerStorageValue(cid,85798723243,1) db.executeQuery("UPDATE `players` SET `name` = '[Akatsuki] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";") addEvent(doRemoveCreature, 5*1000, cid, true) doPlayerSendTextMessage(cid,25,'You will be kicked in 5 seconds to enter the akatsuki!') selfSay('Congratulations now you are part of akatsuki.', cid) talkState[talkUser] = 0 else selfSay('No use to fool me, you do not have '..quantidade..' hearts, goes behind.', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Heart System Creaturescript/script/heartsystem -- Do not remove the credits -- -- [CREATURESCRIPT] Heart System -- -- developed by Rigby -- -- Especially for the Xtibia.com -- function onKill(cid, target, lastHit) local item = 5943 -- id do coração local level = 300 -- level necessário para tira o coração if isPlayer(cid) and isPlayer(target) then if getPlayerLevel(target) >= level then local add = doPlayerAddItem(cid, item, 1) doItemSetAttribute(add, "description","Esse coração é de "..getPlayerName(target).." que foi morto no level "..getPlayerLevel(target).." por "..getPlayerName(cid)..".") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce Mato " ..getPlayerName(target).. ".") doSendMagicEffect(getPlayerPosition(cid),12) end end return true end Creaturescript.xml Tag <event type="kill" name="HeartSys" event="script" value="heartsystem.lua"/> Podem comenta duvidas, opiniões ou melhoramento para que haja a versão 2.01 ponto
-
[TFS 1.1] Monster Tasks
Mendiguinho91 reagiu a Furabio por um tópico no fórum
Esse npc permite escolher qual task o player irá fazer : Adonai.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="Adonai" script="tasks.lua" walkinterval="2000" speed ="0" floorchange="0"> <health now="100" max="100"/> <look type="433" head="58" body="113" legs="50" feet="78" addons="1" mount="688"/> </npc> tasks.lua local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local xmsg = {} 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 local storage = 62003 local monsters = { ["Dragons"] = {storage = 5010, mstorage = 19000, amount = 10, exp = 5000, items = {{id = 2157, count = 1}, {id = 2160, count = 3}}}, ["Dragon Lords"] = {storage = 5011, mstorage = 19001, amount = 10, exp = 10000, items = {{id = 2492, count = 1}, {id = 2160, count = 5}}}, ["Hydras"] = {storage = 5012, mstorage = 19002, amount = 10, exp = 18000, items = {{id = 2195, count = 1}, {id = 2157, count = 8}}}, ["Demons"] = {storage = 5013, mstorage = 19003, amount = 10, exp = 20000, items = {{id = 2520, count = 1}, {id = 2160, count = 10}}} } local function getItemsFromTable(itemtable) local text = "" for v = 1, #itemtable do count, info = itemtable[v].count, ItemType(itemtable[v].id) local ret = ", " if v == 1 then ret = "" elseif v == #itemtable then ret = " and " end text = text .. ret text = text .. (count > 1 and count or info:getArticle()).." "..(count > 1 and info:getPluralName() or info:getName()) end return text end local function Cptl(f, r) return f:upper()..r:lower() end function creatureSayCallback(cid, type, msg) local player, cmsg = Player(cid), msg:gsub("(%a)([%w_']*)", Cptl) if not npcHandler:isFocused(cid) then if msg == "hi" or msg == "hello" then npcHandler:addFocus(cid) if player:getStorageValue(storage) == -1 then local text, n = "", 0 for k, x in pairs(monsters) do if player:getStorageValue(x.mstorage) < x.amount then n = n + 1 text = text .. ", " text = text .. ""..x.amount.." {"..k.."}" end end if n > 1 then npcHandler:say("I have several tasks for you to kill monsters"..text..", which one do you choose? I can also show you a {list} with rewards and you can {stop} a task if you want.", cid) npcHandler.topic[cid] = 1 xmsg[cid] = msg elseif n == 1 then npcHandler:say("I have one last task for you"..text..".", cid) npcHandler.topic[cid] = 1 else npcHandler:say("You already did all tasks, I have nothing for you to do anymore, good job though.", cid) end elseif player:getStorageValue(storage) == 1 then for k, x in pairs(monsters) do if player:getStorageValue(x.storage) == 1 then npcHandler:say("Did you kill "..x.amount.." "..k.."?", cid) npcHandler.topic[cid] = 2 xmsg[cid] = k end end end else return false end elseif monsters[cmsg] and npcHandler.topic[cid] == 1 then if player:getStorageValue(monsters[cmsg].storage) == -1 then npcHandler:say("Good luck, come back when you killed "..monsters[cmsg].amount.." "..cmsg..".", cid) player:setStorageValue(storage, 1) player:setStorageValue(monsters[cmsg].storage, 1) else npcHandler:say("You already did the "..cmsg.." mission.", cid) end npcHandler.topic[cid] = 0 elseif msgcontains(msg, "yes") and npcHandler.topic[cid] == 2 then local x = monsters[xmsg[cid]] if player:getStorageValue(x.mstorage) >= x.amount then npcHandler:say("Good job, here is your reward, "..getItemsFromTable(x.items)..".", cid) for g = 1, #x.items do player:addItem(x.items[g].id, x.items[g].count) end player:addExperience(x.exp) player:setStorageValue(x.storage, 2) player:setStorageValue(storage, -1) npcHandler.topic[cid] = 3 else npcHandler:say("You didn't kill them all, you still need to kill "..x.amount -(player:getStorageValue(x.mstorage) + 1).." "..xmsg[cid]..".", cid) end elseif msgcontains(msg, "task") and npcHandler.topic[cid] == 3 then local text, n = "", 0 for k, x in pairs(monsters) do if player:getStorageValue(x.mstorage) < x.amount then n = n + 1 text = text .. (n == 1 and "" or ", ") text = text .. "{"..k.."}" end end if text ~= "" then npcHandler:say("Want to do another task? You can choose "..text..".", cid) npcHandler.topic[cid] = 1 else npcHandler:say("You already did all tasks.", cid) end elseif msgcontains(msg, "no") and npcHandler.topic[cid] == 1 then npcHandler:say("Ok then.", cid) npcHandler.topic[cid] = 0 elseif msgcontains(msg, "stop") then local text, n = "", 0 for k, x in pairs(monsters) do if player:getStorageValue(x.mstorage) < x.amount then n = n + 1 text = text .. (n == 1 and "" or ", ") text = text .. "{"..k.."}" if player:getStorageValue(x.storage) == 1 then player:setStorageValue(x.storage, -1) end end end if player:getStorageValue(storage) == 1 then npcHandler:say("Alright, let me know if you want to continue an other task, you can still choose "..text..".", cid) else npcHandler:say("You didn't start any new task yet, if you want to start one, you can choose "..text..".", cid) end player:setStorageValue(storage, -1) npcHandler.topic[cid] = 1 elseif msgcontains(msg, "list") then local text = "Tasks\n\n" for k, x in pairs(monsters) do if player:getStorageValue(x.mstorage) < x.amount then text = text ..k .." ["..(player:getStorageValue(x.mstorage) + 1).."/"..x.amount.."]:\n Rewards:\n "..getItemsFromTable(x.items).."\n "..x.exp.." experience \n\n" else text = text .. k .." [DONE]\n" end end player:showTextDialog(1949, "" .. text) npcHandler:say("Here you are.", cid) elseif msgcontains(msg, "bye") then npcHandler:say("Bye.", cid) npcHandler:releaseFocus(cid) else npcHandler:say("What?", cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) creaturescripts.xml <event type="kill" name="Tasks" script="killtasks.lua"/> login.lua player:registerEvent("Tasks") killtasks.lua local config = { ['dragon'] = {amount = 10, storage = 19000, startstorage = 5010, startvalue = 1}, ['dragon lord'] = {amount = 10, storage = 19001, startstorage = 5011, startvalue = 1}, ['hydra'] = {amount = 10, storage = 19002, startstorage = 5012, startvalue = 1}, ['demon'] = {amount = 10, storage = 19003, startstorage = 5013, startvalue = 1} } function onKill(player, target) local monster = config[target:getName():lower()] if target:isPlayer() or not monster or target:getMaster() then return true end local stor = player:getStorageValue(monster.storage)+1 if stor < monster.amount and player:getStorageValue(monster.startstorage) >= monster.startvalue then player:setStorageValue(monster.storage, stor) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'Task message: '..(stor +1)..' of '..monster.amount..' '..target:getName()..'s killed.') end if (stor +1) == monster.amount then player:sendTextMessage(MESSAGE_INFO_DESCR, 'Congratulations, you have killed '..(stor +1)..' '..target:getName()..'s and completed the '..target:getName()..'s mission.') player:setStorageValue(monster.storage, stor +1) end return true end ___________________________________________________________________________________________ Como funciona ? O NPC oferece-lhe várias task, você pode escolher qual você deseja fazer. Se você não matar todos os monstros, o NPC irá dizer-lhe quantos você ainda tem que matar. Você pode para ver a lista de recompensa e as tasks que você já fez. Você pode parar com as tasks e ir fazer outra e depois continuar a antiga. Ao terminar as task elas não serão mais mencionados pelo NPC mas será mostrado como terminado na lista. Quando terminar as task o npc, dirá que todas foram completadas. Créditos : Limos1 ponto -
Basicamente é um sistema onde permite chuva e solte raios em determinado local do mapa, use sua criatividade ao usar o sistema. Features : Chuva só nos jogadores, para economizar memória do servidor, em vez de enviar todo o mapa. Se não tiver um telhado, vai enviar o efeito dentro do local mesmo. Assim, se você estiver sob um teto, vai enviar para fora do local. Quando água bate no chão, envia o efeito de splash. Efeito do trovão causa dano. Em global.lua adicione : weatherConfig = { groundEffect = CONST_ME_LOSEENERGY, fallEffect = CONST_ANI_ICE, thunderEffect = true, minDMG = 5, maxDMG = 10 } function Player.sendWeatherEffect(self, groundEffect, fallEffect, thunderEffect) local position, random = self:getPosition(), math.random position.x = position.x + random(-4, 4) position.y = position.y + random(-4, 4) local fromPosition = Position(position.x + 1, position.y, position.z) fromPosition.x = position.x - 7 fromPosition.y = position.y - 5 local tile, getGround for Z = 1, 7 do fromPosition.z = Z position.z = Z tile = Tile(position) if tile then -- If there is a tile, stop checking floors fromPosition:sendDistanceEffect(position, fallEffect) position:sendMagicEffect(groundEffect, self) getGround = tile:getGround() if getGround and ItemType(getGround:getId()):getFluidSource() == 1 then position:sendMagicEffect(CONST_ME_WATERSPLASH, self) end break end end if thunderEffect and tile then if random(2) == 1 then local topCreature = tile:getTopCreature() if topCreature and topCreature:isPlayer() then position:sendMagicEffect(CONST_ME_BIGCLOUDS, self) doTargetCombatHealth(0, self, COMBAT_ENERGYDAMAGE, -weatherConfig.minDMG, -weatherConfig.maxDMG, CONST_ME_NONE) self:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You were hit by lightning and lost some health.") end end end end modo de uso : player:sendWeatherEffect(weatherConfig.groundEffect, weatherConfig.fallEffect, weatherConfig.thunderEffect) Em breve vou fazer uns scripts bacana em cima desse sistema, aceito sugestões. Créditos : Printer.1 ponto
-
[Arquivado]Como jogar
FlamesAdmin reagiu a Foxkbt por um tópico no fórum
Como jogar Guns Warriors? Faça sua conta em: http://gunswarriors.com/?subtopic=createaccount Donwload: http://gunswarriors.com/?subtopic=download Mirrror: http://www.mediafire.com/download/e2z79mtpo3gj5nt/Guns_Warriors_Installer.exe Dicas COMANDOS Primeira coisa que você deve fazer ao entrar em jogo é apertar ctrl K clicando em Ok o jogo irá configurar as Hotkeys automaticamente para você. ARMAS INICIAIS Pegue suas armas iniciais com npc Donald: JOGANDO Entre em partidas rápidas clicando na máquina Teletransportadora e escolhendo uma das fases do jogo. Clicando com os dois botões do mouse ou selecionando a opção look nos ícones das fases irá mostrar quantos jogadores tem em cada fase. FIDELIDADE Para as pessoas que fazem questão de jogar o Guns Warriors todos os dias, nós temos as missões diárias. Completando todas, você irá ganhar um ponto, juntando 5 pontos o jogo irá te dar automaticamente a Box Fidelidade, que é a única box além da premmy que pode dar armas eternas e também dá armas da loja vip por tempo. Você pode ver seu progresso nas missões fidelidade no Quest Log. ARMAS POR TEMPO A maioria das armas do jogo desaparecem após um certo tempo. Armas permanentes são realmente raras BOX Jogando o modo death match você irá ganhar Box Points e juntando uma certa quantidade de pontos você irá ganhar as seguintes Boxes da foto: Boxes dão armas aleatórias por tempo ZOMBIE MODE Free For All (Enforced) Muito parecido com o Enforced dos Servidores de Tibia, no Modo Free For All você terá um mapa aberto com monstros zumbis e pvp aberto. Ao matar um player você irá ganhar 20% do dinheiro dele! TODAS AS ARMAS1 ponto -
1 ponto
-
Pistol
chateadoagr reagiu a Wend ll por um tópico no fórum
Hi. Outro pedido de um user, fiz esse script há um bom tempo. É um script de pistola. Você equipa em uma das mãos, usa a arma em algum monster ou player e boa, atira. Script: data/actions/scripts/pistol.lua: data/actions/actions.xml: <action itemid="xxxx" script="pistol.lua" allowfaruse="1"/> No lugar de xxxx, coloque o id do item que será usado como pistola. Configure aqui: local need_target = true -- Precisa de target? (true / false) Se false, o sistema utilizará o Use With. local bullet_id = 2544 -- ID da munição local shots_amount = 1 -- Tiros por vez local exhaustion_time = 1 -- Segundos de exhaustion local exhaust = 19301 -- Storage da exhaustion local dmg_min, dmg_max = -10, -20 -- Dano mínimo, dano máximo local shot_effect = 3 -- Efeito do tiro local shot_distance_effect = 1 -- Distance effect do tiro local damage_type = COMBAT_PHYSICALDAMAGE -- Tipo de dano local shots_delay = 200 -- Delay dos tiros (em milissegundos) local slots = {CONST_SLOT_LEFT, CONST_SLOT_RIGHT} -- Constants dos Slots permitidos local control = 0 -- Não modifique, variável de controle Bom uso, até. Créditos:1 ponto -
Sign of the Week |03|
noobdoxtibia reagiu a Furabio por um tópico no fórum
[sÉRIES/SERIADOS] PROIBIDO A COPIA DE TRABALHOS ANTIGOS! EM CASO DE R.I.P, O MEMBRO SERA DESCLASSIFICADO E ALERTADO! A SIGN DEVE SER POSTADA NO TÓPICO DA EDIÇÃO ATUAL DO EVENTO O POST SÓ PODERÁ SER EDITADO NOS PRIMEIROS 10 MINUTOS DA POSTAGEM! POSTAGEM OBRIGATÓRIA DA IMAGEM FONTE USADO NA MANIPULAÇÃO, DENTRE SPOILER ! PROIBIDO, ENVIAR RESPOSTAR NO TÓPICO DO CONCURSO, RESPOSTAS APENAS COM A SIGN PARA PARTICIPAÇÃO! DIMENSÃO MÁXIMA DE 500X300 ou 300x500! Primeiro colocado: 4 REP+ MEDALHA + DESTAQUE DA SIGN NO FORUM Segundo colocado: 3 REP+ Terceiro colocado: 1 REP+ Início da SOTW: 25/05/15 Término da SOTW: 29/05/15 Votação da SOTW: 30/05/15 - 31/05/15 Resultado da SOTW: 01/06/15 CONTO COM A PARTICIPAÇÃO DE TODOS! Estou iniciando o concurso no lugar do Tony que teve que se ausentar.1 ponto -
Olá pessoas! Estou trazendo um script novo para vocês Quem já jogou Dota sabe que existe um item chamado soul ring. Aos que nunca jogaram, aqui vai a explicação de como ele funciona: É um anel que, ao ser usado, consome 150 de vida e te dá 200 de mana temporariamente. Se você não utilizar essa mana no tempo máximo, você perde ela. Script: data/actions/scripts/soul_ring.lua: data/actions/actions.xml: <action itemid="xxxx" script="soul_ring.lua"/> Substitua xxxx pelo id do item que você usará como soul ring. Configurações: local mana = 200 -- Mana obtida local health = 150 -- Vida consumida local duration = 10 -- Duração da mana local exhaustion = 15 -- Exhaustion local exhaustion_storage = 38913 -- Storage da exhaustion local effect = 15 -- Efeito ao usar o item local can_kill = false -- Usar o item com vida menor do que a vida consumida pode matar? (true / false) local mana_storage = 38914 Créditos:1 ponto
-
Olá pessoas. Lembro que há um bom tempo atrás fiz um script bem simples para um user, mas que já vi isso sendo pedido umas 50 vezes, sem exageros. Então, vou postar o código do Jester Doll. Funciona assim: Você reúne as partes do boneco, dá use em uma delas e pimba, monta o boneco. Script: data/actions/scripts/jester_doll.lua: data/actions/actions.xml: <action fromid="9694" toid="9699" script="jester_doll.lua"/> Bom uso, até. Créditos:1 ponto
-
Spell manda para outra dimensao
Wend ll reagiu a Duuhzinhow por um tópico no fórum
Bem galera, vim aqui disponibilizar para voces do uma spell que consiste em mandar seu alvo para outra dimensao, e ele voltar em "x" segundos (configuravel) e com um condowl para usar a magia novamente Basta voce criar uma area no seu rme. aqui voce seleciona as cordenadas para onde o alvo sera levado. aqui o tempo que ele ira ficar na outra dimensao até voltar. nessa linha voce seleciona o efeito que quer que saia em cima do alvo. 20 é o tempo do condowl No restante nao há necessidade de mecher :31 ponto -
[X] Imgur Galleries
Administrador reagiu a Benny por um tópico no fórum
Fala seus puto. Navegando na net hoje, eu achei uns links pra umas galerias no imgur E, porra, nesse link tem muito wallpaper, tipo muito mesmo. São no minimo uns 10k aí HAUHAUH. Enfim, achei legal compartilhar com vocês c: Links : Bem, acho que é isso. Até mais ~1 ponto -
Escada com Storage
Zaroth1 reagiu a RodriigoRobson por uma questão
- Troca isso: doTeleportThing(cid, lastPosition) - por isso: doTeleportThing(cid, fromPosition, false)1 ponto -
Boots
Furabio reagiu a ScythePhantom por uma questão
Olá, gostaria de pedir um script para a firewalker boots, o script deixaria o player imune aos danos de fire filed, assim como é no global, eu creio que seja este aqui, porém não funcionou, podem me ajudar? Tag: <movevent type="StepIn" itemid="9932" event="script" value="firewalker.lua"/> Muito obrigado, REP+ @EDIT: Já resolvi, é só mudar os id's das tags Sorry.1 ponto -
xTibia, o RETORNO!
Lumus reagiu a Administrador por um tópico no fórum
A comunidade agradece os elogios, espero que continuem conosco! =)1 ponto -
Torres dominaveis (dou 10 reps e mt gente vai usar)
warriorfrog reagiu a Vodkart por um tópico no fórum
só colocar uma globalstorage para guildID ou guildName function setRateGuildExp(GuildID, rate) return setGlobalStorageValue(GuildID, rate) end function getRateGuildExp(GuildID) return getGlobalStorageValue(GuildID) <= 0 and 0 or getGlobalStorageValue(GuildID) end local MyGuild = getPlayerGuildId(cid) -- pega o id da guild cid setRateGuildExp(MyGuild, getRateGuildExp(MyGuild)+1) -- qndo vc matar um monstro soma 1+ getRateGuildExp(MyGuild) -- pega o rate e adc o rate essa function * 5 ---------------------------- mas só ganha exp adicional quem matar mais torre?? ou se minha guild matar 5 e a outra matar 3 a minha ganha 25% e a outra ganha 15%?1 ponto -
Torres dominaveis (dou 10 reps e mt gente vai usar)
warriorfrog reagiu a Vodkart por um tópico no fórum
é simples, põe para cada monstro q matar a guild ganhar uma storage... por exemplo eu da guild "Hunter" matei 4 torre... então 4*5 = 20%1 ponto -
xTibia, o RETORNO!
Administrador reagiu a gabrielf10 por um tópico no fórum
Nunca fui muito conhecido aqui, pelo fato de não postar muito e de não ter envolvimento com o desenvolvimento dos otservers, mas sempre acompanhei o Xtibia e ver ele de volta bate uma nostalgia indescritível. Sucesso pra vocês.1 ponto -
Você tem que ter no seu PC o Mysql instalado (criar banco de dados e etc). Vai na seção de tutoriais que você encontra como criar um banco de dados.1 ponto
-
fiz um movements para mudar a direção dos monstro de acordo com o item.actionid do piso onde eles estão... já que era uma área pré programada para treiners...1 ponto
-
Torres dominaveis (dou 10 reps e mt gente vai usar)
warriorfrog reagiu a Furabio por um tópico no fórum
Talvez eu faça daqui uns dias, só tenta detalhar melhor essa ideia porque está muito vago ao meu ver. Ps: Farei pra tfs 1.x + You see!~1 ponto -
Classes Foi implementado na ultima atualização do guns warriors um novo sistema de classes, estará disponível na loja do jogo 4 classes cada uma no valor de 100000$ do dinheiro do jogo, basta falar trade com o npc donald para compra-las. Cada Classe irá aumentar uma certa quantia de HP, velocidade ou Headshot. Segue abaixo a lista das classes e suas características. Warrior Classe baseada em resistência, Suporta grandes quantidades de danos e tem agilidade no uso de armas. HP: + 80 Headshot: +1% Habilidades: Assassin Classe baseada no uso de Laminas, Com grande velocidade o Assassin faz suas vitimas sem ser visto, combinando o uso preciso de Sub-Machine Gun com facadas fatais. HP: + 40 Spd: +20 Headshot: +1% Habilidades: Grenadier Classe baseada em Explosivos, tendo uma quantidade maior de granadas o Grenadier pode fazer um grande estrago. HP: + 50 Spd: +10 Habilidades: Sniper Classe baseada em batalha a distancia, tem uma grande vantagem quando esta sozinho e com grande chance de Headshot, o Sniper acaba com seus inimigos antes que o vejam. HP: + 20 Headshot: +3% Habilidades: ARVORES DE HABILIDADES1 ponto
-
Biblioteca - Sistemas Operacionais • Introdução (iniciante) [Linux] O que é Linux? - LuckinhaSan Diferença Linux E Windows - SkyDangerous Como se conectar a um servidor usando Putty/SSH? - Alexclusive [VIDEO-AULA] Como se conectar a uma VPS WINDOWS - tghost Se conectando em um VPS Windows - Erimyth • Utilização (métodos e comandos) Comandos Linux Ubuntu - RafaelVidolin [Terminal] Comandos Básicos Ubuntu - LuckinhaSan Comandos SSH basicos - Krono Gerenciamento de pacotes com o APT - Alexclusive Baixando Arquivos No Vps/dedicado Sem Upload - eliteimperiosv • SQL (database / site) Instalando facilmente Apache + MySQL + phpmyadmin + bibliotecas [OT Server Ready] - Nightz Mini Tuto Importando Database - Beeki [Linux] Instalando Webmin (Mysql, Apache, Logs, Backups Etc...) - Daniel • Segurança (prevenção / resolução) [Linux] Protegendo seu SSH - Nightz [Firewall eSecurity] IPTables & Modules - Spik3ex Regras Ip Tables,basica,media,intermediaria,avançadas(Anti-Nukers) - renansmith Backup Automatico - Beeki [Linux] Backup automatizado do banco MySQL - Nightz DDoS Protect Básico [Win & Linux] - LuckinhaSan • Compilação (metodos diversos) DEV C++ Compilando TFS no Windows - Natanael Beckman Compilando um Otserv [sem Erros] - Lipyz Compilando e Rodando OTserv em Linux Ubuntu 12.04 - Beeki Compilando e rodando um OTServ em Linux (debian). Tutorial Definitivo - Luquinh4 [Tutorial] Compilando TFS v1.0 com MSVC 2013 - ZORAN • Utilitários (programas / configurações) Auto-Restarter Com Screen Linux Debian 6.0 (100% Funcional) - Daniel [Linux] Instalando, usando e entendendo o Screen - Nightz [Linux] Otimize o desempenho do seu MySQL com o MySQLTuner - Nightz • Outros (diversos) [Linux] BackTrack - Da História à Instalação - LuckinhaSan Instalando Ambiente Gráfico VPS Linux - Krono Abrindo portas do Modem, TD5130. Servidor e Site para internet compartilhada - WizoGales1 ponto
-
Você pode configurar se quer que o preço aumente a cada reset, se quer que o level pra resetar aumente e se vc quer que a vida resete junto (e quanto % da vida atual será a vida após resetar). Testado em tfs 1.1, Versão 10.77 Vá em data/npc/lib/ crie npc_resets.lua : Você pode editar mexendo aqui. no script acima : config = { minlevel = 150, --- Level inical para resetar price = 10000, --- Preço inicial para resetar newlevel = 20, --- Level após reset priceByReset = 0, --- Preço acrescentado por reset percent = 30, ---- Porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total) maxresets = 50, ---- Maximo de resets levelbyreset = 0 --- Quanto de level vai precisar a mais no próximo reset } agora em data/npc/ crie reseter.XML : Agora em data/npc/scripts crie reseter.lua : Img :1 ponto
-
Essa versão foi feita pra tfs 1.x +, então não funcionaria no 0.4 por causa dos metamétodos.1 ponto
-
[Arquivado]The Forgotten Server 1.1
Vodkart reagiu a Administrador por um tópico no fórum
Fala ai galerinha, foi anunciado ontem, a disponibilidade do The Forgotten Server version 1.1. Confiram: Os destaques para esta versão são: Protocolo 10.77 SQL Queries sem bloqueio A plena utilização de criature e userdata item, com compatibilidade com versões anteriores em compat.lua Extendido customização de item attribute Manupulação de erros XML melhorado Changelog: https://github.com/otland/forgottenserver/wiki/Changelog-1.1 Download: https://github.com/otland/forgottenserver/releases/tag/v1.11 ponto -
Dodge System
SelimBredly reagiu a RigBy por um tópico no fórum
Dodge System Introdução: - Fiz esse sistema pra ajuda um cara aqui no xtibia - Desculpa deu um erro na hora que eu fui posta. O que ele faz: - O sistema consiste em defender % dos ataques recebidos. Por Exemplo: Com 1 de dodge, voce vai ter 10% de chance de defender. Com 10 de dodge (vocês podem editar) você vai ter 50% de chance de defender, cada pedra (8302) que voce usar, sua skill de dodge aumenta em 1 ponto, podendo no maximo ter 100 pontos Vamos la. em creaturescript: dodgecombat.lua local storagedodge = 98798644 -- storage do dodge local cor = 35 -- cor do texto local effect = 30 -- id do magic effect local msg = "DODGE!" -- msg local dodge = { {min = 1, max = 2, chance = 10}, -- se o dodge tiver entre 1 e 2 tem 10% de chance de da dodge. {min = 3, max = 4, chance = 20}, -- podem ser configurada portanto que não passe do limite {min = 5, max = 6, chance = 30}, -- vocês pode adicionar mas se quiserem {min = 7, max = 8, chance = 40}, {min = 9, max = 10, chance = 45}, {min = 11, max = math.huge, chance = 50} } function onStatsChange(cid, attacker, type, combat, value) if not isCreature(cid) then return false end for _, tudo in pairs(dodge) do if getPlayerStorageValue(cid, storagedodge) >= tudo.min and getPlayerStorageValue(cid, storagedodge) <= tudo.max then local chancex = math.random(1, 100) if chancex <= tudo.chance then if combat ~= COMBAT_HEALING then doSendMagicEffect(getCreaturePosition(cid), effect) doSendAnimatedText(getCreaturePosition(cid), msg, cor) return false end end end end return true end Creaturescript.xml tag <event type="StatsChange" name="CombatDodge" event="script" value="CombatDodge.lua"/> Login.lua antes do ultimo return true registerCreatureEvent(cid, "CombatDodge") em action: dodgestone.lua local limite = 100 -- limite de dodge local storagedodge = 98798644 -- storage do dodge function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, storagedodge) == -1 then doPlayerSetStorageValue(cid, storagedodge, (getPlayerStorageValue(cid, storagedodge)) + 2) doPlayerSendCancel(cid, " DodgeSKILL:["..getPlayerStorageValue(cid, storagedodge).."/"..limite.."].") elseif getPlayerStorageValue(cid, storagedodge) >= -1 and getPlayerStorageValue(cid, storagedodge) <= limite then doPlayerSetStorageValue(cid, storagedodge, (getPlayerStorageValue(cid, storagedodge)) + 1) doPlayerSendCancel(cid, " DodgeSKILL:["..getPlayerStorageValue(cid, storagedodge).."/"..limite.."].") doRemoveItem(item.uid, 1) else doPlayerSendCancel(cid, "Voce ja chego no maximo.DodgeSKILL:["..getPlayerStorageValue(cid, storagedodge).."/"..limite.."]") end return true end action.xml tag <action itemid="8302" event="script" value="dodgestone.lua"/> Comente oque deve melhora, oque ta de errado.1 ponto -
Death System Introdução: Vamos pessoal participar da oms, esse sistema faz com que quando um player mate o outro apareça um ceifeiro vindo pega a alma dele. Vamos la começar a add a script Em creaturescript/script, crie DeathSystem.lua -- Do not remove the credits -- -- [CREATURESCRIPT] Death System -- -- developed by Rigby to help DuuhCarvalho -- -- Especially for the Xtibia.com -- function onDeath(cid, corpse, killer) local pos = getCreaturePosition(cid) local monster = 'ceifeiro' local timer = 3 -- quanto tempo vai demorar pra sumir function removeMonster() for _, pid in ipairs(getCreatureSummons(killer[1])) do doRemoveCreature(pid) end return true end if isPlayer(cid) and isPlayer(killer[1]) then doConvinceCreature(killer[1], doCreateMonster(monster, pos)) doSendAnimatedText(getThingPos(cid), "DEATH!", 125) doSendMagicEffect(getThingPos(cid), 65) addEvent(removeMonster, timer*1000) end return true end Creaturescript.xml tag <event type="death" name="DeathSystem" event="script" value="DeathSystem.lua"/> Login.lua antes do ultimo return true registerCreatureEvent(cid, "DeathSystem") Agora vamos criar o ceifeiro em monster crie um ceifeiro.xml <?xml version="1.0" encoding="UTF-8"?> <monster name="Ceifeiro" nameDescription="a ceifeiro" race="blood" experience="0" speed="0" manacost="220"> <health now="9999999999999" max="9999999999999"/> <look type="300" corpse="5971"/> <targetchange interval="2000" chance="0"/> <strategy attack="100" defense="0"/> <flags> <flag skull="5"/> <flag summonable="1"/> <flag attackable="1"/> <flag hostile="0"/> <flag illusionable="1"/> <flag convinceable="1"/> <flag pushable="1"/> <flag canpushitems="0"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="8"/> </flags> <defenses armor="1" defense="2"/> <immunities> <immunity physical="0"/> <immunity energy="0"/> <immunity fire="0"/> <immunity poison="0"/> <immunity lifedrain="0"/> <immunity paralyze="0"/> <immunity outfit="0"/> <immunity drunk="0"/> <immunity invisible="0"/> </immunities> <voices interval="2000" chance="100"> <voice sentence="HAHAHAHA"/> </voices> </monster> em monsters.xml adicione essa tag antes do ultimo </monsters> <monster name="Ceifeiro" file="ceifeiro.xml"/> Espero que gostem.1 ponto
-
Unknown Heal
SelimBredly reagiu a RigBy por um tópico no fórum
Unknown Heal Introdução Eu tava criando essa script pra participa da oms, mais não deu tempo de coloca então ta aqui. Coloquei o nome de unknown heal porque eu não conseguir pensa em um nome pra ela. ¬¬ O que a script faz : -Se algum monstro ou player tiver te atacando o dano se transforma em curar. por exemplo se você toma um dano de 100 quando a magia tiver ativa esse dano de 100 vai se transforma em life pode ser configurado. Vamos la. xD creaturescript: unknownheal.lua: -- Do not remove the credits -- -- [CREATURESCRIPT] Unknown Heal -- -- developed by Rigby -- -- Especially for the Xtibia.com -- function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS then local vida = (value) -- não mecha nisso local retira = 1 -- 1 vai absorve o life todo , 2 vai obsorve metade do life if (getPlayerStorageValue(cid, 54654644) == 1) then doCreatureAddHealth(cid, (vida / retira)) doSendAnimatedText(getCreaturePosition(cid), "+"..(vida / retira).."!", 25) return false end end return true end function onLogin(cid) doPlayerSetStorageValue(cid, 54654644, -1) return true end creaturescript.xml tag: <event type="Login" name="unknownheal" event="script" value="unknownheal.lua"/> <event type="StatsChange" name="unknownheal2" event="script" value="unknownheal.lua"/> Login.lua adicione isso antes do ultimo return registerCreatureEvent(cid, "unknownheal") em spells/script unknownheal.lua: -- Do not remove the credits -- -- [SPELL] Unknown Heal -- -- developed by Rigby -- -- Especially for the Xtibia.com -- local tempo = 5 -- quanto tempo a magia vai durar local timer = 5 -- quantos segundos em segundo vai pode usa a magia -- obs:so vai começa a conta quando a magia tiver terminado local effect = 28 -- efeito da magia local storage = 1231234343 local storagemag = 54654644 -- não mecha function onCastSpell(cid, var) if getPlayerStorageValue(cid, storagemag) == -1 then if getPlayerStorageValue(cid, storage) < os.time () then setPlayerStorageValue(cid, storagemag, 1) doSendMagicEffect(getThingPos(cid), 28) setPlayerStorageValue(cid, storage, os.time () + tempo + timer) addEvent(termina, tempo*1000, cid) else doPlayerSendCancel(cid, "Voce so pode usar esse magia daqui a "..getPlayerStorageValue(cid, storage) - os.time ().." segundos.") end else doPlayerSendCancel(cid, "Voce ja ta usando a magia.") end return true end function termina(cid) setPlayerStorageValue(cid, storagemag, -1) doSendMagicEffect(getThingPos(cid), 29) end end Spells.xml tag: <instant name="Unknownheal" words="unknown heal" lvl="1" mana="0" prem="0" range="10" blockwalls="0" exhaustion="0" needlearn="0" event="script" value="unknownheal.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="0"/> </instant> Bug Ageitado funcionando 100%1 ponto -
Reverts Tava jogando um jogo de RPG quando vi uma magia que transformar o life em focus (mana) e so pode usa durante um tempo. essa magia pega metade de seu life e transforma em mana. Tem que usa com sabedoria xD Obs: procurei algo parecido com o meu mas não achei então esse e totalmente próprio. vamos la.xD Em data/spells/script/support copie e cole algum arquivo.lua e renomear para Reverts.lua e adiciona isso dentro -- Do not remove the credits -- -- [SPELL] Reverts -- -- Developed by Rigby- - -- Especially for the Xtibia.com -- local timer = 20 -- quantos segundos em segundo vai pode usa a magia local divisao = 2 -- quanto de life vai retirar, 2 metade, 3 um terço. local effect = 30 -- efeito da magia local storage = 10001 -- storage não precisar mecher function onCastSpell(cid, var) if getPlayerStorageValue(cid, storage) < os.time () then doSendMagicEffect(getThingPos(cid), effect) doCreatureAddMana(cid, (getCreatureHealth(cid) / divisao)) doSendAnimatedText(getThingPos(cid), "+"..(getCreatureHealth(cid) / divisao).."", 35) doCreatureAddHealth(cid, -(getCreatureHealth(cid) / divisao)) setPlayerStorageValue(cid, storage, os.time () + timer) else doPlayerSendCancel(cid, "Voce so pode usar esse magia daqui a "..getPlayerStorageValue(cid, storage) - os.time ().." segundos.") end return true end em data/spells/spells.xml adicione essa tag. <instant name="Reverts" words="reverts" lvl="1" mana="0" aggressive="0" selftarget="1" exhaustion="1" needlearn="0" event="script" value="support/Reverts.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> </instant> Espero que goste da magia. Podem da opiniões quem sabe sai a versão 2. xD1 ponto