Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 10/12/13 em todas áreas

  1. Oneshot

    Show Off - Spell Forge

    Spell Forge Boa tarde, pessoal. Seguindo a orientação da equipe do xtibia.com, estou postando um vídeo demonstrativo (teaser) aqui nessa área, do sistema Spell Forge que estou desenvolvendo. O que é o Spell Forge? Algo que pretende inovar o cenário abandonado de criação de magias para Open Tibia. Um sistema diferente. No sistema, as palavras tem um verdadeiro significado, sendo a união delas, responsável por criar uma magia nova e diferente. Ou seja, chega de programar milhões de magias e atribuir palavras fixas a elas, programe a função das palavras e deixe o jogador "forjar" suas próprias magias.
    7 pontos
  2. Tonynh

    Resultado ADS #90

    Salve, salve galerinha ékstibiana =) Trazendo em primeira mão o resultado de mais uma edição da Assinatura da Semana! Confiram abaixo o resultado final da ADS #90 Tivemos um grande número de participantes durante a votação! Espero que esses sejam convertidos a participar da próxima edição! =) 1° Lugar - Tonynh 2° Lugar - Alexclusive 3° Lugar- Bennyyw Premiação: 1° Colocado - 3 Reps + sign + medalha 2° Colocado - 2 Reps + sign 3° Colocado - 1 Rep + sign MUITO OBRIGADO, E CONTO COM VOCÊS NA PRÓXIMA EDIÇÃO! =) + Dúvidas/Comentários + Sugira um tema!
    2 pontos
  3. Skywar

    Seu último mapa - your last map

    Muito, muito enferrujado, só pra curtir mesmo http://img89.imageshack.us/img89/1975/70d0.png
    2 pontos
  4. kelvinvictor

    Exp Ring

    UPDATE 12/03/2012 Fala ae, xtibianos, Aqui eu, Kelvin Victor novato no Xtibia mais ja trazendo um tutorial, não meu mais do VODKART Vamos ao que interessa: Pimeiramente va em movements\script crie um arquivo e renomeie para expring.lua Dentro Coloque: Verde: Valor em % (Porcento) que aumentará a experiência. Ex: 1.5 = 50% 1.2 = 20% Em movements.xml adicione as tags: <movevent type="Equip" itemid="7697" slot="ring" event="function" value="onEquipItem"/> <movevent type="Equip" itemid="7708" slot="ring" event="script" value="expring.lua"/> <movevent type="DeEquip" itemid="7708" slot="ring" event="script" value="expring.lua"/> Em items.xml substitua por esses: <item id="7708" article="a" name="Experience ring"> <attribute key="weight" value="80"/> <attribute key="slotType" value="ring"/> <attribute key="decayTo" value="0"/> <attribute key="duration" value="480"/> <attribute key="showduration" value="1"/> </item> <item id="7697" article="an" name="experience ring"> <attribute key="weight" value="80"/> <attribute key="slotType" value="ring"/> <attribute key="transformEquipTo" value="7708"/> <attribute key="stopduration" value="1"/> <attribute key="showduration" value="1"/> </item> <attribute key="duration" value="480"/>: Tempo em segundos que vai durar o anel Colocando Infinito: Data/Items/Items.xml <item id="7708" article="a" name="experience ring"> <attribute key="weight" value="80"/> <attribute key="slotType" value="ring"/> <attribute key="decayTo" value="0"/> <attribute key="duration" value="0"/> <attribute key="showduration" value="0"/> </item> <item id="7697" article="an" name="experience ring"> <attribute key="weight" value="80"/> <attribute key="slotType" value="ring"/> <attribute key="transformEquipTo" value="7708"/> <attribute key="stopduration" value="1"/> <attribute key="showduration" value="0"/> </item> Valeu Xtibianos. Creditos: VODKART Edição no tópico: Kelvin Victor
    1 ponto
  5. Jesteer

    Shinobi Adventure [narutibia]

    O que tem de novo? Vocações: 24 vocações (entre elas 4 obtidas atraves de quest) a naruto, a sasuke, a lee, a sakura, a gaara, a neji, a kiba, a Shikamaru, a hinata, a tenten, a itachi, a killer bee, a kakashi, a Madara [Quest], a Kankuro, a Minato [Quest], a Jiraya [Quest], a Obito, a Kisame, Raikage, Orochimaru, Temari, Yamato, Deidara Quest e sistemas: Todas as quests normais de NTO, e a de vocação que eu criei e uma outra( surpresa hihihi) sistemas novos de: Skull remover,bingo book,mega pill, (sistema que o personagem come uma pilula e fica com skill e ml maior por um determinado período de tempo), Max level mas é regulável e até da pra tirar. correção de todos os bugs existem apenas um que eu não consegui resolver: Avisos: A DB não aceita exclusão de algumas contas então basta você pegar uma DB de outro servidor limpa e coloca no lugar. Algumas SS's: Download Server: Link:http://www.mediafire.com/?7ade1ddhyybdgmu Download client(descompilado): Link:http://www.mediafire.com/download/men89ay90yysysj/SAinstall.exe Créditos: Jesteer -Edições No Servidor em Geral. Robinhood - Criador Do Servidor. Enself - Edições No Servidor em Geral. Bennyyw - Layout Web Site Junior001 - Algumas Sprites Massas. Darkheel -- Criou a outfit do Raikage. V2 update. adicionado: Download http://www.mediafire.com/download/c832fhv7i6r2kdc/naruto.sql (naruto DB MYSQL) http://www.mediafire.com/download/nd7hh0a0o1000ow/htdocs.rar (site) http://www.mediafire.com/download/m88n0z0klwtuzuz/Shinobi_Adventure_client.exe(client com musica) http://www.mediafire.com/download/g8z933186sntw2e/NtoShinobi.rar (servidor V2) http://www.mediafire.com/download/ocmhwgistkfw243/shinobi_adventure_option_2.exe(client comum) trocando de mysql para sqlite
    1 ponto
  6. MatheusGlad

    Sistema De Owner Para Equips.

    Bem o sistema é basicamente isso: Fazer com que so um player possa equipar determinado item. Eu fiquei em duvida se botava ou nao botava para aparecer o nome do owner no item, por isso fiz uma enquete para esse topico, a que vencer eu faço. Youtube: O script esta em mod, voce nao precisa nem mexer no mod. Crie um arquivo.xml na pasta mods do seu ot e nomeie-o de ownersystem (é extremamente importante que o nome seja esse.) e bote esse script: <?xml version="1.0" encoding="UTF-8"?> <mod name="OwnerSystem" enabled="yes" author="MatheusMkalo" credits="Cezar (Patterns)"> <config name="OwnerLib"><![CDATA[ function getSlotIds(tag) local file = "mods/ownersystem.xml" local input = assert(io.open(file)) local content = assert(input:read("*a")) local tag = content:match("(<movevent[^>]*slot=[\"']".. tag .."[\"'][^>]*>)") local itemid = tag:match("itemid=[\"'](.-)[\"']") input:close() return itemid:explode(";") end function writeId(tag, id) local file = "mods/ownersystem.xml" local input = assert(io.open(file)) local content = assert(input:read("*a")) local tag = content:match("(<movevent[^>]*slot=[\"']".. tag .."[\"'][^>]*>)") local itemid = tag:match("itemid=[\"'](.-)[\"']") input:close() if(itemid:match(tostring(id))) then return true end if(itemid == "") then itemid = id else itemid = itemid .. ";" .. id end local ntag = tag:gsub("itemid=[\"'](.-)[\"']", "itemid=\"" .. itemid .. "\"") local content = content:gsub(tag, ntag) local output = assert(io.open(file, "w")) output:write(content) output:close() addEvent(doReloadInfo, 1000, 22) end function getItemType(itemid) local slottypes = {"head", "body", "legs", "feet"} local arq = io.open("data/items/items.xml", "r"):read("*all") local attributes = arq:match('<item id="' .. itemid .. '".+name="' .. getItemNameById(itemid) ..'">(.-)</item>') local slot = "" for i,x in pairs(slottypes) do if attributes:find(x) then slot = x break end end if slot == "body" then slot = "armor" end return slot end function isHandedWeapon(itemuid) local typee = getItemWeaponType(itemuid) or 0 if typee >= 1 and typee <= 6 then return TRUE end end function isPlayerOwnerItem(cid, itemuid) return not getItemAttribute(itemuid, "ownerguid") or getItemAttribute(itemuid, "ownerguid") == getPlayerGUID(cid) end function setItemOwner(itemuid, cid) if isHandedWeapon(itemuid) then local equips = getSlotIds("hand") if not table.find(equips, getItemIdByName(getItemName(itemuid))) then writeId("hand", getItemIdByName(getItemName(itemuid))) end doItemSetAttribute(itemuid, "ownerguid", getPlayerGUID(cid)) elseif getItemType(getItemIdByName(getItemName(itemuid))) then local equips = getSlotIds(getItemType(getItemIdByName(getItemName(itemuid)))) if not table.find(equips, getItemIdByName(getItemName(itemuid))) then writeId(getItemType(getItemIdByName(getItemName(itemuid))), getItemIdByName(getItemName(itemuid))) end doItemSetAttribute(itemuid, "ownerguid", getPlayerGUID(cid)) end end ]]></config> <movevent type="Equip" itemid="" slot="head" event="script"><![CDATA[ domodlib("OwnerLib") if not isPlayerOwnerItem(cid, item.uid) then addEvent(doPlayerSendCancel, 1, cid, "You are not the owner of this item.") else return TRUE end ]]></movevent> <movevent type="Equip" itemid="" slot="hand" event="script"><![CDATA[ domodlib("OwnerLib") if not isPlayerOwnerItem(cid, item.uid) then addEvent(doPlayerSendCancel, 1, cid, "You are not the owner of this item.") else return TRUE end ]]></movevent> <movevent type="Equip" itemid="" slot="legs" event="script"><![CDATA[ domodlib("OwnerLib") if not isPlayerOwnerItem(cid, item.uid) then addEvent(doPlayerSendCancel, 1, cid, "You are not the owner of this item.") else return TRUE end ]]></movevent> <movevent type="Equip" itemid="" slot="armor" event="script"><![CDATA[ domodlib("OwnerLib") if not isPlayerOwnerItem(cid, item.uid) then addEvent(doPlayerSendCancel, 1, cid, "You are not the owner of this item.") else return TRUE end ]]></movevent> <movevent type="Equip" itemid="" slot="feet" event="script"><![CDATA[ domodlib("OwnerLib") if not isPlayerOwnerItem(cid, item.uid) then addEvent(doPlayerSendCancel, 1, cid, "You are not the owner of this item.") else return TRUE end ]]></movevent> </mod> Agora vá na pasta libs e abra o arquivo.lua que tem o nome de functions ou 050-functions (pode variar de ot pra ot) e adicione essa funçao: function setItemOwner(itemuid, cid) domodlib("OwnerLib") return setItemOwner(itemuid, cid) end Agora vá em data/talkactions/scripts e abra o arquivo createitem.lua e mude o script para esse: function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, ",") local ret = RETURNVALUE_NOERROR local pos = getCreaturePosition(cid) local id = tonumber(t[1]) if(not id) then id = getItemIdByName(t[1], false) if(not id) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item wich such name does not exists.") return true end end local amount = 100 if(t[2]) then amount = t[2] end local item = doCreateItemEx(id, amount) if(t[3] and getBooleanFromString(t[3])) then if(t[4] and getBooleanFromString(t[4])) then pos = getCreatureLookPosition(cid) end ret = doTileAddItemEx(pos, item) else doPlayerAddItem(cid, id, amount) ret = RETURNVALUE_NOERROR end if(ret ~= RETURNVALUE_NOERROR) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Couldn't add item: " .. t[1]) return true end doDecayItem(item) if(not isPlayerGhost(cid)) then doSendMagicEffect(pos, CONST_ME_MAGIC_RED) end return true end É de extrema importancia que voce mude o script do /i, pois o i que vem nos ots contem um bug que arruina com o sistema de owner. Pronto agora você so precisa juntar a minha funçao setItemOwner(itemuid, cid) com qualquer outro script de quest whatever. Lembre-se se voce quizer algum script que use esse meu sistema, peça-o na sessao de pedidos de scripts, não aqui.
    1 ponto
  7. LookMe

    Training Offline

    @Editado Não sei a área certa para criar esse tutorial, mas se estiver não estiver na área ccorreta, por favor, movam ! Continuando... Vou ensinar a criar um sistema de treinamento offline igual ao global. Requisitos: Apenas um ot com items.xml e items.otb que possuem as estátuas de treino ^-^ Seguindo. PastaDoOt/data//lib/ crie um arquivo chamado "103-offline-training.lua" Coloque isso dentro: em Data/actions/actions.xml adicione as seguintes tags: Os números 18488 - 18492 são os id's dos objetos a serem os "Treiners offline" ou seja, se vc trocar por exemplo o 18492 por um outro id tipo "1026" ( id de um muro) todos os muros que possui esse id, ao clicarem nele, o player irá deslogar, então prestem atenção e coloquem um id existente e que nao seja "usável" como exemplo, uma estátua. em data/actions/script crie um arquivo chamado "offtrain_statue.lua" Coloque isso dentro: ../data/creaturescripts/creaturescripts.xml ../data/creaturescripts/scripts/offtrain_login.lua ../data/creaturescripts/scripts/offtrain_logout.lua ./data/globalevents/globalevents.xml ../data/globalevents/scripts/offtrain_addMinutes.lua pronto, seu sistema de treino offline está criado Créditos: Gesior.pl -> membro da otland, e criador do sistema LookMe -> por trazer o conteúdo
    1 ponto
  8. meubk

    Aura System

    Olá hoje venho trazer um sistema não tão inovador por varios servers tem, porem o meu é mto diferente, para escolher sua aura vc precisa conversar com um npc, onde vc pode configurar para ser paga, precisar de level, ou somente para premiuns, no meu sistema está disponiveis as seguintes auras: Fire Ice Earth Death Holy Energy Que são os tipos mais comuns de magias do tibia, bom no script, enquanto vc está parado a aura são simples efeitos que acompanham o player e não foi feio por OnThink que pode causar lags no servidor, foi feito de um modo diferente, qndo vc está sendo atacado dependendo da chance escolhida a aura libera poderes, acertando alvos que estão te atacando, isso acontece automaticamente. Bom chega de explicação e vamos a instalação. Entre na pasta data/lib e crie um arquivo chamado configAura.lua e cole o seguinte código: -- [[ AURA SYSTEM LIB (BY: XXOTSERVXX) ]] -- -- [[ CONFIGURAÇÕES DO NPC ]] -- npc = { level = 1, -- level para pegar aura (1 para não precisar) price = 0, -- preço para comprar a aura (0 para ser gratis) premmy = false, -- precisar ser premium (false para não precisar) } -- [[ OUTRAS CONFIGURAÇÕES ]] -- auexchance = 20 -- chance de acontecer uma explosão de aura(maixmo 100) aurast = 56897 -- storage da aura (troque se ja estiver usando ela) Bom nesse script é onde você vai poder configurar variias coisas do script, é só seguir os comentários no script. Continuando na mesma pasta data/lib crie outro arquivo com o nome libAura.lua e cole o seguinte script: -- [[ FUNÇÕES ]] -- au = { ["fire"] = {ef = {5, 6, 15, 36}, sh = 3, dmg = COMBAT_FIREDAMAGE}, ["ice"] = {ef = {41, 42, 43}, sh = 28, dmg = COMBAT_ICEDAMAGE}, ["earth"] = {ef = {8, 45, 20}, sh = 29, dmg = COMBAT_EARTHDAMAGE}, ["death"] = {ef = {17, 34, 38}, sh = 31, dmg = COMBAT_DEATHDAMAGE}, ["holy"] = {ef = {39, 49}, sh = 30, dmg = COMBAT_HOLYDAMAGE}, ["energy"] = {ef = {11, 47, 48}, sh = 35, dmg = COMBAT_ENERGYDAMAGE} } function isAura(cid) if type(getPlayerStorageValue(cid, aurast)) == "string" then return true end return false end function addAura(cid, aura) return setPlayerStorageValue(cid, aurast, aura) end function getAura(cid) return getPlayerStorageValue(cid, aurast) end function startAura(cid, aura) a = au[aura] if not isCreature(cid) then return true end doSendMagicEffect(getThingPos(cid), a.ef[math.random(1, #a.ef)]) addEvent(startAura, 2000, cid, aura) end arrex = createCombatArea{ {0, 0, 1, 0, 0}, {0, 1, 1, 1, 0}, {1, 1, 2, 1, 1}, {0, 1, 1, 1, 0}, {0, 0, 1, 0, 0} } function sendExplosion(cid, aura, model) rateatk = math.ceil(getPlayerLevel(cid)/2*1,5) a = au[aura] min, max = rateatk/2, rateatk if model == 1 then doAreaCombatHealth(cid, a.dmg, getThingPos(cid), arrex, -min, -max, a.ef[math.random(1, #a.ef)]) elseif model == 2 then for i = 0, 3 do doSendDistanceShoot(getThingPos(cid), getPositionByDirection(getThingPos(cid), i, 1), a.sh) doAreaCombatHealth(cid, a.dmg, getPositionByDirection(getThingPos(cid), i, 1), 0, -min, -max, a.ef[math.random(1, #a.ef)]) end end end function getPositionByDirection(position, direction, size) -- TFS FUNCTION local n = size or 1 if(direction == NORTH) then position.y = position.y - n elseif(direction == SOUTH) then position.y = position.y + n elseif(direction == WEST) then position.x = position.x - n elseif(direction == EAST) then position.x = position.x + n elseif(direction == NORTHWEST) then position.y = position.y - n position.x = position.x - n elseif(direction == NORTHEAST) then position.y = position.y - n position.x = position.x + n elseif(direction == SOUTHWEST) then position.y = position.y + n position.x = position.x - n elseif(direction == SOUTHEAST) then position.y = position.y + n position.x = position.x + n end return position end Neste script não é recomendado mexer a não ser que vc seje um scritper e saiba oque faça. Agora entre na pasta data/creaturescripts/scripts e crie um arquivo chamado creatureAura.lua e cole o seguinte código: function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS then if isAura(cid) then if math.random(1, 100) < auexchance then sendExplosion(cid, getAura(cid), math.random(1, 2)) end end end return true end function onLogin(cid) if isAura(cid) then startAura(cid, getAura(cid)) end return true end Também não é recomendando mexer, continuando nesta mesma pasta (data/creaturescripts/scripts) procure pelo login.lua e no final do script antes do return true end, cole isto: registerCreatureEvent(cid, "loginAura") registerCreatureEvent(cid, "statsAura") Vá na pasta anterior data/creaturescripts e procure pelo arquivo creaturescripts.xml e adicione as seguintes tags: <event type="login" name="loginAura" event="script" value="creatureAura.lua"/> <event type="statschange" name="statsAura" event="script" value="creatureAura.lua"/> Agora entre na pasta data/npc e crie um arquivo chamado Npc Aura.xml e cole o seguinte codigo: <?xml version="1.0" encoding="UTF-8"?> <npc name="Npc Aura" script="npcAura.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="55" body="53" legs="42" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Ola, diga {aura} para ver as auras disponiveis."/> </parameters> </npc> Entre na pasta data/npc/scripts e crie um arquivo chamado npcAura.lua e cole o seguinte código: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, 'aura') then if not isAura(cid) then selfSay('Temos disponiveis as seguintes auras: {fire}, {ice}, {earth}, {death}, {holy} e {energy}, qual você quer aprender ?', cid) talkState = 1 else selfSay('Você já tem á '..getAura(cid).." aura.", cid) end elseif isInArray({"fire", "ice", "earth", "death", "holy", "energy"}, msg) and talkState == 1 then if getPlayerLevel(cid) < npc.level then return selfSay("Desculpe mais para aprender a aura é preciso level "..npc.level..".") end if getPlayerMoney(cid) < npc.price then return selfSay("Desculpe mais para aprender a aura é preciso "..npc.price.."gps.") end if not isPremium(cid) and npc.premmy then return selfSay("Desculpe mais para aprender a aura é preciso ser premium.") end addAura(cid, msg) startAura(cid, getAura(cid)) doPlayerRemoveMoney(cid, npc.price) selfSay("Você acaba de receber á "..getAura(cid).." aura.") talkState = 2 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Bom para quem não entende de script é recomendando mexer somente no configAura.lua da pasta data/lib, lá é possivel configurar de modo funcional. Obrigado por ter visto este tópico Fuii.
    1 ponto
  9. 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
  10. Roksas

    Cast [TV] System 1.0

    Cast System 1.0 Como vãao galera? Há quanto tempo não? Hoje eu vim trazer para vocês um sisteminha bem simples e legal, aonde você pode assistir os outros jogadores e vice-versa. Versão testada: TFS 8.6 0.4 and TFS 0.3.6 8.6 Comandos utilizados in-game: !cast on -- Ativa o seu Cast System, e permite os outros jogadores te assistirem; !cast off -- Desativa o seu Cast System; !cast exit -- Você sai do Cast no qual está assistindo; !cast NAME -- Começa a assistir um jogador (NAME). Instalação Vá em data/talkactions/scripts crie um arquivo chamado castSys.lua e adicione o seguinte código dentro do mesmo: --[[ Perfect Cast System 1.0 by Roksas Acesse ja XTibia.com =) ]]-- function onSay(cid, words, param) local player = getPlayerByName(param) if not isInArray({"list", "exit", "off", "on"}, param) and not param or param == "" then doSendMagicEffect(getThingPos(cid), 2) doPlayerSendTextMessage(cid, 20, "Enter the name of the player, which you want to cast in parameters.") return true end if param == "on" then if getPlayerStorageValue(cid, 10359) >= 1 then doSendMagicEffect(getThingPos(cid), 2) doPlayerSendTextMessage(cid, 20, "Your Cast System is already running ONLINE!") return true end castOn(cid) doSendMagicEffect(getThingPos(cid), 39) doPlayerSendTextMessage(cid, 20, "You have activated your Cast System, now others can cast you, to disable this feature, use the parameter '!cast off'.") return true end if param == "off" then if getPlayerStorageValue(cid, 10359) < 1 then doSendMagicEffect(getThingPos(cid), 2) doPlayerSendTextMessage(cid, 20, "Your Cast System is already OFFLINE!") return true end castOff(cid) doSendMagicEffect(getThingPos(cid), 39) doPlayerSendTextMessage(cid, 20, "You have disabled your Cast System, from now on no one can watch you, unless you turn on the Cast, using the parameter '!cast on'.") return true end if param == "exit" then if getPlayerStorageValue(cid, 12269) < 1 then doSendMagicEffect(getThingPos(cid), 2) doPlayerSendTextMessage(cid, 20, "You no are casting players.") return true end cancelCast(cid) doSendMagicEffect(getThingPos(cid), 39) doPlayerSendTextMessage(cid, 20, "You stopped casting, use the parameter '!cast list' to see who can be casted.") return true end if param == "list" then if #whoCasted() < 1 then doSendMagicEffect(getThingPos(cid), 2) doPlayerSendTextMessage(cid, 20, "At this time, no player can be casted, try again later.") return true end doPlayerSendTextMessage(cid, 20, "Players can be casteds:\n\n") for k, v in ipairs(whoCasted()) do doPlayerSendTextMessage(cid, 20, " - "..getCreatureName(v).."") end return true end if not isPlayer(player) then doSendMagicEffect(getThingPos(cid), 2) doPlayerSendTextMessage(cid, 20, "This player is offline or does not exist. Use the parameter '!cast list' to see who can be casted.") return true end if getPlayerStorageValue(player, 10359) < 1 then doSendMagicEffect(getThingPos(cid), 2) doPlayerSendTextMessage(cid, 20, "You can only cast one person with the Cast System is activated, use the parameter '!cast list' to see who can be assisted.") return true end if getPlayerStorageValue(cid, 10359) >= 1 then doSendMagicEffect(getThingPos(cid), 2) doPlayerSendTextMessage(cid, 20, "To cast a player, you must first disable your Cast System using the parameter '!cast off'.") return true end if not getTileInfo(getThingPos(cid)).protection then return doPlayerSendTextMessage(cid, 20, "You need enter in Protection Zone to use the Cast System.") and true end setPlayerStorageValue(cid, 12269, 1) castPlayer(cid, player) doSendMagicEffect(getThingPos(cid), 39) doPlayerSendTextMessage(cid, 20, "You are casting the player "..getCreatureName(player)..", to exit just use the command '!cast exit'.") doPlayerSendTextMessage(player, 20, "You are casted by "..getCreatureName(cid).." player to disable your Cast, simply use the parameter '!cast off'.") return true end function cancelCast(uid) mayNotMove(uid, false) doCreatureSetHideHealth(uid, false) setPlayerStorageValue(uid, 12269, -1) doRemoveCondition(uid, CONDITION_OUTFIT) return doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid))) or doTeleportThing(uid, getPlayerMasterPos(uid)) and true end function castOn(uid) return setPlayerStorageValue(uid, 10359, 1) and true end function castOff(uid) return setPlayerStorageValue(uid, 10359, -1) and true end function castPlayer(uid, player) if not isPlayer(player) then cancelCast(uid) return true end if getPlayerStorageValue(player, 10359) < 1 then cancelCast(uid) return true end if getPlayerStorageValue(uid, 12269) < 1 then cancelCast(uid) return true end mayNotMove(uid, true) doSetItemOutfit(uid, 1934, -1) doCreatureSetHideHealth(uid, true) doTeleportThing(uid, getThingPos(player)) return addEvent(castPlayer, 1 * 1000, uid, player) and true end function whoCasted() local casteds = {} for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, 10359) >= 1 then table.insert(casteds, pid) end end return #casteds > 0 and casteds or {} end Volte uma pasta (data/talkaction) abra com algum editor de texto o arquivo talkactions.xml e adicione essa tag em qualquer lugar: <talkaction words="!cast;/cast" event="script" value="castSys.lua"/> Muito bem, após isso siga para a pasta data/creaturescripts/scripts, faça o mesmo, crie um arquivo chamado castSys.lua e adicione isso dentro: function onLogout(cid) if getPlayerStorageValue(cid, 12269) > 0 then doPlayerSendCancel(cid, "To logout, you need to exit the Cast System first. Use the parameter '!cast exit'.") return false end setPlayerStorageValue(cid, 10359, -1) return true end function onStatsChange(cid, attacker, type, combat, value) if not isCreature(cid) then return true end if getPlayerStorageValue(cid, 12269) >= 1 and isMonster(attacker) or isPlayer(attacker) then return false end return true end function onAttack(cid, target) if not isPlayer(cid) or not isPlayer(target) then return true end if getPlayerStorageValue(cid, 12269) > 0 then doRemoveCondition(cid, CONDITION_INFIGHT) return false end return true end Já no arquivo creaturescripts.xml, você vai adicionar essa tag: <event type="attack" name="castAttack" event="script" value="castSys.lua"/> <event type="statschange" name="castHits" event="script" value="castSys.lua"/> <event type="logout" name="castLogout" event="script" value="castSys.lua"/> E no arquivo login.lua você vai adicionar essas 3 linhas: registerCreatureEvent(cid, "castAttack") registerCreatureEvent(cid, "castHits") registerCreatureEvent(cid, "castLogout") Para que o player que está assitindo ao outro não use magias enquanto está assistindo, coloque essas linhas abaixo dentro de cada script das magias, debaixo da linha: function onCastSpell(cid, var) Coloque: if getPlayerStorageValue(cid, 12269) >= 1 then return doPlayerSendCancel(cid, "You is casting, not is possible.") and false end Faça a mesma coisa com as quests, embaixo de: function onUse(cid, item, frompos, item2, topos) Prontinho galera, basta reiniciar o servidor e usar, é isto por hoje, espero que tenham gostado, ideias/sugestões para futuras versões, bugs ou críticas sobre o sistema, basta deixar um simples comentário aí no tópico, estarei aqui para atendê-los. Obrigado pela atenção, façam bom uso.
    1 ponto
  11. Yamaken

    Ultimate Sprite Editor

    Olá, hoje venho apresentar o Ultimate Sprite Editor. Não é atoa que ele se chama Ultimate, ele é o melhor sprite Editor que já existiu na comunidade. Imagens: Ele auto detecta a versão da spr baseada na signature do arquivo, e isso pode ser configurado em um arquivo .ini. Caso o auto detect não funcionar, você pode escolher a versão do spr manualmente. As funções do Ultimate Spr Editor são: New: Cria um novo spr do zero sem nenhuma sprite. Open: Abre um arquivo spr com determina versão. Save: Salva um arquivo spr em determinada versão. Add: Adiciona um numero x de sprites no formato png( fundo transparente ) ou no formato bmp( fundo rosa ). Replace: substitui as sprites selecionadas, quer dizer, os IDs continuam os mesmos só muda a imagem dessas sprites. Export: exporta as sprites selecionadas no formato png. Clone: "Clona" as sprites selecionadas, quer dizer, cria sprites iguais no final do arquivo spr. Clear: "Limpa" as sprites selecionadas, isso quer dizer que o ID não vai ser deletado mas que o conteúdo da sprite( a imagem ) vai ser deletado. Download: MediaFire Scan Yamaken~
    1 ponto
  12. Nu77

    New SUJA'SHOW OFF

    Criei esse tópico para postar as sprites que eu estarei fazendo para treinar... Ultimamente estou bem ocupado com uns projetos e como futuramente precisarei de um bom desenvolvimento gráfico, fica difícil depender dos outros para isso, então vou começar a treinar sempre que sobrar um tempinho... E aqui estarei postando os resultados. Bom, vamos começar então! Pikachu: Eevee: Charmander: Squirtle: Outlines: Metal Greymon: Cenario: Poste iluminação: Orc: Helmet: Rabisco de um Dinossauro:
    1 ponto
  13. BrunowOts

    CipSoft Mapa 7,6

    Olá XTibianos! Como muitos de vocês se perguntam sobre o mapa de Tibia versão 7.6, Este é o mapa original convertido espero que gostem! Carlin Thais Venore Ankrahmun Darashia A'b Kaz Edron Todas Cidades 100% full Podem Conferir, Caminho De Venore Para Thais Ou kaz Tudo Completo. Primeiro Global Full (7.60) 100% Postado Para Download Com Link Permanente. http://dl.dropbox.com/u/99819086/OTS...20Original.rar <> Link Permanente <> Credito: BrunoWots Credito: Nottinghster Credito: CipSoft Scan: https://www.virustot...sis/1362530069/ Gostou? COMENTEM! Edite: Link pra quem pediu o server completo ----> http://www.xtibia.com/forum/topic/225734-global-76-full-100igual-do-realots/ <----
    1 ponto
  14. Fuscante

    Criando um otserv

    Bom Dia,Boa Tarde , boa Noite, pra vc que esta vendo esse tutorial de como criar um otserv é bem assim vo começa na parte de baixar o ot http://www.xtibia.com/forum/forum/768-downloads-de-servidores-derivados/ aew nessa seçao vc tera opçoes de escolher qnto de pokemon,tibia harry poter etc... vamos la assim de vc ter baixado seu ot abre a pasta dele vai em config.lua e procure por isso : Vamos la em ip - "127.0.0.1" no 127.0.0.1 é o ip do seu ot que vo ensinar jaja como vc ira criar fixo, em MaxPlayers ali é o maximo de player para entrar no seu ot,feito isso vc salva e fecha, a parte de loots e rates n vou colocar no tutorial . Agora vou ensinar a criar o ip fixo , Primeiro vc vai em http://www.omeuip.com/ assim que vc entrar nesse link vc ve em ip a primeira linha de cima aew na frente vai tar ums numeros tipo 187.120.64.146 esse n é o de vcs e nem o meu claro o de vcs vao ser diferente , assim que vcs pegarem o ip de vcs marquem em um bloco de notas, em seguida vai no site http://no-ip.com/ logo em seguida vai em Sign Up e cria sua conta , e faz um login no site https://www.noip.com/login qnd vc logar vc vai em asism que vc clicar , apartir dali ja é vc criando seu ip , agr vo ensinar as cordenadas : em HostName é o nome do seu ot , nao pode dar espaço , na frente é o nome do seu ot. exemplo : tutorialxtibia.zapto.org , tutorialxtibia.servegame.com tem varios pra vc escolhe , em Endereço ip é o ip do site anterio que eu passei omeuip... aew vc coloca o ip la em endereço ip e clica em ADICIONAR HOST. apos vc criar o seu ip vc vai baixar o no ip duc http://www.noip.com/download?page=win apos ter baixado e instalado abre o programa , faz o login que o login é do site no-ip.com , apos ter feito o login va em Edit Hosts e selecione o ip que vc crio e save , assim que os 3 ficar em verdinho vc volta na pasta do seu ot vai em config.lua ,procure por ip = "127.0.0.1" em 127.0.0.1 vc coloca o ip que vc crio que no caso o meu seria o tutorialxtibia.zapto.org assim vc ter colocar salva , fecha e pode ligar seu ot . Bom galera valeu aew , se vc gosto da um rep++ aew ficarei muito agradecido . nao importo de uma pessoa ter criado um que ensina msm coisa , o importante que eu criei o meu.
    1 ponto
  15. HumpnieHumbert

    [Encerrado]Fairy Tail Online - FTO

    Olá, tudo bem? Há quase dois anos o "Fairy Tail Online" foi desativado por tempo indeterminado, algumas coisas resultaram nisso, como por exemplo a desmotivação da equipe e brigas internas, além de passarmos por diversos problemas no processo de criação do jogo. É com uma grande felicidade que venho anunciar a volta do projeto! Sim, hoje o "Fairy Tail Online" está de volta, então iremos deixar algumas informações sobre o mesmo: - Jogo feito do zero; - Novas ideias; - Equipe experiente; - Novos recursos; - Melhor organização. Além de tudo isso nós temos algumas novidades que serão divulgadas futuramente, contudo, desculpem-nos pela demora para a retomada do projeto. Então, é isso...Acompanhem!
    1 ponto
  16. Alexclusive

    Pense nisso...

    "Amar a profissão não significa gostar de trabalhar de graça"
    1 ponto
  17. lazarocp

    Mega charizard x by lazarocp

    Galera ta aqui uma amostra de um dos pokes feitos por min que estarão em meu server espero a opinião de vocês sobre a sprite.
    1 ponto
  18. LekoDS

    Enviando arquivos do site com Filezilla

    Vamos aprender a colocar o seu site online? Vamos usar o exemplo do Modern ACC, maioria utilizado por servidores derivados. Lembrando que este método é usado para enviar seus arquivos para o servidor que hospeda seu website. REQUERIMENTOS: Filezilla / Hostinger / Modern ACC 1º - Baixar o Filezilla - Fácil é pratico, apenas acesse o site do Baixaki. Baixe é instale ele normalmente como pede. 2º - Agora você deve criar uma conta no Hostinger, onde você vai ter o servidor instalado gratuito, lembrando que é apenas para hospedagem de sites, a vantagem do mesmo que não há publicidade e muito estavel com os demais. 3º - Hora de Baixar a CMS do Modern ACC pelo OTLand, você pode encontrar a mesma em outros locais, mais vamos da preferencia a uma das comunidades mais usadas globalmente em OTServers. Agora vamos começar a passar seus dados para o servidor da hostinger, primeiro você deve criar o seu servidor - o seu site - devemos estar logado no site. Acesse pelo menu Hospedagem > Criar uma Nova Conta > Gratuito > Peça Agora Então seremos direcionado para criar o servidor gratuito: Subdomínio: O local onde você acessara seu domínio, como por exemplo xtibia.com! Lembrando que por se tratar de uma hospedagem gratuita você não pode escolher .com, .net, .com.br por serem pagos. Mais você pode comprar um e direcionar para o mesmo. Senha: A que você acessara via FTP, PhpMyAdmin, CPanel e outros. Apos criar sua conta você sera redirecionado para o CPanel, aqui você pode gerenciar todo o seu site, Mais vamos focar em apenas 2 partes: O FTP é PhpMyAdmin. PHPMYADMIN: Vamos procurar por Avançado > Bases de Dados MySQL Nome do banco de dados MySQL: Nome do banco de dados do Mysql Nome de Usuário MySQL: Nome do Usuário de acesso ao Mysql Senha: Senha de Acesso Atenção: Anote estes dados, vamos precisar dele futuramente. Apos criar o seu banco de dados no Mysql, vamos acessar o PhpMyAdmin, então procure por: Avançado > PhpMyAdmin > Entrar no PhpMyAdmin * Nesta parte vai solicitar a senha do banco de dados que você criou na parte do mysql. Se confirmado você sera redirecionado para o PhpMyAdmin. Nesta parte você deverá ter a pasta "schemas" com o mysql.sql do seu servidor. Você deverá importar para o phpmyadmin, procure a pasta onde esta em seu computador, vou mostrar como na imagem: Apos concluir esta parte, clique em executar (ou de enter no teclado), para importar para o phpmyadmin. Se ocorrer tudo certo, vai aparecer uma mensagem parecida com esta: Importado 71 arquivos com sucesso! FILEZILLA: Agora você deverá procurar por: Arquivos > Acesso FTP Com estes dados você poderá abrir seu Filezilla - no computador - e colocar estes dados para ter uma conexão! Você deve digitar estes dados como por exemplo o do XTibia: Atenção: Estes dados devem ser como o do seu site! Este é apenas o exemplo da imagem. Host: xtibia.zz.mu Usuario: u512441778 Senha: ******** Porta: 21 Agora você deve estar redirecionado direto no Filezilla para o public_html - verifique antes de enviar os arquivos - se estiver, jogue todos arquivos extraídos do Modern ACC nele. Agora você deve prosseguir a instalação do Modern como você faz no XAMPP. Lembrando que os dados que solicitado na instalação do Modern ACC serão como: Hostname: mysql.hostinger.com.br Login: Nome do Usuario do Mysql Senha: Senha do Mysql Database: Nome do banco de dados do Mysql Lembrando: Não dou suporte para pessoas que querem fazer o mesmo ter a conexão com sua VPS. Isto deve ser feito com a empresa que você contratou o host. Esse é apenas um tutorial ensinado a colocar seus arquivos online.
    1 ponto
  19. Kuro o Shiniga

    C/C++ Parte 1

    Ola galera do xtibia, quanto tempo haha, fiquei um bom tempo sem entrar no xtibia e acabei entrando esses dias e andei olhando a parte de tutoriais de C/C++ e percebi que está muito parada, então resolvi dar inicio a novos tutoriais espero que gostem! Hoje apenas explicarei as características da linguagem! Características da linguagem C++. Compilador. Estrutura Básica. Temos abaixo um exemplo: #include <iostream> using namespace std; int main() { //comandos do programa system("PAUSE > null"); return 0; } As duas primeiras linhas são o cabeçalho do programa. Todo programa deve ter um cabeçalho desse tipo para definir quais as bibliotecas ele utilizará. “Bibliotecas” são arquivos que normalmente são instalados juntos com o compilador e que possuem os comandos e funções pertencentes à linguagem. O cabeçalho #include<> serve para indicar ao compilador todas as bibliotecas que este programa utilizará. Na maioria dos programas que escreveremos durante o tutorial, só utilizaremos o #include <iostream>, que serve para incluir a biblioteca iostream em nossos programas. Esta biblioteca contém as principais funções, comandos e classes de entrada e saída de C++, necessárias para realizar programas que, por exemplo, recebam dados via teclado e enviem dados via monitor. A segunda linha do cabeçalho, using namespace std; , é um aviso ao compilador que estaremos utilizando os comandos e funções padrão de C++. Ele é necessário porque em C++ podemos criar várias bibliotecas para serem utilizáveis em vários programas. Cada uma dessas bibliotecas contém comandos, classes e funções próprias, e para evitar confusões e problemas com os nomes destes comandos, utilizamos o cabeçalho “using namespace ...;” para definir qual o campo de nomes que estamos utilizando. Num programa normal, que não utiliza outras bibliotecas além da padrão de C++, utilizamos o namespace std como nosso campo de nomes de comandos e funções. Assim, sempre que utilizamos um comando próprio de C++, o compilador reconhecerá automaticamente este comando como sendo pertencente à biblioteca padrão de C++. Assim como em C, tudo o que acontece durante a execução do programa está contido dentro de uma função principal, chamada main. Declaramos a função main com: int main ( ) Todos os comandos executados pelo programa estão contidos entre as chaves “{ }” da função main. Nos próximos tutoriais estudaremos as funções à fundo e veremos que um programa pode ter mais de uma função, mas é indispensável que todos os programas possuam a função main. Cada programa terá seus próprios comandos, logicamente. Entretanto, o encerramento de um programa geralmente é feito da mesma maneira para todos eles. As duas últimas linhas antes do fecha-chaves são dois comandos normalmente utilizados ao fim de um programa. A linha “system(“PAUSE > null”)” é uma chamada de função própria de C++. A função system( ) recebe argumentos como o PAUSE que na verdade são comandos para o sistema operacional. Neste caso, ela recebe o comando “PAUSE > null” para pausar a execução do programa até que o usuário aperte uma tecla qualquer. Utilizamos este recurso para que a tela do programa não seja terminada automaticamente pelo sistema, impedindo que vejamos os resultados do programa. Finalmente, o comando “return 0” é a “resposta” da função main para o sistema. Quase toda função retorna um valor para o sistema ou programa que a chamou, por exemplo, uma função pode retornar o resultado de uma operação matemática executada por ela. No caso da função main, ela retorna um valor para o sistema operacional que executou o programa. Esse valor é interpretado pelo sistema como uma mensagem indicando se o programa foi executado corretamente ou não. Um valor de retorno 0 indica que o programa foi executado sem problemas; qualquer outro valor de retorno indica problemas. Quando o programa é executado até o fim, ele retorna 0 ao sistema operacional, indicando que ele foi executado e terminado corretamente. Quando o programa encontra algum erro ou é terminado antes da hora, ele retorna um valor qualquer ao sistema, indicando erro durante a execução. Por hoje é só galera, espero que gostem! ate mais :]
    1 ponto
  20. Alexclusive

    Resultado ADS #90

    http://www.xtibia.com/forum/topic/210598-sugestao-de-temas/
    1 ponto
  21. Introdução ao OOP (Object-Oriented Programming) "A orientação a objetos é um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos." Traduzindo, cada coisa que está presente em um programa é considerado um objeto. Exemplo disso são os jogos. Os personagens são objetos, podendo ser da classe NPC, Character, Monster... Mas o que é classe e objeto? - Definições Existem algumas definições essenciais para entender a orientação a objetos. As principais são classe, objeto, método e atributo. Classe: Podemos dizer que classes são grupos com características inicialmente iguais. Exemplo, na vida real, temos as classes "Humano", "Pássaro", "Inseto", etc. Cada classe tem seus membros, que são os objetos, suas características, que são os atributos, e suas ações, que são os métodos. Objeto: Cada membro das classes é chamado de objeto, por exemplo, na classe "Humano" existem os objetos eu, você, seu amigo, etc. Dá pra dizer que cada pessoa é um objeto da classe "Humano". Atributo: São as características da classe. Exemplo, na classe "Humano" temos algumas características como "Nome", "Altura" e "Idade", que variam de indivíduo para indivíduo, ou em programação, que variam de objeto para objeto. Método: São as ações que os objetos de uma classe podem realizar. Exemplo, objetos da classe "Humano" podem realizar ações como Beber, Comer, Correr. Em programação, cada ação dessa seria uma função ligada à classe, que é executada por um objeto. - OOP em Lua Lua, na verdade, não é uma linguagem orientada a objetos. Porém, possui uma biblioteca com artifícios que simulam isso, que são os meta-métodos e meta-tabelas. A principal função dessa biblioteca é a setmetatable. Ela transforma uma tabela normal em uma "tabela-objeto". - Criando classes: Para deixar mais claro, vamos criar uma tabela normal. Humano = {} OBS: Em orientação a objetos, sempre use Camel Case, que é deixar os nomes de classes e métodos iniciando com letra maiúscula. É só pra deixar o código mais bonito mesmo. Agora que criamos a tabela Humano, vamos colocar alguns atributos (características) nela: Humano = { nome = "", altura = 0, idade = 0, } Agora temos uma classe Humano com os atributos nome, altura e idade. Agora vamos criar um objeto dessa classe. Para isso, vamos criar uma função que transforma essa tabela em uma meta-tabela. Para isso, usamos a função setmetatable(table, metatable): function Humano:New(nome, altura, idade) local obj = {} obj.nome = nome obj.altura = altura obj.idade = idade return setmetatable(obj, {__index = self}) end Mas o que fiz ali? Simples. Peguei os parâmetros da função, coloquei dentro da tabela obj e depois criei uma meta-tabela. O que significa aquele self? Bom, o parâmetro self está implícito, então fica meio confuso. Você poderia fazer assim: function Humano.New(self, nome, altura, idade) No lugar de: function Humano:New(nome, altura, idade) Ou seja, aqueles : (dois pontos) são para não precisar declarar o self. O self serve para retornar o objeto da classe. Fazendo {__index = self}, você consegue acessar os atributos direto do objeto. Você entenderá isso um pouco mais pra frente. - Criando métodos: Vamos agora criar métodos, ou seja, o que os objetos da classe conseguem fazer, ou melhor, as funções que eles conseguem executar. Criaremos um método que faz a altura do objeto da classe Humano aumentar. Traduzindo, a pessoa cresce. function Humano:Grow(amount) amount = amount == nil and 1 or amount self.altura = self.altura+amount end O que fizemos ali? Primeiro, criamos um método ligado à classe Humano, chamado Grow (crescer em inglês). Depois, fizemos o seguinte para não dar erro: amount = amount == nil and 1 or amount. Ou seja, se o amount não for declarado, ele passa a valer 1. Depois, pegamos o atributo altura do objeto utilizando self.altura (lembra do self?) e acrescentamos o amount. Ou seja, se amount = 3, acrescentará 3 na altura do objeto. Simples, não? OBS: Métodos criados ligados à uma classe só podem ser executados por objetos dessa mesma classe! Se você tem um objeto da classe "Inseto", você não pode utilizar nele os métodos da classe "Humano". - Criando objetos Agora que você sabe criar classes e métodos, você pode criar objetos. É super simples, só fazer assim: hi = Humano:New("Manoel", 1.77, 16) Pronto, agora você tem um objeto na variável hi com o nome Manoel, altura de 1.77 e 16 anos. E como executar métodos nesse objeto? Simples também, veja: hi:Grow(0.34) No caso, o objeto da variável hi vai ter a altura aumentada em 0.34. E como modificar atributos do objeto sem precisar de funções? Outra coisa muito simples: hi.altura = 1.80 Isso fará a altura do objeto da variável hi ficar em 1.80. - Percepções Agora que você já sabe uma base de orientação a objetos, você perceberá que quando você usa uma função como string.lower(str), você está usando orientação a objetos, com um método da classe string. local a = "Batata" string.lower(a) é o mesmo que a:lower() Por que? Porque string é uma classe, lower é um método, e o método é string:lower(). Lembra do self implícito? - Final Bom galera, muito obrigado por lerem esse tutorial. Fiz ele dedicado ao meu amigo Manoel Neto. Utilizei como base os conhecimentos passados pelo meu mestre Oneshot. Quaisquer dúvidas e/ou sugestões, podem postar aqui no tópico. Proibido postar em qualquer outro fórum de Open Tibia brasileiro.
    1 ponto
  22. Zaruss

    Food

    claro manim aki local FOODS = { [2362] = {8, "Crunch."}, [2666] = {15, "Munch."}, [2667] = {12, "Munch."}, [2668] = {10, "Mmmm."}, [2669] = {17, "Munch."}, [2670] = {4, "Gulp."}, [2671] = {30, "Chomp."}, [2672] = {60, "Chomp."}, [2673] = {5, "Yum."}, [2674] = {6, "Yum."}, [2675] = {13, "Yum."}, [2676] = {8, "Yum."}, [2677] = {1, "Yum."}, [2678] = {18, "Slurp."}, [2679] = {1, "Yum."}, [2680] = {2, "Yum."}, [2681] = {9, "Yum."}, [2682] = {20, "Yum."}, [2683] = {17, "Munch."}, [2684] = {8, "Crunch."}, [2685] = {6, "Munch."}, [2686] = {9, "Crunch."}, [2687] = {2, "Crunch."}, [2688] = {9, "Munch."}, [2689] = {10, "Crunch."}, [2690] = {3, "Crunch."}, [2691] = {8, "Crunch."}, [2792] = {6, "Munch."}, [2793] = {9, "Munch."}, [2695] = {6, "Gulp."}, [2696] = {9, "Smack."}, [2787] = {9, "Munch."}, [2788] = {4, "Munch."}, [2789] = {22, "Munch."}, [2790] = {30, "Munch."}, [2791] = {30, "Munch."}, [2792] = {6, "Munch."}, [2794] = {3, "Munch."}, [2795] = {36, "Munch."}, [2796] = {5, "Munch."}, [2793] = {9, "Munch."}, [5097] = {4, "Yum."}, [6125] = {8, "Gulp."}, [6278] = {10, "Mmmm."}, [6279] = {15, "Mmmm."}, [6393] = {12, "Mmmm."}, [6394] = {15, "Mmmm."}, [6501] = {20, "Mmmm."}, [6541] = {6, "Gulp."}, [6542] = {6, "Gulp."}, [6543] = {6, "Gulp."}, [6544] = {6, "Gulp."}, [6545] = {6, "Gulp."}, [6569] = {1, "Mmmm."}, [6574] = {4, "Mmmm."}, [7158] = {15, "Munch."}, [7159] = {13, "Munch."}, [7372] = {7, "Yum."}, [7373] = {7, "Yum."}, [7374] = {7, "Yum."}, [7375] = {7, "Yum."}, [7376] = {7, "Yum."}, [7377] = {7, "Yum."}, [7909] = {4, "Crunch."}, [8838] = {7, "Gulp."}, [8839] = {5, "Yum."}, [8840] = {2, "Yum."}, [8841] = {3, "Urgh."}, [8842] = {3, "Munch."}, [8843] = {3, "Crunch."}, [8844] = {3, "Gulp."}, [8845] = {2, "Munch."}, [8847] = {11, "Yum."} } function onUse(cid, item, fromPosition, itemEx, toPosition) local food = FOODS[item.itemid] if(not food) then return false end if((getPlayerFood(cid) + food[1]) >= 400) then doPlayerSendCancel(cid, "You are full.") return true end doPlayerFeed(cid, food[1] * 4) doCreatureSay(cid, food[2], TALKTYPE_ORANGE_1) doRemoveItem(item.uid, 1) return true end edite aqui: [2667] = {12, "Munch."}, assim: [iDDOITEM] = {CORDOTEXTO, "PALAVRAQUANDOCOME."}, esse script ja tem no seu server e so ir em data/actions/scripts e procurar por food.lua (a maioria das vezes ta em other).
    1 ponto
  23. rDs7008

    Show Off - Spell Forge

    Vou te ajudar com as sílabas mágicas (Fonte: TibiaWiki): Grupo I - tipo de feitiço As sílabas desse grupo definem o tipo básico de feitiço. Elas são sempre as primeiras do encantamento. ad - runa Essa sílaba é usada no encantamento de runas . Magos concentram seu poder em uma runa em branco para complementá-la com mágica, para uso posterior al - casa Usada para influenciar nas propriedades de uma Casa. ex - instantânea/ação O uso dessa sílaba permita o uso imediato de magias, tanto ofensiva quanto de cura. ut - suporte Essa sílaba permite, por exemplo, que um mago fique invisível, conjure luz ou criaturas e até mesmo acelerar suas ações. Grupo II - função do feitiço As sílabas abaixo definem o efeito das magias. Durante a pronuncia, geralmente são usadas junto de uma sílaba do primeiro grupo, compondo uma palavra. Isso não é uma regra. amo - escudo/proteção Magos usam essa sílaba para ativar magias de proteção, permitindo que eles se defendam durante a batalha dos ataques. ana - cancelar/remover Essa sílaba é usada em magias para cancelar outras magias, uso de mortos vivos ou retirar efeitos negativos. ani - movimento Magias que incluem esse sílaba são capazes de paralizar criaturas hostis ou acelerar o próprio usuário. eta - mudança Essa sílaba é usada em magias que causam mudanças na realidade. A maior parte dos feitiços relacionados às Casas utiliza essa sílaba. evo - criar/conjurar Magias com essa sílaba podem ser muito poderosas e são muito utilizadas. Ela permite criar muitas magias com efeitos visíveis, desde a criação de luz à poderosas explosões. ito - destruir Essa sílaba permite o uso de magias para desistegrar obstáculos ou outras magias. iva - localizar Raramente usada, é uma sílaba necessária na única magia capaz de encontrar outrar pessoas. ori - ataque Esta é uma das sílabas mais poderosas. É usada na maioria das magias ofensivos pelos verdadeiros mestres da magia ura - cura Essa sílaba é muito usada em magias nos campos de batalha tibianos e caçadas junto com os feitiços ofensivos. Ela permite o usuário regenerar suas feridas. Grupo III - atributos do feitiço Este é o grupo de sílabas mágicas complementares. Elas definem a potência das magias e seus efeitos detalhados. con - projétil Apenas para projéteis, como flechas e bolts. Você pode conjurá-los com auxílio dessa sílaba. flam - fogo Esse sílaba utiliza o fogo para atacar os seus inimigos. gran - maior/grande Magos utilizam essa sílaba para amplificar suas magias. min - menor/menos Até um mago habilidoso teve que começar das magias mais fracas. grav - campo Esta sílaba permite que magias causem efeitos no chão e no terreno à sua volta. hur - aumento/expansão Seu uso permite o aumento do poder de uma magia. Por exemplo temos as ondas de ataque que expandem seu tamanho, e o aumento de velocidade, entre outras coisas. ina - ilusão Esta sílaba lhe permite imitar objetos, criaturas ou assustar alguns Newbies apenas por diversão. lux - luz Iluminação é muito importante enquanto você explora cavernas desconhecidas ou apenas para não ser roubado à noite. Ela também pode ajudar na matança de monstros. mas - multiplicar Essa sílaba permite o ataque à múltiplos inimigos de uma vez. mort - físico/trevas Magos utilizam essa sílaba em magias que causam impacto físico e, às vezes, em magias mortais. pan - comida Esta sílaba ajuda a conjurar comida para regenerar vida e mana após as batalhas. pox - veneno Sílaba usada na eficaz magia para acabar acabar com o envenenamento. res - criatura Esse sílaba está presente nas magias para convencer criaturas à lutarem com você ou simplesmente para invocá-las. sio - alvo Sílaba que especifica quem ou o que vai ser o alvo da magia. som - sub-dono Sílaba especialmente usada pra designar sub-donos para as Casas. tera - terra A Mãe Natureza pode ajudá-lo a escapar de emboscadas, ou a criar destruições em massa contra diversas criaturas. vid - visibilidade Você pode se esconder de inimigos ou monstro durante suas caçadas com ajuda dessa sílaba. vis - energia Energia pura é de difícil controle, porém magos experientes podem causar o caos durante as batalhas com ela. vita - corpo/vita Vida é essencial. Você pode protegê-la, restaurá-la ou destruí-la. frigo - gelo/frio O frio pode ser uma poderosa arma dos Druidas para derrotar criaturas. san - divino/sagrado San, de Sanctus ou Sanus, em latim. Significa luz, sagrado. Atributo perfeito para acabar com qualquer morto vivo. Grupo IV - complementos Alguns feitiços precisam de um complemento para que aconteça o efeito desejado ex ani hur - up/down Usado para levitar (subir/descer um andar) ex ura sio - alvo Usado para especificar a pessoa que será beneficiada pela cura da magia. ex iva - alvo Usado para especificar a pessoa que será localizada ao usar a magia.
    1 ponto
  24. Vá até o seu arquivo.php onde esta seu script(personagems) Copie Esse Script VV e cole no lugar do que está lá. Se Nao Funcionar Me Avise <?php /* Copyright (C) 2007 - 2008 Nicaw This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ include ("include.inc.php"); $ptitle="Home - $cfg[server_name]"; include ("header.inc.php"); ?> <div id="content"> <div class="top">Personagens</div> <div class="mid"> <div id="vt_content"> <center> <font color="red" size="5" face="arial black">Personagens</font> </center> <BR><p align="left"><a href="http://uploaddeimage....png?1381582399" title="Goku">Goku</a> >>Luva (strenght) <BR><a href="http://uploaddeimage....png?1381584744" title="Gohan" target="_blank">Gohan</a> >>Luva (strenght) <BR><a href="http://uploaddeimage....png?1381585169" title="Goten" target="_blank">Goten</a> >>Luva (strenght) <BR><a href="http://uploaddeimage....png?1381582533" title="Vegeta" target="_blank">Vegeta</a> >>Luva (strenght) <BR><a href="http://uploaddeimage....png?1381586805" title="Trunks" target="_blank">Trunks</a> >>Espada (sword) <BR><a href="http://uploaddeimage....png?1381584730" title="Chibi Trunks" target="_blank">Chibi Trunks</a> >>Luva&Espada <BR><a href="http://uploaddeimage....png?1381584444" title="Freeza" target="_blank">Freeza</a> >>Luva (strenght) <BR><a href="http://uploaddeimage....png?1381583498" title="Cell" target="_blank">Cell</a> >>Ki blasting <BR><a href="http://uploaddeimage....png?1381583165" title="Buu" target="_blank">Buu</a> >>Luva&Ki blasting <BR><a href="http://uploaddeimage....png?1381583274" title="C17" target="_blank">C17</a> >>Luva (strenght) <BR><a href="http://uploaddeimage....png?1381583394" title="C18" target="_blank">C18</a> >>Luva (strenght) <BR><a href="http://uploaddeimage....png?1381586499" title="Piccolo" target="_blank">Piccolo</a> >>Ki blasting <BR><a href="http://uploaddeimage....png?1381586873" title="Tsuful" target="_blank">Tsuful</a> >>Weapon&Luva <BR><a href="http://uploaddeimage....png?1381582992" title="Brolly" target="_blank">Brolly</a> >>Luva&Ki blasting <BR><a href="http://uploaddeimage....png?1381584153" title="Coller" target="_blank">Coller</a> >>Luva (strenght) <BR><a href="http://uploaddeimage....png?1381584335" title="Dende" target="_blank">Dende</a> >>Ki blasting <BR><a href="http://uploaddeimage....png?1381586936" title="Uub" target="_blank">Uub</a> >>Todas <BR><a href="http://uploaddeimage....png?1381582868" title="Bardock" target="_blank">Bardock</a> >>Glove&Ki blasting <BR><a href="http://uploaddeimage....png?1381586783" title="Bardock" target="_blank">tenshin</a> >>Glove </div> </div> <div class="bot"></div> </div> <?php include ("footer.inc.php");?>
    1 ponto
  25. ScythePhantom

    Como editar uma magia

    Tente essa: function onCastSpell(cid, var) if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, "You can only summon one creature.") return false end local summon, useCreateMonster = 0, false if type(doSummonMonster) then summon = doSummonMonster(cid, "NOME DA CRIATURA") if summon == 3 then doPlayerSendCancel(cid, "There is not enough room to summon a creature.") return false end summon = getCreatureSummons(cid) summon = summon[#summon] if isCreature(summon) and getCreatureMaster(summon) == cid then doSendMagicEffect(getThingPos(summon), CONST_ME_MAGIC_BLUE) return true else useCreateMonster = true end else useCreateMonster = true end if useCreateMonster then local pos = getThingPos(cid) pos.y = pos.y + 1 summon = doCreateMonster("NOME DA CRIATURA", pos, false) if summon == true then doPlayerSendCancel(cid, "There is not enough room to summon a creature.") return false end end if not isCreature(summon) then return false end doConvinceCreature(cid, summon) if getCreatureMaster(summon) ~= cid then doRemoveCreature(summon) return false end doSendMagicEffect(getThingPos(summon), CONST_ME_MAGIC_BLUE) return true end
    1 ponto
  26. Alexclusive

    Galeria (Wesleyt10)

    So sprite da hora por aqui!! Parables Wesley!
    1 ponto
  27. Dj Sky

    Dj Sky Sprites

    To entrando no mundo das sprites, para tentar ser completo na area do Design. Minha primeira sword. Eagle Ruby Sword, espada usada pelos altos monarcas apenas para batismo dos mais bravos cavaleiros. Adornada com rubys e esmeraldas em sua bainha, esta espada feita de ouro puro, possui uma lamina rara feita dos fragmentos da armadura de Toren, o venerado Deus do continente.
    1 ponto
  28. Alexclusive

    Dj Sky Sprites

    Bonita a sword!! E a segunda, Cade? Rs
    1 ponto
  29. era so usar esse codigo do topico, porem ja foi resolvido, reportando para moverem, sempre que tiver uma duvida resolvida reporte para que o topico seja movido e sempre que tiver uma duvida olhe na area de duvidas atendidas ou use a barra de pesquisa rapida do forum, e antes de mais nada procure pra ver se ja nao tem a solução pro seu problema!
    1 ponto
  30. Eu fiz o buero de Saffron vejam como ficou =D Comente. @edit bem ja que o gabriel nao posta eu vou colocar, ai esta Cerulean =D comentem ai por favor =D
    1 ponto
  31. Entendo, já tive arris tb, mas pedi para mudar.. Bem, você deve criar um virtual server (no painel do roteador). Eu vi diversos tutoriais na internet, verifique que será muito útil! É normal voce nao conseguir conectar com seu próprio IP. Mas os de fora conseguem.
    1 ponto
  32. HeelNox

    [Encerrado]Fairy Tail Online - FTO

    Concerteza com Frenvius na equipe esse projeto vai a frente ! Boa sorte para vocês =]
    1 ponto
  33. Nu77

    For, addEvent, *i

    900 + (50*i) tenta isso...
    1 ponto
  34. RodriigoRobson

    [Encerrado] Qual Base?

    O serv Pokemon Online do Smix :http://www.4shared.com/rar/GvzHJpQ9/pokemon_online.html? Contem Sources Acho que ele deletou o link do download mais mais como eu guardo ots de pokemons antigos no meu Hd resolvi uploda fonte: http://www.xtibia.com/forum/topic/206244-pokemon-online-po/
    1 ponto
  35. Fiz um pacote...rs Avatar: Assinatura1: Assinatura2: Abraços
    1 ponto
  36. Killua

    ressucite boss

    Se nome do monstro for Orshabaal inv vai funcionar. Mas se lembre que tem que diferenciar letras Maiusculas de minusculas.
    1 ponto
  37. masdead

    Erro Remere's

    Não é erro que atrapalhe só está perguntando se você quer importar os monstros/npcs do seu server.
    1 ponto
  38. Tem uma base pra isso De [monster do time 1 vs monster do Time 2] poem isso No Monstro . xml
    1 ponto
  39. É possível sim, principalmente fazendo alterações nas sources. Se tomarmos como exemplo, League of Legends, onde existem dois times, podemos fazer alterações para que monstros do Time 1, enxerguem como inimigos apenas monstros e "heróis" do Time 2. Inclusive a partir de revisões mais recentes do The Forgotten Server, foi incluida uma ótima função, doSteerCreature(cid, position), que traz a possibilidade de deslocar criaturas de um ponto até outro, como se elas andassem mesmo, não por teleporte instantâneo.
    1 ponto
  40. Sistema Novo !!! Estou desenvolvendo um sistema novo que já existe no tibia.com, é o sistema de transferência de scrolls.. Só que em nosso caso, transferência de premium points. Uma previa das imagens para vocês verem o sistema!!! Breve nos próximos updates. Breve... Aguardem!
    1 ponto
  41. Solucione esses erros executando o banco de dados que tem em meu topico, vi que este website é de minha autoriedade. Todos os bugs aparentes são em banco de dados. Execute o banco de dados que tem em meu topico e veja se os problemas sao solucionados, caso contrario poste mais screen shots, isto ajuda muito.
    1 ponto
  42. Nu77

    New SUJA'SHOW OFF

    Como ultimamente estou ocupado, eu vou postar umas outlines que eu fiz e provavelmente depois eu termine xD metal greymon: Cenario:
    1 ponto
  43. Iemba

    Seu último mapa - your last map

    ---Voltando ao mundo de mapas!---
    1 ponto
  44. Tonynh

    Edição de banner,

    Nakamura, mesclei seus dois tópicos, por favor criar um tópico por vez...
    1 ponto
  45. Omega

    Comando /ban

    Bom, tava testando uma coisa e lembrei que não tinha mais comando /ban para players em OTs 8.6. Então resolvi tentar fazer o meu próprio. Eis o resultado: Como funciona: Opções:Você pode usar !ban playername para banir sem registrar o motivo e por tempo indeterminado Você pode usar !ban playername,dias para banir sem registrar o motivo, mas por um número determinado de dias Você pode usar !ban playername,motivo para banir por tempo indeterminado, mas registrando um motivo Você pode usar !ban playername,dias,motivo para banir por tempo e motivo determinados Quando o jogador banido tentar entrar, ele será teletransportado para o tempo, não poderá se mexer nem falar e receberá a seguinte mensagem: 'Voce esta banido e sera kickado em 5 segundos.' --> isso se não houver motivo registrado 'Voce foi banido por -motivo- e sera kickado em 5 segundos.' --> se houver motivo registrado Independente da opção, o jogador é kickado e ocorre o descrito acima quando ele tenta se conectar nas 5 primeiras vezes. Depois ele não poderá mais se conectar ao servidor com ele personagem. Você só pode banir players online Você pode desbanir qualquer jogador com !unban playername (online ou offline) Instalando: 1 - Crie um arquivo na pasta lib com extensão .lua e adicione: 2 - Em seguida, vá em talkactions.xml e adicione <talkaction log="yes" access="4" words="!ban;!unban" event="script" value="ban.lua"/> Obs.: O !ban;!unban no lugar de /ban se deve ao fato de muitos servidores apresentarem o comando /unban 3 - Agora, adicione esse script na sua pasta talkactions/scripts com o nome de ban.lua 4 - Agora adicione essa tag em creaturescripts.xml <event type="login" name="Ban" event="script" value="banned.lua"/> 5 - Finalmente, esse código em um arquivo dentro de creaturescripts/scripts com o nome de banned.lua Fiz vários testes aqui e me parece que está tudo certo, mas recomendo testar com um jogador de teste antes em usar em jogadores reais. Por mais óbvio que pareça, espero comentários/dúvidas ou sugestões sobre o código.
    1 ponto
  46. Caso já esteja jogando em seu mapa, pule esta parte inicial! Bom, primeiramente, salve o seu mapa na pasta world de qualquer servidor, recomendo o TFS. Feito isso, baixe o sqlite browser. Pegue coordenadas jogáveis do seu mapa (x, y, z) e guarde-as por um momento. Em seguida, abra o sqlite browser e abra o arquivo de database do seu servidor (formato .s3db). Antes disso tenha certeza que já existe algum char criado pelo Account Manager com o mapa antigo próprio do servidor. Após isso, vamos em browse data e na table procuramos por Players. Procuramos aí por posx, posy e posz, estas são as que você tem que editar (dê dois cliques) pelas que pegou de seu mapa. Lembre-se que quando acabar salve. Enquanto estiver fazendo isso, certifique-se que o servidor não esteja sendo executado. Tudo pronto, agora abra o servidor e execute o Tibia. - Tibia aberto, vá em Options, Graphics, Advanced e marque Don't Stretch/Shrink Game Window. Arrume o ambient light também para 25%. Dê ok e logue. Em seguida, tire a foto pelo Print Screen de seu teclado e cole-a no paint. Recorte-a do modo que quiser. Veja como ficará: Para dar upload na foto, recomendo o site ImgLand. Atenciosamente, Beto.
    1 ponto
  47. BrunowOts

    CipSoft Mapa 7,6

    já era
    1 ponto
  48. Oneshot

    Trade NPC Creator

    Trade NPC Creator Este é um executável simples, criado por mim, que gera XMLs de NPCs feitos para vender ou comprar itens. Todas as instruções de uso estão no arquivo readme.txt da pasta do programa. trade npc creator.tar.gz
    1 ponto
  49. Oneshot

    Mass kill

    function onSay(cid, words, param, channel) for _, player in ipairs(getPlayersOnline()) do doAreaCombatHealth(cid, COMBAT_PHYSICALDAMAGE, getThingPosition(player), 0, -getCreatureMaxHealth(player), -getCreatureMaxHealth(player), CONST_ME_MORTAREA) end return true end GODs, CMs, GMs não morrem, pois possuem flag de imortalidade. Mas, na boa, não crie tópicos para chamar atenção, não, beleza? Abraços.
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...