Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Adorei o código, é bom para quem está lidando agora com novos servidores.

                              _
                          .-'` `}
                  _./)   /       }
                .'o   \ |       }
                '.___.'`.\    {`
                /`\_/  , `.    }                                      ME DA UMA NOZ!
                \=' .-'   _`\  {
                 `'`;/      `,  }
                    _\   @   ;  }
                   /__`;-...'--'

Cluck!

Link para o post
Compartilhar em outros sites
  • 1 month later...

como faço para ele ganhar 1 montaria random e aparecer para todo mundo isso

?

 

cria um tópico explicando melhor que eu faço ...

 

luan não entendi a função disso no script  :

if (skill == 8) then

e tb não seria mais "prático" assim :

_.type

do que :

tabela[level].type

o funcionamento é o mesmo, só que como já está usando o for eu prefiro do jeito que te mostrei  :rolleyes:

Editado por Summ (veja o histórico de edições)

EQD4Qy4.gif

Link para o post
Compartilhar em outros sites

cria um tópico explicando melhor que eu faço ...

 

luan não entendi a função disso no script  :

if (skill == 8) then

e tb não seria mais "prático" assim :

level.type

do que :

tabela[level].type

o funcionamento é o mesmo, só que como já está usando o for eu prefiro do jeito que te mostrei  :rolleyes:

Na verdade não, "level" seria apenas a posição na tabela, o certo seria "_.type", pois ele que representa a tabela...

                              _
                          .-'` `}
                  _./)   /       }
                .'o   \ |       }
                '.___.'`.\    {`
                /`\_/  , `.    }                                      ME DA UMA NOZ!
                \=' .-'   _`\  {
                 `'`;/      `,  }
                    _\   @   ;  }
                   /__`;-...'--'

Cluck!

Link para o post
Compartilhar em outros sites

Na verdade não, "level" seria apenas a posição na tabela, o certo seria "_.type", pois ele que representa a tabela...

 

finge que eu fiz certo rsrsrs, já editei lá  :bleh:

EQD4Qy4.gif

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

Cara funcionou tudo! mas não esta adicionando a montaria ao player!! poderia ajudar? eu uso tfs 1.1 editado pelo bruno minervino!

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

 

Facebook

 
Verifique Atualizações

 

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

Obg Luan Luciano, Vou levar pra casa e testar, tem a possibilidade de remover o addon e mount e deixar somente o Crystal coins com os seguintes levels, 20, 50, 100, 150, 200, 250 e 300???

 

Ja consegui fazer o que eu gostaria, OBG

Editado por andreoam (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 2 weeks later...

@andreoam, não testei.

local level = 20

function onAdvance(player, skill, oldLevel, newLevel)
	local storage = 15001
	if (skill == 8) and player:getLevel() >= level and player:getStorageValue(storage) < 1 then
		local vocation = player:getVocation()
		local promotion = vocation:getPromotion()
		player:setVocation(promotion)
		player:setStorageValue(storage, 1)
		player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Congratulations! You are now promoted.")
	end

	return true
end 
Link para o post
Compartilhar em outros sites

 

@andreoam, não testei.

local level = 20

function onAdvance(player, skill, oldLevel, newLevel)
	local storage = 15001
	if (skill == 8) and player:getLevel() >= level and player:getStorageValue(storage) < 1 then
		local vocation = player:getVocation()
		local promotion = vocation:getPromotion()
		player:setVocation(promotion)
		player:setStorageValue(storage, 1)
		player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Congratulations! You are now promoted.")
	end

	return true
end 

Testado e aprovado.

 

Segue o script Modificado.

 

local tabela =  
{ 


-- [level] = type = "item", id = ITEM_ID, id2 = QUANTIDADE, msg = "MENSAGEM"},
-- [level] = type = "addon", id = ID_ADDON_FEMALE, id2 = ID_ADDON_MALE, msg = "MENSAGEM"},
-- [level] = type = "mount", id = ID_MOUNT, id2 = 0, msg = "MENSAGEM"}, 


[20] = {type = "item", id = 2160, id2 = 2, msg = "Voce ganhou 2 crystal coins por alcancar o level 20!"}, 
[20] = {type = "promote", id = 2160, id2 = 2, msg = "Voce foi promovido e ganhou 2 crystal coins por alcancar o level 20!"}, 
[40] = {type = "addon", id = 136, id2 = 128, msg = "Voce ganhou o addon  citizen full por alcancar o level 40!"}, 
[50] = {type = "item", id = 2160, id2 = 5, msg = "Voce ganhou 5 crystal coins por alcancar o level 50!"}, 
[60] = {type = "mount", id = 2, id2 = 0, msg = "Voce ganhou uma montaria!"}, 
[100] = {type = "item", id = 2160, id2 = 10, msg = "Voce ganhou 10 crystal coins por alcancar o level 100!"}, 
[150] = {type = "item", id = 2160, id2 = 15, msg = "Voce ganhou 15 crystal coins por alcancar o level 150!"},
[200] = {type = "item", id = 2160, id2 = 20, msg = "Voce ganhou 20 crystal coins por alcancar o level 200!"}, 
[250] = {type = "item", id = 2160, id2 = 25, msg = "Voce ganhou 25 crystal coins por alcancar o level 250!"},  
[300] = {type = "item", id = 2160, id2 = 30, msg = "Voce ganhou 30 crystal coins por alcancar o level 300!"}, 


} 


