Ir para conteúdo
  • Cadastre-se

CreatureScript [TFS 1.x] Anunciar quem morreu e quem matou


Posts Recomendados

Em 20/10/2016 em 07:13, Johncore disse:

@luanluciano93 tem como colocar em TFS 1.2 ?

Meu TFS é 1.2, fiz exatamente assim e não pega meu login.lua, não consigo logar in game!

 

Login.lua

  Mostrar conteúdo oculto

local events = {
    'ElementalSpheresOverlords',
    'BigfootBurdenVersperoth',
    'Razzagorn',
    'Shatterer',
    'Zamulosh',    
    'The Hunger',
    'The Rage',
    'Eradicator',
    'Eradicator1',
    'Rupture',
    'World Devourer',    
    'Tarbaz',
    'Shulgrax',
    'Ragiaz',
    'Plagirath',
    'Mazoran',
    'Destabilized',
    'BigfootBurdenWiggler',
    'SvargrondArenaKill',
    'NewFrontierShardOfCorruption',
    'NewFrontierTirecz',
    'ServiceOfYalaharDiseasedTrio',
    'ServiceOfYalaharAzerus',
    'ServiceOfYalaharQuaraLeaders',
    'InquisitionBosses',
    'InquisitionUngreez',
    'KillingInTheNameOfKills',
    'KillingInTheNameOfKillss',
    'KillingInTheNameOfKillsss',
    'MastersVoiceServants',
    'SecretServiceBlackKnight',
    'ThievesGuildNomad',
    'WotELizardMagistratus',
    'WotELizardNoble',
    'WotEKeeper',
    'WotEBosses',
    'WotEZalamon',
    'WarzoneThree',
    'PlayerDeath',
    'AdvanceSave',
    'bossesWarzone',
    'AdvanceRookgaard',
    'PythiusTheRotten',
    'DropLoot',
    'Yielothax',
    'BossParticipation',
    'Energized Raging Mage',
    'Raging Mage', 
    'modalMD1',
    'VibrantEgg',
    'DeathCounter',
    'KillCounter',
    'bless1',
    'lowerRoshamuul',
    'Anunciar_Mortes'    
}
 
local function onMovementRemoveProtection(cid, oldPosition, time)
    local player = Player(cid)
    if not player then
        return true
    end
 
    local playerPosition = player:getPosition()
    if (playerPosition.x ~= oldPosition.x or playerPosition.y ~= oldPosition.y or playerPosition.z ~= oldPosition.z) or player:getTarget() then
        player:setStorageValue(Storage.combatProtectionStorage, 0)
        return true
    end
 
    addEvent(onMovementRemoveProtection, 1000, cid, oldPosition, time - 1) 
end
 
function onLogin(player)
    local loginStr = 'Welcome to ' .. configManager.getString(configKeys.SERVER_NAME) .. '!'
    if player:getLastLoginSaved() <= 0 then
        loginStr = loginStr .. ' Please choose your outfit.'
        player:sendOutfitWindow()
        player:sendTutorial(1)
    else
        if loginStr ~= "" then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
        end

        loginStr = string.format('Your last visit was on %s.', os.date('%a %b %d %X %Y', player:getLastLoginSaved()))
    end
 
    player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
   
    local playerId = player:getId()
 
    -- Stamina
    nextUseStaminaTime[playerId] = 1
 
    -- STAMINA DEVIDO A QUEDAS START
   
    --local stamina_full = 42 * 60 -- config. 42 = horas
   -- if player:getStamina() >= stamina_full then
      --  player:sendCancelMessage("Your stamina is already full.")
   -- elseif player:getPremiumDays() < 1 then
     --   player:sendCancelMessage("You must have a premium account.")
   -- else
      --  player:setStamina(stamina_full)
     -- player:sendTextMessage(MESSAGE_INFO_DESCR, "Your stamina has been refilled.")      
   -- end
   
    -- STAMINA DEVIDO A QUEDAS END
   
    -- Promotion
   --[[ local vocation = player:getVocation()
    local promotion = vocation:getPromotion()
    if player:isPremium() then
        local value = player:getStorageValue(Storage.Promotion)
        if not promotion and value ~= 1 then
            player:setStorageValue(Storage.Promotion, 1)
        elseif value == 1 then
            player:setVocation(promotion)
        end
    elseif not promotion then
        player:setVocation(vocation:getDemotion())
    end--]]
   
     -- ABRIR CHANNELS
    if(not isInArray({1,2,3,5,6,7,8}, player:getVocation():getId()) or player:getLevel() < 6) then
   -- player:openChannel(7)   -- help channel
    player:openChannel(3)   -- world chat 
    player:openChannel(6)   -- advertsing rook main
    else
  --  player:openChannel(7)   -- help channel
    player:openChannel(3)   -- world chat
    player:openChannel(5)   -- advertsing main 
    end
   
    --
    -- Rewards
    local rewards = #player:getRewardList()
    if(rewards > 0) then
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("You have %d %s in your reward chest.", rewards, rewards > 1 and "rewards" or "reward"))
    end
 
    -- Update player id
    local stats = player:inBossFight()
    if stats then
        stats.playerId = player:getId()
    end
 
    -- fury gates
   
    if Game.getStorageValue(GlobalStorage.FuryGates, (9710)) == 1 then -- for venore
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Venore Today.')
elseif Game.getStorageValue(GlobalStorage.FuryGates, (9711)) == 2 then -- for ab...
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Abdendriel Today.')
      elseif Game.getStorageValue(GlobalStorage.FuryGates, (9712)) == 3 then -- for ab...
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Thais Today.')
      elseif Game.getStorageValue(GlobalStorage.FuryGates, (9713)) == 4 then -- for ab...
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Carlin Today.')
      elseif Game.getStorageValue(GlobalStorage.FuryGates, (9714)) == 5 then -- for ab...
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Edron Today.')
      elseif Game.getStorageValue(GlobalStorage.FuryGates, (9716)) == 6 then -- for ab...
     player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Kazordoon Today.')
      end
     
   
    player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, '[TIBIA COINS] For purchases above 20 BRL receive Double Coins.')
        player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, '[Bugs Fixed] !')
        player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, '[BONUS EXP] Command for check !exp.')
        player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, '[GUILD LEADER COMMAND] Will change all outfits from members !outfit.')

    -- Events
    for i = 1, #events do
        player:registerEvent(events)
    end
 
    if player:getStorageValue(Storage.combatProtectionStorage) <= os.time() then
        player:setStorageValue(Storage.combatProtectionStorage, os.time() + 10)
        onMovementRemoveProtection(playerId, player:getPosition(), 10)
    end
    
    creature:registerEvent("Anunciar_Mortes")
    return true
