Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''script''.



Mais opções de pesquisa

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Recursos
    • Suporte
    • Pedidos
    • Downloads
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Categorias

  • Apresente Seu Projeto!

Encontrar resultados em...

Encontrar resultados que contenham...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Sou

Encontrado 21.364 registros

  1. StyloMaldoso

    Pokémon Mysterion [Dowload] !

    Eai galerinha..tudo bem? Hoje estou aqui para postar o dowload do meu servidor (pokémon mysterion) que esteve online durante as férias desse ano. Bom o caotic tinha postado a versão dele, com level system e varias coisas no otClient de inovador, porém muitos não gostarao do level system e resolvi posta a minha versão. OBS: o servidor está com mapa do PDA, voces podem pegar o mapa do caotic e usarem no meu servidor sem poblema, porque eu que fiz ele e e adpatei para o servídor. OBS²: O servidor esta com uns erro de "Duplicate move event found" Ao ligar, relaxa..isso é normal..é do icone porque tipo, você joga o icone no chão e puxa ele pra bag voltando icone e não em bag, eu não consegui adpta o systema de uniqueItem com o do icone por isso fica esses "errinho" ao iniciar. OBS³: o Systema de icone está dando para volta para ball, porém na proxima versão irei retirar isso e decha pra sempre icone (menos bug). E o ultimo OBS: irei atalizar o servidor sim, porém com sem preça, a proxima versão já estara o mapa do pokémon mysterion (se eu achar..) e alguns ajuste nos systema. Bom, estou sem tempo para postar informações O oque contém no servidor? TUDO que à no PDA v1.9.1 + minhas edicações. icone system, editações em script etc etc. Uma print para vocês terem noção doque estão abaixando. enfím, o dowload ! http://www.4shared.com/rar/91igaENK/Server.html? E Também a proxíma versão talvez pode demorar para sair, porque a escola está pegando muito pesado huaha, intão tenho que me dedica meu tempo todo aos estudos para ser alguem na vida (ihuul), a proxima atalização talvez demore ou não para sair, mais não depedem de min, já di a base abaxem e faça as proprías editações ! credítos. Slicer (por ter me ajudado em boa parte dos SCRIPT, e a basê "PDA V1.9.1) Eu Brun123 (poke DASH)
  2. garep

    Spell's bar por voc

    Muita gente falando e pedindo spell's bar por voc e n tem opcode instalado e não sabe como instala ai vai um script, com ele da pra fazer vários.... Script: Client > local spelllist = { ['Death Strike'] = {id = 87, words = 'exori mort', exhaustion = 2000, premium = true, type = 'Instant', icon = 'deathstrike', mana = 20, level = 16, soul = 0, group = {[1] = 2000}, vocations = {1, 5}}, ['Flame Strike'] = {id = 89, words = 'exori flam', exhaustion = 2000, premium = true, type = 'Instant', icon = 'flamestrike', mana = 20, level = 14, soul = 0, group = {[1] = 2000}, vocations = {1, 2, 5, 6}}, ['Strong Flame Strike'] = {id = 150, words = 'exori gran flam', exhaustion = 8000, premium = true, type = 'Instant', icon = 'strongflamestrike', mana = 60, level = 70, soul = 0, group = {[1] = 2000, [4] = 8000}, vocations = {1, 5}}, } local VOCID = 1 local spells = {} local lado = 'vertical' local sbw -- window widget local sbb -- button ./\ widget local spellBarWindow -- UIWindow local exhsaustionTotal = 1100 local hideLevel = false -- os que nao tem level, vai mostrar? true = nao, false = sim function init() sbb = modules.client_topmenu.addRightGameToggleButton('sbb', 'Spell Bar' , 'SpellBar.png', toggle) sbb:setWidth(16) sbw = g_ui.displayUI('SpellBar') sbw:move(10,50) g_mouse.bindPress(sbw, function() createMenu() end, MouseRightButton) sbw:hide() connect(g_game, 'onTalk', mensagemEnviada) connect(g_game, { onGameEnd = function() sbw:hide() sbb:setOn(false) end }) connect(LocalPlayer, { onLevelChange = onLevelChange }) connect(g_game, 'onTextMessage', getVocation) for inst,values in pairs(spelllist) do if values.type == 'Instant' then -- depois vou fazer mais tipos.. if g_game.getProtocolVersion() >= 950 then -- Vocation is only send in newer clients if table.find(values.vocations, g_game.getLocalPlayer():getVocation()) then local inside = {instantName = inst, words = values.words, lvl = values.level, mana = values.mana, prem = values.premium, groups = values.group,icon = values.icon, vocations = values.vocations,exhaustion = values.exhaustion} table.insert(spells,inside) end else local inside = {instantName = inst, words = values.words, lvl = values.level, mana = values.mana, prem = values.premium, groups = values.group,icon = values.icon, vocations = values.vocations,exhaustion = values.exhaustion} table.insert(spells,inside) end end end table.sort(spells, function(a, b) return (a.lvl < b.lvl) end) end function onLevelChange(localPlayer, value, percent) getSpells(spells) end function mensagemEnviada(name, level, mode, text, channelId, pos) if not g_game.isOnline() then return end if g_game.getLocalPlayer():getName() ~= name then return end for i = 1,#spells do if spells[i].words:lower() == text:lower() then startDownDelay(i) break end end end function terminate() sbw:destroy() sbb:destroy() disconnect(g_game, { onGameEnd = function() sbw:hide() sbb:setOn(false) end }) disconnect(g_game, 'onTalk', mensagemEnviada) disconnect(LocalPlayer, { onLevelChange = onLevelChange }) disconnect(g_game, 'onTextMessage', getVocation) end function getVocation(mode, text) local t = string.explode(text, " ") if not g_game.isOnline() then return end if mode == MessageModes.Failure then if text:find("#getVoc#") then if tonumber(t[2]) == VOCID then sbb:setOn(true) sbb:show() sbw:show() getSpells(spells) level = g_game.getLocalPlayer():getLevel() else sbb:setOn(false) sbb:hide() sbw:hide() end end end end function toggle() if sbb:isOn() then sbw:hide() sbb:setOn(false) else sbw:show() getSpells(spells) sbb:setOn(true) level = g_game.getLocalPlayer():getLevel() end end function createMenu() local menu = g_ui.createWidget('PopupMenu') if lado == 'horizontal' then menu:addOption('Set Vertical', function() lado = 'vertical' getSpells(spells) end) else menu:addOption('Set Horizontal',function() lado = 'horizontal' getSpells(spells) end) end if hideLevel == false then menu:addOption('No Level Hide',function() hideLevel = true getSpells(spells) end) else menu:addOption('No Level Show',function() hideLevel = false getSpells(spells) end) end menu:display() end function destruirSpells() for i = 1,100 do if sbw:recursiveGetChildById('spell'..i) == nil then break end sbw:recursiveGetChildById('spell'..i):destroy() sbw:recursiveGetChildById('progress'..i):destroy() end end function getSpells(tabela) destruirSpells() spellBarWindow = sbw:recursiveGetChildById('mainWindow') local player = g_game.getLocalPlayer() local valor = #tabela local width = 38 local height = 38 if not player then return end for i = 1,#tabela do if (tabela[i].lvl > player:getLevel()) and hideLevel == true then valor = i - 1 break end if i == #tabela then valor = i end icon = g_ui.createWidget('SpellButton',spellBarWindow) progress = g_ui.createWidget('SpellProgressSpell',spellBarWindow) --icon: icon:setId('spell'..i) local spicon = Spells.getClientId(tabela[i].instantName) icon:setImageSource('/images/game/spells/defaultspells') icon:setImageClip((((spicon -1)%12)*32) .. ' ' .. ((math.ceil(spicon/12)-1)*32) .. ' 32 32') icon:setVisible(true) icon.words = tabela[i].words icon.instantName = tabela[i].instantName icon.lvl = tabela[i].lvl icon.mana = tabela[i].mana icon.exhaustion = tabela[i].exhaustion icon.exhaustionNeeded = 0 icon:setTooltip(tabela[i].words) if lado == 'horizontal' then icon:setMarginTop(3) height = 38 width = (i) * 32 + 2*(i) icon:setMarginLeft((i) * 32 + 2*(i) - 32) else icon:setMarginLeft(3) icon:setMarginTop((i) * 32 + 2*(i) - 32) width = 38 height = (i) * 32 + 2*(i) end --progress: progress:setId('progress'..i) progress:setVisible(true) progress:setPercent(100) progress:setMarginLeft(icon:getMarginLeft()) progress:setMarginTop(icon:getMarginTop()) if player:getLevel() < icon.lvl then progress:setText('L'..icon.lvl) progress:setColor('red') progress:setPercent(0) end if progress:getPercent() == 100 then progress:setText('OK') elseif icon.lvl < player:getLevel() then progress:setText(progress:getPercent()) end progress:setPhantom(true) icon.onClick = function() useSpell(i) end end sbw:setHeight(height) sbw:setWidth(width) spellBarWindow:setSize(sbw:getSize()) end function useSpell(i) local spell = sbw:recursiveGetChildById('spell'..i) if not spell then return end local progress = sbw:recursiveGetChildById('progress'..i) local player = g_game.getLocalPlayer() if not player then return end if progress:getPercent() < 100 then return modules.game_textmessage.displayFailureMessage('Wait your delay!') end g_game.talk(spell.words) end function startDownDelay(i) -- aqui vai ficar on onTalk, pra descer só realmente quando a spell sair local spell = sbw:recursiveGetChildById('spell'..i) if not spell then return end local progress = sbw:recursiveGetChildById('progress'..i) progress:setPercent(0) progress:setText('0%') progress:setColor('red') spell.exhaustionNeeded = 0 scheduleEvent(function() spellTimeleft(i) end,100) end function spellTimeleft(i) local spell = sbw:recursiveGetChildById('spell'..i) if not spell then return end local progress = sbw:recursiveGetChildById('progress'..i) spell.exhaustionNeeded = spell.exhaustionNeeded + 100 if spell.exhaustionNeeded < spell.exhaustion then progress:setPercent(math.ceil(((spell.exhaustionNeeded) * 100)/spell.exhaustion)) progress:setText(progress:getPercent()) progress:setColor('red') else progress:setPercent(100) progress:setText('OK') progress:setColor('green') spell.exhaustionNeeded = 0 return true end scheduleEvent(function() spellTimeleft(i) end,100) end vocID > id da voc, que vai aparecer as spells que no script, exp: kina voc 4 vocID 4 no script deixa so as spells de kina vocID 1 no scirpt deixa so as spells de sorc no serve agora otserv>data>talkactions function onSay(cid, words, param) if not param then return true end doPlayerSendCancel(cid, "#getVoc# ".. getPlayerVocation(cid)) return true end tag: tipo ser for criar spells pra mais voc, tipo 1mod pra cada voc... espero que tenha ficado facil... O script ta bem primitivo mais ja é um lado ai pra quem não tem.... Creditos: DrakyLucas, pois peguei seu mode como base.. Noninhouh. +reps se ajudo... ,
  3. kttallan

    action Simples Pet Sistema

    Ola galera venho aqui postar um simples pet sistema que eu fiz pra participar do OMS. Introdução: O Pet sistema funciona assim você pode ganhar/comprar um item que ao clicar ele sumonarar seu pet com uma certa quantidade de sangue, porem só poderar usar o summon alguns vezes no dia (configuravel). Crie um arquivo chamado Petsystem.lua em data/actions/scripter e coloque. function onUse(cid, item, frompos, item2, topos) local monster ={ [12597] = {"Troll", 1, 50, vida = 500, vezes = 5, go = 00, gack = 00}, [12598] = {"Amazon", 50, 100, vida = 1000, vezes = 10, go = 00, back = 00}, [12599] = {"Demon", 100, 150, vida = 1500, vezes = 15, go = 00, back = 00} } local summom = getCreatureSummons(cid) local mst = monster[item.actionid] local hea = monster.vida function backMonster(cid, monsters) if #getCreatureSummons(cid) >= 1 then monsters = getCreatureSummons(cid)[1] doRemoveCreature(monsters) doPlayerSendTextMessage(cid, 13, "Não precio de sua ajuda"..mst[1].."por enquanto") doSendMagicEffect(getThingPos(monsters), mst.back) end end if getPlayerStorageValue(cid, 18800) >= mst.vezes then return doPlayerSendCancel(cid, "Seu Summon estar cansado só poderar usar amanhan") end if getPlayerLevel(cid) > mst[2] and mst[3] < getPlayerLevel(cid) then doSummonCreature(mst[1], getThingPos(cid)) doPlayerSendTextMessage(cid, 14, "Venha me ajudar"..mst[1].."nessa batalha") setCreatureMaxHealth(summom[1], hea) doPlayerSetStorageValue(cid, 18800, mst.vezes) doSendMagicEffect(getThingPos(monster), mst.go) else backMonster(cid, mst[1]) return true end end Agr va em actions.xml e coloque a seguinte Tag : <action actionid="12597;12598;12599" event="script" value="petsystem.lua"/> Agr va em globalevents/scripter e crie um arquivo chamado Pet.lua e coloque function onTimer() local storage = {5, 10, 15} setPlayerStorageValue(cid, 18800, storage[1]) setPlayerStorageValue(cid, 18800, storage[2]) setPlayerStorageValue(cid, 18800, storage[3]) end agr em globalevents.xml coloque o tag <globalevent name="PetSystem" time="00:00" event="script" value="pet.lua"/> Explicação [12597] = {"Troll", 1, 50, vida = 500, vezes = 5, go = 00, gack = 00}, [12598] = {"Amazon", 50, 100, vida = 1000, vezes = 10, go = 00, back = 00}, [12599] = {"Demon", 100, 150, vida = 1500, vezes = 15, go = 00, back = 00} Verde : Oque estar em verde serar o nome do pet(summon) que você vai ter. Negrito : 1, 50 quer dizer que você pode usar o summon troll so do lvl 1 ao 50. Vida: É a vida do seu pet sugiro que seja entre 500 a 5000. Vezes : e quantas vezes você pode usar ele no dia. Go : e o effeito de invocação do summon caso não deseje deixe e 0. Back : mesma coisa o efeito de remover o monstro, deixe em 0 caso n queira. Pronto eu acho que é somente isso se tiver bug vocês avisam aqui em baixo pois meu nivel de scripter não e tão auto e caso o pessoal mais experiente quizer da uma editada nele, estar de boa . Creditos Escolinha de scripter do roksas (Ensinar o que eu sei) Kttallan (Eu mesmo por ser o criador)
  4. Bruno

    otserv 10.x Vanaheim global open source

    m método diferente de agir. Escolhas diferentes, um projeto surpreendente, e o melhor é open source. Sim, você pode ter acesso a este servidor que estou desenvolvendo em parceria com a Serversoft para você. Um servidor com uma mega estrutura para suportar seus jogadores online sem nenhum problema como: debug, bug de clonagem, instabilidade entre diversos outros dos servidores free's disponíveis para download nessa vasta internet tibiana. Uma inovação no ramo de OTservers, distribuindo não só a datapack como as sourcers e os sistemas, absolutamente tudo que você procura. Basta baixar, compilar... Mas eu não sei compilar. Não há problema nisso, o OTPanel da Serversoft faz tudo isso para você. Basta clicar num botão de "play" e ver a mágica acontecer. O projeto Vanaheim, foi criado com o intuito de ser inteiramente grátis para toda a comunidade. Um servidor no qual a diversão é o fator principal, um projeto com viabilidade absoluta por todos os tibianos. O projeto conta com uma área exclusiva no GitHub para que todos possam acompanhar a evolução do mesmo, dia a dia, diversas atualizações estarão disponíveis a todos. Desde uma action até uma modificação na source vocês terão acesso. O servidor conta com um mapa Global Full, quando eu digo full, quero dizer que está 99.99% do mapa completo, sem bugs entre outros. Um servidor que você escolhe a rate experience/skill que desejar, ele vai se adaptar! Você pode escolher se quer ou não que as quests tenham as missões originais 100%! GITHUB Para acompanhar e baixar o servidor atualizado, segue o link do nosso projeto no GitHub: DOWNLOADS Servidor Mapa Yasir Scan CRÉDITOS TFS Team Orts Project
  5. BananaFight

    Extended Opcodes (OtClient)

    Extended opcodes Com esses códigos você pode enviar dados do servidor e receber no client e fazer o contrario também, ou seja posso enviar o numero de um storage por exemplo, só saber usar. Desculpem pela minha tentativa de traduzir o que o BeniS postou meio falha. Extended opcodes, é um sistema que permite a adição de novos opcodes no protocolo de jogo usando apenas scripts em lua tanto no Servidor quando no OtClient. Tornando assim mais fácil de implementar novas funcionalidades tanto no otclient quando no servidor. Apenas um código de operação é suportado, no momento, a 0x01, que é enviado pelo cliente informa a linguagem corrente do jogador. Opcodes novos serão adicionados no futuro, incluindo opcodes para reprodução de sons e novas interfaces. versão em Inglês Extended opcodes is a system to allow adding new opcodes to game protocol using just lua scripts in both client and server sides, thus making easy to implement new client/server side features independently of the game cor made in C++. Just one opcode is supported at the moment, the 0x01 which is sent by the client informing the current player language. New opcodes will be added in the future, including opcodes for playing sounds and new interfaces. Vamos ao Código : protocolgame.h -[Diff] protocolgame.h - Pastebin.com protocolgame.cpp -[Diff] protocolgame.cpp - Pastebin.com const.h -[Diff] const.h - Pastebin.com luascript.cpp -[Diff] luascript.cpp - Pastebin.com player.h -[Diff] player.h - Pastebin.com creatureevent.h -[Diff] creatureevent.h - Pastebin.com creatureevent.cpp -[Diff] creatureevent.cpp - Pastebin.com game.h -[Diff] game.h - Pastebin.com game.cpp -[Diff] game.cpp - Pastebin.com /creaturescripts/creaturescrips.xml -[Diff] creaturescripts.xml - Pastebin.com /creaturescripts/extendedopcode.lua -[Lua] extendedopcode.lua - Pastebin.com Ou baixe um pach dos arquivos aqui : https://github.com/e...dedopcode.patch Creditos: BeniS e EduBarts
  6. Mudrock

    Znote AAC 1.5 (TFS 0.2/0.3/0.4 & 1.0)

    Atualizado (17/05/2014) Olá galera, Estou aqui para trazer o melhor AAC (na minha opinião) que suporta todas as versões de TFS. Ele é muito bom, estável, e simples ! Imagem : Link de download: https://github.com/Znote/ZnoteAAC Créditos : ZnoteAAC 99,99%
  7. Vou Apresentar para vocês meu projeto, Foi um otserver meu que abri em Março deste ano, Ele é um mapa baiak feito cuidadosamente por mim, Com base no do Rael undead's .. Ficou online por 1 mes, Chegou a 100 Players , Então chega de papo e vamos as Features do Server.. Features Baiak Titanica 8.60 By GuH~ Quem Não gosta de um baiak né? Ultimamente você coloca um baiak online e consegui atingir uma boa quantidade de players com facilidade, Bom depende do seu projeto né.. Porem em um baiak os players procuram diversão e Opção de Teleportes e novos monstros,Items etc... Templo DePoT Teleportes Free Area Vip Teleportes Items Vips Configurados e Balanceados Então Pessoal eh isso ai, Como veem na imagem, Foram Adicionados novos teleportes na area vip 2, Que funcionava como donate no meu Baiak, e também os items vips que estão balanceados, Tanto para exp 999x,500x,400x.. Ai Vocês escolhem, Vamos Pros Downloads?? Downloads Baiak Titanica e Scan BY GuH~ http://www.4shared.c..._Titanica.html? è isso ae pessoal espero que gostem, Se gostou da REP não custa nada! Creditos : 20% Daniloca (Por disponibilizar o server Base) 20% GabrielSv (Editar o mapa) 40% MatheusVidaLoka (Tirar bug's e fazer scripts) 20% GuStavo Ferreira (Reedição e correção de alguns Bugs)
  8. Muitos sofrem com problemas ocasionados com bugs tanto no Xampp quando no Gesior eu estarei apenas ensinando algumas maneiras de deixar ambos um pouco mais seguro! Gesior Primeiramente vamos ao classico bug de redirecionamento, onde seu site fica sendo redirecionado para outro! Este é um bug do gesior e agora vamos corrigir esse problema! Vá em htdocs/config e abra o arquivo config.php, dentro procure a seguinte linha! $config['site']['access_news'] = 2; onde está ['access_news'] = 2; mude para ['access_news'] = 6; Explicando esse é o numero de acesso maximo para paginas do Gesior! Na linha de baixo adicone essa tag: $config['site']['access_tickers'] = 6; E nas linhas abaixo adicione o acess 6 em todas tags que contem comando de acess, ficando assim: $config['site']['access_news'] = 6; // access level needed to edit news $config['site']['access_tickers'] = 6; $config['site']['access_admin_panel'] = 6; // access level needed to open admin panel para ter acesso ao painel admin do site, batsa colocar page acess 6, na conta que irá ter o privilégio, isso no phpmyadmin ! Vá até layouts/sua-skin/layout.php e procure a tag <body e substitua por essa: <body onBeforeUnLoad="SaveMenu();" onUnload="SaveMenu();" oncontextmenu="return false" onselectstart="return false" ondragstart="return false"> Agora, logo abaixo da tag <body>, você adicionará o seguinte código: <?php { $sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql); $sql = trim($sql); $sql = strip_tags($sql); $sql = addslashes($sql); return $sql; } function protect($str) { if( !is_array($str) ) { $str = preg_replace("/(from|select|insert|delete|where|drop table|show tables)/i","",$str); $str = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))',$str); $str = preg_replace('~&#([0-9]+);~e', 'chr("\\1")',$str); $str = str_replace("<script","",$str); $str = str_replace("script>","",$str); $str = str_replace("<Script","",$str); $str = str_replace("Script>","",$str); $str = trim($str); $tbl = get_html_translation_table(HTML_ENTITIES); $tbl = array_flip($tbl); $str = addslashes($str); $str = strip_tags($str); return strtr($str,$tbl); } else return $str; } $nome = anti_injection($_POST["nome"]); $senha = anti_injection($_POST["senha"]); $link = htmlspecialchars($_POST['link'], ENT_QUOTES); echo $link; header("Content-Type: text/html; charset=ISO-8859-1",true)?> Ainda em layout.php logo abaixo da tag <head>, você adicionará o seguinte código: <script type="text/javascript"> function click() { if (event.button==2||event.button==3) { oncontextmenu='return false'; } } document.onmousedown=click document.oncontextmenu = new Function("return false;") </script> Esses códigos te ajudarão a se previr contra SQL Injection, mas eu afirmo logo que isso não é 100% seguro. Vá até o arquivo guilds.php e localize a seguinte tag: $guild_logo = $guild->getCustomField('logo_gfx_name'); if(empty($guild_logo) || !file_exists("guilds/".$guild_logo)) $guild_logo = "default_logo.gif"; Agora substitua por isso: foreach (array("/", "\\", "..") as $char) { $guild_logo = str_replace($char, "", $guild->getCustomField('logo_gfx_name')); } if (empty($guild_logo) || !file_exists("guilds/".$guild_logo)) { $guild_logo = "default_logo.gif"; } Pronto, seu guilds.php está seguro agora. Exclua completamente o arquivo houses.php, ele é um arquivo muito inutilizado e ainda muito vulnerável, pessoas maliciosas podem conseguir ver sua config.lua através dele, portanto apenas exclua. Agora vamos ao Xampp Vá na pasta Xampp e delete a pasta webdav. É ela que é responsavel pelo acesso do seu site de outro local, e pode ser usada para hackiar seu site! (recomentado o uso apenas para quem sabe mecher nas configurações da webdav). Irei postar agora um video de como proteger seu phpmyadmin Em breve estarei atualizando com mais conteudo como proteger seu xampp e gesior! Creditos: GPedro, lipehcf e PiabetaMan01
  9. BananaFight

    Mostre seu poder

    Spell bar, uma janela com botões que soltam magias. Nome: Spell Bar Descrição: Atalho para soltam magias. Autor: Eduardo Vicente (Banana Fight) ++ Zeh(Shaykie) Website: www.xtibia.com Versão 2.0 Features: - Solta magias, temporizador para poder usar denovo - Corrigido para deslogar e remover a janela. Novidades Adicionado configuração de level e minimo de mana para usar Download https://mega.co.nz/#...F4-L5lHp6BmFggA Instalação Adicione o Mod, dentro da pasta otclient-master\Mods Como configurar: Criando um novo botão SpellGroupIcon id: ID DO BOTÃO image-source: IMAGEM DO ICONE anchors.top: parent.top anchors.left: parent.left margin-left: 5 SpellProgressSpell id: ID DO CONTADOR anchors.fill: groupIconAttack !tooltip: tr('MENSAGEM QUE APARECE QUANDO DEIXA MOUSE ENCIAM') @onClick: SpellSkill('VALOR DO SCRIPT QUE VAI EXECUTAR') Como Fica SpellGroupIcon id: groupIconSpecial image-source: moves_icon/Special.png anchors.top: parent.top anchors.left: groupIconSupport.right margin-left: 5 SpellProgressSpell id: progressSpellSpecial anchors.fill: groupIconSpecial !tooltip: tr('Special') @onClick: SpellSkill('4') Parte do .Lua Embaixo de: elseif numeskill == '4' then Spell = 'progressSpellSpecial' GrpSpell = 'groupIconSpecial' TimeSpell = 1200 spellText = 'Exori Gran' level = 8 mana = 20 Adicione isso: elseif numeskill == '4' then Spell = 'ID DO CONTADOR' GrpSpell = 'ID DO BOTÃO' TimeSpell = TEMPO PRA USAR DE NOVO spellText = 'MAGIA QUE VAI USAR' level = LEVEL MINIMO mana = MANA MINIMA E pronto, você adicionou um novo botão, não esqueça de ir aumentando o tamanho da janela conforme for adicionando botões.
  10. Tibia Server Mapa Global Eae pessoal, venho trazer a vocês um servidor de Tibia com mapa igualzissimo ao do Tibia Original. Com Rookgard e muito mais, claro não fui eu quem fiz este servidor magnifico. Mais venho traze-lo para vocês fazerem dele sua base e ter um servidor muito melhor de Tibia. Como nós sabemos nenhum servidor vem sem bugs, então é issu vo postar algumas imagems e espero que gostem. Muitas coisas ainda vocês terão de configurar como onde o player ínicial irá nascer e etc.. Este servidor estava sendo utilizado com site então você terá de fazer suas auterações. Cidades Newbie Island (Rookgaard) + Island of Destiny Ankrahmun Ab'Dendriel Carlin Darashia Edron Yalahar Kazordoon Liberty Bay Port Hope Svargrond Thais Venore Farmine Zao Cormaya Algumas imagems: Como eu ja disse este servidor não foi eu em que fui, mais venho pelo o menos trazer a vocês. Créditos Dener Diegoli Team e ao Membro Shekys do xtibia por contribuições enorme no projeto. Kurobisu (Por Trazer aqui pro Xtibia) Downloads OTServer Completo: >>( Kurobisu Download Otserv )<< Download Client Normal de Tibia 8.6: >>( Kurobisu Download Client )<< Download do SqliteStudio para quem for usar via account manager: >>(Kurobisu Download SqliteStudio)<< O 4Shared ja tem seu proprio ( Scanner ) então pelo visto não precisa. Estou também abrindo este tópico para caso alguém tenha alguma dúvida ou ache algum bug possa reporta-lo para mim, e eu concerteza tentarei ajuda-lo. Então como muitos sabem o tópico deve ter regras, e aqui não será diferente. Regras Poste suas dúvida aqui caso tenha alguma, caso acho algum bug poste aqui também. Tentarei ajudar o maximo possivel. Gosto do tópico? Lhe ajudei?Rep+ Não ajudei? Tentarei melhorar
  11. #Introdução Este é um sistema de rouba bandeira, no qual tem dois times que se enfrentam e tentam se infiltrar na fortaleza do inimigo, roubar a bandeira dele e retornar para sua base com ela. #Instalação Faça o download do sistema e cole na pasta do seu servidor. Download Capture The Flag 2.0Após ter instalado os arquivos nas suas respectivas pastas e instalado as tags nos arquivos xml, abra a pasta do seu servidor, e em seguida abra a pasta spells/scripts/support, e abra o arquivo invisible.lua com algum editor de texto, depois de function onCastSpell(cid, var) cole isso: if (getPlayerStorageValue(cid, 16700) ~= -1) then return doPlayerSendCancel(cid, "Você não pode usar invisible durante o CTF!") and doSendMagicEffect(getThingPos(cid), 2) end ficando assim: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_INVISIBLE) setConditionParam(condition, CONDITION_PARAM_TICKS, 200000) setCombatCondition(combat, condition) function onCastSpell(cid, var) if (getPlayerStorageValue(cid, 16700) ~= -1) then return doPlayerSendCancel(cid, "Você não pode usar invisible durante o CTF!") and doSendMagicEffect(getThingPos(cid), 2) end return doCombat(cid, combat, var) end #Configuração Como na maioria dos meus códigos: as configurações ficam na lib, então: waitpos = {x = 93, y = 117, z = 6}, -- Posição da sala de espera tppos = {x = 92, y = 117, z = 7}, -- Onde o TP vai aparecer days = {2, 5, 7}, -- Dias que o evento vai abrir xp_percent = 0.5, -- Porcentagem de xp que o player vai receber quando ganhar timeclose = 1, -- Tempo para iniciar o CTF winp = 10, waitpos = {x = 93, y = 117, z = 6}, -- Posição da sala de espera Posição onde os players que entrarem no teleport vão ficar esperando, até o evento iniciar tppos = {x = 92, y = 117, z = 7}, -- Onde o TP vai aparecer Posição de onde o teleport vai aparecer days = {2, 5, 7}, -- Dias que o evento vai abrir Dias que o evento vai iniciar. xp_percent = 0.5, -- Porcentagem de exp que o player vai ganhar Quando o evento acaba, os players da equipe que venceu ganham uma quantidade de experiência baseada na experiência que eles já têm, exemplo: Meu player tem 1200000000 de exp, quando o evento acabar, ele vai ganhar 0.5% da exp que ele tem, no caso desse exemplo 6000000 de exp. timeclose = 1, -- Tempo, em minutos, para iniciar o CTF Tempo para o teleport sumir e os players que estão na sala de espera serem teletransportados para o evento. winp = 10, -- Quantos pontos uma equipe precisa marcar para vencer Quantos pontos uma equipe precisa marcar para vencer o evento. Para configurar o horário que o evento vai abrir, é só você modificar na tag do globalevents.xml: <globalevent name="CTFCheck" time="19:33:00" event="script" value="CTFMax.lua"/> Você não precisa criar as bandeiras pelo map editor. O script irá adicioná-las automaticamente. É isso, essa versão é uma remake, vários bugs reportados pela galera na v.1 foram corrigidos, o script ficou mais simples
  12. Otpokemonmystic

    Adicionar LVL nos pokémons

    Bom, eu queria ajuda para adicionar LVL system nos pokémons meu Pokétibia é base REVOLUTION se alguém puder me ajudar agradeço.
  13. Killua

    action Dice Arena

    Dice Arena Esse evento foi postado para o Script de Terça, para ver os outros scripts de terça, clique aqui. Como o evento funciona? Um número configurado de jogadores deve permanecer em posições configuradas (Igual na annihilator). Quando todas as posições tiverem ocupadas, o primeiro jogador puxa a alavanca, levando todos para dentro da Arena. Dentro da arena, tem um dado que, quando usado, sorteia um monstro. Quando os jogadores matam o monstro, um loot cai no chão (Quanto menor o número do dado, mais forte será o monstro e melhor será o item que dropa). - Se já tiver gente dentro da arena, outro time não poderá entrar. - Uma vez dentro da arena, cada jogador só pode rodar o dado uma vez. - Cada jogador só pode entrar na arena uma vez por dia (tempo configurável). - Os monstros e loots são configuráveis. Vídeo do evento (obrigado ao por me ajudar a gravar) Instalação Lib Actions Creaturescripts Movements Globalevents Configuração A configuração é feita inteiramente na lib, nesta tabela: dice_cfg = { positions_ = {{x = 164, y = 17, z = 7}, {x = 164, y = 18, z = 7}}, arena_pos = {x = 501, y = 141, z = 7}, wait_ = 60*60*24, max_time = 1800, numbers = { [1] = {"Orshabaal", "Morgaroth", "Ferumbras"}, [2] = {"Demodras", "Juggernaut"}, [3] = {"Demon", "Behemoth"}, [4] = {"Dragon Lord", "Hydra"}, [5] = {"Dragon", "Cyclops"}, [6] = {"Rotworm", "Rat"} }, noob_item = {2158, 10}, pro_item = {2160, 5}, arena_frompos = {x = 491, y = 125, z = 7}, arena_topos = {x = 512, y = 144, z = 7} } Em positions_, coloque as posições que os jogadores devem ficar para poder puxar a alavanca (Pode por quantas quiser). Em arena_pos, coloque a posição da arena (Pra onde os jogadores vão quando puxarem a alavanca). Em wait_, coloque o tempo que o jogador deve esperar para entrar na arena novamente (em segundos). 60*60*24 = 1 dia, aconselho deixar assim. Em max_time, coloque o tempo máximo que os jogadores podem permanecer na arena (em segundos (após esse tempo, eles serão teleportados para o templo)). Em numbers, coloque o nome dos monstros que podem vir dependendo do número sorteado pelo dado (quanto menor o número, mais forte devem ser os monstros). Em noob_item, coloque o {id, quantidade} do item que dropa dos monstros mais fracos/médios Em pro_item, coloque o {id, quantidade} do item que pode dropar dos monstros mais fortes/médios Em arena_frompos, coloque a posição do canto superior esquerdo da arena. Em arena_topos, coloque a posição do canto inferior direito da arena. Coloque NO-LOGOUT TOOL na arena inteira. Siga as imagens para facilitar a configuração: Se alguém se dispuser a fazer um mapa pro evento para eu disponibilizar para download, eu agradeceria. Espero que gostem do evento. Download do evento: Dice Arena Event por Killua.rar
  14. Clic

    Doplayerremoveskill!

    Meu primeiro code!! e ele foi muito facil de faze!! Deer Mudar sinais!!! então vamo ao code! Em luascript.cpp abaixo de: //doPlayerAddSkillTry(cid,skillid,n) lua_register(m_luaState, "doPlayerAddSkillTry", LuaScriptInterface::luaDoPlayerAddSkillTry); Adicione abaixo: //doPlayerRemoveSkillTry(cid,skillid,n) lua_register(m_luaState, "doPlayerRemoveSkillTry", LuaScriptInterface::luaDoPlayerRemoveSkillTry); Ainda em luascript.cpp procure por: int LuaScriptInterface::luaDoPlayerAddSkillTry(lua_State *L) { //doPlayerAddSkillTry(uid,skillid,n) uint32_t n = popNumber(L); uint32_t skillid = popNumber(L); uint32_t cid = popNumber(L); ScriptEnviroment* env = getScriptEnv(); Player* player = env->getPlayerByUID(cid); if(player){ player->addSkillAdvance((skills_t)skillid, n); lua_pushnumber(L, LUA_NO_ERROR); } else{ reportErrorFunc(getErrorDesc(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushnumber(L, LUA_ERROR); } return 1; } Adicione abaixo: int LuaScriptInterface::luaDoPlayerRemoveSkillTry(lua_State *L) { //doPlayerRemoveSkillTry(uid,skillid,n) uint32_t n = popNumber(L); uint32_t skillid = popNumber(L); uint32_t cid = popNumber(L); ScriptEnviroment* env = getScriptEnv(); Player* player = env->getPlayerByUID(cid); if(player){ player->removeSkill((skills_t)skillid, n); lua_pushnumber(L, LUA_NO_ERROR); } else{ reportErrorFunc(getErrorDesc(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushnumber(L, LUA_ERROR); } return 1; } Agora em luascript.h procure por: static int luaDoPlayerAddSkillTry(lua_State *L); Adicione abaixo: static int luaDoPlayerRemoveSkillTry(lua_State *L); agore em player.cpp procure por: void Player::addSkillAdvance(skills_t skill, uint32_t count) { skills[skill][SKILL_TRIES] += count * g_config.getNumber(ConfigManager::RATE_SKILL); #if __DEBUG__ std::cout << getName() << ", has the vocation: " << (int)getVocationId() << " and is training his " << getSkillName(skill) << "(" << skill << "). Tries: " << skills[skill][SKILL_TRIES] << "(" << vocation->getReqSkillTries(skill, skills[skill][SKILL_LEVEL] + 1) << ")" << std::endl; std::cout << "Current skill: " << skills[skill][SKILL_LEVEL] << std::endl; #endif //Need skill up? if(skills[skill][SKILL_TRIES] >= vocation->getReqSkillTries(skill, skills[skill][SKILL_LEVEL] + 1)){ skills[skill][SKILL_LEVEL]++; skills[skill][SKILL_TRIES] = 0; skills[skill][SKILL_PERCENT] = 0; std::stringstream advMsg; advMsg << "You advanced in " << getSkillName(skill) << "."; client->sendTextMessage(MSG_EVENT_ADVANCE, advMsg.str()); client->sendSkills(); } else{ //update percent uint32_t newPercent = std::min((uint32_t)100, (100*skills[skill][SKILL_TRIES])/vocation->getReqSkillTries(skill, skills[skill][SKILL_LEVEL]+1)); if(skills[skill][SKILL_PERCENT] != newPercent){ skills[skill][SKILL_PERCENT] = newPercent; client->sendSkills(); } } } Adicione abaixo: void Player::removeSkill(skills_t skill, uint32_t count) { skills[skill][SKILL_TRIES] -= count * g_config.getNumber(ConfigManager::RATE_SKILL); #if __DEBUG__ std::cout << getName() << ", has the vocation: " << (int)getVocationId() << " and is training his " << getSkillName(skill) << "(" << skill << "). Tries: " << skills[skill][SKILL_TRIES] << "(" << vocation->getReqSkillTries(skill, skills[skill][SKILL_LEVEL] + 1) << ")" << std::endl; std::cout << "Current skill: " << skills[skill][SKILL_LEVEL] << std::endl; #endif //Need skill up? if(skills[skill][SKILL_TRIES] >= vocation->getReqSkillTries(skill, skills[skill][SKILL_LEVEL] - 1)){ skills[skill][SKILL_LEVEL]--; skills[skill][SKILL_LEVEL] > 0; skills[skill][SKILL_TRIES] = 0; skills[skill][SKILL_PERCENT] = 0; std::stringstream advMsg; advMsg << "You come back in " << getSkillName(skill) << "."; client->sendTextMessage(MSG_EVENT_ADVANCE, advMsg.str()); client->sendSkills(); } else{ //update percent uint32_t newPercent = std::min((uint32_t)100, (100*skills[skill][SKILL_TRIES])/vocation->getReqSkillTries(skill, skills[skill][SKILL_LEVEL]-1)); if(skills[skill][SKILL_PERCENT] != newPercent){ skills[skill][SKILL_PERCENT] = newPercent; client->sendSkills(); } } } Agora em player.h procure por: void addSkillAdvance(skills_t skill, uint32_t count); Adicione abaixo: void removeSkill(skills_t skill, uint32_t count); Poste 100 nesse topico!! espero tem um poco de sucesso nele! Grato, Clic. Créditos a Mim(Clic)
  15. nyuchiha

    New Repel System

    Ola a todos, venho lhes trazer um script criado por mim recentemente. Quem ja jogou Pokemon de GB,GBA etc sabe qual a função do Repel e o quanto ele é importante. O Script é divido em 2 partes, O Repel ( Que é uma potion ) e um script de Movements que vou explicar a função logo abaixo. Algumas informações sobre como ele funciona. Então vamos la : . <~~ Repel ~~> <~~ Parte do Movements ~~> Um Video para ficar + facil de entender a função dele...
  16. BananaFight

    OtClient - Tutorial Básico #1

    OtClient - Tutorial Básico #1 Aula 1 : Editando mod/Modules Bom galera, hoje eu vou ensinar vocês a como editar mod/Modules, e também como posiciona-los na janela. OBS: Quando eu falar Janela, estou me referindo aos objetos: MainWindow, Botton etc Passo 1 entendendo os arquivos Dentro da maioria das pasta no OtClient existirão 3 arquivos com as seguintes extensões: .lua.otmod.otui Cada uma dessas extensões executam um papel EXTREMAMENTE importante dentro do mod/module que você pretende criar, Mais será explicado mais para a frente, Nessa aula vamos mexer apenas no arquivo ".otui". Passo 2 Indentação Uma das coisas mais importante dentro dos arquivos ".otui" é a indentação, pois se você errar um espaçamento qualquer você pode estar 'bugando' todo o funcionamento da sua mod/module. Vou ensinar a vocês o modo certo de indentar seus códigos para que não tenham erros. MainWindowid: tutorialWindowsize: 80 80&save: true Dentro dos arquivos '.otui' só é permitido a indentação com a tecla "Espaço", Caso você tente usar "Tab" para indentar seu código ele vai dar erro e não irá funcionar. A indentação deve ser feita com apenas 2 espaços, e sempre seguindo a ordem do item que você ta criando. Exemplo: MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Como o Botão 'Button1' vai ficar dentro da janela ' tutorialWindow', ele tem que ficar a uma distancia de 2 espaços da janela 'MainWindow', Caso eu quebre esse espaçamento provavelmente poderei ter bugs na hora de abrir esse mod/module dentro do client. Outra coisa para tomar cuidado é quando for dar linha para adicionar outra janela, nessa linha em que separa uma janela não pode conter nem um espaço e nenhum comando. Exemplo: Certo MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Errado MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Vocês não conseguem ver a diferença, mais tente selecionar os dois códigos que vão entender melhor, o que eu falei. Agora a organização e edição de cada janela dentro do arquivo '.otui' deve seguir o mesmo principio de 2 espaços de distancia. Exemplo: Certo MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Errado MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 E também esta Errado desta forma MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Como o botão vai aparecer dentro da janela 'MainWindow' ele tem que ficar a 2 espaçamento dela pois se eu deixar os 2 na mesma posição é como se eu estivesse dizendo ao script que são duas janelas separadas e o botton vai aparecer por conta própria quando eu executar o mod/module. Passo 3 conhecendo as janelas Existem diversos modos de se criar uma janela onde vai aparecer vários botoes textos e etc, Mais sempre vai ter uma janela que será a matriz de todos, onde todos deverão aparecer, que no nosso exemplo é : MainWindowid: tutorialWindowsize: 80 80&save: true Esse código é nossa janela principal, É nela que vai aparecer tudo que queremos mostrar com no script, Agora vou mostrar o que cada função que tem dentro de MainWindow faz. MainWindowid: esse é o ID do MainWindow, Supondo que tenham 2 MainWindow, é com esse id que vamos diferencia-lassize: aqui é onde configuramos a largura e altura da janela, nessesariamente nessa ordem&save: isso fica para as próximas aulas Não precisamos usar necessariamente size para mostrar o tamanho ou largura da janela, podemos utilizar por exemplo : width: 80height: 80 Esses 2 códigos podem ser utilizados no lugar de size e farão exatamente a mesma coisa. Caso você tenha editado ou criado algum mod/modules para testar esses códigos que mostrei acima, percebeu que na janela não aparece nome e nem nada do gênero e é isso que irei mostrar agora. !text: tr('Texto') - Essa função adiciona o texto na janela em que você adicionar esta linhaicon: img.png - Esta função pega a sua imagem e usa ela de icone para a janela ( neste caso a imagem tem que estar na mesma pasta que o arquivo '.otui', e isso só irá funcionar dependendo do tipo da janela matriz, veremos em outros tutoriais.) Com esses dois Código você consegue personalizar a janela onde irão aparecer os botoes, textos etc que você pretende fazer. Exemplo: MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: true Agora vamos começar a criar botoes, escrever textos e etc. Vamos começar adicionando uma Label que vai mostrar o texto 'Olá Xtibia'. MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftmargin-top: 5margin-left: 5 Como vocês podem ver apareceram algumas funções novas, que são elas : anchors.top: parent.topanchors.left: parent.leftanchors.right: parent.rightanchors.bottom: parent.bottomanchors.top: prev.topanchors.left: prev.leftanchors.right: prev.rightanchors.bottom: prev.bottommargin-top: 5margin-left: 5margin-right: 5margin-bottom: 5 Com essas funões nós determinamos onde cada item da nossa janela vai ficar. Entendendo as novas funções anchors.top: parent.top Com a linha 'anchors.top:' estamos dizendo que a posição do meu item vai ser definida para cima, agora adicionando 'parent.top' estamos dizendo que a posição do meu item deve se Colada com começo da Janela, e isso segue para left, right, bottom também. agora se no lugar de 'parent.top' eu usar 'prev.top' eu estou dizendo que meu item vai ficar colado com a parte de cima do item que tem encima, Confuso eu sei mais vou dar um exemplo: MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.left Ali no script acima eu estou mandando a Label1 ficar colada com a borda de cima da janela principal, e a esquerda, Já na Label2, eu estou mando ela ficar colada com a Label1 ( pois a label1 que esta encima ) e também ficar colada com a borda da janela principal. Isso se aplica a todos os lados, se eu usar prev.left, eu vou estar dizendo que a label2 tem que ficar exatamente do lado esquerdo da label1. As funções 'margin-top: 5' vão fazer com que meu item fique com a distancia de 5 pixel ( Não tenho certeza se são pixels ) do item que esta acima MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5 Nesse Exemplo eu fiz a label2 ficar a 5 pixel abaixo da Label1, e isso é a mesma coisa se eu ultilizar left, right, bottom eu vou pegar uma distancia do que estiver do lado do meu item ou embaixo etc. Mais agora nós não precisamos nos prender a ficar somente com parent, e prev na hora de criar um item. podemos utilizar o id de um item como referencia de onde deve ficar meu item, como no exemplo : MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: parent.topanchors.left: Label1.left Nesse Exemplo eu fiz com que a Label3 ficasse a esquerda da Label1, e grudada a margem da janela principal, mais eu também poderia fazer ela ficar embaixo da Label1, e grudada ao lado direito da margem da janela principal. MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: Label1.topanchors.right: parent.right Mais caso você for testar isso vai perceber que o Label2 vai ficar encima do Label1 e ao invés do Label3 ficar embaixo do Label1 ele vai ficar do lado, Para corrigir esses pequenos erros você pode juntar códigos como no exemplo : MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.bottomanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: Label1.bottomanchors.right: parent.right Pelo Simples fato de eu ter trocado top por bottom agora o script sabe que a Label2 tem que ficar no fim da Label1 e o mesmo para a Label3, e por isso usamos margin, para deixa uma distancia entre cada item, e para ficar mais organizado. Bom acho que é isso, Caso eu lembre de algo relevante estarei editando e adicionando mais coisas, Espero que gostem e quais quer DUVIDAS relacionadas AO TÓPICO é só fazer um comentário aqui embaixo que estarei respondendo. @Edit, Infelizmente o Xtibia Quebrou a indentação, mais lembre-se é sempre 2 espaços.
  17. Soulviling

    action Pokebar para PDA

    Colocando pokebar (a barrinha que troca de pokemon) no seu pda sem level. Se quiser que eu faça com pda com level comentem ai. PDA SEM LEVEL 1. Vá na pasta data\actions\scripts\goback.lua e embaixo da parte: function onUse(cid, item, frompos, item2, topos)coloque: sendAllPokemonsBarPoke(cid)2. Vá na pasta data\lib\catch system.luaProcure por: setPlayerStorageValue(cid, 854788, 'done') ende embaixo coloque: sendAllPokemonsBarPoke(cid)3. Vá na pasta data\lib\cooldown bar.lua Procure por: endreturn retende embaixo coloque: 4. Vá na pasta data\lib\some functions.lua Troque por esse: 5. Vá na pasta data\talkactions\talkactions.xml Coloque essa tag: <talkaction words="/poke" case-sensitive="no" event="script" value="poke.lua"/>depois crie um data\talkactions\scripts\poke.lua Coloque o game_barpoke dentro da pasta modules. Download: www.mediafire.com/download/8bavucwof24bkxv/game_barpoke.rar Créditos: Soulviling Caotic
  18. Kirsch

    [Resolvido] Erro script Pokedex

    alguém pode me ajudar a corrigir esse erro ? [Error - Action Interface] data/actions/scripts/Basic/pokedex.lua:onUse Description: data/actions/scripts/Basic/pokedex.lua:13: bad argument #1 to 'lower' (string expected, got nil) stack traceback: [C]: in function 'lower' data/actions/scripts/Basic/pokedex.lua:13: in function <data/actions/scripts/Basic/pokedex.lua:4> bad argument #1 to 'lower' (string expected, got nil) script : local OPCODE_POKEDEX = opcodes.OPCODE_POKEDEX local OPCODE_CREATE_POKEMONS = opcodes.OPCODE_CREATE_POKEMONS function onUse(cid, item, fromPosition, itemEx, toPosition) if not isCreature(itemEx.uid) then return true end if getPlayerStorageValue(cid, storages.pokedexDelay) == 1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não use a pokedex tão rápido.") end local name = isPlayer(itemEx.uid) and getCreatureName(itemEx.uid) or getPokeName(itemEx.uid) local str = {} for pokeId = 1, 42 do local name = string.lower(string.explode(getItemNameById(11388+pokeId), "fainted ")[2]) table.insert(str, ((pokeId > 9 and pokeId < 100) and "#0" or (pokeId < 10) and "#00" or "#")..pokeId) table.insert(str, " - "..(getPlayerStorageValue(cid, getPokeUniqueStorToDex(name)) == -1 and "??????" or doCorrectString(name))) table.insert(str, "|"..(getPlayerStorageValue(cid, getPokeUniqueStorToCatch(name)) == -1 and "false" or "true")) table.insert(str, "|".. getPokemonLevel(name)) table.insert(str, "|".. getPokemonDescription(name)) table.insert(str, "|".. getPokemonAttack(name)) table.insert(str, "|".. getPokemonDefense(name)) table.insert(str, "|".. getPokemonSpAttack(name)) table.insert(str, "|".. getPokemonVitality(name)) table.insert(str, "|".. getPokemonType1(name) .."".. (getPokemonType2(name) and "/".. getPokemonType2(name) or "") ..";") end if isMonster(itemEx.uid) or (isPlayer(itemEx.uid) and itemEx.uid == cid) then doSendPlayerExtendedOpcode(cid, OPCODE_CREATE_POKEMONS, table.concat(str)) setPlayerStorageValue(cid, storages.pokedexDelay, 1) addEvent(setPlayerStorageValue, 3000, cid, storages.pokedexDelay, -1) end if isMonster(itemEx.uid) then if getPlayerStorageValue(cid, getPokeUniqueStorToDex(name)) == -1 then local exp = (getPokemonLevel(name) * 10) / 2 setPlayerStorageValue(cid, getPokeUniqueStorToDex(name), 1) setPlayerStorageValue(cid, storages.pokedexSys, getPlayerStorageValue(cid, storages.pokedexSys) + 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você desbloqueou o pokemon "..doCorrectString(name).." e ganhou "..exp.." de experiencia.") doPlayerAddExp_2(cid, exp) doSendMagicEffect(getThingPos(cid), 91) end local pokeId = getPokemonPortrait(name) - 11539 doSendPlayerExtendedOpcode(cid, OPCODE_POKEDEX, pokeId.."|"..doCorrectString(name).."|"..getPokemonLevel(name).."|"..(getPlayerStorageValue(cid, getPokeUniqueStorToCatch(name)) == -1 and "false" or "true").."|"..getPokemonDescription(name).."|"..getPokemonAttack(name).."|"..getPokemonDefense(name).."|"..getPokemonSpAttack(name).."|"..getPokemonVitality(name).."|".. getPokemonType1(name) .."".. (getPokemonType2(name) and "/".. getPokemonType2(name) or "")) elseif isPlayer(itemEx.uid) and itemEx.uid == cid then doSendPlayerExtendedOpcode(cid, OPCODE_POKEDEX, name) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você tem a pokedex de "..(getPlayerStorageValue(cid, storages.pokedexSys) + 1).." pokemon"..(getPlayerStorageValue(cid, storages.pokedexSys) + 1 == 1 and "" or "s").." de kanto.") end return true end
  19. Bruno

    action [TFS 1.x] Critical System

    Introdução Este script consiste em aumentar uma porcentagem dos ataques de acordo com o critical level. Exemplo: Suponhamos que o player tenha Critical Skill 100 e a porcentagem de ataque esteja configurado para aumentar 50%, o player terá 30% de chance de au 50% dos ataques. Instalação O conteúdo da lib serve para o Critical e Dodge System, se você já fez este procedimento no outro script simplesmente ignore e vá para o próximo passo. Em data/lib/core/core.lua adicione o seguinte conteúdo em qualquer parte: dofile('data/lib/core/dclib.lua')Ainda em data/lib/core/core crie um arquivo chamado dclib.lua com o seguinte conteúdo: Agora em data/actions/actions.xml adicione a seguinte tag: <action itemid="18415" script="other/critical.lua"/>Depois em data/actions/scripts/other crie um arquivo chamado critical.lua com o seguinte conteúdo: Pronto, já configuramos o item para atribuir o Critical Skill, vamos configurar a parte dos ataques. Vá em data/creaturescripts/creaturescripts.xml e adicione a seguinte tag: <event type="healthchange" name="CriticalSystem" script="criticalSystem.lua"/>Agora em data/creaturescripts/scripts crie um arquivo chamado criticalSystem.lua com o seguinte conteúdo: Ainda em data/creaturescripts/scripts abra o arquivo login.lua e Antes de: return trueAdicione: player:registerEvent("CriticalSystem") -- Critical System if player:getCriticalLevel() == -1 then player:setCriticalLevel(0) endO sistema está finalizado, agora vamos criar as talkactions para que os players acompanhem seu skill. Em data/talkactions/talkactions.xml adicione a tag: <talkaction words="!critical" script="critical.lua"/>E para finalizar, em data/talkactions/scripts crie um arquivo chamado critical.lua com o seguinte conteúdo: Bom é isso ai! Créditos:
  20. Antharaz

    Antha Anti-Bot System

    {T}ive um idéia babaca enquanto estava atoa em casa... .-. porque não fazer um anti-bot system? lol Gtz champz!!! ¬¬ {A}lguns detalhes do sistema: 1º - Para não atrapalhar wars ele não faaz a verificação o player está PZ Locked. 2º - Se você der logout sem fazer a verificação, ao entrar novamente ele lhe informará o último código não confirmado por você. 3º - Os gods/gms/account managers não recebem nenhuma msg por motivos óbvios. {E}m globalevents.xml localizado na pasta data\globalevents coloque a linha abaixo antes de </globalevents>: <globalevent name="anthaab" interval="900" event="script" value="anthaab.lua"/> {A}pós fazer isto, vamos criar o script correspondente ao evento. Crie um arquivo chamado anthaab.lua em data\globalevents\scripts com o code abaixo: function onThink(interval, lastExecution) for x=1,#getOnlinePlayers() do if getPlayerAccess(getCreatureByName(getOnlinePlayers()[x])) < 4 and (not isPlayerPzLocked(getCreatureByName(getOnlinePlayers()[x]))) and getOnlinePlayers()[x] ~= "Account Manager" then if getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9564) == -1 then local numero = math.random(0,99999) doPlayerSendTextMessage(getCreatureByName(getOnlinePlayers()[x]), MESSAGE_STATUS_WARNING, 'Anti-bot system by Antharaz. Seu número de confirmação anti-bot é: '..numero..'. Por favor digite !anthaab XXXXX onde XXXXX é seu número de confirmação.') setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9564,numero) elseif getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565) == -1 then setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565,1) doPlayerSendTextMessage(getCreatureByName(getOnlinePlayers()[x]), MESSAGE_STATUS_WARNING, 'Último aviso. Confirme seu número gerado pelo sistema anti-bot pelo comando !anthaab ou você será banido.') elseif getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565) == 1 then doAddAccountBanishment(getAccountIdByName(getOnlinePlayers()[x])) setPlayerStorageValue(getCreatureByName(getOnlinePlayers()[x]),9565,-1) doRemoveCreature(getCreatureByName(getOnlinePlayers()[x])) end end end return TRUE end {A}gora vá em talkactions.xml na pasta data/talkactions e adicione a linha abaixo antes de </talkactions>: <talkaction words="!anthaab" event="script" value="anthaab.lua"/> {A}gora em data/talkactions/scripts crie um arquivo chamado anthaab.lua com o code abaixo: function onSay(cid, words, param, channel) if getPlayerAccess(cid) > 3 then return false elseif getPlayerStorageValue(cid,9564) == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'Você ainda não recebeu um novo número de confirmação anti-bot.') elseif tonumber(param) == getPlayerStorageValue(cid,9564) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'Confirmado com sucesso. Bom jogo.') doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'Antha anti-bot system by Antharaz') setPlayerStorageValue(cid,9564,-1) setPlayerStorageValue(cid,9565,-1) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING,'Número de confirmação errado. O seu número de confirmação é '..getPlayerStorageValue(cid,9564)..'.') end return true end {A}gora vá em data\creaturescripts\scripts, abara o arquivo login.lua e coloque o código abaixo antes do return true: if getPlayerStorageValue(cid,9564) > -1 then doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,'Você não confirmou seu último número do sistema anti-bot. Ele é: '..getPlayerStorageValue(cid,9564)..'.') end {V}ídeo: http://www.screencast.com/t/MmM5NjFiY PS:.. o vídeo demora um pouco para começar mesmo...
  21. Como o Xtibia mudou seu site, e o modo de edição de tópico colocarei resumido.. Global Compacto Versão 8.60 Links com DLL e Sem DLL http://www.mediafire.com/?651yyaal4lklfbb http://www.mediafire.com/?wkwwote6edvcv4o
  22. Omega

    sistema [AGS] Guild Task

    Aviso Esse script precisa do Advanced Guild System instalado corretamente para funcionar. Informações Esse sistema de scripts funciona como uma task para toda a guild. Assim, qualquer membro da guilda pode aceitar uma task e cada monstro morto por qualquer membro irá contar para completar a task. Ao terminar a task, um membro deve falar com o NPC, que dará guild points e depositará o dinheiro na conta da guilda. Para melhor usufruto, use em conjunto com o Guild Banker. Códigos data/lib/guildtask_lib.lua data/creaturescripts/scripts/guild_onKill.lua data/npcs/scripts/guild_task_npc.lua data/lib/npc/Arthur.xml Configurações Para acrescentar monstros: Abra o arquivo guildtask_lib.lua e adicione {names = {"nome da task", "nome do monstro(1)", "nome do monstro(2), etc...}, totalKills = numero de monstros para completar a task, money = recompensa(dinheiro), points = recompensa(pontos), minPoints = mínimo de pontos para habilitar a task}, Logo abaixo dos demais monstros. Por exemplo, para acrescentar uma task para matar vários tipos de dragons, ficaria assim (o primeiro nome é o nome do task): -- Monsters monsters = { {names = {"dragon"}, totalKills = 5, money = 5000, points = 3, minPoints = 0}, {names = {"dragon lord"}, totalKills = 5, money = 15000, points = 5, minPoints = 1}, {names = {"dragon hunter task", "dragon lord", "dragon", "frost dragon", "undead dragon"}, totalKills = 500, money = 150000, points = 5, minPoints = 10}, }, Para configurar o tempo entre uma task e outra, utilize a variável waitTime (guildtask_lib.lua): -- Other variables waitTime = 1440, -- Tempo de espera para começar outra task após entregar uma } Para que não haja tempo de espera, coloque o valor 0. Esse tempo é em minutos.
  23. Oláá galere, de buenas? Trouxe pra vocês mais um sistema que é útil para muitos servers, o Characters Market System (Mercado de Personagens) O que é: É um sistema em que você pode colocar um character à venda por um preço que você mesmo define, tudo dentro do jogo! Gogo ao script: Algumas Screenshots: Configurando: level = 30 -- Level mínimo que o character deve ter para ser vendido min_price = 100 -- Preço mínimo de um character max_price = 1000000 -- Preço máximo de um character[/code] [size=5][u][b]Comandos:[/b][/u][/size] !character buy,nome -- Compra um character !character sell,nome,preço -- Vende um character !character remove,nome -- Remove um character da lista de vendas, caso ele esteja à venda !character list -- Vê a lista de characters disponíveis para a venda Observações: - O character é transferido para a conta do comprador automaticamente ao ser comprado - Funciona em 0.3.6 pra cima - Em algumas versões de servers, pode dar erro na list de characters. Créditos: LuckOake -- Pelo Sistema Oneshot -- Pela ajuda com algumas funções Demonbholder -- Pela ajuda com algumas funções É isso, obrigado.
  24. Roksas

    poketibia [PokéTibia] Grass Born

    Grass Born Eaí meus parceiros, me deram a ideia de copiar um Sistema do Pokémonmon Red, no qual você pisa numa grama especial e tem chance de nascer algum Pokémon. Instalação Vá em data/movements/scripts, copie algum arquivo da pasta e cole, renomeie ele para grass_born.lua e adicione dentro: Volte á pasta anterior (data/movements), abra com algum editor de texto o arquivo movements.xml e adicione essa tag: <movevent type="StepIn" actionid="14569" event="script" value="grass_born.lua"/> Configuração Vá no código e procure no começo por esta parte: local cfg = { monsters = {"Butterfly", "Metapod", "Caterpie", "Pidgey", "Beedrill", "Meowth", "Pidgeotto"}, grassChance = 25, -- % chance create monster timeTo = 5, -- Seconds so you can use them again } Na linha monsters você coloca o nome de cada Pokémon entre aspas e separados por vírgula que tem chance de nascer. grassChance você coloca quantos porcento de chance tem de nascer. E em timeTo você coloca a cada quantos segundos tem chance de nascer algum. Isto serve para o player não ficar pisando no tile. Agora basta ir no Map Editor e colocar Action ID 14569 em todos os tiles, nos quais os players passam e tem chance de nascer algum Pokémon. Aconselho usar em gramas especiais. Finalizações Muito obrigado pela atenção galerinha, espero que tenham entendido e que façam um belo uso deste sistema, achei bem interessante. Qualquer dúvida ou sugestão estou aqui
  25. Furabio

    8.6 Baiak ROX ! Editado By DeathRocks

    Eae Galera do EKS É o seguinte Hoje trago a vocês o Baiak Rox Editado por Min Espero que Gostem Oque eu Fiz ? | Novo Visual do Templo Totalmente ICE | Critical System | Task System | Dodge System | Run Event (CORRIDA MALUCA) | Reset System (ÁREA EXCLUSIVA COM CASTELO E HUNTS) para resetar fale !reset | Guild Frags System ( ACESSO AO PROMOTE E ITENS EXCLUSIVOS ) | War System (100% RODANDO EM SQLITE) | Cast System (100% Roda em Mysql ) ( Para Ativar vai em Config.lua e ache | enableCast = false | mude para true ) | PvP Balanceado Agora com mais RPG | Armas Arrumadas Para Melhor PvP | Varios Eventos Automaticos | Battle Field Event | Capture The Flag Event | City War | Adicionado CASTLE 24HORAS (COM CASTELO) e AVISOS DE INVASORES | Itens DONATES | Área DONATE ~~ (Só Entra Quem Usar o Itens de Premium Days) | Vários Novos Script | Fast Atk Arrumado | Distro 0.4 Rodando 100% ( Se For 64x Bits) | Refinamento ( Aprimora seus Equipamentos ) | Frags no Look | Npc Hero Seller (Vende Itens Exclusivos para quem tiver honor points) Obs:Consegue no GFS) | Entre Outras Coisas | SENHA DO GOD: rox/styller | Aqui Vai Umas Prints | Castelo Reset System | Nova Imagem do Templo | Área Donate | Mostra de Itens Donate + Eventos | Download http://www.4shared.c..._DeathRock.html | Scan https://www.virustot...sis/1403139305/ | Créditos DeathRocks LuanLuciano Vinny
×