local storage = 15000 
function onAdvance(player, skill, oldLevel, newLevel) 
if (skill == 8) then 
for level, _ in pairs(tabela) do 
if player:getLevel() >= level and player:getStorageValue(storage) < level then 


if tabela[level].type == "item" then  
player:addItem(tabela[level].id, tabela[level].id2) 


elseif tabela[level].type == "addon" then 
player:addOutfitAddon(tabela[level].id, 3) 
player:addOutfitAddon(tabela[level].id2, 3) 


elseif tabela[level].type == "mount" then 
player:addMount(tabela[level].id)


elseif tabela[level].type == "promote" then 
local vocation = player:getVocation()
local promotion = vocation:getPromotion()
player:setVocation(promotion)
player:addItem(tabela[level].id, tabela[level].id2) 
else 
return false 
end 


player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, tabela[level].msg) 
player:setStorageValue(storage, level) 
end
end
end
player:save() -- salvando player  
return true 
end

Link para o post
Compartilhar em outros sites
  • 10 months later...
On 5/19/2015 at 2:32 PM, luanluciano93 said:

@andreoam, não testei.


local level = 20

function onAdvance(player, skill, oldLevel, newLevel)
	local storage = 15001
	if (skill == 8) and player:getLevel() >= level and player:getStorageValue(storage) < 1 then
		local vocation = player:getVocation()
		local promotion = vocation:getPromotion()
		player:setVocation(promotion)
		player:setStorageValue(storage, 1)
		player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Congratulations! You are now promoted.")
	end

	return true
end 

 

funciona para tfs 1.2 ?

 

abraços.

Link para o post
Compartilhar em outros sites
9 horas atrás, Thunder Black disse:

 

funciona para tfs 1.2 ?

 

abraços.

eu uso este no meu tfs 1.2

local tabela =  
{ 

-- [level] = type = "item", id = ITEM_ID, id2 = QUANTIDADE, msg = "MENSAGEM"},
-- [level] = type = "addon", id = ID_ADDON_FEMALE, id2 = ID_ADDON_MALE, msg = "MENSAGEM"},
-- [level] = type = "mount", id = ID_MOUNT, id2 = 0, msg = "MENSAGEM"}, 
 
[20] = {type = "promote", id = 2160, id2 = 2, msg = "Parabens! Voce foi promovido e ganhou 2 Crystal Coins"}, 
[40] = {type = "addon", id = 136, id2 = 128, msg = "Voce ganhou o addon  citizen full por alcancar o level 40!"}, 
[50] = {type = "item", id = 2160, id2 = 5, msg = "Voce ganhou 5 crystal coins por alcancar o level 50!"}, 
[60] = {type = "mount", id = 2, id2 = 0, msg = "Voce ganhou uma montaria!"}, 
[100] = {type = "item", id = 2160, id2 = 10, msg = "Voce ganhou 10 crystal coins por alcancar o level 100!"}, 
[150] = {type = "item", id = 2160, id2 = 15, msg = "Voce ganhou 15 crystal coins por alcancar o level 150!"},
[200] = {type = "item", id = 2160, id2 = 20, msg = "Voce ganhou 20 crystal coins por alcancar o level 200!"}, 
[250] = {type = "item", id = 2160, id2 = 25, msg = "Voce ganhou 25 crystal coins por alcancar o level 250!"},  
[300] = {type = "item", id = 2160, id2 = 30, msg = "Voce ganhou 30 crystal coins por alcancar o level 300!"}, 

} 