end

 

Erro no console:

  Mostrar conteúdo oculto

Madara has logged in.

Lua Script Error: [CreatureScript Interface]
data/creaturescripts/scripts/others/login.lua:onLogin
data/creaturescripts/scripts/others/login.lua:179: attempt to index global 'creature' (a nil value)
stack traceback:
        [C]: in function '__index'
        data/creaturescripts/scripts/others/login.lua:179: in function <data/creaturescripts/scripts/others/login.lua:74>
Madara has logged out.

 

preciso de ajuda, darei rep+

Meu TFS é 1.2, fiz exatamente assim e não pega meu login.lua, não consigo logar in game!

 

Login.lua

  Mostrar conteúdo oculto

local events = {
    'ElementalSpheresOverlords',
    'BigfootBurdenVersperoth',
    'Razzagorn',
    'Shatterer',
    'Zamulosh',    
    'The Hunger',
    'The Rage',
    'Eradicator',
    'Eradicator1',
    'Rupture',
    'World Devourer',    
    'Tarbaz',
    'Shulgrax',
    'Ragiaz',
    'Plagirath',
    'Mazoran',
    'Destabilized',
    'BigfootBurdenWiggler',
    'SvargrondArenaKill',
    'NewFrontierShardOfCorruption',
    'NewFrontierTirecz',
    'ServiceOfYalaharDiseasedTrio',
    'ServiceOfYalaharAzerus',
    'ServiceOfYalaharQuaraLeaders',
    'InquisitionBosses',
    'InquisitionUngreez',
    'KillingInTheNameOfKills',
    'KillingInTheNameOfKillss',
    'KillingInTheNameOfKillsss',
    'MastersVoiceServants',
    'SecretServiceBlackKnight',
    'ThievesGuildNomad',
    'WotELizardMagistratus',
    'WotELizardNoble',
    'WotEKeeper',
    'WotEBosses',
    'WotEZalamon',
    'WarzoneThree',
    'PlayerDeath',
    'AdvanceSave',
    'bossesWarzone',
    'AdvanceRookgaard',
    'PythiusTheRotten',
    'DropLoot',
    'Yielothax',
    'BossParticipation',
    'Energized Raging Mage',
    'Raging Mage', 
    'modalMD1',
    'VibrantEgg',
    'DeathCounter',
    'KillCounter',
    'bless1',
    'lowerRoshamuul',
    'Anunciar_Mortes'    
}
 
local function onMovementRemoveProtection(cid, oldPosition, time)
    local player = Player(cid)
    if not player then
        return true
    end
 
    local playerPosition = player:getPosition()
    if (playerPosition.x ~= oldPosition.x or playerPosition.y ~= oldPosition.y or playerPosition.z ~= oldPosition.z) or player:getTarget() then
        player:setStorageValue(Storage.combatProtectionStorage, 0)
        return true
    end
 
    addEvent(onMovementRemoveProtection, 1000, cid, oldPosition, time - 1) 
end
 
