Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 07/23/15 em %

  1. Vodkart

    BattleField TFS 1.1+

    Informações: Repassei esse sistema: http://www.xtibia.com/forum/topic/192920-battlefield-event/page-1 para a nova versão Versão: TFS 1.1 ou SUPERIOR(NÃO FUNCIONA NO TFS 1.0) OBS: Favor ter noções básicas de como instalar o sistema no seu server. Instalando o Sistema: data\creaturescripts\scripts battlefield.lua function onLogin(player) player:registerEvent("battledeath") if Game.getStorageValue(_Lib_Battle_Info.TeamOne.storage) == -1 then Game.setStorageValue(_Lib_Battle_Info.TeamOne.storage, 0) Game.setStorageValue(_Lib_Battle_Info.TeamTwo.storage, 0) Game.setStorageValue(_Lib_Battle_Info.storage_count, 0) end if player:getStorageValue(_Lib_Battle_Info.TeamOne.storage) >= 1 or player:getStorageValue(_Lib_Battle_Info.TeamTwo.storage) >= 1 then player:setStorageValue(_Lib_Battle_Info.TeamOne.storage, -1) player:setStorageValue(_Lib_Battle_Info.TeamTwo.storage, -1) player:teleportTo(player:getTown():getTemplePosition()) end return true end function onPrepareDeath(creature, lastHitKiller, mostDamageKiller) if creature:isPlayer() and creature:getStorageValue(_Lib_Battle_Info.TeamOne.storage) >= 1 or creature:getStorageValue(_Lib_Battle_Info.TeamTwo.storage) >= 1 then local MyTeam = creature:getStorageValue(_Lib_Battle_Info.TeamOne.storage) >= 1 and _Lib_Battle_Info.TeamOne.storage or _Lib_Battle_Info.TeamTwo.storage local EnemyTeam = creature:getStorageValue(_Lib_Battle_Info.TeamOne.storage) >= 1 and _Lib_Battle_Info.TeamTwo.storage or _Lib_Battle_Info.TeamOne.storage Game.setStorageValue(MyTeam, (Game.getStorageValue(MyTeam)-1)) creature:sendTextMessage(MESSAGE_INFO_DESCR, "[Battle Field] You Are Dead!") creature:setStorageValue(MyTeam, -1) creature:removeCondition(CONDITION_OUTFIT) if Game.getStorageValue(MyTeam) == 0 then getWinnersBattle(EnemyTeam) else doBroadCastBattle(23,"[BattleField Information] ".._Lib_Battle_Info.TeamOne.name.." "..Game.getStorageValue(_Lib_Battle_Info.TeamOne.storage).." VS "..Game.getStorageValue(_Lib_Battle_Info.TeamTwo.storage).." " .._Lib_Battle_Info.TeamTwo.name) end end return true end creaturescript.xml <event type="login" name="battleflogin" script="battlefield.lua"/> <event type="preparedeath" name="battledeath" script="battlefield.lua"/> -------------------------------------------//------------------------------------------------- data\events\scripts abra o arquivo creature.lua e troque: function Creature:onTargetCombat(target) return true end por function Creature:onTargetCombat(target) if not self then return true end if self:isPlayer() and target:isPlayer() then if self:getStorageValue(_Lib_Battle_Info.TeamOne.storage) >= 1 and target:getStorageValue(_Lib_Battle_Info.TeamOne.storage) >= 1 or self:getStorageValue(_Lib_Battle_Info.TeamTwo.storage) >= 1 and target:getStorageValue(_Lib_Battle_Info.TeamTwo.storage) >= 1 then return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER end end return true end events.xml Troque: <event class="Creature" method="onTargetCombat" enabled="0" /> por <event class="Creature" method="onTargetCombat" enabled="1" /> -------------------------------------------//------------------------------------------------- data\globalevents\scripts battlefieldstart.lua function onStartup() Game.setStorageValue(_Lib_Battle_Info.TeamOne.storage, 0) Game.setStorageValue(_Lib_Battle_Info.TeamTwo.storage, 0) Game.setStorageValue(_Lib_Battle_Info.storage_count, 0) return true end battlefieldthink.lua _Lib_Battle_Days = { ["Tuesday"] = { ["16:00"] = {players = 30}, ["15:32"] = {players = 2} }, ["Wednesday"] = { ["23:06"] = {players = 2} }, ["Thursday"] = { ["11:26"] = {players = 4}, ["20:30"] = {players = 10} } } function onThink(interval) if _Lib_Battle_Days[os.date("%A")] then hours = tostring(os.date("%X")):sub(1, 5) tb = _Lib_Battle_Days[os.date("%A")][hours] if tb and (tb.players % 2 == 0) then local tp = Game.createItem(1387, 1, _Lib_Battle_Info.tpPos) tp:setActionId(45000) CheckEvent(_Lib_Battle_Info.limit_Time) Game.setStorageValue(_Lib_Battle_Info.storage_count, tb.players) broadcastMessage("The event BattleField was opened and We are waiting "..tb.players.." Players! Team divided into "..((tb.players)/2).." VS "..((tb.players)/2)) end end return true end globalevents.xml <globalevent type="startup" name="NoBugBattle" script="battlefieldstart.lua"/> <globalevent interval="60000" name="BattleField" script="battlefieldthink.lua"/> -------------------------------------------//------------------------------------------------- data\lib\core battlefield.lua _Lib_Battle_Info = { Reward = { exp = {true, 100}, items = {true, 2160, 10}, premium_days = {false, 1} }, TeamOne = {name = "Black Assassins", storage = 140120, pos = {x=95,y=113,z=7}}, TeamTwo = {name = "Red Barbarians",storage = 140121,pos = {x=100,y=116,z=7}}, storage_count = 180400, tpPos = {x=92, y=116, z=7}, limit_Time = 2 -- em minutos } function resetBattle() Game.setStorageValue(_Lib_Battle_Info.TeamOne.storage, 0) Game.setStorageValue(_Lib_Battle_Info.TeamTwo.storage, 0) end function doBroadCastBattle(type, msg) for _, cid in pairs(Game.getPlayers()) do if Player(cid):getStorageValue(_Lib_Battle_Info.TeamOne.storage) == 1 or Player(cid):getStorageValue(_Lib_Battle_Info.TeamTwo.storage) == 1 then Player(cid):sendTextMessage(type, msg) end end end function getWinnersBattle(storage) local str, c = "" , 0 for _, cid in pairs(Game.getPlayers()) do local player = Player(cid) if player:getStorageValue(storage) >= 1 then if _Lib_Battle_Info.Reward.exp[1] == true then player:addExperience(_Lib_Battle_Info.Reward.exp[2]) end if _Lib_Battle_Info.Reward.items[1] == true then player:addItem(_Lib_Battle_Info.Reward.items[2], _Lib_Battle_Info.Reward.items[3]) end if _Lib_Battle_Info.Reward.premium_days[1] == true then player:addPremiumDays(_Lib_Battle_Info.Reward.premium_days[2]) end player:teleportTo(player:getTown():getTemplePosition()) player:setStorageValue(storage, -1) player:removeCondition(CONDITION_OUTFIT) c = c+1 end end str = str .. ""..c.." Player"..(c > 1 and "s" or "").." from team "..(Game.getStorageValue(_Lib_Battle_Info.TeamOne.storage) == 0 and _Lib_Battle_Info.TeamTwo.name or _Lib_Battle_Info.TeamOne.name).." won the event battlefield!" resetBattle() OpenWallBattle() return broadcastMessage(str) end function OpenWallBattle() local B = { {1543,{x=96, y=124, z=7, stackpos = 1}}, {1543,{x=95, y=124, z=7, stackpos = 1}} } for i = 1, #B do if getTileItemById(B[i][2], B[i][1]).uid == 0 then doCreateItem(B[i][1], 1, B[i][2]) else doRemoveItem(getThingfromPos(B[i][2]).uid,1) end end end function removeBattleTp() local t = getTileItemById(_Lib_Battle_Info.tpPos, 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(_Lib_Battle_Info.tpPos, CONST_ME_POFF) end function CheckEvent(delay) if delay > 0 and Game.getStorageValue(_Lib_Battle_Info.storage_count) > 0 then broadcastMessage("[BattleField Event] We are waiting "..Game.getStorageValue(_Lib_Battle_Info.storage_count).." players to Battlefield starts") elseif delay == 0 and Game.getStorageValue(_Lib_Battle_Info.storage_count) > 0 then for _, cid in pairs(Game.getPlayers()) do local player = Player(cid) if player:getStorageValue(_Lib_Battle_Info.TeamOne.storage) == 1 or player:getStorageValue(_Lib_Battle_Info.TeamTwo.storage) == 1 then player:teleportTo(player:getTown():getTemplePosition()) player:setStorageValue(_Lib_Battle_Info.TeamOne.storage, -1) player:setStorageValue(_Lib_Battle_Info.TeamTwo.storage, -1) player:removeCondition(CONDITION_OUTFIT) end end broadcastMessage("The event cannot be started because not had enough players.") Game.setStorageValue(_Lib_Battle_Info.storage_count, 0) resetBattle() removeBattleTp() end addEvent(CheckEvent, 60000, delay-1) end Na mesma pasta procure por data\lib\core.lua e adc essa linha: dofile('data/lib/core/battlefield.lua') -------------------------------------------//------------------------------------------------- data\movements\scripts battlefield.lua local conditionRed = Condition(CONDITION_OUTFIT) conditionRed:setTicks(120 * 60 * 1000) conditionRed:setOutfit({lookType = 143, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94}) local conditionBlack = Condition(CONDITION_OUTFIT) conditionBlack:setTicks(120 * 60 * 1000) conditionBlack:setOutfit({lookType = 134, lookHead = 114, lookBody = 114, lookLegs = 114, lookFeet = 114}) function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if player == nil then return false end if player:getGroup():getId() >= 3 then return player:teleportTo(_Lib_Battle_Info.TeamOne.pos) end if Game.getStorageValue(_Lib_Battle_Info.storage_count) > 0 then local getMyTeam = Game.getStorageValue(_Lib_Battle_Info.TeamOne.storage) < Game.getStorageValue(_Lib_Battle_Info.TeamTwo.storage) and {_Lib_Battle_Info.TeamOne.storage,_Lib_Battle_Info.TeamOne.pos,_Lib_Battle_Info.TeamOne.name,conditionBlack} or {_Lib_Battle_Info.TeamTwo.storage,_Lib_Battle_Info.TeamTwo.pos, _Lib_Battle_Info.TeamTwo.name, conditionRed} player:addCondition(getMyTeam[4]) player:setStorageValue(getMyTeam[1], 1) Game.setStorageValue(getMyTeam[1], Game.getStorageValue(getMyTeam[1])+1) player:teleportTo(getMyTeam[2]) player:sendTextMessage(MESSAGE_INFO_DESCR, "You will join the team " .. getMyTeam[3] .. "!") Game.setStorageValue(_Lib_Battle_Info.storage_count, Game.getStorageValue(_Lib_Battle_Info.storage_count)-1) end if Game.getStorageValue(_Lib_Battle_Info.storage_count) == 0 then removeBattleTp() broadcastMessage("Battlefield will start in 2 minutes, please create your strategy!") addEvent(broadcastMessage, 2*60*1000-500, "BattleField will begin now!") addEvent(OpenWallBattle, 2*60*1000) end return true end movements.xml <movevent event="StepIn" actionid="45000" script="battlefield.lua"/> -------------------------------------------//------------------------------------------------- Configurações do TIME: em data\lib\core\battlefield.lua tem essas linhas: _Lib_Battle_Info = { Reward = { exp = {true, 100}, items = {true, 2160, 10}, premium_days = {false, 1} }, TeamOne = {name = "Black Assassins", storage = 140120, pos = {x=95,y=113,z=7}}, TeamTwo = {name = "Red Barbarians",storage = 140121,pos = {x=100,y=116,z=7}}, storage_count = 180400, tpPos = {x=92, y=116, z=7}, limit_Time = 10 -- em minutos } exp = {true,100} -- se vai receber exp ao ganhar evento? true ou false e quantidade items = {true, 2160, 10} -- se vai receber items ao ganhar o evento, true ou false e id, quantidade do item premium_days = {false, 1} -- se vai receber premium days ao ganhar o evento, true ou false e quantidade TeamOne = {name = "Black Assassins", storage = 140120, pos = {x=95,y=113,z=7}}, TeamTwo = {name = "Red Barbarians",storage = 140121,pos = {x=100,y=116,z=7}}, Name = nome do time Storage = Não mexa Pos = Onde cada time vai nascer storage_count = 180400 -- NÃO MEXAR tpPos = {x=92, y=116, z=7} -- Onde o teleporte irá aparecer ao iniciar o evento limit_Time = 10 -- É o tempo limite para os jogadores entrarem no teleport.(em minutos) Configurar Datas dos Eventos: Em data\globalevents\scripts\battlefieldthink.lua vai ter essa tabela: _Lib_Battle_Days = { ["Tuesday"] = { ["16:00"] = {players = 30}, ["15:32"] = {players = 2} }, ["Wednesday"] = { ["23:06"] = {players = 2} }, ["Thursday"] = { ["11:26"] = {players = 4}, ["20:30"] = {players = 10} } } ["DIA DA SEMANA"] = { ["HORARIO"] = {players = QUANTOS JOGADORES IRÃO PARTICIPAR} Regra: Sempre coloque números pares para os jogadores, do contrário o evento não irá iniciar.
    4 pontos
  2. Estarei disponibilizando ao fórum alguns arabescos e molduras que gosto bastante de usar, para trabalhos mais rústicos e profissionais. Espero que gostem! (Alguns arabescos não estão sem fundo, então terão que fazer isso no PhotoShop, bem simples, caso tenha duvidas de como tirar o fundo das imagens responda esse tópico que posso ajuda-los) http://imgur.com/Ld4zO3F,EwH70vv,yvfbSyM,JE3HKHc,KVzjdtQ,M8a1tqx,LsamgQr,Y1EL9Re,fDRo5yE,pHJo8y8,jCMc2Z3,E6lTjYx,mY4sCJ4
    2 pontos
  3. Não é simples assim, só alterar o tipo do campo. Primeiro porque muitos scripts ainda dependem do storage como um inteiro e isso ia quebrar muita coisa. Segundo que você teria que fazer muitas alterações na source pra mudar o tipo de inteiro (mais precisamente int32_t) pra string. Se você sabe o que está fazendo, vai fundo, se não, nem tente porque vai dar muito trabalho. O que você pode fazer e eu recomendo fortemente é um mapa de valores possíveis do storage pro que você vai salvar. Tenho um script, por exemplo, que recebe o idioma do player configurado no OTClient e salva como um storage da seguinte forma: local languages = { ["en"] = 0, ["br"] = 1, (...) } function ...(...) (...) player:setStorageValue(storage, languages[buffer]) end Onde storage é uma chave qualquer e buffer é o idioma do player (en, br, de, etc). Faz algo nesse estilo, eu realmente não consigo pensar em nada que seja realmente muito dinâmico e não dê de mapear dessa forma.
    2 pontos
  4. Perdão, erros da matina hudshudsuhdshuds Try now: local config = { velocidade = 350, -- intervalo entre os giros (quanto menor, mais rapido) hits = 24, -- quantos hits vai dar msg = "Frozen Orb", -- msg ao soltar a spell storage = {99998}, key = 13871, -- storage que sera utilizado pro cooldown cooldown = 3, -- tempo em segundos de cooldown entre um uso da spell e outro. effect1 = 36, -- efeito de distancia que vai ficar rodando effect3 = 37, -- efeito ao castar a spell effect4 = 43 -- efeito ao acertar a roda no player } --[[Note que a velocidade multiplicada pelo numero de hits deve dar algo proximo de 8550 pra que a magia nao fique ruim ou um efeito acabe antes do outro. Nos valores que eu utilizei eles dao 8400, oque ja eh considerado perto pois temos 200 milisegundos iniciais, 8550 eh o tempo que o item sera removido e coincide com o tempo de duracao do efeito 56 (config.effect2)]] local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 255) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) function onTargetCreature(cid, target) doSendMagicEffect(getCreaturePosition(target), config.effect4) end setCombatCallback(combat, 4, "onTargetCreature") local arr = { {1, 1, 1}, {1, 3, 1}, -- area que vai acertar a spell enquanto estiver rodando {1, 1, 1}, } local area = createCombatArea(arr) setCombatArea(combat, area) function initEffect(position) for i = 0, 3 do local pos = {x = position.x, y = position.y, z = position.z} local dir = getPosByDir(pos, i) doSendDistanceShoot(position, dir, config.effect1) end return true end function middleEffect(uid, param, lim, count) n = count or 0 if isCreature(uid) and n < lim then for i = 0, 3 do local pos = {x = getCreaturePosition(uid).x, y = getCreaturePosition(uid).y, z = getCreaturePosition(uid).z} local pos2 = {x = getCreaturePosition(uid).x, y = getCreaturePosition(uid).y, z = getCreaturePosition(uid).z} local dir = getPosByDir(pos, i) local dir2 = getPosByDir(pos2, i + 1 <= 3 and i + 1 or 0) doSendDistanceShoot(dir, dir2, config.effect1) end doCombat(uid, combat, { pos = getCreaturePosition(uid), type = 2 }) addEvent(middleEffect, config.velocidade, uid, param, lim, n + 1) end return true end function endEffect(uid) if isCreature(uid) then for i = 0, 3 do local pos = {x = getCreaturePosition(uid).x, y = getCreaturePosition(uid).y, z = getCreaturePosition(uid).z} local dir = getPosByDir(pos, i) doSendDistanceShoot(dir, getCreaturePosition(uid), config.effect1) end end return true end function onCastSpell(cid, var) if getPlayerStorageValue(cid, config.storage[1]) >= 1 then setPlayerStorageValue(cid, config.key, os.time() + config.cooldown) local position = getCreaturePosition(cid) doCreatureSay(cid, config.msg, 20) addEvent(endEffect, 8.55 * 1000, uid) doSendMagicEffect(position, config.effect3) initEffect(position) addEvent(middleEffect, 200, cid, var, config.hits) else doPlayerSendCancel(cid, "Desculpe,Você tem que comprar a permissao para usar está magia.") end return true end
    2 pontos
  5. @Edit, vamos lá, leia com atenção a explicação! Em data/actions/scripts crie um arquivo com o nome de frozenorb.lua e adicione: function onUse(cid, item, frompos, item2, topos) spellName = "SUA SPELL" -- Nome da spell if getPlayerStorageValue(cid, 99998) <= 0 then setPlayerStorageValue(cid, 99998, 1) doPlayerSendTextMessage(cid, 20, "You received permission to use the ".. spellName ..".") else doPlayerSendTextMessage(cid, 20, "You already have permission to use the ".. spellName .." spell.") end return TRUE end Em data/actions/actions.xml adicione: <action actionid="SUA ACTION" event="script" value="frozenorb.lua"/> A Spell ficará assim: local config = { velocidade = 350, -- intervalo entre os giros (quanto menor, mais rapido) hits = 24, -- quantos hits vai dar msg = "Frozen Orb", -- msg ao soltar a spell storage = {99998}, key = 13871, -- storage que sera utilizado pro cooldown cooldown = 3, -- tempo em segundos de cooldown entre um uso da spell e outro. effect1 = 36, -- efeito de distancia que vai ficar rodando effect3 = 37, -- efeito ao castar a spell effect4 = 43 -- efeito ao acertar a roda no player } --[[Note que a velocidade multiplicada pelo numero de hits deve dar algo proximo de 8550 pra que a magia nao fique ruim ou um efeito acabe antes do outro. Nos valores que eu utilizei eles dao 8400, oque ja eh considerado perto pois temos 200 milisegundos iniciais, 8550 eh o tempo que o item sera removido e coincide com o tempo de duracao do efeito 56 (config.effect2)]] local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 255) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) function onTargetCreature(cid, target) doSendMagicEffect(getCreaturePosition(target), config.effect4) end setCombatCallback(combat, 4, "onTargetCreature") local arr = { {1, 1, 1}, {1, 3, 1}, -- area que vai acertar a spell enquanto estiver rodando {1, 1, 1}, } local area = createCombatArea(arr) setCombatArea(combat, area) function initEffect(position) for i = 0, 3 do local pos = {x = position.x, y = position.y, z = position.z} local dir = getPosByDir(pos, i) doSendDistanceShoot(position, dir, config.effect1) end return true end function middleEffect(uid, param, lim, count) n = count or 0 if isCreature(uid) and n < lim then for i = 0, 3 do local pos = {x = getCreaturePosition(uid).x, y = getCreaturePosition(uid).y, z = getCreaturePosition(uid).z} local pos2 = {x = getCreaturePosition(uid).x, y = getCreaturePosition(uid).y, z = getCreaturePosition(uid).z} local dir = getPosByDir(pos, i) local dir2 = getPosByDir(pos2, i + 1 <= 3 and i + 1 or 0) doSendDistanceShoot(dir, dir2, config.effect1) end doCombat(uid, combat, { pos = getCreaturePosition(uid), type = 2 }) addEvent(middleEffect, config.velocidade, uid, param, lim, n + 1) end return true end function endEffect(uid) if isCreature(uid) then for i = 0, 3 do local pos = {x = getCreaturePosition(uid).x, y = getCreaturePosition(uid).y, z = getCreaturePosition(uid).z} local dir = getPosByDir(pos, i) doSendDistanceShoot(dir, getCreaturePosition(uid), config.effect1) end end return true end function onCastSpell(cid, var) if getPlayerStorageValue(cid, config.storage[1]) >= 1 then setPlayerStorageValue(cid, config.key, os.time() + config.cooldown) local position = getCreaturePosition(cid) doCreatureSay(cid, config.msg, 20) addEvent(endEffect, 8.55 * 1000, uid) doSendMagicEffect(position, config.effect3) initEffect(position) addEvent(middleEffect, 200, cid, var, config.hits) else doPlayerSendCancel(cid, "Desculpe,Você tem que comprar a permissao para usar está magia.") end return true end ATENÇÃO: no frozenorb.lua note que há: spellName = "SUA SPELL" -- Nome da spell Onde está SUA SPELL, você procura a spell no spells.xml e veja o nome dela em: <instant name="AQUI VAI ESTAR O NOME DELA". Agora na linha do actions.xml em "SUA ACTION" é a ACTIONID que você colocará no baú que o player irá dar use (pelo remeres). A Spell, basta edita-la conforme postei. Conforme pedido, EXPLICAÇÃO: O Que foi alterado? No local da spell foi acionado o storage = {99998}, Este local foi feito para que quando o player executar a ação (soltar a spell) haverá uma função buscando o storage para checar se o player possui a mesma ou não. A função que irá verificar foi adicionada, é á: if getPlayerStorageValue(cid, config.storage) >= 1 then Caso o player não tenha a storage irá retornar com a função adicionada: doPlayerSendCancel(cid, "Sorry, you have to buy permission to use this.") No seu caso eu adicionei a storage em local, pois não havia, mas caso for fazer em outra é houver já o storage, você irá acrescentar a storage na local/variavel e na hora de fazer o check storage você irá identifica-las na storage como: storage[1], storage[2], storage[3] e assim sucessivamente... E então na hora de verificar você irá fazer o check normal, setando a creature com cid e irá identificar como [1], ficando assim: cid, storage[1] cid, storage[2] cid, storage[3] Bom, é isso aí, teste ai e tente fazer a próxima. Desculpe pelo português ou qualquer erro, são 06h da manhã minha cabeça não funciona perfeitamente dshuhusdhusduhsd. Obrigado, abraços. Obs: Havia postado a spell do outro, como disse são 06hrs dbhsshduhuds, postei a sua, normalizado.
    2 pontos
  6. Masterlokinhon

    Stream Live tfs 1.0 e 1.2

    elli é possível sim só entender um pouco dos script do tibia eu mostro oque você tem que mudar Você tem que mudar as funções que estão em vermelho para funcionar algumas pode ser ate compatível com 0.4 tipo getThingfromPos
    2 pontos
  7. xSONYx

    [TUTORIAL] Transparência

    Transparência Eae galera, vim aqui pra ensinar vocês a usar a transparência no tibia, vamos começar. Primeiro você tem que ter uma versão de 0.6.5 ou superior do otclient e habilitar a feature. Para habilitar a feature você vai em game_things depois em game_things.lua e adicione isto em baixo de function load() g_game.enableFeature(GameSpritesAlphaChannel) Agora você tem que usar o Object Builder(versão 0.3.4), abra o object builder, abra seu spr/dat e bota em compile as e ative a opção transparency. Pronto, seu cliente e o server já estão aptos a receber a transparência. Agora a parte mais complicadinha, como montar a sprite com transparência para adicionar no client. Abra sua sprite no photoshop, delete todos os pixels de fundo(geralmente é rosa), deixe somente os que a sprite usa. Agora vá em opacidade e diminua para o desejado. Agora preste bem atenção, salve a imagem no formato PNG, pois ele aceita alfa. Depois vá no Object Builder, clique para abrir spr/dat, selecione a opção transparency(senão não vai reconhecer seu dat/spr), vá na sprite desejada e a adicione. Agora compile, também com a opção transparency ativada. Testei com uma outfit qualquer, resultado final: Créditos xSONYx EdMignari Baxnie
    1 ponto
  8. E ai galerinha, estou afastado do Tibia após o encerramento das atividades na "chaitosoft" porém nestas férias estou com um projeto de OTServer 8.60 e me deparei com alguns pequenos problemas básicos referentes a revisão 3777 do executável theforgottenserver . Isto consequentemente fez com que fosse necessário efetuar pequenas correção de alguns "maus funcionamentos", lembrando que estes são alguns dos poucos erros que encontrei e estarei atualizando esta source sempre que possível além de estar aberto a sugestões para adição de alguma funcionalidade ou correção. Alterações Efetuadas Não irei descrever muito sobre o que foi feito pois pessoas poderão se utilizar disso para trapacear nos servidores. - Problema: Estouro de memória (house.cpp); - Problema: Estouro de memória (mailbox.cpp); - Função: Sistema de Cast / Live; - Edição: Remoção de "Salt" ao criar contas (permite usar simultaneamente ACC MANAGER & SITE; - Problema: Estouro de memória (game.cpp); - Edição: Sincronia entre CAST ~ ACC MANAGER; - Edição: Aceitar todas as versões de "items.otb"; - Problema: Compilação em Ubunto 12.04 - 64x bits; Sistema Operacional Recomendado Ubunto versões menores ou igual ao 12.04 com arquitetura 64x bits; Última Edição - 18/07/2015 (V.1.0); Sources - Utilize o link abaixo para efetuar o download: https://mega.co.nz/#!KgEgXAZR!4380dQWvcYjObWYSDCfvVvfghRooJ-UZ3BY8H0gdq6o Scan - Utilize o link abaixo para visualizar o scan: https://www.virustotal.com/pt/file/5c3f3ce63f9583b987690f796456a448c3d71f3ba06b247a5532cc1147be08a5/analysis/1437212639/ Créditos: Otland - (Disponibilizou as sources);
    1 ponto
  9. Opa pessoal do XTIBIA tudo bem, tava editando um Gesior para o meu servidor a um tempo mais o projeto acabo dando errado por problemas técnicos, e eu fiquei com meu gesior pronto porem sem utilidade então resolvi trazer para vocês OBSERVAÇÃO : esse gesior erá de um projeto meu, finalizei ele hoje quando peguei uma base que um amigo meu me passo para ajuda-lo, e acabei implementando alguns sistemas e funções, ESSE GESIOR FOI FEITO APARTIR DOS MEUS GOSTOS, ESTOU SOMENTE DISPONIBILIZANDO-O PARA VOCÊS, PORTANTO FIQUEM A VONTADE PARA EDITAR NOMES, IMAGENS, CORES. Bugs arrumados Compatibilidade TFS 0.3 TFS 0.3.8 TFS 0.4 Download em anexo DATABASE : http://www.mediafire.com/download/w3n1nnw0gtmc2k0/mudrock.sql GESIOR : http://www.mediafire.com/download/frfgq96jawas214/mudrockwebgesior.rar Créditos MudrocK Archez Aleh Hollister Matheus ( for top level )
    1 ponto
  10. delkawy

    [Show-off] Pokémon Oblivion

    Olá a todos, venho mostrar a vocês, o Layout do site para o servidor Pokémon Oblivion, e peço a vocês opiniões sobre tudo, de cor à conteúdos e funções. Conteúdos e Funções: • Notificações de nova notícia, que seus créditos foram depositados etc... • Shop. • Diversos tutoriais (Estou pensando se o jogador é que vai mandar, e antes de ser postado vai ser revisado pela a equipe e caso aprovado, será postado). • Gestão de clã ou guild, como queiram chamar. • Informação dos torneios. • Postagem de novidades ou notícias. • Upload de foto para os usuários. E mais que podem vim a ser colocadas. Pois bem, agora que vocês já sabem o que pretendo fazer, vamos ao layout. Live-preview, site logo abaixo. Criticas são sem bem vindas, entretanto, que sejam construtivas e que me ajude a melhorar. Bem, isso é tudo, obrigado desde já, Delkawy.
    1 ponto
  11. Omega

    Dotinha do XTibia

    Tirando a hegemonia do LoL aqui... quem joga aí?
    1 ponto
  12. Francisco Souza

    ~ FSouza Design

    Avatar Anchor Avatar Boy Blue Sign SOTW #5 LOGO de meu Tumblr LOGO do canal Alpha Century que está em desenvolvimento! Sign Girls Sing In LOL Todos os trabalhos apresentados a cima são de minha autoria e qualquer cópia será caracterizado crime! (Em alguns trabalhos utilizei a mesma Background porque ela é muito linda ) Até a próxima, estarei atualizando o tópico
    1 ponto
  13. Tópico movido para dúvidas / pedidos resolvidos.
    1 ponto
  14. Gabimanda

    System Anti Entrosa TFS 1.0

    Ooi, eu vou fazer pra vc so espera ums minutos
    1 ponto
  15. Olá, Posta o teu Banker.lua por favor... Abraço.
    1 ponto
  16. Editei o conteúdo, testa outra por gentileza. Abs.
    1 ponto
  17. Bruno

    BattleField TFS 1.1+

    @, Em nome da comunidade agradeço pelo conteúdo, muito obrigado Não só por este, mas por todos! Abraço!
    1 ponto
  18. Lumus

    BattleField TFS 1.1+

    Vdd dlç.. não tinha percebido isso... mudei o ID das walls ficou perfeito! funcionando sem erros.
    1 ponto
  19. Night Wolf

    Duvida de edição slot system

    ele tá com chances iguais pra todos os atributos: local l = choose('hp','mp','ml','cas','shield','dist') todos tem 1/6 de chance de entrar. Oque dá pra fazer é escrever mais de uma vez outros atributos pra dar prioridade maior pra eles: local l = choose('hp','mp','ml','cas','shield','dist', 'ml','cas','shield','dist') Dessa forma hp e mp ficam com 10% cada e os outros com 20% cada;
    1 ponto
  20. Bruno

    ~ FSouza Design

    Eu curti ambos os trabalhos, meus parabéns, você tem talento Abraço!
    1 ponto
  21. Bruno

    End Vip E Efeito Vip

    Olha man, eu editei o FimVip, testa ai... Sua outra dúvida eu não entendi. Vamos por parte, tentar resolver primeiro a proposta do tópico.
    1 ponto
  22. Vodkart

    BattleField TFS 1.1+

    isso é simples, você adiciona no MAPA EDITOR as parades, configura no script o ID delas e POS, quando começar o evento a função vai checar se tem realmente as paredes naquele lugar q vc configurou, caso não tiver, vai cria-las. vou fazer isso então, só vou adc uma storage igual eu fiz no map changer. qndo eu atualizar aviso
    1 ponto
  23. Mudrock

    [8.60] BAIAK SERIO ABRIU 24/07

    fico feliz que esteja usando meu projeto como seu WebSite, boa sorte ai com o servidor
    1 ponto
  24. cheveko

    vip hp e mp extra

    Ah tá, erro meu então, vou arrumar aqui, já sei o que é.. Edit: agora vai! kkkk
    1 ponto
  25. @, Vá em data/actions/actions.xml e adicione a seguinte tag: <action actionid="21137" event="script" value="prizeQuest.lua" />Agora em data/actions/scripts crie o arquivo prizeQuest.lua com o seguinte conteúdo: local config = { storage = 115900, -- storage da quest preco = 40000000, -- valor que ele precisa ter para quest (40kk neste caso) item = 9999, -- id do item qtd = 1, -- quantidade do item msgWin = 'Voce ganhou um Super Healing.', -- mensagem ao fazer a quest msgMoney = 'Voce precisa de 40kk para fazer essa quest.', -- mensagem se o player não tiver dinheiro suficiente msgDone = 'Esta Vazio . Vc Ja Fez A Quest.' -- mensagem caso ja fez a quest } function onUse(cid, item, frompos, item2, topos) local queststatus = getPlayerStorageValue(cid, config.storage) if queststatus <= 0 then if doPlayerRemoveMoney(cid, config.preco) then doPlayerSendTextMessage(cid, 22, config.msgWin) doPlayerAddItem(cid, config.item, config.qtd) setPlayerStorageValue(cid, config.storage, 1) return true else doPlayerSendTextMessage(cid, 22, config.msgMoney) return true end else doPlayerSendTextMessage(cid, 22, config.msgDone) end return true endAgora basta colocar a actionid 21137 no baú (ou se já estiver sendo usada, basta alterar na tag e adicionar no baú).
    1 ponto
  26. Bruno

    Script de item

    @@Neymar Jr, Tente assim: Vá em data/actions/actions.xml e adicione a tag: <action actionid="2135" event="script" value="doorItem.lua"/>Agora em data/actions/scripts crie um arquivo chamado doorItem.lua com o seguinte conteúdo: Agora basta colocar a action 2135 (ou outra que você configurou) na porta.
    1 ponto
  27. Francisco Souza

    Sign of the Week #5

    Opa, quase perco o tempo, vou participar também Boa sorte a todos!
    1 ponto
  28. Bruno

    End Vip E Efeito Vip

    @, Sistema: FimVip: EfeitoVip:
    1 ponto
  29. Quando loga e a vip tiver acabado, vai tirar o nome [VIP] Creaturescript: .lua function onLogin(cid) local name = string.gsub(""..getCreatureName(cid).."", ".VIP. ", "") if getPlayerStorageValue(cid, 13704) <= 0 then if getCreatureName(cid) ~= name then db.executeQuery("UPDATE `players` SET `name` = '"..name.."' WHERE `id` = "..getPlayerGUID(cid)..";") addEvent(doRemoveCreature, 2*1000, cid, true) end end return true end .xml <event type="login" name="RemoveName" event="Nome_do_Scriptt"> Login.lua antes do ultimo return true registerCreatureEvent(cid, "RemoveName")
    1 ponto
  30. HadesBR

    DHQuest Room Revamped

    Demon Helmet Quest Room Revamped! Resolvi dar uma mudada em algumas areas que são iguais na maioria dos mapas pra ficar mais legal e estou compartilhando essa ai... Versão: 8.60 Screenshot: Download: MediaFire "O SCAN"
    1 ponto
  31. Omega

    Ajuda como modificar action do oneshot

    Assim deve quebrar o item toda vez que ele não conseguir o upgrade. É só substituir esse código pelo upgradesystem.lua original. Qualquer problema, avisa aí.
    1 ponto
  32. Yan Oliveira

    Base Otpokemon V1

    As sprites são muiito legais, principalmente do Salamance... só não curti a depot, mas ótimo conteúdo .
    1 ponto
  33. Omega

    Download de Todos os Clientes do Tibia

    Segue uma lista para download com os principais clientes de Tibia ainda utilizados. Tibia 10.79 Tibia 10.76 Tibia 10.37 Tibia 8.60 Tibia 8.54 Tibia 8.00 Tibia 7.72 Tibia 7.60 Tibia 7.4 Todos os links são do site tibia.sx. Lá todos os outros clientes poderão ser baixados.
    1 ponto
  34. ThiagoBji

    [Tutorial] Resolvendo Exit-Trainer

    Olá Xtibianos. Hoje irei postar um tópico aqui no Xtibia que ensina a resolver o problema que ocorre em muitos servidores (quase todos, principalmente nos baiaks). O problema é aquele do exit trainer, que o player loga, vá no trainer e dá exit. Sendo assim, o char fica online e não desloga, e por esse motivo você toma ban no OT Serv List pelo motivo de "Spoofing". Pra quem não quiser tomar ban no OT Serv List por esse motivo, então siga o tutorial abaixando explicando como resolver esse problema. Vá em Pasta do seu OT -> data -> creaturescripts -> creaturescripts.xml: <!-- Idle --> <event type="think" name="Idle" event="script" value="idle.lua"/> Agora vá em Pasta do seu OT -> data -> creaturescripts -> scripts -> idle.lua: local config = { idleWarning = getConfigValue('idleWarningTime'), idleKick = getConfigValue('idleKickTime') } function onThink(cid, interval) if(getTileInfo(getCreaturePosition(cid)).nologout or getCreatureNoMove(cid) or getPlayerCustomFlagValue(cid, PlayerCustomFlag_AllowIdle)) then return true end local idleTime = getPlayerIdleTime(cid) + interval doPlayerSetIdleTime(cid, idleTime) if(config.idleKick > 0 and idleTime > config.idleKick) then doRemoveCreature(cid) elseif(config.idleWarning > 0 and idleTime == config.idleWarning) then local message = "You have been idle for " .. math.ceil(config.idleWarning / 60000) .. " minutes" if(config.idleKick > 0) then message = message .. ", you will be disconnected in " local diff = math.ceil((config.idleWarning - config.idleKick) / 60000) if(diff > 1) then message = message .. diff .. " minutes" else message = message .. "one minute" end message = message .. " if you are still idle" end doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, message .. ".") end return true end Para finalizar, agora vá em Pasta do seu OT -> data -> creaturescripts -> scripts -> login.lua: registerCreatureEvent(cid, "Idle") Para você alterar o tempo do exit, basta você abrir o config.lua e configura-la nessa parte: idleWarningTime = 9 * 60 * 1000 idleKickTime = 10 * 60 * 1000 Pronto! Problema solucionado! Os créditos do script eu não sei, pois eu peguei ele do meu servidor, só que o script faltava uma parte para funcionar, então eu adicionei essa parte. Então é isso! até mais!
    1 ponto
  35. Bom pessoal , aqui vou falar como você coloca Fast Atack no seu Ot! Va no arquivo vocations.xml, clique com o botão direito e dpois em editar. Vai estar mais o menus assim: <?xml version="1.0"?> <vocations> <vocation id="0" name="None" description="a rookie" gaincap="5" gainhp="5" gainmana="5" gainhpticks="6" gainhpamount="1" gainmanaticks="6" gainmanaamount="10" gainsoulticks="120" gainsoulamount="1" maxsoul="100" manamultiplier="4.0" attackspeed="700" prevoc="0" basespeed="220"> <diepercent experience="7" magic="7" skill="7" equipment="7" container="100"/> <formula damage="1.2" defense="1.1" armor="1.1"/> <skill id="0" multiplier="1.5"/> <skill id="1" multiplier="2.0"/> <skill id="2" multiplier="2.0"/> <skill id="3" multiplier="2.0"/> <skill id="4" multiplier="2.0"/> <skill id="5" multiplier="1.5"/> <skill id="6" multiplier="1.1"/> </vocation> Aqui peguei a vocation none , veja onde esta escrito: attackspeed="700" No lugar de 700 coloque 200 e ira ficar assim: attackspeed="200" Faça isso em todas as vocações e está Pronto ! Ps: Se não der certo, dê ctrl+alt+del Vá em processos , procure o nome do seu Otserv , clique com o botão direito e vá em definir propriedade , coloque Tempo Real e está pronto!
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...