local storage = 15000 
	function onAdvance(player, skill, oldLevel, newLevel) 
		if (skill == 8) then 
			for level, _ in pairs(tabela) do 
			if player:getLevel() >= level and player:getStorageValue(storage) < level then 

			if tabela[level].type == "item" then  
				player:addItem(tabela[level].id, tabela[level].id2) 
			
			elseif tabela[level].type == "addon" then 
				player:addOutfitAddon(tabela[level].id, 3) 
				player:addOutfitAddon(tabela[level].id2, 3) 
			
			elseif tabela[level].type == "mount" then 
				player:addMount(tabela[level].id) 
				
			elseif tabela[level].type == "promote" then 
				local vocation = player:getVocation() 
				local promotion = vocation:getPromotion() 
				player:setVocation(promotion)  
				player:addItem(tabela[level].id, tabela[level].id2) 
		else 
	return false 
end 

player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, tabela[level].msg) 
player:setStorageValue(storage, level) 
end
end
end
player:save() -- salvando player  
return true 
end 

 

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

@luanluciano93 não posso deixar de vir aqui pra dar +REP pra esse grande homem que tem me ajudado imensamente, com esses belos tutoriais! vi recentemente um tutorial seu tambem falando sobre Usbwebserver, esse programa é espetacular meu grande, bota o xampp no bolso. essa comunidade precisa saber mexer nesse programa, mexi bastante até entendi como ele funciona, um pouco parecido com o xampp. você está de parabéns Luan.

Obrigado, forte abraço.

 

Link para o post
Compartilhar em outros sites
  • 1 month later...

muito bom script funcional! (tfs 1.2)

Porém, a montaria o player não ta ganhando, ele ganha todos os outros itens mas a montaria não...

 

O meu ta assim:

    [220] = {type = "mount", id = 390, id2 = 0, msg = "Voce ganhou a montaria do crystal wolf por alcancar o level 220!"},

 

no caso 390 é o looktype id do crystal wolf mount e 391 é do crystal wolf criatura... Alguém sabe me dizer pq não ganha?

