tfs 1.3 [10.51] Global Map [Completo] Melhor da atualidade! -Zombie Event-
-
Quem Está Navegando 0 membros estão online
Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
Por luanluciano93
Olá pessoal, estou desenvolvendo esse sistema vip para TFS 1.x, se precisarem de alguma função nova é só comentar, criei para usar em um servidor meu e resolvi postar, bom proveito a todos.
É só ir no arquivo data/lib/core/player.lua e adicionar esse código no começo do script:
-- ALTER TABLE `accounts` ADD `vip_time` BIGINT(20) NOT NULL DEFAULT 0; -- player:getVipTime() function Player.getVipTime(self) local resultId = db.storeQuery("SELECT `vip_time` FROM `accounts` WHERE `id` = '".. self:getAccountId() .."';") local time = resultId ~= false and result.getNumber(resultId, "vip_time") or 0 result.free(resultId) return time end -- player:isVip() function Player.isVip(self) return self:getVipTime() > os.time() and true or false end -- player:addVipDays(days) function Player.addVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVipDays(days) function Player.removeVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:setVipDays(days) function Player.setVipDays(self, days) return db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVip() function Player.removeVip(self) db.query("UPDATE `accounts` SET `vip_time` = '0' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:sendVipDaysMessage() function Player.sendVipDaysMessage(self) if self:isVip() then local vipTime = self:getVipTime() - os.time() local vipDays = 1 + (math.floor(vipTime / 86400)) return self:getVipTime() ~= false and self:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'You have '.. vipDays .. ' vip day(s) in your account.') end end -- player:checkVipLogin() function Player.checkVipLogin(self) if self:getVipTime() > 0 and not self:isVip() then return self:removeVip() and self:teleportTo(self:getTown():getTemplePosition()) end end
As funções são:
• player:getVipTime() - Retorna o valor da tabela vip_time (igual esta na database).
• player:isVip() - Retorna se o player é vip ou não.
• player:addVipDays(days) - Usa-se em algum script para para adicionar dias de vip ao player (parâmetro de entrada "days").
• player:removeVipDays(days) - Usa-se em algum script para para remover dias de vip do player (parâmetro de entrada "days").
• player:setVipDays(days) - Usa-se em algum script para para mudar os dias de vip do player (parâmetro de entrada "days").
• player:removeVip() - Usa-se em algum script para para remover todo tempo de vip do player.
• player:sendVipDaysMessage() - Retorna uma mensagem no player mostrando os dias de vip que ainda restam ao player.
• player:checkVipLogin() - Checa se a vip do player acabou, se sim teleporta ele para o templo.
Qualquer dúvida ou erro/bug poste aqui.
-
Por Movie
Hoje estou bonzinho e vou postar mais uma coisa que eu fiz pro otserver que estou desenvolvendo e vou compartilhar com vocês.
Você tem aquela nova moeda no seu servidor, mas os NPCs não aceitam ela e tal?
Vou te dar a solução nesse tópico.
================================================================================================================
Testado no TFS 1.3 na versão 8.60
================================================================================================================
Em player.cpp, procure a função Player::updateSaleShopList
Troque essa linha
if (itemId != ITEM_GOLD_COIN && itemId != ITEM_PLATINUM_COIN && itemId != ITEM_CRYSTAL_COIN) { por essa
if (itemId != ITEM_GOLD_COIN && itemId != ITEM_PLATINUM_COIN && itemId != ITEM_CRYSTAL_COIN && itemId != ITEM_GOLD_INGOT) { ================================================================================================================
Em const.h, procure por ITEM_CRYSTAL_COIN = 2160
Abaixo dela, adicione isso
ITEM_GOLD_INGOT = 9971, Sendo que o 9971 é o ID do item que gostariamos que seja a nova moeda.
================================================================================================================
Em item.cpp, procure pela função uint32_t Item::getWorth() const
Troque ela toda por isso
uint32_t Item::getWorth() const { switch (id) { case ITEM_GOLD_COIN: return count; case ITEM_PLATINUM_COIN: return count * 100; case ITEM_CRYSTAL_COIN: return count * 10000; case ITEM_GOLD_INGOT: return count * 1000000; default: return 0; } } ================================================================================================================
Em luascript.cpp, procure por registerEnum(ITEM_CRYSTAL_COIN)
Abaixo disso, coloque isso
registerEnum(ITEM_GOLD_INGOT) ================================================================================================================
Agora em actions/script/changegold.lua, troque por isso
local config = { [ITEM_GOLD_COIN] = {changeTo = ITEM_PLATINUM_COIN}, [ITEM_PLATINUM_COIN] = {changeBack = ITEM_GOLD_COIN, changeTo = ITEM_CRYSTAL_COIN}, [ITEM_CRYSTAL_COIN] = {changeBack = ITEM_PLATINUM_COIN, changeTo = ITEM_GOLD_INGOT}, [ITEM_GOLD_INGOT] = {changeBack = ITEM_CRYSTAL_COIN} } function onUse(player, item, fromPosition, target, toPosition, isHotkey) local coin = config[item:getId()] if coin.changeTo and item.type == 100 then item:remove() player:addItem(coin.changeTo, 1) player:say("$$$", TALKTYPE_MONSTER_SAY, true) elseif coin.changeBack then item:remove(1) player:addItem(coin.changeBack, 100) player:say("$$$", TALKTYPE_MONSTER_SAY, true) else return false end return true end ================================================================================================================
É isso por hoje.
================================================================================================================
-
Por GamerGoiano
Eu postei em outro forum e decidi postar aqui agora.
Download:
https://www.mediafire.com/file/duod883uo8ke35j/Servidor_tfs_1-3.rar/file
Scan:
https://www.virustotal.com/gui/file/4c6a8b986087cd39cc678e2c73146663863f8bca650e5c06c8a6179db6c69ea5/detection
(Usem o banco de dados tibia.sql ele ja ta configurado com o ZnoteAAC)
(Znote AAC Incluso)
Contém:
1. Tfs 1.3 compilado em 32 bits + Sources
2. Otclient compilado em 32 bits + Sources
3. Aumentado Tamanho da Tela pra 19 Tiles
4. Adicionado X Y Z no minimap.
5. Interface padrão do OTCLIENT trocada pra transparente.
6. Removido painel direito e esquerdo do Otclient,
7. Limitado o Zoom (Não da pra bugar)
8. Removido Hotkey (CTRL + .)
9. Fixado o Login do OTCLIENT pra ip FIXO. (Troque em entergame.lua)
Eu não ativei Transparency nem Extended, caso queira ativar:
Dentro do things.lua na pasta game_things, abaixo de:
function load()
local version = g_game.getClientVersion()
Coloque isso:
g_game.enableFeature(GameSpritesU32) -- To extended the sprites
g_game.enableFeature(GameSpritesAlphaChannel) -- To enable transparency
Vai o print antigo mesmo pq é a mesma coisa
-
Por L3K0T
L3KOT tfs: 1.3
Bom esse sistema é bem simples, ele anuncia pro servidor todo ao matar um tal monstro especifico.
1° vai em otserv\data\creaturescripts\scripts copia um arquivo.lua, renomeia para monsterkill.lua e add dentro;;;
function onDeath(monster, corpse, killer, mostDamageKiller, unjustified, mostDamageUnjustified) local monstro = "Diablo" if monster:getName() == monstro then Game.broadcastMessage("O Jogador "..killer:getName().." matou o Boss " ..monster:getName().. "! ") end return true end
Em creaturescripts.xml add
<event type="death" name="monsterkill" script="monsterkill.lua"/>
Abra o xml do monstro que você quer que apareça a mensagem global depois de mata-lo e add lá no final depois de loot;;
<script> <event name="monsterkill" /> </script> feito isso, salve tudo e pronto!!! Sucesso e jamais desista do seus projetos.
ajuda sandada para @Faysal creditos: L3K0T and @Faysal
-
Por Movie
[Dodge & Critical]
Sabe aqueles sistemas de dodge e critical que temos nos servidores de baiak? Então, é isso que hoje vou trazer para vocês!
Há um sistema disponibilizado na internet, porém não funcional, o que eu fiz foi fixá-lo e adicionar o dodge para mana também.
Testado no TFS 1.3 na versão 8.60
Na pasta lib crie um arquivo chamado dodgeCritical.lua
--[[ Dodge & Critical fixado por Movie (Movie#4361) Disponibilizado para o TibiaKing e não autorizo outras reproduções Mantenha os créditos <3 --]] STORAGEVALUE_DODGE = 48900 STORAGEVALUE_CRITICAL = 48901 DODGE = { LEVEL_MAX = 100, -- máximo de level que o dodge será PERCENT = 0.2 -- porcentagem que irá defender o ataque } CRITICAL = { LEVEL_MAX = 100, -- máximo de level que o critical será PERCENT = 0.2 -- porcentagem que irá aumentar o ataque } function Player.getDodgeLevel(self) return self:getStorageValue(STORAGEVALUE_DODGE) end function Player.setDodgeLevel(self, value) return self:setStorageValue(STORAGEVALUE_DODGE, value) end function Player.getCriticalLevel(self) return self:getStorageValue(STORAGEVALUE_CRITICAL) end function Player.setCriticalLevel(self, value) return self:setStorageValue(STORAGEVALUE_CRITICAL, value) end Não esqueça de registrar a lib no lib.lua
Agora na pasta creaturescript/scripts crie um arquivo chamado dodgeCritical.lua
--[[ Dodge & Critical fixado por Movie (Movie#4361) Disponibilizado para o TibiaKing e não autorizo outras reproduções Mantenha os créditos <3 --]] function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin) if (not attacker or not creature) then return primaryDamage, primaryType, secondaryDamage, secondaryType end if primaryType == COMBAT_HEALING then return primaryDamage, primaryType, secondaryDamage, secondaryType end if ((creature:getDodgeLevel() * 3) >= math.random (0, 1000) and creature:isPlayer()) then primaryDamage = 0 secondaryDamage = 0 creature:say("DODGE!", TALKTYPE_MONSTER_SAY) creature:getPosition():sendMagicEffect(CONST_ME_BLOCKHIT) end if (attacker:isPlayer() and (attacker:getCriticalLevel() * 3) >= math.random (0, 1000)) then primaryDamage = primaryDamage + math.ceil(primaryDamage * CRITICAL.PERCENT) attacker:say("CRITICAL!", TALKTYPE_MONSTER_SAY) creature:getPosition():sendMagicEffect(CONST_ME_EXPLOSIONHIT) end return primaryDamage, primaryType, secondaryDamage, secondaryType end <event type="healthchange" name="DodgeCritical" script="dodgeCritical.lua"/>
Agora crie outro arquivo dentro do creaturescripts/scripts com o nome dodgeMana.lua
--[[ Dodge & Critical fixado por Movie (Movie#4361) Disponibilizado para o TibiaKing e não autorizo outras reproduções Mantenha os créditos <3 --]] function onManaChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin) if (not attacker or not creature) then return primaryDamage, primaryType, secondaryDamage, secondaryType end if ((creature:getDodgeLevel() * 3) >= math.random (0, 1000) and creature:isPlayer()) then primaryDamage = 0 secondaryDamage = 0 creature:say("DODGE!", TALKTYPE_MONSTER_SAY) creature:getPosition():sendMagicEffect(CONST_ME_BLOCKHIT) end return primaryDamage, primaryType, secondaryDamage, secondaryType end <event type="manachange" name="DodgeMana" script="dodgeMana.lua"/>
Não esqueça de registra no login.lua
player:registerEvent("DodgeCritical") player:registerEvent("DodgeMana") Adicione também no login.lua
if player:getDodgeLevel() == -1 then player:setDodgeLevel(0) end if player:getCriticalLevel() == -1 then player:setCriticalLevel(0) end
Agora na pasta scripts/talkactions crie um arquivo chamado dodgeCritical.lua
--[[ Dodge & Critical fixado por Movie (Movie#4361) Disponibilizado para o TibiaKing e não autorizo outras reproduções Mantenha os créditos <3 --]] local dodge = TalkAction("!dodge") local critical = TalkAction("!critical") function dodge.onSay(player, words, param) local skill = player:getDodgeLevel() local message = "DODGE SYSTEM\nO sistema consiste em defender uma porcentagem dos ataques recebidos.\n\nPor Exemplo:\nCada pedra utilizada atribui 0,3% a mais de chance.\nCom 10 pedras, voce tera 3% de chance de defender 50% dos ataques recebidos.\nCom 100 pedras (maximo), voce tera 30% de chance de defender 50% dos ataques recebidos.\nCada pedra que voce usar, sua skill de dodge aumenta em 1 ponto.\n\n------------------\nDodge Skill: [" .. skill .. "/100]" doPlayerPopupFYI(player, message) end dodge:register() function critical.onSay(player, words, param) local skill = player:getCriticalLevel() local message = "CRITICAL SYSTEM\nO sistema consiste em ter uma chance de dar um dano critico.\n\nPor Exemplo:\nCada pedra utilizada atribui 0,3% a mais de chance.\nCom 10 pedras, voce tera 3% de chance de hitar um dano critico dos ataques desferidos ao seu oponente.\nCom 100 pedras (maximo), voce tera 30% de chance de hitar um dano critico dos ataques desferidos ao seu oponente.\nCada pedra que voce usar, sua skill de dodge aumenta em 1 ponto.\n\n------------------\nCritical Skill: [" .. skill .. "/100]" doPlayerPopupFYI(player, message) end critical:register()
Pronto, agora você tem o sistema no seu servidor!
Curtiu? Dá um REP+ aí
-
-
Estatísticas dos Fóruns
96842
Tópicos519599
Posts
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.