Ir para conteúdo
  • Cadastre-se

Posts Recomendados

  • Respostas 77
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

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` =

@andreoam, poste o que você tem em spoiler. 

@gangul321 Para colocar em spoiler siga esses passos. Hidden Content Give reaction to this post to see the hidden content.

Posted Images

  • 2 weeks later...
  Em 15/01/2015 em 23:28, luanluciano93 disse:

Olá pessoal, estou desenvolvendo esse sistema vip para TFS 1.1, ainda não acabei, se precisarem de alguma função nova é só comentar, criei para usar em um servidor teste meu e resolvi postar, bom proveito a todos.

Basta criar um arquivo em libs com o nome de vip_system.lua e depois em global.lua (dentro do datapack do servidor - pode ser na primeira linha do arquivo), coloque o seguinte código: 

dofile('data/libs/vip_system.lua')

E dentro do arquivo vip_system.lua que você criou em libs add o seguinte código: 

------------------------------------------------------------------
-----------------[[ VIP SYSTEM POR LUANLUCIANO ]]-----------------
------------------------------------------------------------------

-- player:VipTime()
function Player.VipTime(self)
	local resultId = db.storeQuery("SELECT `id`, `vip_time` FROM `accounts` WHERE `id` = '".. self:getAccountId() .."';")
	return resultId ~= false and result.getDataInt(resultId, "vip_time") or error('Account not found.')
end

-- player:getVipTime()
function Player.getVipTime(self)
	return self:VipTime() - os.time() > 0 and self:VipTime() - os.time() or false
end

-- player:isVip()
function Player.isVip(self)
	return self:VipTime() - os.time() > 0 and true or false
end

-- player:AddVipTime()
function Player.AddVipTime(self, days)
	local seconds = days * 86400
	return (self:isVip() and tonumber(seconds)) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:VipTime() + seconds) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() + seconds) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;")
end

-- player:RemoveVipTime()
function Player.RemoveVipTime(self)
	return self:VipTime() ~= false and db.query("UPDATE `accounts` SET `vip_time` = '0' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or false
end

-- player:VipDate()
function Player.VipDate(self)
	return os.date("%d %b %Y %X", self:getVipTime())
end 

As funções são:

• player:VipTime()

• player:getVipTime()

• player:isVip()

• player:AddVipTime(days)

• player:RemoveVipTime()

• player:VipDate()

Qualquer dúvida ou erro/bug poste aqui.

Expand   Mostrar mais  

poderia coloca para o vip system durar para sempre no char e tbm vender ele por npc ?? por certos items que vou configurar

 

 

se puder vlw ganha o resto de rep+ do meu dia ainda não dei rep+ para ninguem hj

wq3bBzt.png
Pokémon Dust Evolution
 
É aonde começa sua nova aventura!! 

 

Facebook

 
Verifique Atualizações

 

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

@, para os dois casos que você pediu é só usar a função player:AddVipTime(days), é bem simples.

 

Pessoal, atualizei o código, melhorei algumas funções e retirei uma que se tornou desnecessária. Qualquer dúvida postem ai!

Link para o post
Compartilhar em outros sites
  • Under unpinned this tópico
  • Under pinned this tópico

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Absolute
      Olá galerinha do TK, depois de algum tempo de trabalho árduo trago a vocês o Global 10.51 completo, este Global é baseado no servidor do Printer e modificado, alterado, renovado para vocês do fórum, ou seja, exclusividade do TibiaKing. (WITH ZOMBIE EVENT 10.x)
       
      Servidor rodando da versão 10.37 até 10.51, mapa perfeito, editado e exclusivo!
       
      Uptime 300h+ sem bugs críticos.
       
       
      Chega de mimimi e vamos ao que interessa, primeiro as principais coisas depois as imagens =)

       
      Features:
      Full Roshamuul City
      Gray Beach City completa 100% (incluindo Subsolo)
      Zombie Event 100%
      Nova Área de Treiners online!
      Treiners Offline 100% (Em cima do templo de Thais)
      Recompensa ao atingir os leveis 180, 270 (BAÚ EM BAIXO DO TEMPLO DE THAIS!)
      Database completa + Shop Pronto (DB FULL);
      Npc Addoner, (e tem os npc originais fica a seu critério)
      Chayenne Realm Quest  Pythius The Rotten Quest 100% Novo visual templo e depot (Thais) Warzones 1; 2; 3 com Crystal para entrar (opcional retirar)
      Monstros 100%
      Mapa 100%
      Npcs 100%
      Quests 100%
      Zao 
      Market System integrado 100%
      Gray Beach City completa
      Taming System 
      Treiners Offline
      New AB
      Todas as montarias da versão
      Templo modificado
      Depot modificado
      Bank System NPC
      Yalahar Full
      Wrath of Emperor Quest
      War System COM ESCUDINHOS
      TFS 1.0 
      Inúmeras coisas que você poderá conferir baixando!
       

       
      Vamos as "ibageeens" poe na tela, (clique em spoiler para ver):



       
       
      Segue abaixo os downloads e recomendações.
      Download servidor e distros/sources 10.37 até 10.51 (WINDOWS/LINUX):  Hidden Content
      Give reaction to this post to see the hidden content.
      Scan do Servidor:  Hidden Content
      Give reaction to this post to see the hidden content.
      Database 10.51 compatível:  Hidden Content
      Give reaction to this post to see the hidden content.
      Gesior compatível e recomendado:  Hidden Content
      Give reaction to this post to see the hidden content.
      Trunks TFS 1.0: http://www.tibiaking.com/forum/topic/39299-tfs-1051-10-by-absolute/
      TFS 1.0 Compilado: http://www.tibiaking.com/forum/topic/39299-tfs-1051-10-by-absolute/
      Senha para descompactar o servidor: tibiaking

       
       
      O Servidor está pronto para deixar online, mude apenas a seu gosto, os erros graves já foram trabalhados!
       
       
       
      Créditos:



       
       
       
      Aproveite para abrir seu servidor, está TOP!
       
       
       
      Caso haja alguma dúvida por favor me comunique aqui no tópico.
       
       
      Vejo você em minha próxima postagem

       
      Até a próxima babye!
      Absolute.
    • 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

    96844
    Tópicos
    519603
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo