caotic 393 Postado Janeiro 22, 2013 Share Postado Janeiro 22, 2013 (editado) Ola galera xtibiana!!! O summon system e um sistema de sumonar sistema com algumas novidades. A configuração fica dentro de arquivo xml ficando mais fácil e pratico de modificar. Para sumonar diga /sum(nome do monstro) Para ver a lista de sumons /sumons Então lets go. Dentro de sua pasta "Data" crie um nova pasta chamado de sumon. Depois dentro da pasta sumon crie um novo arquivo XML e coloque isto dentro: <monster name="Demon" mana="3000" level="300" item="2323" health="100" />< <monster name="Bug" mana="2" level="2" item="0" health="0" />< <monster name="Hydra" mana="2000" level="50" item="2323" health="0" />< Esta e minha configuração se quiser pode alterar. Depois vá em talkactions e crie um arquivo lua chamado de sumon e coloque isto: function onSay(cid, words, param, channel) function getSumonInFile() local x = {} local events = io.open("data/sumon/sumon.xml", "r") for i in events:read("*a"):gmatch('<monster name="(.-)" ') do table.insert(x, i) end return x end local function getExistSumonInFile(monster) for i = 1, #getSumonInFile() do if monster == getSumonInFile()[i] then return true end end return false end function getSumonRequiresInFile(monster, attr) local x = {} local events = io.open("data/sumon/sumon.xml", "r") for i in events:read("*a"):gmatch('<monster name="'..monster..'" (.-)/') do local req = tonumber(i:match(''..attr..'="(.-)" ')) table.insert(x, req) end return x[1] or 0 end local mana,level,item,health = getSumonRequiresInFile(param, "mana"),getSumonRequiresInFile(param, "level"),getSumonRequiresInFile(param, "item"),getSumonRequiresInFile(param, "health") local x = {"Vá "..param.." e derrote estes malditos","Seja bem vindo "..param.."","Váaaaa "..param.."","Eae "..param.." esta pronto?!","Vaii "..param.." você e realmente forte"} if param == "" or not param or param == " " then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Precisa de dizer o nome do monsto") and false end if not getExistSumonInFile(param) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este monstro não pode ser sumado") end if getCreatureMana(cid) <= mana then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..mana.."de mana para sumonar") and false end if getPlayerLevel(cid) <= level then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..level.." de level para summonar") and false end if getPlayerItemCount(cid, item) < 0 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem o item "..item.." para summonar") and false end if getCreatureHealth(cid) <= health then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não "..health.."de health para summonar") and false end doSummonMonster(cid, param) doCreatureAddHealth(cid, -health) doCreatureAddMana(cid, -mana) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, x[math.random(1, #x)]) return true end Agora de novo em talkactions crie um arquivo lua chamado de sumons e coloque isto: function onSay(cid, words, param, channel) function getSumonInFile() local x = {} local events = io.open("data/sumon/sumon.xml", "r") for i in events:read("*a"):gmatch('<monster name="(.-)" ') do table.insert(x, i) end return x end function getSumonRequiresInFile(monster, attr) local x = {} local events = io.open("data/sumon/sumon.xml", "r") for i in events:read("*a"):gmatch('<monster name="'..monster..'" (.-)/') do local req = tonumber(i:match(''..attr..'="(.-)" ')) table.insert(x, req) end return x[1] or 0 end str = "" for i = 1, #getSumonInFile() do local sum = getSumonInFile()[i] local mana,level,item,health = getSumonRequiresInFile(sum, "mana"),getSumonRequiresInFile(sum, "level"),getSumonRequiresInFile(sum, "item"),getSumonRequiresInFile(sum, "health") str = ""..str.."\n"..getSumonInFile()[i].." Level - "..level.." health - "..health.." mana - "..mana.."" end doPlayerPopupFYI(cid, str) return true end E prontinho vou ensinar a configuração no seu arquivo xml: <monster name="Demon" mana="3000" level="300" item="2323" health="100" />< name = Nome do monstro mana = Mana que ira precisar level = level que irá precisar item = Se o player vai precisar de algum item para sumonar se não precisar coloque 0 health = Quanto de vida o player ira precisar Obs: A configuração precisa ser alterado com cuidado os espaços de cada configuração não pode ser retirado. E importante não retirar o espaço da ultima config(health) Editado Janeiro 22, 2013 por caotic Link para o comentário https://xtibia.com/forum/topic/205182-sumons-system-by-caotic/ Compartilhar em outros sites More sharing options...
EliteYoz 0 Postado Janeiro 23, 2013 Share Postado Janeiro 23, 2013 Muito bom! REP+ to usando no meu OTServer que está em construção e logo mais vou por online, quer algum tipo de crédito pelo System? Link para o comentário https://xtibia.com/forum/topic/205182-sumons-system-by-caotic/#findComment-1447599 Compartilhar em outros sites More sharing options...
caotic 393 Postado Janeiro 23, 2013 Autor Share Postado Janeiro 23, 2013 Que nada. Eu postei para compartilhar. Não ligo para estas coisas. Link para o comentário https://xtibia.com/forum/topic/205182-sumons-system-by-caotic/#findComment-1447758 Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Fevereiro 4, 2013 Share Postado Fevereiro 4, 2013 Nossa, pra que ler o arquivo tantas vezes e rodar vários loops desnecessários, bote uma função apenas para load do arquivo na lib, use-a no start do server, e faça uma função para update, estilo um reload. E outra coisa, você abre arquivos e não os fecha, isso não é bom. Faça dessa forma e verá que a optimização será grande: Summons = {} function load_summon_file() local file = io.open("data/sumon/sumon.xml") local file_str = file:read("*a") file:close() for name, mana, level, item, health in file_str:gmatch('<monster name="(.-)" mana="(.-)" level="(.-)" item="(.-)" health="(.-)" />') do Summons[name] = { mana = mana, level = level, item = item, health = health} end end function update_summon_file() Summons = {} load_summon_file() end function is_valid_summon(summon_name) return type(Summons[summon_name]) == "table" and true or false end function get_summons_requires(summon_name) return is_valid_summon(summon_name) and Summons[summon_name] or {} end Repare que o arquivo é carregado apenas uma vez, leitura em disco rigido é muito lenta e gasta muita memória, quanto menos o fizer melhor. Link para o comentário https://xtibia.com/forum/topic/205182-sumons-system-by-caotic/#findComment-1459821 Compartilhar em outros sites More sharing options...
rogeriomatx 4 Postado Fevereiro 4, 2013 Share Postado Fevereiro 4, 2013 Interessante!!! vou implantar no meu servidor!!! Link para o comentário https://xtibia.com/forum/topic/205182-sumons-system-by-caotic/#findComment-1459908 Compartilhar em outros sites More sharing options...
pokemonfox123 3 Postado Fevereiro 14, 2013 Share Postado Fevereiro 14, 2013 Ei Mano aki no meu ot não pegou Link para o comentário https://xtibia.com/forum/topic/205182-sumons-system-by-caotic/#findComment-1468923 Compartilhar em outros sites More sharing options...
caotic 393 Postado Fevereiro 14, 2013 Autor Share Postado Fevereiro 14, 2013 Ei Mano aki no meu ot não pegou Ei Mano aki no meu ot não pegou Mais que o deu errado? Link para o comentário https://xtibia.com/forum/topic/205182-sumons-system-by-caotic/#findComment-1468934 Compartilhar em outros sites More sharing options...
pokemonfox123 3 Postado Fevereiro 14, 2013 Share Postado Fevereiro 14, 2013 eu falo /sum Hydra não acontece nada Link para o comentário https://xtibia.com/forum/topic/205182-sumons-system-by-caotic/#findComment-1468939 Compartilhar em outros sites More sharing options...
vd7champion 0 Postado Setembro 9, 2013 Share Postado Setembro 9, 2013 isso da pra fazer como se fosse um kuchyose de naruto tipo so algumas vocations podem usar? Link para o comentário https://xtibia.com/forum/topic/205182-sumons-system-by-caotic/#findComment-1559747 Compartilhar em outros sites More sharing options...
Posts Recomendados