function onLogin(player)
    local loginStr = 'Welcome to ' .. configManager.getString(configKeys.SERVER_NAME) .. '!'
    if player:getLastLoginSaved() <= 0 then
        loginStr = loginStr .. ' Please choose your outfit.'
        player:sendOutfitWindow()
        player:sendTutorial(1)
    else
        if loginStr ~= "" then
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
        end

        loginStr = string.format('Your last visit was on %s.', os.date('%a %b %d %X %Y', player:getLastLoginSaved()))
    end
 
    player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
   
    local playerId = player:getId()
 
    -- Stamina
    nextUseStaminaTime[playerId] = 1
 
    -- STAMINA DEVIDO A QUEDAS START
   
    --local stamina_full = 42 * 60 -- config. 42 = horas
   -- if player:getStamina() >= stamina_full then
      --  player:sendCancelMessage("Your stamina is already full.")
   -- elseif player:getPremiumDays() < 1 then
     --   player:sendCancelMessage("You must have a premium account.")
   -- else
      --  player:setStamina(stamina_full)
     -- player:sendTextMessage(MESSAGE_INFO_DESCR, "Your stamina has been refilled.")      
   -- end
   
    -- STAMINA DEVIDO A QUEDAS END
   
    -- Promotion
   --[[ local vocation = player:getVocation()
    local promotion = vocation:getPromotion()
    if player:isPremium() then
        local value = player:getStorageValue(Storage.Promotion)
        if not promotion and value ~= 1 then
            player:setStorageValue(Storage.Promotion, 1)
        elseif value == 1 then
            player:setVocation(promotion)
        end
    elseif not promotion then
        player:setVocation(vocation:getDemotion())
    end--]]
   
     -- ABRIR CHANNELS
    if(not isInArray({1,2,3,5,6,7,8}, player:getVocation():getId()) or player:getLevel() < 6) then
   -- player:openChannel(7)   -- help channel
    player:openChannel(3)   -- world chat 
    player:openChannel(6)   -- advertsing rook main
    else
  --  player:openChannel(7)   -- help channel
    player:openChannel(3)   -- world chat
    player:openChannel(5)   -- advertsing main 
    end
   
    --
    -- Rewards
    local rewards = #player:getRewardList()
    if(rewards > 0) then
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("You have %d %s in your reward chest.", rewards, rewards > 1 and "rewards" or "reward"))
    end
 
    -- Update player id
    local stats = player:inBossFight()
    if stats then
        stats.playerId = player:getId()
    end
 
    -- fury gates
   
    if Game.getStorageValue(GlobalStorage.FuryGates, (9710)) == 1 then -- for venore
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Venore Today.')
elseif Game.getStorageValue(GlobalStorage.FuryGates, (9711)) == 2 then -- for ab...
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Abdendriel Today.')
      elseif Game.getStorageValue(GlobalStorage.FuryGates, (9712)) == 3 then -- for ab...
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Thais Today.')
      elseif Game.getStorageValue(GlobalStorage.FuryGates, (9713)) == 4 then -- for ab...
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Carlin Today.')
      elseif Game.getStorageValue(GlobalStorage.FuryGates, (9714)) == 5 then -- for ab...
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Edron Today.')
      elseif Game.getStorageValue(GlobalStorage.FuryGates, (9716)) == 6 then -- for ab...
     player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Fury Gate is on Kazordoon Today.')
      end
     
   
    player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, '[TIBIA COINS] For purchases above 20 BRL receive Double Coins.')
        player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, '[Bugs Fixed] !')
        player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, '[BONUS EXP] Command for check !exp.')
        player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, '[GUILD LEADER COMMAND] Will change all outfits from members !outfit.')

    -- Events
    for i = 1, #events do
        player:registerEvent(events)
    end
 
    if player:getStorageValue(Storage.combatProtectionStorage) <= os.time() then
        player:setStorageValue(Storage.combatProtectionStorage, os.time() + 10)
        onMovementRemoveProtection(playerId, player:getPosition(), 10)
    end
    
    creature:registerEvent("Anunciar_Mortes")
    return true
end

 

Erro no console:

  Mostrar conteúdo oculto

Madara has logged in.

Lua Script Error: [CreatureScript Interface]
data/creaturescripts/scripts/others/login.lua:onLogin
data/creaturescripts/scripts/others/login.lua:179: attempt to index global 'creature' (a nil value)
stack traceback:
        [C]: in function '__index'
        data/creaturescripts/scripts/others/login.lua:179: in function <data/creaturescripts/scripts/others/login.lua:74>
Madara has logged out.

 

 

ATULIZAÇÃO:

Consegui resolver o script aqui funciona perfeitamente para TFS 1.2 depois de algumas modificações

Me passa pra 1.2

Link para o post
Compartilhar em outros sites
  • Respostas 35
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Olá pessoal, esse script funciona quando algum player morre para outro player, assim aparecendo uma mensagem para todos do servidor falando quem morreu e quem matou. Procure o arquivo creaturescripts/scripts/playerdeath.lua e adicione o seguinte código antes do último end:  if killer:isPlayer() then Game.broadcastMessage(player:getName().."["..player:getLevel().."] acabou de ser morto pelo jogador "..killer:getName().."["..killer:getLevel().."].", MESSAGE_STATUS_DEFAULT) end Pronto

@DamianMeneses, just add the event in the table: Of:  'AdvanceSave' } For:  'AdvanceSave', 'Anunciar_Mortes' }

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 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  
       
       
  • Estatísticas dos Fóruns

    96844
    Tópicos
    519606
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo