Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 08/12/12 em %
-
[Pokemon] PDA By Slicer Pokemon dash advanced editado por slicer, vários bugs retidos. Projeto encerrado! Espero que todos tenham gostado desse 1 ano de trabalho duro! Todas as atualizações: * Leiam e sigam as instruções do Change Log dentro da pasta do patch! Downlaods: PDA By Slicer With Level System v2.9 Full -> http://www.mediafire...z2afuu75zblvmvq PDA By Slicer Without Level System v1.9 Full -> http://www.mediafire...td0l0ip9ajprrbf OTClient editado 2.8/1.8 => http://www.mediafire...1lcbs1fktpm676w Atualizações: EH OBRIGATORIO O USO DESSE CLIENT ABAIXO E USEM O .PIC TB!!!!!!!!! Client v1.9/2.9 => http://www.mediafire...77i414v1hy187fj Patch v1.9 => http://www.mediafire...da4umj3ip18jrf1 Patch v2.9 => http://www.mediafire...7nt275td9afl1fy Patch v1.9.1 => http://www.mediafire.com/?i3flwa3lrd016zl Patch v2.9.1 => http://www.mediafire.com/?m4zhjgn62uow1sp Obs: Atualizaçoes mais antigas estao dentro do spoiler acima!! OTAL.DLL: OBS: caso n esteja aparecendo a barra de moves no client normal do tibia, baixem essa .dll e coloquem na pasta onde fica o Pokemon_nibe.exe ... Otal.rar Patch Correçao! Todos olhem! Bugs na nova atualizaçao? Olhe o spoiler e veja se arruma o problema! Atualizado: 08/02/13 Créditos: Otal.rar2 pontos
-
Olá galera, hoje vou postar mais um script para pokemon dash advanced. Bem legal e acho que também é um dos mais procurados... Vamos a ele. Nome: Duel System por Action O que faz? Faz com que dois players duelem com limites de pokemons, escolhido no inicio das configurações da batalha. Primeiro vamos à actions/scripts e criaremos um arquivo chamado duelSystem.lua e dentro vamos colar o código abaixo: Agora vamos a tag, em actions.XML cole a seguinte tag: <action itemid="id do item que vai o player vai usar para o duel" event="script" value="duelSystem.lua"/> Pronto. Vamos a pasta xml/channels.xml e crie as seguintes janelas: <channel id="id decorrente da sua channel" name="1 Pokemon"> <vocation id="51"/> </channel> <channel id=" id decorrente da sua channel " name="2 Pokemons"> <vocation id="51"/> </channel> <channel id=" id decorrente da sua channel " name="3 Pokemons"> <vocation id="51"/> </channel> <channel id=" id decorrente da sua channel " name="4 Pokemons"> <vocation id="51"/> </channel> <channel id=" id decorrente da sua channel " name="5 Pokemons"> <vocation id="51"/> </channel> <channel id=" id decorrente da sua channel " name="6 Pokemons"> <vocation id="51"/> </channel> Depois disso, não mude mais nada. Vamos agora em vocations.xml e vamos colar a seguinte tag dentro: <vocation id="51" name="Duel" description="pokemon trainer" needpremium="0" gaincap="0" gainhp="55" gainmana="0" gainhpticks="0" gainhpamount="0" gainmanaticks="0" gainmanaamount="0" manamultiplier="1.1" attackspeed="-1" soulmax="251" gainsoulticks="-1" fromvoc="1" lessloss="0"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="2" club="2" sword="2" axe="2" distance="2" shielding="2" fishing="2" experience="1.1"/> </vocation> Obs: Não mude nada nela... Feito isso, vamos a pasta creaturescripts/scripts e vamos criar um arquivo chamado duelSystemChannel.lua e colaremos o código a seguir dentro: Agora vamos colocar duas tags, uma em login.lua e a outra em creaturescripts.xml: CreatureScript.xml: <event type="joinchannel" name="DuelSystemChannel" event="script" value="duelSystemChannel.lua"/> Login.lua registerCreatureEvent(cid, "DuelSystemChannel") Feito isso, vamos a talkactions/scripts e criaremos um arquivo chamado acceptDuel.lua e dentro cole o código abaixo: Agora vamos á talkactions.XML e colaremos as tag a seguir: <talkaction words="yes" event="script" value="duel.lua"/> <talkaction words="sim" event="script" value="duel.lua"/> Agora vamos em lib/ e criaremos um arquivo chamado duelLibSystem.lua e colaremos o seguinte código dentro: Vamos para actions/scripts/goback.lua e vamos procurar por está linha: if item.itemid == usando then Abaixo disso cole isso: doBackPokeballsInDuel(cid) Aindan no mesmo script procure por: elseif item.itemid == pokeballs[btype].on then E abaixo dele cole isso: checkPokeballsInDuel(cid) Vamos agora em creaturescripts/scripts/goback.lua e antes do utimo apague tudo e cole isto dentro: Obs: O script falta duas funções para funcionar perfeitamente. A primeira é para não deixar o player usar o item em cima dele mesmo. A segunda e para não deixar o player deslogar enquanto está no duel. Tentei e tentei mas não consegui... Caso alguém possa ajudar fico muito grato. Como funciona? Você da use em cima do player que quer batalhar, escolhe quantos pokemons querem usar. O outro player fala (“yes” ou “sim”) e começam a duelar. Eu deixei uma função para deixar um player attackar o outro se ele estiver sem pokemon. Porem não perdera nada se morrer. É isso galera espero que gostem. Lembrando vou atualizar este sistema para melhora-lo. Só deixei ele para teste. Caso gostem termino ele.2 pontos
-
Subwat Frost V1
faantastic e um outro reagiu a s0me0ne por um tópico no fórum
Olá galera. Trouxe uma nova versão do mapa Subwat, o Subwat Frost v1. Informações: - Versão 8.60 - Items 8.60 - Várias Quests - Sistema VIP - Mapa Subwat Kamikaze - 2 cidades (Subwat, Vip City) - Diversidade de monstros - Vários eventos Novidades e correções: Screenshots: Links: Download: http://www.mediafire...pgcg00vl8lltu5h Scan: https://www.virustot...sis/1344465311/ Créditos: - Subwat (Pelo mapa original) - ADM Kamikaze (Pelo Subwat Kamikaze) - Delaks (Pelas edições no mapa Kamikaze) - Eu (Pelas novidades e correções no server)2 pontos -
Vip System By Mock 100%
Bluetooth reagiu a Natanael Beckman por um tópico no fórum
Boa galera eu mais uma vez trazendo comodidade e algo seguro pra nós. Esse sistema VIP do Mock foi modificado e aptado em alumas partes dos scripts, para um funcionamento correto e com isso tivemos a ajuda dos scripts, Doidin, Luke sky walker e por min por ter ido atraz de todas as soluções pra completa algo incompleto. Vamos nois: 1° Acesse a pasta data/lib copie la um arquivo.lua e renomeio para 049-vipsys.lua, após isso apague tudo dentro desse arquivo e adicione este coder: vip = { name = "Vip system"; author = "Mock"; version = "1.0.0.0"; query="ALTER TABLE `accounts` ADD `vip_time` INTEGER"; query2="ALTER TABLE `accounts` ADD `vip_time` INT(15) NOT NULL" } function vip.setTable() dofile('config.lua') if sqlType == "sqlite" then db.executeQuery(vip.query) else db.executeQuery(vip.query2) end end function vip.getVip(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then error('Player don\'t find') end; ae = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..getPlayerAccount(cid).."';") if ae:getID() == -1 then return 0 end local retee = ae:getDataInt("vip_time") or 0 ae:free() return retee end function vip.getVipByAcc(acc) assert(acc,'Account is nil') local a = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';") if a:getID() ~= -1 then return a:getDataInt("vip_time") or 0, a:free() else error('Account don\'t find.') end end function vip.setVip(cid,time) dofile("config.lua") assert(tonumber(cid),'Parameter must be a number') assert(tonumber(time),'Parameter must be a number') if isPlayer(cid) == FALSE then error('Player don\'t find') end; db.executeQuery("UPDATE `"..sqlDatabase.."`.`accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='".. getPlayerAccount(cid).."';") end function vip.getVipByAccount(acc) assert(acc,'Account is nil') return db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';"):getDataInt("vip_time") or 0 end function vip.hasVip(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then return end; local t = vip.getVip(cid) or 0 if os.time(day) < t then return TRUE else return FALSE end end function vip.hasVips(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then return end; local t = vip.getVip(cid) if os.time(day) < t then return TRUE else return FALSE end end function vip.accountHasVip(acc) assert(acc,'Account is nil') if os.time() < vip.getVipByAccount(acc) then return TRUE else return FALSE end end function vip.getDays(days) return (3600 * 24 * days) end function vip.addVipByAccount(acc,time) assert(acc,'Account is nil') assert(tonumber(time),'Parameter must be a number') local a = vip.getVipByAcc(acc) a = os.difftime(a,os.time()) if a < 0 then a = 0 end; a = a+time return vip.setVipByAccount(acc,a) end function vip.setVipByAccount(acc,time) dofile("config.lua") assert(acc,'Account is nil') assert(tonumber(time),'Parameter must be a number') db.executeQuery("UPDATE `accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='"..acc.."';") return TRUE end function vip.returnVipString(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == TRUE then return os.date("%d %B %Y %X ", vip.getVip(cid)) end end 2° Abra a pasta data/creaturescrpits/scripts copie la um arquivo.lua e renomeio para vip.lua, dentro dele adicione: By Lukeskywalker function onLogin(cid) local temple = { x =32369, y = 32246, z = 6} if vip.hasVip(cid) == true then if getPlayerStorageValue(cid,55555) ~= 1 then setPlayerStorageValue(cid,55555,1) end else if getPlayerStorageValue(cid,55555) == 1 then doTeleportThing(cid, temple) doPlayerSendTextMessage(cid, 22, "Your VIP Time over!") db.executeQuery("UPDATE `accounts` SET `vip_time` = 0 WHERE `id` = ".. getAccountIdByName(getPlayerName(cid))..";") setPlayerPromotionLevel(cid, 1) setPlayerStorageValue(cid, 55555, 0) end end return true end Você pode troca as coordenadas do templo: local temple = {x=32369, y=32246, z=6}. 3° Em data/creaturescripts/scripts/login.lua adicione essas tags: registerCreatureEvent(cid, "FimVip") registerCreatureEvent(cid, "VipReceive") 4° Em data/creaturescripts/creaturescripts.xml adicione está tag: <event type="login" name="FimVip" event="script" value="vip.lua"/> 5º Em data\movements\scripts copie la um arquivo.lua e renomeio para viptile.lua e adicione este coder dentro do mesmo: function onStepIn(cid, item, position, fromPosition) local tileConfig = { kickPos = fromPosition, kickEffect = CONST_ME_POFF, kickMsg = "You need to be a vip player to access this area.", enterMsg = "Welcome to vip area!", enterEffect = CONST_ME_MAGIC_RED, } if isPlayer(cid) == true then if vip.hasVip(cid) == FALSE then doTeleportThing(cid, tileConfig.kickPos) doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect) doPlayerSendCancel(cid, tileConfig.kickMsg) return end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tileConfig.enterMsg) doSendMagicEffect(position, tileConfig.enterEffect) return true end end 6° Em data\movements\movements.xml adicione a tag: <movevent type="StepIn" actionid="13500" event="script" value="viptile.lua"/> Vejam a numeração 13500 você irá usar no tile que você quer para a passagem de player VIP para configurar adicione a numeração em ActionID do tile. 7° Em data/talkactions/scripts acrecente dentro da pasta scripts uma outra pasta com o nome VIP vamos precisar de 7 arquivos.lua quem teram os nomes e coder a seguir: add.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, "Added "..param.." Vip Days.") return doPlayerAddVipDays(cid, param) end addvipp.lua function onSay(cid, words, param) if param == "" then return doPlayerPopupFYI(cid,"Está com problemas?\nAprenda os comandos!\n---------------\nAdicionar vip:\n/vip add days player\n/vip add 30 Real\n---------------\nDeletar vip:\n/vip del player\n/vip del Real\n---------------\nVer a vip:\n/vip see player\n/vip see Real\n---------------\n") end if param:lower():find('add') == 1 and 3 then local _,_,id,name = param:lower():find('add (%d+) (.+)') name = name or "" id = tonumber(id or 1) or 1 if tonumber(id) == nil or getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Adicionar vip:\n/vip add days player\n/vip add 30 Real\n[Player: "..name.."]") end if isPlayer(getPlayerByName(name)) == TRUE then vip.addVipByAccount(getPlayerAccount(getPlayerByName(name)) ,vip.getDays(id)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Foram adicionados "..tonumber(id).." dias de vip a "..name..".") doPlayerSendTextMessage(getPlayerByName(name),MESSAGE_INFO_DESCR,"Você recebeu "..tonumber(id).." dias de vip.") else doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,name.." não esta online ou não existe.") end elseif param:lower():find('del') == 1 and 3 then local _,_,name = param:lower():find('del (.+)') if getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Deletar vip:\n/vip del player\n/vip del Real\n") end vip.setVipByAccount(getPlayerAccount(getPlayerByName(name)),-os.time()) doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"A vip de "..name.." foi apagada.") elseif param:lower():find('see') == 1 and 3 then local _,_,name = param:lower():find('see (.+)') name = name or "" if getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Ver a vip:\n/vip see player\n/vip see Real\n") end local ret_ = vip.getVip(getPlayerByName(name)) if ret_ == 0 then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,name.." Não tem vip, e nunca teve.") else return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "A vip de "..name.." Acaba/terminou em "..os.date("%d %B %Y %X ",ret_)) end end return TRUE end get.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, ""..getPlayerVipDays(cid).." days VIP left.") end is.lua function onSay(cid, words, param, channel) if isPlayerVip(cid) == TRUE then doPlayerSendCancel(cid, "You are a VIP player.") else doPlayerSendCancel(cid, "You are not a VIP player.") end end removevip.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, "Vip removed.") return doPlayerRemoveVip(cid) end set.lua function onSay(cid, words, param) if vip.hasVip(cid) == TRUE then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your vip end in "..os.date("%d %B %Y %X ",vip.getVip(cid))) else if vip.getVip(cid) ~= 0 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You're not a vip player. Your vip has finished in "..os.date("%d %B %Y %X ", vip.getVip(cid)).." and now is "..os.date("%d %B %Y %X ", os.time())) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You're not a vip player. You naver has a vip.") end end return TRUE end 8°Em data/talkactions/talkactions.xml adicione está tag: <!-- VIP System --> <talkaction log="yes" words="/vip" access="5" event="script" value="VIP/addvipp.lua" /> <talkaction words="!vipdays" event="script" value="VIP/vipdays.lua" /> 9° Para finalizar execute este comando na sua database na tabela accounts: alter table `accounts` add `vip_time` INT NOT NULL; Bom galera fim este sistema vip adiciona os dias corretos e ao termino do VIP o player recebe a menssagem que o VIP acabou é teleportado pro templo porque se no caso ele estiver na área VIP essa é uma saida e zera a coluna vip_time. Creditos: Mock (por ter iniciado algo e não terminou) Lukeskywalker (Sistema de finalização perfeito do vip.) Natan Beckman (Por ter ido atrás a conclusão 100% in game e php)1 ponto -
[Mod] Auto Loot Update.
Demonbholder reagiu a pbottrinks por um tópico no fórum
Credits: MatheusMkalo & Vodkart versão testada: 8.54, 8.6 e 9.1 Não funciona em OT pokemon Auto Loot.xml <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Loot System" version="1.0" author="Vodkart And Mkalo" contact="none.com" enabled="yes"> <config name="Loot_func"><![CDATA[ info = { OnlyPremium = true, AutomaticDeposit = true, BlockMonsters = {}, BlockItemsList = {2123,2515} } function setPlayerStorageTable(cid, storage, tab) local tabstr = "&" for i,x in pairs(tab) do tabstr = tabstr .. i .. "," .. x .. ";" end setPlayerStorageValue(cid, storage, tabstr:sub(1, #tabstr-1)) end function getPlayerStorageTable(cid, storage) local tabstr = getPlayerStorageValue(cid, storage) local tab = {} if type(tabstr) ~= "string" then return {} end if tabstr:sub(1,1) ~= "&" then return {} end local tabstr = tabstr:sub(2, #tabstr) local a = string.explode(tabstr, ";") for i,x in pairs(a) do local b = string.explode(x, ",") tab[tonumber(b[1]) or b[1]] = tonumber(b[2]) or b[2] end return tab end function isInTable(cid, item) for _,i in pairs(getPlayerStorageTable(cid, 27000))do if tonumber(i) == tonumber(item) then return true end end return false end function addItemTable(cid, item) local x = {} for i = 1,#getPlayerStorageTable(cid, 27000) do table.insert(x,getPlayerStorageTable(cid, 27000)[i]) end if x ~= 0 then table.insert(x,tonumber(item)) setPlayerStorageTable(cid, 27000, x) else setPlayerStorageTable(cid, 27000, {item}) end end function removeItemTable(cid, item) local x = {} for i = 1,#getPlayerStorageTable(cid, 27000) do table.insert(x,getPlayerStorageTable(cid, 27000)[i]) end for i,v in ipairs(x) do if tonumber(v) == tonumber(item) then table.remove(x,i) end end return setPlayerStorageTable(cid, 27000, x) end function ShowItemsTabble(cid) local str,n = "-- My Loot List --\n\n",0 for i = 1,#getPlayerStorageTable(cid, 27000) do n = n + 1 str = str..""..n.." - "..getItemNameById(getPlayerStorageTable(cid, 27000)[i]).."\n" end return doShowTextDialog(cid, 2529, str) end function getContainerItems(containeruid) local items = {} local containers = {} if type(getContainerSize(containeruid)) ~= "number" then return false end for slot = 0, getContainerSize(containeruid)-1 do local item = getContainerItem(containeruid, slot) if item.itemid == 0 then break end if isContainer(item.uid) then table.insert(containers, item.uid) end table.insert(items, item) end if #containers > 0 then for i,x in ipairs(getContainerItems(containers[1])) do table.insert(items, x) end table.remove(containers, 1) end return items end function getItemsInContainerById(container, itemid) -- Function By Kydrai local items = {} if isContainer(container) and getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i=0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid) local piles = 0 if #item > 0 then for i,x in pairs(item) do if getThing(x).type < 100 then local it = getThing(x) doTransformItem(it.uid, itemid, it.type+quant) if it.type+quant > 100 then doPlayerAddItem(cid, itemid, it.type+quant-100) end else piles = piles+1 end end else return doPlayerAddItem(cid, itemid, quant) end if piles == #item then doPlayerAddItem(cid, itemid, quant) end end function AutomaticDeposit(cid,item,n) local deposit = item == tonumber(2160) and (n*10000) or tonumber(item) == 2152 and (n*100) or (n*1) return doPlayerDepositMoney(cid, deposit) end function corpseRetireItems(cid, pos) local check = false for i = 0, 255 do pos.stackpos = i tile = getTileThingByPos(pos) if tile.uid > 0 and isCorpse(tile.uid) then check = true break end end if check == true then local items = getContainerItems(tile.uid) for i,x in pairs(items) do if isInArray(getPlayerStorageTable(cid, 27000), tonumber(x.itemid)) then if isItemStackable(x.itemid) then doPlayerAddItemStacking(cid, x.itemid, x.type) if info.AutomaticDeposit == true and isInArray({"2148","2152","2160"},tonumber(x.itemid)) then AutomaticDeposit(cid,x.itemid,x.type) end else doPlayerAddItem(cid, x.itemid) end doRemoveItem(x.uid) end end end end ]]></config> <event type="login" name="LootLogin" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "MonsterAttack") return true end]]></event> <event type="death" name="LootEventDeath" event="script"><![CDATA[ domodlib('Loot_func') function onDeath(cid, corpse, deathList) local killer,pos = deathList[1],getCreaturePosition(cid) addEvent(corpseRetireItems,1,killer,pos) return true end]]></event> <event type="combat" name="MonsterAttack" event="script"><![CDATA[ domodlib('Loot_func') if isPlayer(cid) and isMonster(target) and not isInArray(info.BlockMonsters,string.lower(getCreatureName(target))) then registerCreatureEvent(target, "LootEventDeath") end return true]]></event> <talkaction words="!autoloot;/autoloot" event="buffer"><![CDATA[ domodlib('Loot_func') local t = string.explode(string.lower(param), ",") if info.OnlyPremium == true and not isPremium(cid) then doPlayerSendCancel(cid, "you must be a premium account.") return true elseif not t[1] then ShowItemsTabble(cid) return true elseif tonumber(t[1]) or tonumber(t[2]) then doPlayerSendCancel(cid, "enter!autoloot add,name or !autoloot remove,name") return true elseif isInArray({"add","remove"}, tostring(t[1])) then local func,check = tostring(t[1]) == "add" and addItemTable or removeItemTable, tostring(t[1]) == "add" and true or false local item = getItemIdByName(tostring(t[2]), false) if not item then doPlayerSendCancel(cid, "This item does not exist.") return true elseif check == true and isInArray(info.BlockItemsList, item) then doPlayerSendCancel(cid, "You can not add this item in the list!") return true elseif isInTable(cid, item) == check then doPlayerSendCancel(cid, "This Item "..(check == true and "already" or "is not").." in your list.") return true end func(cid, item) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,check == true and "you added the item "..t[2].." in the list" or "you removed the item "..t[2].." from the list") return true end return true]]></talkaction> </mod> Commads: Configurações: OBS: caso no seu servidor precise relogar para atualizar a loot list adicione: func(cid, item) -- dps desta linha doPlayerSave(cid) -- essa função Atenção: Esse tópico foi autorizado pelo Vodkart, cuja eu tenho total direitos de coloca-lo aqui.1 ponto -
Como funciona? Bounty System é um script que visa o pvp. Um player diz o comando /bounty [prize],[nick]. e a partir daí o player que foi colocado em [nick] passa a ser procurado, e o primeiro a matá-lo ganha uma recompensa. Vamos lá... Execute os comandos em seu PhpMyAdmin: Vá em data/creaturescripts/scripts/,e crie um arquivo bounty.lua e cole isto: Vá em data/creaturescripts/scripts/ e coloque isto em login.lua : Vá em data/talkactions/talkactions.xml e coloque:1 ponto
-
[ Tutorial ] Area Vip ( Premmium Tile )
jacklecler reagiu a lelelord por um tópico no fórum
Primeiro tutorial meu Premmium Tile 1º - Vá a pasta data\movements\scripts, crie um arquivo que chame premium tile.lua Insira: Laranja = Lugar para onde o player sera teletransportado se ele nao for premmium ( Mude para a possição, que vc quiser colocar X,Y,Z) Azul Escuro = Mensagem que aparecerá para o player caso ele nao seja premmium Vermelho = Unique ID do piso ( Inventa qual quer um do 1000 ao 65324 ) Se ele for premmium ele passa de boa! 2º - Vá em movements.xml Insira: Vermelho = Unique ID do piso ( Coloque o mesmo da que vc coloco no script de cima ) Fiz o mais simples possivel pra todo mundo entender! Galera não esqueca o REP+ Porfavor!1 ponto -
Esse script é um simples sistema de alquimia, porém é diferente dos outros. Alquimia era uma prática antiga que combinava alguns elementos a fim de formar outros. Esse meu sistema, faz com que os itens sejam "misturados" em um caldeirão e se pareça mais como era antigamente. Abaixo, um vídeo de demonstração e de como instalar. Deixei as mesmas posições no script pra que vocês possam se basear ao instalar no seu. Bom, vamos ao script: -- Como funciona: O player deve colocar os itens da receita emcima do counter (balcão de pedra) e puxar a alavanca. Feito isso, os itens serão "misturados" no caldeirão e com a colher (wooden spoon) o player poderá pegar o seu item. Crie um arquivo.xml em data/mods chamado Alchemist.xml e cole isto dentro: <?xml version="1.0" encoding="UTF-8"?> <mod name="Alchemist System" version="1.0" author="Leoxtibia" contact="none" enabled="yes"> <config name="alch_sys"><![CDATA[ counter = {x = 17, y = 56, z = 7} efeitos = {x=17, y=53, z=7} receitas = { {items = {{2160,1}, {2157,2}} , itemgain = {{5878,100}}, storage = 56000}, {items = {{2148,5}, {2155,1}} , itemgain = {{2113,1}}, storage = 56001}, {items = {{2498,1}, {2113,1}} , itemgain = {{2472,1}}, storage = 56002} } function Caldeiron() local B = { {3693,{x=17, y=53, z=7, stackpos = 1}}, {3694,{x=18, y=53, z=7, stackpos = 1}} } for i = 1, #B do doTransformItem(getThingfromPos(B[i][2]).uid,getTileItemById(B[i][2], B[i][1]).uid == 0 and B[i][1] or (B[i][1]-4)) end end function getItemsInPos(items, pos) for i = 1,#items do local stack = getTileItemById(pos, items[i][1]) if stack.uid > 0 and math.max(1, stack.type) >= items[i][2] and i == #items then return true end end return false end function doRemoveItensInPos(items, pos) local items = type(items) == "table" and items or {items} for i = 1, table.maxn(items) do doRemoveItem(getThingFromPos({x=pos.x,y=pos.y,z=pos.z,stackpos=2}).uid) end return nil end function effets(position,delay) local text = {"Ishhh!", "Kaboom", "Tic Tac", "BUM!", "Blop Blop!", "Cronch!"} local effects = {2, 6, 25, 31, 36,40, 54, 51, 65, 66, 67, 68} if delay ~= 0 then doSendAnimatedText(position, text[math.random(1, #text)], math.random(1, 255)) doSendMagicEffect(position, effects[math.random(1, #effects)]) addEvent(effets, 1000, position, delay -1) end end]]></config> <action actionid="4780" event="script"><![CDATA[ domodlib('alch_sys') function onUse(cid, item, fromPosition, itemEx, toPosition) doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) for _, t in ipairs(receitas) do if getItemsInPos(t.items, counter) then doRemoveItensInPos(t.items, counter) effets(efeitos,6) Caldeiron() return setPlayerStorageValue(cid, t.storage, 1) end end return doPlayerSendCancel(cid, "You must put the correct items in the counter.") end]]></action> <action itemid="2567" event="script"><![CDATA[ domodlib('alch_sys') function onUse(cid, item, fromPosition, itemEx, toPosition) if itemEx.actionid == 4781 then for _, x in ipairs(receitas) do if getPlayerStorageValue(cid, x.storage) >= 0 then for i=1,#x.itemgain do doPlayerAddItem(cid, x.itemgain[i][1], x.itemgain[i][2]) doPlayerPopupFYI(cid, "You have prepared ".. x.itemgain[i][2] .." ".. getItemNameById(x.itemgain[i][1]) ..".") end Caldeiron() setPlayerStorageValue(cid, x.storage, -1) end end end return true end]]></action> </mod> Configuração: Para adicionar mais receitas, é só adicionar mais uma linha, mudando o storage para +1. Lembrando que a última linha não tem vírgula no final. {items = {{2666,1}, {2671,1}} , itemgain = {{2672,1}}, storage = 56003} Ainda pretendo incrementar o sistema com novas funções. Mas, por hoje é isso. Espero que tenham gostado.1 ponto
-
[ Talkaction ] !guild List
Gabrieltxu reagiu a Vodkart por um tópico no fórum
Fala galera vim lhe apresentar 2 comando para seu servidor. talkactions\script guildlist.lua function onSay(cid, words, param, channel) local str = "" if param == '' then local lista = db.getResult("SELECT `name` FROM `guilds`;") if(lista:getID() ~= -1) then repeat str = str .. lista:getDataString("name") .. "\n" until not lista:next() lista:free() doShowTextDialog(cid, 2529, str == "" and "Não existem guilds no servidor." or str) return true end end local id = getGuildId(param) if id then local lista = db.getResult("SELECT `name`, `rank_id` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. id .. ");") if(lista:getID() ~= -1) then repeat local rank = db.getResult("SELECT `name`, `level` FROM `guild_ranks` WHERE `id` = " .. lista:getDataInt("rank_id") .. " ORDER BY `level` DESC, `name` ASC;") str = str .. lista:getDataString("name") .. " [" .. rank:getDataString("name") .. "]\n" rank:free() until not lista:next() lista:free() doShowTextDialog(cid, 2529, str) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não há jogadores nesta guild.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Está Guild não existe.") end return true end talkactions.xml adicione a tag: <talkaction words="!glist" script="guildlist.lua"/> --- Deletar guilds do server que não tem mais players(foram deletadas): Data/globalevents/script deleteguild.lua function onThink(interval, lastExecution) local guilds = db.getResult("SELECT `name` FROM `guilds`;") if(guilds:getID() ~= -1) then repeat local delete = db.getResult("SELECT `name`, `rank_id` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. getGuildId(guilds:getDataString("name")) .. ");") if(delete:getID() < 1) then db.executeQuery("DELETE FROM guilds WHERE id = "..getGuildId(guilds:getDataString("name"))) end until not guilds:next() guilds:free() end return true end globalevents.xml <globalevent name="Guild Delete" interval="36000" event="script" value="deleteguild.lua"/>1 ponto -
V1 exemplo como fazer pokemon falar !x E Ae Galera Do XTibia V2 nessa v2 apenas Mewtwo,Meowth,Entei que fala e deixei alakazam e gengar fala espero que gostei *-*1 ponto
-
1 ponto
-
Meteor Spell
El9Diablo reagiu a Newtonnotwen por um tópico no fórum
Uma spell de meteoro, se quiser pode editar. Adicione em spells.xml: Editando: -Vermelho: Variáveis (tiver duvida em alguma me fala) Agora crie um arquivo.lua em data/spells/scripts nomeie para meteor e adicione: Editando: -Vermelho: Efeito (/z) -Verde: Id do item a ser criado -Laranja: 1 para aparecer mais um, 0 para cancelar (Se não entender pergunte) -Marrom: Efeito (/x) Imagem:1 ponto -
Criando Dois Items Com A Mesma Sprite
lpcordovil reagiu a Spraypaint por um tópico no fórum
Apresentação Hoje estarei ensinando a criar dois ou mais itens com a mesma sprite! Copiando o item Depois de baixar o seu otitemeditor,de load em seu otm: Depois de dar load você ira acha o item que você vai querer duplicar "clonar".Ao encontrar o item você ira clicar em Tools/Copy Item. Feito isso o otitemeditor ira gerar um novo item com a mesma sprite mais com o Sid diferente do antigo.Confira na imagen! Feito isso,salve seu otbm e pegue o Sid do novo item que você acaba de fazer com ele iremos editar o Items.xml Configurando o Novo Item Bem depois de clonar o seu item la no otitemeditor, você ira abrir agora o seu items.xml para configurar o novo item.Depois de abrir você ira adicionar um novo config para seu item no caso da minha armadura eu adiconei assim: <item id="[b]Sid do seu novo item[/b]" article="a" name="[b]Nome do item[/b]"> <attribute key="weight" value="3500"> <attribute key="armor" value="1"> <attribute key="slotType" value="body"> </attribute></attribute></attribute></item> Preenchido ficou +- assim <item id="12622" article="a" name="iten 2"> <attribute key="weight" value="3500"> <attribute key="armor" value="1"> <attribute key="slotType" value="body"> </attribute></attribute></attribute></item> Progamas Usados http://www.4shared.com/rar/Mh4FR5ke/Otitemeditor-SprayMdgabrielzim.html]Otitemeditor-Spray,Mdgabrielzim.rar https://www.virustotal.com/file/3f650272bf62898d4ae250d6de4858fa170196172399ba266f7a77c081993b72/analysis/1340733058/ Creditos1 ponto -
nas vocations.xml gainmanaticks="3" (tempo a cada healada de mana no caso) gainmanaamount="200" (mana que será adicionada a cada 3 segundos) gainhpticks="3" (tempo a cada healada) gainhpamount="200" (health que será adicionada a cada 3 segundos)1 ponto
-
Vou dar minha opinião como adm e player de ot...Se o mapa é novo e totalmente editado por ti, vc vai ter que disponibilizar o map pros player olharem (como a maioria dos server faz). Eu também iria mais adianta com um sv com legenda do tipo: 1- Área de voadores 2- Área de lutadores... Assim sucessivamente... *Minha opinião1 ponto
-
Item Que Troca Por Outros Items Randoms
GodalonexD reagiu a Oneshot por uma questão
Sim, claro. local rewards = {{2160, 10}, {2157, 3}, 2470} local experience = 10000 function onUse(cid, item, fromPosition, itemEx, toPosition) local tmp, reward = rewards[math.random(1, #rewards)] reward = doCreateItemEx((type(tmp) == "number" and tmp or tmp[1]), (type(tmp) == "number" and 1 or tmp[2])) doPlayerAddItemEx(cid, reward) doPlayerAddExperience(cid, experience) doRemoveItem(item.uid, 1) doCreatureSay(cid, "Ganhei ".. ((type(tmp) == "number" and 1 or tmp[2])) .." ".. getItemNameById((type(tmp) == "number" and tmp or tmp[1])) .."!", TALKTYPE_ORANGE_1) return true end Sinta-se livre também para usar seu próprio script consertado: function onUse(cid, item) local random = math.random(1, 3) local position = {x=100, y=40, z=7} -- Pos local items = { [1] = {id=2160,quant=10,word="ganhei 100k "}, [2] = {id=2379,quant=1,word="ganhei uma dagier nb"}, [3] = {id=2392,quant=1,word="espada fogaréu créu"} } doPlayerAddItem(cid, items[random].id, items[random].quant) doPlayerAddExp(cid, 15000)-- Exp qe ira ganhar doTeleportThing(cid, position) doCreatureSay(cid, items[random].word, TALKTYPE_ORANGE_1) doRemoveItem(item.uid, 1) end1 ponto -
[Encerrado] [Server] De Narutibia 7.81
Riddlebrown reagiu a Civoniark por um tópico no fórum
Caro , Pandawa... Olhei da cabeça aos pés os Tópicos de Download de servidor aqui. Porém só achei 2 e 1 eu acho que nem é servidor mais é bom o Topico. http://www.xtibia.com/forum/topic/80073-ot-narutonarutibia-781/ http://www.xtibia.com/forum/topic/178359-dream-naruto-online-v4-dno-v4/ Só achei esses dois de NaruTibia aqui... Porém vou lhê dar 2 Dicas... 1 - Você pode sim baixar o Dream , Ai depois você procura outro " MAPA " e só trouca o " MAPA " do Servidor. 2 - Você pode pedir na aréa de Mapping um Mapa de NaruTibia , Para o seu servidor... Caso não tenha gostado do Mapa deixe um Recado aqui no Topico mesmo , Que procurarei por outros na Web...1 ponto -
[Encerrado] [Pokemon] Dúvidas? - Pda
JulynaMiiy reagiu a StyloMaldoso por um tópico no fórum
@OFF Mais uma cidade pronta e vim ver suas opinião '-'. SAFFRON agr tenhu uma perguta, será que ira ficar lotado meu ot por ser um mapa proprio e novo? '-' ._. (descobri tudo tal) to com medo de faze tudo e dps n lota rsrs hASUIS ;c @Edit, os respaw vo cria sómente depois de all city pronta por isso não tem anda do lado tal ;c1 ponto -
Ajuda Com Magic Wall
KennyConrad reagiu a Oneshot por uma questão
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1497) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function onCastSpell(cid, var) local position = variantToPosition(var) if getTilePzInfo(position) then return false end return doCombat(cid, combat, var) end1 ponto -
1° Amigo,voce sabe entrar no perfil de algum usuario? 2° Se nao,sabe procura la encima na parte de Procurar,e procura SkySeven (é um membro do XTibia,que feis um tuto)Ele feis um tutorial atualizado,muito bom para compilar,dai voce vai seguindo os passos para compilar,com sua source.Vlw 3° Se nao sabe procurar ainda. Ta ai Perfil do SkySeven. Tutorial para compilar sources by SkySeven. 4°Boa sorte,ai se tiver mais duvidas poste.1 ponto
-
function onDeath(cid, corpse, deathlist) if(getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == 10218 and getCreatureSkullType(cid) > 3) then doCreatureSetStorage(cid, 111011, getCreatureStorage(cid, 111011) - 1) if getCreatureStorage(cid, 111011) == 0 then doRemoveItem(getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).uid, 1) elseif getCreatureStorage(cid, 111011) < 0 then doCreatureSetStorage(cid, 111011, 999) end doCreatureSetDropLoot(cid, false) end return true end Abraços.1 ponto
-
Meteor Spell
Bolinhoo28 reagiu a dalvorsn por um tópico no fórum
Isso? function storm(cid, element, DistEfec, MagEfec, damage_1, damage_2) if isCreature(cid) then local pos = getThingPos(cid) pos.x = pos.x + math.random(-4,4) pos.y = pos.y + math.random(-4,4) local frompos = getThingPos(cid) frompos.x = pos.x - 6 frompos.y = pos.y - 6 doSendDistanceShoot(frompos, pos, DistEfec) doAreaCombatHealth(cid, element, pos, 0, -damage_1, -damage_2, MagEfec) end end function onCastSpell(cid, var) for i = 1, 72 do addEvent(storm, i*35,cid,GHOSTDAMAGE,18,140, 110, 120) end return true end1 ponto -
Alterar Motd Com Otserver Online
Demonbholder reagiu a pbottrinks por uma questão
Para altera-la no config.lua, é muito fácil. Procure por : motd = "Bem vindo" E coloque a gosto. Abraços.1 ponto -
[GESIOR] VictorWEBMaster 2019v
VictorWEBMaster reagiu a baduuh por um tópico no fórum
VictorWebMaster History nao ta funfando quando clico em transaçoes ali a tela buga, ajuda ae mano só falta isso aqui pra mim ;D1 ponto -
Muito bom!! Deveriamos marcar uma conferencia no TS para conhecermos uns aos outros!1 ponto
-
Alchemist System - [Sistema De Alquimia]
Demonbholder reagiu a Leoxtibia por um tópico no fórum
@caotic Vlw caotic, considerando que estou nisso por volta de 1 mês, acho que consegui aprender um pouco com scripts feitos por scripters mais experientes como você e outros.. @Raidou é, também não tinha encontrado algo parecido. Espero que tenha te ajudado.1 ponto -
Erro Ao Abrir Remere's Map Editor 2.2
Napolitano reagiu a PostadorHunter por uma questão
tem q exclui duas dll la da pasta do remeree n abrir no atalho abrir com o remeres q ta na pasta dele se eu lembra q dll é eu edito ake edit WSOCK32.dll e RPCRT4.dll exclua essas duas dlls e n abra o remere pelo atalho se n essas duas dlls vao ser criadas novamente ajudei ?? rep+1 ponto -
Sky se quizer ,tenhu um baiak aki 9.10 quse nada de bug,all mounts,spells, só monstros q axo q n tem os 9.10 mas ta legalzin,e nele que eu fiz aquela city la... se quize só pedi :smile_positivo: EDIT: AA.. EU QUE DEI REP+1 ponto
-
Scriptear
heavy2 reagiu a Demonbholder por uma questão
Olha, vejo muita gente querendo aprender, é mesmo uma pena que eu não possa ensinar todos. É por isso que eu vou colocar aqui, a série de tutoriais pelos quais eu aprendi lua em otserv. 1º Passo. Primeiro de tudo, crie uma pasta no seu favoritos e adicione todos os links abaixo. Como requisito para aprendermos lua, é necessário termos as funções de lua em otserv. Siga os links abaixo: Funções Explicadas (Não todas) Funções não Explicadas (Quase todas) Estas são as funções, vamos usá-las depois de aprender e começar a fazer os primeiros scripts. 2º Passo. Agora vamos começar a aprender. A primeira coisa é ler todo esse tutorial várias vezes: Começando em lua para otserv. Depois de ler esse, você pode ler os materiais de apoio, siga estes dois tutoriais abaixo: Material de apoio Inicio 1 Material de apoio Inicio 2 Material de apoio Inicio 3 Ok, depois disso, se tiver certeza que entendeu, pelo menos o principal acima, vá para o próximo passo. 3º Passo. Dessa vez o negócio começa a ficar mais sério, se você aprender o passo 3, ai você vai estar na metade do caminho para se tornar um scripter. Siga os tutoriais: Intermediário em lua para otserv. Feito, leia bastante esse tutorial, teste seu scripts, brinque com a linguagem. Vamos ao material de apoio para quem não entendeu muito bem essa parte. Material de apoio Intermediário 1 Bom, continue brincando com lua e testando suas dúvidas, agora vamos ao último passo. 4º Passo. Por fim, vamos ao último passo para poder nos considerar um scripter iniciante. O último passo consiste em estender o seu conhecimento de otserv, por isso, é uma série de tutoriais próprios para action, npcs, spells e etc. Actions Movements Spells Monstros E agora, o mais complicadinho desses: Npcs Proto, com isso você deve conseguir aprender. Créditos pelos tutoriais: DrakyLucas Apocarai tibiaa4e Oneshot Programas úteis: Script live by Colex - Ideal para iniciantes. Scite - Ideal para quem já se aprofundou um pouco mais na linguagem. Se não quiser utilizar estes programas acima, pode usar o bloco de notas.1 ponto -
1 ponto