Link para o post
Compartilhar em outros sites

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 luanluciano93
      Olá, esse tutorial é uma parte do tópico principal: "Tutorial completo de infraestrutura para montar um servidor TFS 1.x no Ubuntu 22.04" ... 
       
      Aqui ensinaremos como compilar o código fonte do TFS na máquina LINUX e posterior configurar o servidor.
       
      PASSO 1 - COMPILANDO TFS NO UBUNTU
       
      Primeiramente, devemos instalar os softwares necessários. O comando a seguir instalará o CMake, um compilador e as bibliotecas usadas pelo TFS. Após usar o comando digite Y para aceitar a instalação.
      sudo apt install cmake build-essential libluajit-5.1-dev libmysqlclient-dev libboost-system-dev libboost-iostreams-dev libboost-filesystem-dev libpugixml-dev libcrypto++-dev libfmt-dev libboost-date-time-dev  
      Caso ainda não tenha criado a pasta do servidor (como foi dito no tutorial de instalação do PHP), use o comando a seguir para criar a pasta:
      sudo mkdir /home/otserv  
      E depois vá até a pasta usando o comando: 
      cd /home/otserv  
      Agora, usando o WinSCP vá até a pasta /home/otserv/ e jogue a pasta de seu servidor ai dentro ... 
       
      Antes deve estar assim: (se você seguiu o tutorial de instalação do PHP)
         
       
      Depois, os arquivos transferidos devem ser esses!

       
      Caso você não tenha os arquivos necessários, use:
      - TFS atual: https://github.com/otland/forgottenserver
      - TFS Nekiro's 8.60 Downgrade: https://github.com/nekiro/TFS-1.5-Downgrades/tree/8.60
       
      Após transferido os arquivos, use o comando abaixo para criar a pasta BUILD e entrar nela: 
      mkdir build && cd build E depois, use o comando do compilador: 
      cmake ..  
      Agora use o comando para compilar o código fonte do TFS:
      make  
      E pronto, o código fonte foi compilado e gerou um arquivo "tfs", agora use o comando a seguir para mover o TFS para a pasta do servidor e voltar para a pasta anterior.
      mv tfs .. && cd .. Ficando assim na pasta "otserv": 

       
      PASSO 2 - IMPORTANDO DATABASE E AJUSTANDO CONEXÃO PELO CONFIG.LUA
       
      Entre em seu phpmyadmin pelo navegador (IP/phpmyadmin, ou o outro destino que você escolheu conforme o tópico de instalação do phpmyadmin) 

      Depois clique em "novo" para criar um novo banco de dados:
       
       
      E depois de digitar o nome do novo banco de dados, clique em "criar": 

       
      Agora clique em "IMPORTAR" e depois em "escolher arquivo":

      E então selecione o arquivo padrão de database. Se você não tiver um arquivo padrão, use a do TFS: https://raw.githubusercontent.com/otland/forgottenserver/master/schema.sql
       
      E por fim, clique em EXECUTAR.

       
       
      No arquivo config.lua.dist você deve ajustar o dados para a conexão com o banco de dados: 
       
      -- MySQL mysqlHost = "127.0.0.1" mysqlUser = "forgottenserver" mysqlPass = "" mysqlDatabase = "forgottenserver" mysqlPort = 3306 mysqlSock = ""  
      (você pode incluir o caminho do mysqlSock para mysqlSock = "/var/run/mysqld/mysqld.sock"
       
      PASSO 3 - LIGANDO SEU SERVIDOR TFS NO UBUNTU E CRIANDO ARQUIVO AUTO RESTART
       
      Para prosseguirmos será necessária a instalação do SCREEN em sua máquina, veja o tutorial que explica o que ele é, para que server e ensina instala-lo: AQUI.
       
      Após a instalação, vamos criar um SCREEN para rodar o servidor chamada TFS ... 
      screen -S TFS  
      E após, usando o WinSCP, vá até a pasta do seu servidor em /home/otserv/ e crie um arquivo chamado "restart.sh" e coloque isso dentro dele:
      #!/bin/bash # to get 'ts' command: sudo apt install moreutils # to get 'crc32' command: sudo apt install libarchive-zip-perl BINARY_NAME=tfs MYSQL_USER=xxxx MYSQL_PASS=yyyy MYSQL_DATABASE=zzzz mkdir console mkdir crashlog mkdir mysql_backup # Permitir despejos de nucleo ulimit -c unlimited # Laco principal while true; do     # Backup do banco de dados, e o melhor momento para fazer a copia do banco de dados, o OTS esta offline com certeza, entao nao pode haver nenhum clone de item.     mysqldump -u $MYSQL_USER -p$MYSQL_PASS $MYSQL_DATABASE > mysql_backup/`date '+%Y-%m-%d_%H-%M'`.sql     # Compactar em gzip com mais de 3 dias.     find console/ -name "*.log" -mtime +3 -print -exec gzip -f {} \;     find crashlog/ -name "*.bin" -mtime +3  -print -exec gzip -f {} \;     find crashlog/ -name "*.core" -mtime +3  -print -exec gzip -f {} \;     find mysql_backup/ -name "*.sql" -mtime +3  -print -exec gzip -f {} \;     BINARY_WITH_HASH=`date '+%Y-%m-%d_%H-%M'`_`crc32 $BINARY_NAME`     # copie o arquivo binário atual, você precisa do binário desde o momento da falha para executá-lo no gdb.     cp $BINARY_NAME crashlog/$BINARY_WITH_HASH.bin     # iniciar servidor     # se o seu servidor já imprime a data com cada linha no console, você pode remover "| ts '%Y-%m-%d_%H-%M-%.S'"     stdbuf -o 0 ./$BINARY_NAME 2>&1 | ts '%Y-%m-%d_%H-%M-%.S' | tee 'console.log'     cat 'console.log' >> 'console/console_'`date '+%Y-%m-%d'`'.log';     mv core crashlog/$BINARY_WITH_HASH.core     echo INICIAR A ESPERA POR 3 SEGUNDOS, PRESSIONE CTRL+C PARA DESLIGAR O RESTARTER     sleep 3     echo FIM DA ESPERA done  
      Em seguida, dar permissão ao arquivo "restart,sh" com o comando: 
      sudo chmod 777 -R restart.sh  
      Logo, instale os programas necessários para o restart funcionar corretamente:
      sudo apt install moreutils sudo apt install libarchive-zip-perl Posterior, configure o restart.sh com os dados corretos para a conexão SQL: troque onde esta xxxx, zzzz, yyyy

      Para o restarter criar o arquivo core é necessário desativar o serviço apport no sistema com o comando:
      sudo systemctl stop apport.service sudo systemctl disable apport.service Depois de desativar, use o comando a seguir para ver se está ativo o core, você terá que ter como resposta: core
      cat /proc/sys/kernel/core_pattern  
      E por fim, iniciar o uso do arquivo "restart.sh" com o comando:
      ./restart.sh  
      A princípio é isso!
       
      Siga as atualizações no tópico principal: "Tutorial completo de infraestrutura para montar um servidor TFS 1.x no Ubuntu 22.04" ... 
       
       
      Fontes: 
      - https://github.com/otland/forgottenserver/wiki/Compiling-on-Ubuntu
       
       
       
       
       
    • Por Underewar
      Precisei dessa função e não achei em lugar nem um aqui está uma versão funcional para tfs 1.2 +.
      Listando o monstro ou player que o jogador morreu.

      Data/Creaturescript/XML
      <event type="login" name="LoginDeath" script="death_tp.lua" /> <event type="preparedeath" name="DeathTeleport" script="death_tp.lua"/> Data/Creaturescript/death_tp.lua
      function onLogin(player) player:registerEvent("DeathTeleport") return true end local maxDeathRecords = 5 -- By Underewar function onPrepareDeath(player, killer) -- Update Death DB local byPlayer = 0 local killerName if killer ~= nil then if killer:isPlayer() then byPlayer = 1 else local master = killer:getMaster() if master and master ~= killer and master:isPlayer() then killer = master byPlayer = 1 end end killerName = killer:getName() else killerName = "field item" end local byPlayerMostDamage = 0 local mostDamageKillerName if mostDamageKiller ~= nil then if mostDamageKiller:isPlayer() then byPlayerMostDamage = 1 else local master = mostDamageKiller:getMaster() if master and master ~= mostDamageKiller and master:isPlayer() then mostDamageKiller = master byPlayerMostDamage = 1 end end mostDamageName = mostDamageKiller:getName() else mostDamageName = "field item" end local playerGuid = player:getGuid() db.query("INSERT INTO `player_deaths` (`player_id`, `time`, `level`, `killed_by`, `is_player`, `mostdamage_by`, `mostdamage_is_player`, `unjustified`, `mostdamage_unjustified`) VALUES (" .. playerGuid .. ", " .. os.time() .. ", " .. player:getLevel() .. ", " .. db.escapeString(killerName) .. ", " .. byPlayer .. ", " .. db.escapeString(mostDamageName) .. ", " .. byPlayerMostDamage .. ", " .. (unjustified and 1 or 0) .. ", " .. (mostDamageUnjustified and 1 or 0) .. ")") local resultId = db.storeQuery("SELECT `player_id` FROM `player_deaths` WHERE `player_id` = " .. playerGuid) local deathRecords = 0 local tmpResultId = resultId while tmpResultId ~= false do tmpResultId = result.next(resultId) deathRecords = deathRecords + 1 end if resultId ~= false then result.free(resultId) end local limit = deathRecords - maxDeathRecords if limit > 0 then db.asyncQuery("DELETE FROM `player_deaths` WHERE `player_id` = " .. playerGuid .. " ORDER BY `time` LIMIT " .. limit) end if byPlayer == 1 then local targetGuild = player:getGuild() targetGuild = targetGuild and targetGuild:getId() or 0 if targetGuild ~= 0 then local killerGuild = killer:getGuild() killerGuild = killerGuild and killerGuild:getId() or 0 if killerGuild ~= 0 and targetGuild ~= killerGuild and isInWar(playerId, killer:getId()) then local warId = false resultId = db.storeQuery("SELECT `id` FROM `guild_wars` WHERE `status` = 1 AND ((`guild1` = " .. killerGuild .. " AND `guild2` = " .. targetGuild .. ") OR (`guild1` = " .. targetGuild .. " AND `guild2` = " .. killerGuild .. "))") if resultId ~= false then warId = result.getDataInt(resultId, "id") result.free(resultId) end if warId ~= false then db.asyncQuery("INSERT INTO `guildwar_kills` (`killer`, `target`, `killerguild`, `targetguild`, `time`, `warid`) VALUES (" .. db.escapeString(killerName) .. ", " .. db.escapeString(player:getName()) .. ", " .. killerGuild .. ", " .. targetGuild .. ", " .. os.time() .. ", " .. warId .. ")") end end end end -- teleportando o player para o templo player:teleportTo(player:getTown():getTemplePosition()) -- enchenco life e mana player:addHealth(player:getMaxHealth()) player:addMana(player:getMaxMana()) -- Remove EXP local level = player:getLevel() player:removeExperience(level * 10 * 100, true) -- DEATH MSG player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You are dead.") -- criando efeito de teleport player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return false end  
    • Por amoxicilina
      Olá Kings, venho aqui trazer uma TalkAction pra você comprar premium account, sei que pode ser algo meio inútil por existir a store.
      Então vamos script:
       
       
    • Por Mask Ghoul
      Olá Tibiaking
      Hoje vim trazer como aumentar Efeitos / Missile na source TFS e OTX 1.3 Utilize 8.60 OLDCLIENT estendida unit16
      então resolvi eu mesmo mexer e consegui achar e estou trazendo para vocês!

      Esse Tópico é especifico para TFS E OTX 1.3, para que assim você possa aumentar o limite de efeitos no Client, e usar mais de 2k efeitos, e mais de 500 efeitos em Distância.  Vale lembra também que você não é obrigado a mudar em ambos, se você quiser apenas aumentar o Limite de Efeitos para mais de 2k, então mude apenas ele, caso queria aumentar apenas os Efeitos que são lançados a distância(ShootEffects ou DistanceEffect), caso queria os dois, use ambos. 
       
      Vamos começar em Magic Effects e DistanceShoot:
       
      Boa sorte vcs ?
      Recompila Source LINUX / Windows TFS E OTX 1.3

       
      Então é isso ae, qualquer erro só comentar para que eu possar tentar ajudar.
       
      Tópico exclusivo do Tibaking, proibido posta em outro site, blog ou fórum! 
    • Por Erimyth
      Este script funciona perfeitamente qual quer problema comente no topico.
      basta ser adicionado em action.xml com um action e adicionado ao mapa.
      local t = { players = { -- posições que os players devem ficar ao puxar a alavanca [1] = Position(33395,32661,6), [2] = Position(33394,32662,6), [3] = Position(33395,32662,6), [4] = Position(33395,32663,6), [5] = Position(33396,32662,6) }, boss = {name = "Scarlett Etzel", create_pos = Position(33396,32642,6)}, destination = Position(33395,32656,6), -- posição para qual os players serão teleportados cooldown = {0, "sec"}, -- tempo para ser teleportado novamente. Ex.: {2, "sec"}, {5, "min"}, {10, "hour"}, {3, "day"} storage = 56482 -- storage não utilizado no seu servidor } function onUse(player, item, fromPosition, target, toPosition, isHotkey) local players, tab = {}, t.players for i = 1, #tab do local tile = Tile(tab) if tile then local p = Player(tile:getTopCreature()) if p then if p:getStorageValue(t.storage) <= os.time() then players[#players + 1] = p:getId() end end end end if #players == 0 then player:sendCancelMessage("One or all players did not wait " .. getStrTime(t.cooldown) .. " to go again.") return true end for i = 1, #tab do local playerTile = Tile(tab) local playerToGo = Player(playerTile:getTopCreature()) if playerToGo then if isInArray(players, playerToGo:getId()) then playerToGo:setStorageValue(t.storage, mathtime(t.cooldown) + os.time()) playerTile:relocateTo(t.destination) tab:sendMagicEffect(CONST_ME_POFF) end end end t.destination:sendMagicEffect(CONST_ME_TELEPORT) Game.createMonster(t.boss.name, t.boss.create_pos) item:transform(item.itemid == 36319 or 1946 or 1945) return true end local boss_room = {fromPos = Position(33386, 32639, 6), toPos = Position(33405, 32659, 6)} local bossplayer = Player(cid) local exit = Position(33395, 32659, 6) if bossplayer and isInRange(bossplayer:getPosition(), boss_room.fromPos, boss_room.toPos) then bossplayer:teleportTo(exit) end function mathtime(table) -- by dwarfer local unit = {"sec", "min", "hour", "day"} for i, v in pairs(unit) do if v == table[2] then return table[1](60^(v == unit[4] and 2 or i-1))(v == unit[4] and 24 or 1) end end return error("Bad declaration in mathtime function.") end function getStrTime(table) -- by dwarfer local unit = {["sec"] = "second",["min"] = "minute",["hour"] = "hour",["day"] = "day"} return tostring(table[1].." "..unit[table[2]]..(table[1] > 1 and "s" or "")) end
      ? Crédito total ao Desenvolvedor que disponibilizou para toda nossa comunidade: @Underewar
      Obrigado pela Contribuição!
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo