Ir para conteúdo

MatheusGlad

Conde
  • Total de itens

    528
  • Registro em

  • Última visita

  • Dias Ganhos

    30

Tudo que MatheusGlad postou

  1. Bem, como todos sabem, não da pra criar 2 items com o mesmo sprite, somente editando a source e o dat etc... Usando esse sistema que eu fiz voce nao precisara editar nada somente adicionar os scripts. Primeiramente vá na pasta lib e crie um arquivo ItemsEditedLib.lua e adicione isso dentro: function doPlayerAddEditedItem(cid, itemid) local newxml = io.open("data/items/newitems.xml", "r") local configs = {} for i in newxml:read("*a"):gmatch("<item (.-)</item>") do local itemid = tonumber(i:match('id="(.-)"')) local itemconfig = { ["spriteid"] = tonumber(i:match('spriteid.-=.-"(.-)"')), ["article"] = i:match('article.-=.-"(.-)"'), ["name"] = i:match('name.-=.-"(.-)"'), ["description"] = i:match('key.-=.-"description".-value.-=.-"(.-)"'), ["defense"] = tonumber(i:match('key.-=.-"defense".-value.-=.-"(.-)"')), ["attack"] = tonumber(i:match('key.-=.-"attack".-value.-=.-"(.-)"')), ["extradefense"] = tonumber(i:match('key.-=.-"extradef".-value.-=.-"(.-)"')), ["armor"] = tonumber(i:match('key.-=.-"armor".-value.-=.-"(.-)"')), ["extraattack"] = tonumber(i:match('key.-=.-"extraatk".-value.-=.-"(.-)"')), } configs[itemid] = itemconfig end if configs[itemid] then local item = doPlayerAddItem(cid, configs[itemid].spriteid) for i,x in pairs(configs[itemid]) do doItemSetAttribute(item, i, x) end end end Depois vá na pasta items e adicione um arquivo newitems.XML (XML NAO LUA!!!) e adicione isso dentro: <?xml version="1.0" encoding="UTF-8"?> <items> <item id="100" spriteid="2400" article="a" name="magic edited sword"> <attribute key="description" value="Arma editada." /> <attribute key="defense" value="45" /> <attribute key="attack" value="100" /> <attribute key="extradef" value="10" /> <attribute key="extraatk" value="10" /> </item> <item id="101" spriteid="2472" article="a" name="master plate armor"> <attribute key="description" value="Armor editada." /> <attribute key="armor" value="19" /> </item> </items> Bem como voces podem ver, o xml guarda os novos items, o xml funciona praticamente como o items.xml so que tem um novo campo o "spriteid", nele fica o itemid original. Eu sei que ainda faltam atributos, com o tempo e com os pedidos eu vou adicionando. (É importante que voces peçam por novos atributos, porque os outros são mais complicados e eu nao vou faze-los para ninguem usar) Atributos: "description" "defense" "attack" "extradefense" "armor" "extraattack" Para adicionar os novos itemids aos players use doPlayerAddEditedItem(cid, ITEMID) em vez de doPlayerAddItem...
  2. Faltam informaçoes '-' Aonde vai ficar os itens que o player bota? IDS... Pode trocar mais de uma vez? Os itens que seram trocados vao ficar um em cima do outro?
  3. Crítica ou problema: Pedidos de scripts repetidos. Sugestão: Quando um moderador movese um topico que foi solucionado para a seçao de pedidos entregues, renomea-se o titulo do topico para exatamente o que contem nele e se possivel botar o post que entregou o pedido corretetamente fosse 'quotado' no post principal, assim antes de pedir, a pessoa procura na area de pedidos entregues pra ver se o que ela quer ja tem la ou nao.
  4. Explica mais o script, como ele escolhe a cidade? Tem uma estatua pra cada cidade?
  5. Vá em data/talkactions/scripts e adicione um arquivo em formato LUA com nome de itemcreate e bote esse script dentro: function onSay(cid, words, param) local configs = {"Magic Plate Armor", "Plate Armor"} -- Nome dos items que podem ser criados local items = { -- Item id dos itens requeridos entre [] e a quantidade depois do = [9971] = 2, [2160] = 100, } local remove = "no" -- Se vai remover os itens requeridos. "yes" ou "no" local stat = true -- Não mecha for i,x in pairs(configs) do configs[i] = x:lower() end if table.find(configs, param:lower()) then for i,x in pairs (items) do if not (getPlayerItemCount(cid, i) >= x) then stat = false end end if stat then doPlayerAddItem(cid, getItemIdByName(param:lower())) if remove:lower() == "yes" then for i,x in pairs(items) do doPlayerRemoveItem(cid, i, x) end end else doPlayerSendCancel(cid, "Voce nao tem os itens requeridos para usar essa talkaction.") end else doPlayerSendCancel(cid, "Voce nao pode criar esse item, ele nao esta disponivel.") end return TRUE end Configure o script como quizer. Agora va em talkactions.xml e adicione essa linha: <talkaction words="!create" event="script" value="itemcreate.lua"/>
  6. Nao precisa fazer double topic. o outro ja foi respondido Denunciado
  7. Peço que parem com as brigas, aqui eh sessão de pedidos. Vá em data/actions/scripts adiciona um arquivo em formato LUA e bote o nome de leveritems e bote esse script: function onUse(cid, item, frompos, item2, topos) local sqmpos = {x=80, y=311, z=7} -- Posiçao do sqm que vao estar os items. local configs = { -- Items a venda, use o nome do item ou seu id. [2472] = 10000, ["Plate Armor"] = 300, ["gold ingot"] = 10000, } local sell = false for i,x in pairs(configs) do for s = 0,255 do sqmpos.stackpos = s if getThingFromPos(sqmpos).itemid == (type(i) == "number" and i or getItemIdByName(i)) then sell = type(sell) == "number" and sell+(getThingFromPos(sqmpos).type > 0 and getThingFromPos(sqmpos).type or 1)*x or (getThingFromPos(sqmpos).type > 0 and getThingFromPos(sqmpos).type or 1)*x doRemoveItem(getThingFromPos(sqmpos).uid) end end end if sell then doPlayerAddMoney(cid, sell) return doPlayerSendTextMessage(cid, 22, "Voce vendeu os items e ganhou " .. sell .. " gold coins.") else return doPlayerSendCancel(cid, "Não tem nenhum item na mesa que esteja a venda.") end end Depois va em actions.xml e bote essa linha: <action actionid="45666" event="script" value="leveritems.lua"/> Adicione o ActionID 45666 na alavanca de vender item e configure a posiçao do sqm que vao estar os itens no script. Botando outros items no script: Vá no script e veja aonde esta assim: Copie a ultima linha e bote logo em baixo e mude a configuraçao: Se voce for usar o nome do item lembre-se de botar entre chaves Exemplo: "magic plate armor"
  8. Bem, existem varios scripts por ai de pontes que aparecem e desaparecem que sao bugadas e pequenas entao eu fiz esse script para que voce pudesse fazer uma ponte grande e decorada: ScreenShot: Vá em data/actions/scripts e bote um arquivo.lua com o nome de pontealavanca com esse script: function removeAll(configs, leverpos, tp, water, leveroff, leveron) local player = nil for i,x in pairs(configs) do for s, t in pairs(x) do for l = 0,255 do if isPlayer(getThingFromPos({x=t.x, y=t.y, z=t.z, stackpos = l}).uid) then player = {x=t.x, y=t.y, z=t.z, stackpos = l} break end end end end if player then doTeleportThing(getThingFromPos(player).uid, tp) end for i,x in pairs(configs) do for s, t in pairs(x) do for l = 0,255 do t.stackpos = l if getThingFromPos(t).itemid == i then if l == 0 then doTransformItem(getThingFromPos(t).uid, water) else doRemoveItem(getThingFromPos(t).uid) end end end end end for l = 0,255 do leverpos.stackpos = l if getThingFromPos(leverpos).itemid == leveron then doTransformItem(getThingFromPos(leverpos).uid, leveroff) break end end end function onUse(cid, item, fromPosition, itemEx, toPosition) local configs = { [1284] = {{x=56, y=60, z=7},{x=56, y=61, z=7},{x=56, y=62, z=7},{x=56, y=63, z=7},{x=56, y=64, z=7},{x=56, y=65, z=7},{x=56, y=66, z=7},{x=55, y=60, z=7},{x=55, y=61, z=7},{x=55, y=62, z=7},{x=55, y=63, z=7},{x=55, y=64, z=7},{x=55, y=65, z=7},{x=55, y=66, z=7},{x=54, y=60, z=7},{x=54, y=61, z=7},{x=54, y=62, z=7},{x=54, y=63, z=7},{x=54, y=64, z=7},{x=54, y=65, z=7},{x=54, y=66, z=7}}, [2742] = {{x=55, y=62, z=7}}, [1543] = {{x=54, y=60, z=7},{x=54, y=61, z=7},{x=54, y=62, z=7},{x=54, y=63, z=7},{x=54, y=64, z=7},{x=54, y=65, z=7},{x=54, y=66, z=7},{x=56, y=60, z=7},{x=56, y=61, z=7},{x=56, y=62, z=7},{x=56, y=63, z=7},{x=56, y=64, z=7},{x=56, y=65, z=7},{x=56, y=66, z=7}}, } local firstpos = {x=56,y=67,z=7} -- Posiçao do lado inicial da ponte local waterid = 4612 -- Item ID da agua. local time = 5 -- Em segundos local leveroff, leveron = 1945, 1946 -- Ids da alavanca puxada e nao puxada, respectivamente. if item.itemid == leveroff then for i,x in pairs(configs) do for s, t in pairs(x) do doCreateItem(i, t) doTransformItem(item.uid, leveron) end end addEvent(removeAll, time*1000, configs, getThingPos(item.uid), firstpos, waterid, leveroff, leveron) end return TRUE end Agora vá em actions.xml e bote essa linha: <action actionid="45666" event="script" value="pontealavanca.lua"/> Bote o actionid 45666 na alavanca e divirta-se '-' Para configurar a ponte basta voce fazer isso: Va no local configs = { ...... Apague tudo e deixe assim: local configs = { } Agora bote o itemid que sera criado ao puxar alavanca entre [] .. assim: local configs = { [1284] } Agora bote um = {}, ... local configs = { [1284] = {}, } Agora bote as posiçoes aonde vao ser criados os items 1284 separados por virgulas. local configs = { [1284] = {{x=1,y=2,z=3},{x=7,y=4,z=3}}, } By MatheusMkalo
  9. Testa ai: function removeAll(configs, leverpos, tp, water, leveroff, leveron) for i,x in pairs(configs) do for s, t in pairs(x) do for l = 0,255 do if isPlayer(getThingFromPos({x=t.x, y=t.y, z=t.z, stackpos = l}).uid) then player = {x=t.x, y=t.y, z=t.z, stackpos = l} break end end end end if player then doTeleportThing(getThingFromPos(player).uid, tp) end for i,x in pairs(configs) do for s, t in pairs(x) do for l = 0,255 do t.stackpos = l if getThingFromPos(t).itemid == i then if l == 0 then doTransformItem(getThingFromPos(t).uid, water) else doRemoveItem(getThingFromPos(t).uid) end end end end end for l = 0,255 do leverpos.stackpos = l if getThingFromPos(leverpos).itemid == leveron then doTransformItem(getThingFromPos(leverpos).uid, leveroff) break end end end function onUse(cid, item, fromPosition, itemEx, toPosition) local configs = { [1284] = {{x=56, y=60, z=7},{x=56, y=61, z=7},{x=56, y=62, z=7},{x=56, y=63, z=7},{x=56, y=64, z=7},{x=56, y=65, z=7},{x=56, y=66, z=7},{x=55, y=60, z=7},{x=55, y=61, z=7},{x=55, y=62, z=7},{x=55, y=63, z=7},{x=55, y=64, z=7},{x=55, y=65, z=7},{x=55, y=66, z=7},{x=54, y=60, z=7},{x=54, y=61, z=7},{x=54, y=62, z=7},{x=54, y=63, z=7},{x=54, y=64, z=7},{x=54, y=65, z=7},{x=54, y=66, z=7}}, [2742] = {{x=55, y=62, z=7}}, [1543] = {{x=54, y=60, z=7},{x=54, y=61, z=7},{x=54, y=62, z=7},{x=54, y=63, z=7},{x=54, y=64, z=7},{x=54, y=65, z=7},{x=54, y=66, z=7},{x=56, y=60, z=7},{x=56, y=61, z=7},{x=56, y=62, z=7},{x=56, y=63, z=7},{x=56, y=64, z=7},{x=56, y=65, z=7},{x=56, y=66, z=7}} } local firstpos = {x=56,y=67,z=7} -- Posiçao do lado inicial da ponte local waterid = 4612 -- Item ID da agua. local time = 15 -- Em segundos local leveroff, leveron = 1945, 1946 if item.itemid == leveroff then for i,x in pairs(configs) do for s, t in pairs(x) do doCreateItem(i, t) doTransformItem(item.uid, leveron) end end addEvent(removeAll, time*1000, configs, getThingPos(item.uid), firstpos, waterid, leveroff, leveron) end return TRUE end Nao se esqueça de configurar essa linha: local firstpos = {x=000,y=000,z=000} -- Posiçao do lado inicial da ponte Testei aqui e funcionou perfeitamente.
  10. Nao precisa postar 2 topicos com o mesmo assunto.
  11. Aqui funcionou vei '-' kk tenso qual versao do seu ot? Que seja tenta muda isso aki no seu config.lua rateExperienceFromPlayers = 0 Talvez funcione
  12. Bem eu fiz oq eu consegui: Vá em data/creaturescripts/scripts e adicione um arquivo.lua com o nome de power.lua com esse script: local damage = 2 -- Aqui voce configura quando vai dar (Se for menor ou igual a um nao vai dar dano extra e nem menos dano.) function onStatsChange(cid, attacker, type, combat, value) damage = damage-1 if damage <= 0 then return TRUE end if isPlayer(attacker) then if getPlayerSlotItem(attacker, 9).itemid == 2203 then doCreatureAddHealth(cid, -(value*damage)) doSendAnimatedText(getCreaturePosition(cid), value*damage, COLOR_YELLOW) doPlayerSendTextMessage(attacker, 23, "You deal +" .. value*damage .. " damage to " .. getCreatureName(cid)) end end return TRUE end Agora vá em creaturescripts.xml e adicione essa linha: <event type="statschange" name="PowerRing" event="script" value="power.lua"/> Agora vá em login.lua e procure por registerCreatureEvent, voce vai ver varias funçoes, bote no meio delas essa linha: registerCreatureEvent(cid, "PowerRing") Bem esta tudo pronto, mas so vai funcionar quando atacar players, se voce quizer que funcione quando atacar monstros tambem faça isso: Adicione em TODOS os monstros do seu ot, antes do </monster> isso: <script> <event name="PowerRing"/> </script> Bem é oq eu pude fazer. Espero que ajude.
  13. Bem fiz uma formula aki que voce muda o exprate e vai aumentar a exp que eles vao ganhar ao matar alguem.. Va na pasta mods do seu ot e adicione um arquivo.xml com o nome de PvpEnforced.xml e bota isso dentro: <?xml version="1.0" encoding="UTF-8"?> <mod name="PvpEnforced" enabled="yes" author="MatheusMkalo" for="Copas"> <creaturescript type="kill" name="KillWar" event="script"><![CDATA[ local exprate = 1 function expGain(killerexp, killedexp, rate) return ((killedexp-killerexp)/100)+(killedexp*0.07)*rate >= 0 and ((killedexp-killerexp)/100)+(killedexp*0.07)*rate or 0 end if isPlayer(target) then if getPlayerIp(cid) ~= getPlayerIp(target) then if lastHit then doPlayerAddExp(cid, expGain(getPlayerExperience(cid), getPlayerExperience(target), exprate)) end end end return TRUE ]]></creaturescript> <creaturescript type="login" name="WarEvent" event="script"><![CDATA[ registerCreatureEvent(cid, "KillWar") return TRUE ]]></creaturescript> </mod> Mude o exprate = 1 para a quantidade que voce desejar, quanto maior mais exp os players vao ganhar ao se mata
  14. Adicionado /rank guilds, que mostra as guilds que mais mataram no ot. Agora com aparencia e frases exatamente iguais ao /rank padrao.
  15. Bem, a talkaction é a mesma coisa que o !rank que conhecemos, porem voce pode adicionar outros ranks e ela atualiza exatamente na hora que alguem upa. Exemplos de novos ranks: Rank para ver quem morreu mais. Rank para level de players vip. Rank para ver quem matou mais monstros no ot. E varios outros... Bem se alguem quizer implementar um novo rank, peça no topico e mande PM para mim (Nao adianta so pedir no topico porque eu nao irei lembrar de entrar nele). O script está em mod, bem mais facil de instalar. Va na pasta mods do seu ot e adicione o arquivo: RankSystem em formato XML e adicione isso: <?xml version="1.0" encoding="UTF-8"?> <mod name="RankSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com"> <config name="RankLib"><![CDATA[ ranks = { ["fist"] = 74666, ["club"] = 74667, ["sword"] = 74668, ["axe"] = 74669, ["distance"] = 74670, ["shielding"] = 74671, ["fishing"] = 74672, ["magic"] = 74673, ["level"] = 74674, ["monsters"] = 74675, ["guilds"] = 74676 } function havePlayerInRank(rank, playername) -- Checa se o player ja esta no rank. local rankstr = getGlobalStorageValue(ranks[rank]) local players = string.explode(rankstr, "; ") for i,x in pairs(players) do local a, b = string.find(x, "%[") if b ~= nil then if x:sub(1, b-1):lower() == playername:lower() then return TRUE end end end end function getPlayerLevelInRank(rank, playername) -- Pega o level de algum player no rank (Importante para novos tipos de rank.) local rankstr = getGlobalStorageValue(ranks[rank]) local players = string.explode(rankstr, "; ") for i,x in pairs(players) do local a, b = string.find(x, "%[") local t = string.match(x, "%[(.+)]") if b ~= nil and x:sub(1, b-1):lower() == playername:lower() then return t end end return 0 end function addRankPlayer(rank, playername, rankvalue) -- Adiciona um player ao rank ou muda o valor dele no rank. if not havePlayerInRank(rank, playername) then setGlobalStorageValue(ranks[rank], getGlobalStorageValue(ranks[rank]) .. (playername .. "[" .. rankvalue .. "]; ")) else local a,b = string.find(getGlobalStorageValue(ranks[rank]), playername) local c,d = string.find(getGlobalStorageValue(ranks[rank]), playername .. "%[%d+]") setGlobalStorageValue(ranks[rank], getGlobalStorageValue(ranks[rank]):sub(1, b+1) .. rankvalue .. "]; " .. getGlobalStorageValue(ranks[rank]):sub(d+2)) end end function tablelen(tab) -- By MatheusMkalo local result = 0 for i,x in pairs(tab) do result = result+1 end return result end function getRank(rank, maxplayers) -- Pega a lista de players com maior level do rank local rankstr = getGlobalStorageValue(ranks[rank]) local playerstatus = string.explode(rankstr, "; ") local tab = {} local rankTab = {} local rankStr = "Highscore for " .. rank .. "\n\n" .. (isInArray({"monsters", "guilds"}, rank) and "Number of Kills" or "Rank Level") .. " - " .. (rank == "guilds" and "Guild Name" or "Player Name") .. "\n" table.remove(playerstatus, #playerstatus) for i,x in pairs(playerstatus) do local a, b = string.find(x, "%[") local t = string.match(x, "%[(.+)]") tab[x:sub(1, b-1)] = tonumber(t) end local lastname = "" local lastvalue = 0 for i = 1, maxplayers do if tablelen(tab) <= 0 then break end for s,x in pairs(tab) do if x > lastvalue then lastvalue = x lastname = s end end table.insert(rankTab, lastvalue .. " - " .. lastname) tab[lastname] = nil lastname = "" lastvalue = 0 end for i,x in ipairs(rankTab) do rankStr = rankStr .. (i .. ". ") .. x .. "\n" end return rankStr end ]]></config> <talkaction words="!rank;/rank" event="script"><![CDATA[ domodlib('RankLib') if ranks[param:lower()] then setGlobalStorageValue(ranks[param:lower()], getGlobalStorageValue(ranks[param:lower()]) == -1 and "" or getGlobalStorageValue(ranks[param:lower()])) doShowTextDialog(cid, 6500, getRank(param:lower(), 10)) else return doPlayerSendCancel(cid, "Esse rank nao existe ou voce nao digitou corretamente.") end return TRUE ]]></talkaction> <creaturescript type="advance" name="RankSystem" event="script"><![CDATA[ domodlib('RankLib') if skill == 0 then setGlobalStorageValue(74666, getGlobalStorageValue(74666) == -1 and "" or getGlobalStorageValue(74666)) addRankPlayer("fist", getCreatureName(cid), newLevel) elseif skill == 1 then setGlobalStorageValue(74667, getGlobalStorageValue(74667) == -1 and "" or getGlobalStorageValue(74667)) addRankPlayer("club", getCreatureName(cid), newLevel) elseif skill == 2 then setGlobalStorageValue(74668, getGlobalStorageValue(74668) == -1 and "" or getGlobalStorageValue(74668)) addRankPlayer("sword", getCreatureName(cid), newLevel) elseif skill == 3 then setGlobalStorageValue(74669, getGlobalStorageValue(74669) == -1 and "" or getGlobalStorageValue(74669)) addRankPlayer("axe", getCreatureName(cid), newLevel) elseif skill == 4 then setGlobalStorageValue(74670, getGlobalStorageValue(74670) == -1 and "" or getGlobalStorageValue(74670)) addRankPlayer("distance", getCreatureName(cid), newLevel) elseif skill == 5 then setGlobalStorageValue(74671, getGlobalStorageValue(74671) == -1 and "" or getGlobalStorageValue(74671)) addRankPlayer("shielding", getCreatureName(cid), newLevel) elseif skill == 6 then setGlobalStorageValue(74672, getGlobalStorageValue(74672) == -1 and "" or getGlobalStorageValue(74672)) addRankPlayer("fishing", getCreatureName(cid), newLevel) elseif skill == 7 then setGlobalStorageValue(74673, getGlobalStorageValue(74673) == -1 and "" or getGlobalStorageValue(74673)) addRankPlayer("magic", getCreatureName(cid), newLevel) elseif skill == 8 then setGlobalStorageValue(74674, getGlobalStorageValue(74674) == -1 and "" or getGlobalStorageValue(74674)) addRankPlayer("level", getCreatureName(cid), newLevel) end return TRUE ]]></creaturescript> <creaturescript type="kill" name="KillRank" event="script"><![CDATA[ domodlib('RankLib') setGlobalStorageValue(74675, getGlobalStorageValue(74675) == -1 and "" or getGlobalStorageValue(74675)) if isMonster(target) then addRankPlayer("monsters", getCreatureName(cid), getPlayerLevelInRank("monsters", getCreatureName(cid))+1) end if isPlayer(target) then if getPlayerGuildId(cid) > 0 then if lastHit then if getPlayerGuildId(target) <= 0 or getPlayerGuildId(target) ~= getPlayerGuildId(cid) then addRankPlayer("guilds", getPlayerGuildName(cid), getPlayerLevelInRank("guilds", getPlayerGuildName(cid))+1) end end end end return TRUE ]]></creaturescript> <creaturescript type="login" name="RankEvents" event="script"><![CDATA[ registerCreatureEvent(cid, "KillRank") registerCreatureEvent(cid, "RankSystem") return TRUE ]]></creaturescript> </mod> Alem dos ranks normais, eu inclui um rank para os maiores matadores de monstros, para voces poderem ter uma ideia de como incluir novos ranks. PARA QUE O SCRIPT FUNCIONE RETIRE ESSA LINHA DO TALKACTIONS.XML: <talkaction words="!rank;/rank" event="script" value="ranks.lua"/> OBS: Para usar o rank novo use /rank ou !rank e o nome dos skills que se encontram nessa table: ranks = { ["fist"] = 74666, ["club"] = 74667, ["sword"] = 74668, ["axe"] = 74669, ["distance"] = 74670, ["shielding"] = 74671, ["fishing"] = 74672, ["magic"] = 74673, ["level"] = 74674, ["monsters"] = 74675 } No caso do novo rank seria /rank monsters. Para mudar o numero de players mostrados no rank mude essa linha no mod: doShowTextDialog(cid, 2160, getRank(param:lower(), 10)) 10 eh o numero de players que vai mostrar. Adicionado /rank guilds, que mostra as guilds que mais mataram no ot. Agora com aparencia e frases exatamente iguais ao /rank padrao. È Isso ai comentem!
  16. MatheusGlad

    Pedido De Script

    function onSay(cid, words, param) --[[ Script feito por Medargo Storage value utilizado: 9845 ]]-- local perg = { "10+10=1000, isso é verdade? Responda da seguinte maneira: '!quiz sim/não' apenas com 'sim' ou 'não'", "O Estados Unidos é um pais? Responda da seguinte maneira: '!quiz sim/não' apenas com 'sim' ou 'não'", "Michael Jackson esta prestes a fazer uma turnê? Responda da seguinte maneira: '!question sim/não' apenas com 'sim' ou 'não'", "Newton descobriu a gravidade com uma maça? Responda da seguinte maneira: '!quiz sim/não' apenas com 'sim' ou 'não'", "Ajudantes também são players?: '!quiz sim/não' apenas com 'sim' ou 'não'", "O bixo Lord Vampire é o mais forte do servidor?: '!quiz sim/não' apenas com 'sim' ou 'não'", "Se alguém não atender ao sistema de ant-bot é banido do servidor?: '!quiz sim/não' apenas com 'sim' ou 'não'", } local resp = {"não", "sim", "não", "sim" , "sim", "não", "não"} local area = { ---- Area. {1,1,1,1}, {1,1,1,1}, {1,1,1,1}, {1,1,1,1}, } function tableEquals(t1, t2, s) -- function by MatheusMkalo for i,x in pairs(not s and t1 or t2) do if (s and t1[i] ~= x or t2[i] ~= x) then s = false break end end return s == "end" and true or s == true and tableEquals(t1, t2, "end") or s == nil and tableEquals(t1, t2, true) or false end local extpos = {x=187, y=300, z=7} -- Posicao do primeiro sqm << /\ da area. local status = false for i,x in pairs(area) do for s, z in pairs(x) do local creature = getCreaturePosition(cid) if tableEquals({x=creature.x, y=creature.y, z=creature.z}, {x=extpos.x+s-1, y=extpos.y+i-1, z=extpos.z}) then status = true end end end if not status then return doPlayerSendCancel(cid, "Voce precisa estar na area correta.") end if param == '' then if getPlayerStorageValue(cid, 9845) == -1 then questionid = math.random(1,#perg) question = perg[questionid] doPlayerSendTextMessage(cid, 19, question) setPlayerStorageValue(cid, 9845, 1) else doPlayerSendTextMessage(cid, 18, "Você ja possui uma pergunta em mãos, use '!quiz reset' para resetar o sistema") end elseif param ~= '' then if getPlayerStorageValue(cid, 9845) == 1 then if param ~= 'reset' then if param == 'sim' or param == 'não' then if param == resp[questionid] then doPlayerSendTextMessage(cid, 27, "CORRETO, Sistema resetado!") setPlayerStorageValue(cid, 9845, -1) doPlayerAddItem(cid, 2160,1) questionid = nil question = nil else doPlayerSendTextMessage(cid, 18, "ERRADO, Sistema resetado!") setPlayerStorageValue(cid, 9845, -1) questionid = nil question = nil end else doPlayerSendTextMessage(cid, 18, "Use 'sim' ou 'não' para responder!") end else doPlayerSendTextMessage(cid, 19, "Sistema resetado, pode pegar outra questão.") setPlayerStorageValue(cid, 9845, -1) questionid = nil question = nil end else doPlayerSendTextMessage(cid, 18, "Você não possui pergunta em mãos, para conseguir uma, use '!quiz''") end end return TRUE end Configuraçao facil flws.
  17. Bugs foram retirados, e agora o script so esta disponivel na versao em mod, agora nao eh nescessariamente double exp, e sim exp potion, porque voce decide o quanto % vai dar a mais de exp. Funciona perfeitamente com outros sistemas de adicionar exp, e nao anulas-os.
  18. Agora o War Arena System esta disponivel em MOD, vale a pena conferir: http://www.xtibia.com/forum/topic/154487-war-arena-system/

  19. Versão em MOD adicionada ao topico, muito mais pratico, aproveitem!
  20. MatheusGlad

    [Pedido]

    Ja que eh akilo la mesmo. Segue os scripts e os locais onde eles devem ficar: Va em data/lib/000-constant.lua e adicione essa linha: GuildCastleScore = {} data/creaturescripts/scripts/CastleGenerator_Kill.lua: function haveCastleEventWinner() local a = 0 for i,x in pairs(GuildCastleScore) do a = a+x end return a >= 5 end function getGuildCastleEventWinner() local bestscore = 0 for i,x in pairs(GuildCastleScore) do if x > bestscore then bestscore = x GuildWinner = i end end return GuildWinner end function onKill(cid, target, lastHit) if getCreatureName(target) == "Castle Generator" then if lastHit then GuildCastleScore[getPlayerGuildName(cid)] = GuildCastleScore[getPlayerGuildName(cid)] and GuildCastleScore[getPlayerGuildName(cid)]+1 or 1 if haveCastleEventWinner() then doBroadcastMessage("[Castle_Event] A Guild " .. getGuildCastleEventWinner().. " dominou o castelo.") GuildCastleScore = {} end end end return TRUE end data/creaturescripts/creaturescripts.xml (Adicione a linha): <event type="kill" name="CastleGeneratorKill" event="script" value="CastleGenerator_Kill.lua"/> Agora va em data/creaturescripts/scripts/login.lua e procure (CTRL+F) por registerCreatureEvent voce vai achar varios bote entre eles essa linha: registerCreatureEvent(cid, "CastleGeneratorKill") data/movements/scripts/CastleSqm.lua: function onStepIn(cid, item, position, fromPosition) if getGlobalStorageValue(98741) >= 1 then if getPlayerGuildId(cid) > 0 then doPlayerSendCancel(cid, "Bem vindo ao castelo.") else doTeleportThing(cid, fromPosition) return doPlayerSendCancel(cid, "Voce precisa de uma guild para entrar no castelo.") end else doTeleportThing(cid, fromPosition) return doPlayerSendCancel(cid, "Não está acontecendo o evento ainda.") end return TRUE end data/movements/movements.xml (Adicione a linha): <movevent type="StepIn" actionid="66678" event="script" value="CastleSqm.lua"/> data/talkactions/scripts/CastleTalkaction.lua: function onSay(cid, words, param) if getGlobalStorageValue(98741) <= 0 then setGlobalStorageValue(98741, 1) doPlayerSendCancel(cid, "Voce abriu o evento do castelo.") doBroadcastMessage("[Castle_Event] O Evento de dominar o castelo esta aberto. Va e domine o castelo com sua guild.") else setGlobalStorageValue(98741, 0) return doPlayerSendCancel(cid, "Voce fexou o evento do castelo.") end return TRUE end data/talkactions/talkactions.xml (Adicione a linha): <talkaction log="yes" words="/castle" access="5" event="script" value="CastleTalkaction.lua"/> Agora adicione nos sqms da entrada do castle o actionid 66678 e bote pelo map editor 5 CASTLE GENERATORS dentro do castelo, em qualquer lugar do castelo. Para abrir o castelo eh so digitar /castle. Se voce quizer mais de 5 castle generators va no script CastleGenerator_Kill e mude: function haveCastleEventWinner() local a = 0 for i,x in pairs(GuildCastleScore) do a = a+x end return a >= 5 end Para: function haveCastleEventWinner() local a = 0 for i,x in pairs(GuildCastleScore) do a = a+x end return a >= NUMERO DE CASTLE GENERATORS end Castle Generator: <?xml version="1.0" encoding="UTF-8"?> <monster name="Castle Generator" nameDescription="a castle generator" race="undead" experience="0" speed="0" manacost="0"> <health now="100000" max="100000"/> <look typeex="9779" /> <defenses armor="10" defense="10"/> <immunities> <immunity physical="0"/> <immunity earth="0"/> <immunity death="0"/> <immunity lifedrain="0"/> <immunity paralyze="1"/> </immunities> </monster>
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...