Belo script dokmos !
Testei no meu ot 8.54 e funcionou perfeitamente.
Concerteza trará mais dinamismo aos ots de hoje.
Por Dokmos, 20 de mar. de 2010 em Globalevents e Spells
Belo script dokmos !
Testei no meu ot 8.54 e funcionou perfeitamente.
Concerteza trará mais dinamismo aos ots de hoje.
info
Grupo: Visconde
Registrado: 20/08/06
Posts: 250
Reputação: +146

Achei muito bom também.
Você faz uns scripts interessantes.
O Dinastias ainda esta vivo?
A comunidade lá não tem mais o fórum ![]()
info
Grupo: Conde
Registrado: 30/01/10
Posts: 706
Reputação: +125
Gênero: Masculino
Char no Tibia: Bakwin

Funciona Em 8.5?
info
Grupo: Campones
Registrado: 29/11/07
Posts: 81
Reputação: +4
Char no Tibia: Dokmos

@DevilMoon
Sim, ele funciona nas versões mais recentes!
@Kydrai
Eu estou recrutando uma equipe para o projeto. Em breve postarei atualizações.
Agradeço os comentários e postem qualquer dúvida de instalação que tiverem...
Editado Março 21 por Dokmos
eu nao conseguir fazer olha soh a minha script no caso eu coloquei hero:
--------------------Configuração--------------------
SLEEP_RANGE = 5
SLEEP_PERCENT = 0.3
MONSTERS_NAME = {"hero", "globin"}
MONSTERS_CORPSE = {6080, 6002}
ZONE_MONSTERS = {
{x = 154, y = 108, z = 9, range = 20},
{x = 92, y = 129, z = 8, range = 8},
}
----------------------------------------------------
SIGNAL = {{1, 1}, {1, -1}, {-1, 1}, {-1, -1}}
----------------------------------------------------
-- Função checkPlayers(pos)
-- Verifica se existem jogadores próximos as criaturas.
local function checkPlayers(pos)
for i = 0, SLEEP_RANGE do
for j = 0, SLEEP_RANGE do
for k = 1, 4 do
local PPos = {x = pos.x + (i*SIGNAL[k][1]), y = pos.y + (j*SIGNAL[k][2]), z = pos.z}
local Player = getTopCreature(PPos).uid
if isPlayer(Player) then
return TRUE
end
end
end
end
return FALSE
end
-- Função getMonsterByZone()
-- Checagem de monstros da zona pré-definida no começo do script.
local function getMonsterByZone()
local Zone = ZONE_MONSTERS
local Monsters = {}
for i = 1, #Zone do
for j = 0, Zone.range do
for k = 0, Zone.range do
for l = 1, 4 do
local MPos = {x = Zone.x + (j*SIGNAL[l][1]), y = Zone.y + (k*SIGNAL[l][2]), z = Zone.z}
local Monster = getTopCreature(MPos).uid
if isMonster(Monster) then
local Name = string.lower(getCreatureName(Monster))
local NPos = table.find(MONSTERS_NAME, Name)
local Check = checkPlayers(MPos)
if not Check and NPos ~= nil then
table.insert(Monsters, {Monster, MONSTERS_CORPSE[NPos]})
end
end
end
end
end
end
return Monsters
end
-- Função onSleep(monster, pos, corpse, speed, time)
-- Regula o estado do monstro, quer seja dormindo, quer seja para acordar.
local function onSleep(monster, pos, corpse, speed, time)
if isMonster(monster) then
local Check = checkPlayers(pos)
if not Check and (time > 0) then
doSendMagicEffect(pos, 32)
doSetItemOutfit(monster, corpse, 2000)
addEvent(onSleep, 2000, monster, pos, corpse, speed, (time - 2))
else
doSendMagicEffect(pos, 13)
doChangeSpeed(monster, speed)
end
end
end
-- Função onThink(interval, lastExecution)
-- Função principal que executa as demais funções e ações do script.
function onThink(interval, lastExecution)
local Monsters = getMonsterByZone()
if #Monsters ~= 0 then
for i = 1, math.floor(#Monsters*SLEEP_PERCENT) do
local r = math.random(#Monsters)
if isMonster(Monsters[r][1]) then
local MPos = getCreaturePosition(Monsters[r][1])
local Speed = getCreatureSpeed(Monsters[r][1])
doChangeSpeed(Monsters[r][1], -Speed)
onSleep(Monsters[r][1], MPos, Monsters[r][2], Speed, interval-10)
table.remove(Monsters, r)
end
end
end
return TRUE
end
algo no script está errado?
eu só adc tudo em globalevents\scrits
e em globalevents.XML
Servidor 8.54 eu uso
Editado Março 21 por Critico
info
Grupo: Campones
Registrado: 29/11/07
Posts: 81
Reputação: +4
Char no Tibia: Dokmos

eu nao conseguir fazer olha soh a minha script no caso eu coloquei hero:
algo no script está errado?
Servidor 8.54 eu uso
Critico,
<globalevent name="sleep" interval="300" event="script" value="sleeping.lua"/>
Como você está configurado para o evento repetir a cada 300 segundos (5 minutos).
1) Certifique-se que colocou a posição exata de onde estão os Heros.
2) O SLEEP_RANGE está 5, logo você precisa estar distante mais de 5 sqm para que eles durmam.
3) É necessário ter uma certa quantidade de Hero (acima de 3), pois está configurado para pegar 30% em SLEEP_PERCENT.
Caso não funcione poste de novo aqui.
ainda nao funcionou..
eu coloquei até o percent assim:
SLEEP_PERCENT = 0.9
e ainda nao deu certo...
oque seria? ![]()
--------------------------------edited-----
agr funfou certinho!
Obrigado abraços
Editado Março 21 por Critico
info
Grupo: Campones
Registrado: 29/11/07
Posts: 81
Reputação: +4
Char no Tibia: Dokmos

ainda nao funcionou..
eu coloquei até o percent assim:
SLEEP_PERCENT = 0.9
e ainda nao deu certo...
oque seria?
--------------------------------edited-----
agr funfou certinho!
Obrigado abraços
Como configurado em globalevents.xml, o tempo é de 300 segundos, por isso a primeira execução ocorrerá apenas após 5 minutos. Acho que foi esse o 'problema'.
Editado Março 21 por Dokmos
info
Grupo: Artesão
Registrado: 02/12/06
Posts: 149
Reputação: +3
Char no Tibia: Kanye Rusty

Parabéns Dokmos,
Vejo que possui uma boa criatividade, espero ver outros tópicos bons como este de você.
Abraços
info
Grupo: Campones
Registrado: 02/08/10
Posts: 9
Reputação: 0
Char no Tibia: Vivi knightzinha

Manin achei legal isso ai eu arrumei e fiz tudo mas nao deu muito certo nao me ajuda ai acho q fiz algo de errado mais aki nao disse erro nenhum a e eu mudei os bichos q iriam durmi mais so mudei os nomes os corpos tem alguma coisa a ver com isso ?
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

@UP
tem que mudar tbm o local onde os monstros estão
se configura aqui:
ZONE_MONSTERS = {
{x = 94, y = 126, z = 7, range = 20},
{x = 92, y = 129, z = 8, range = 8},
}
info
Grupo: Conde
Registrado: 18/12/05
Posts: 912
Reputação: +86
Gênero: Masculino
Char no Tibia: Kohzete

Boa criatividade.
Me faz lembrar sword and sandals KKK
Daria para fazer umas quests legais, n deixando cara aproximar do bixo e coisas do tipo
Parabens !
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

hoho dokmos
procurei esse script hoje (:
info
Grupo: Barão
Registrado: 24/02/10
Posts: 204
Reputação: +14
Char no Tibia: Krewcz

Vodkart, isto não é contra as regras reviver tópicos? (Desculpa se sou grosseiro, mais não lembro muito as regras)
info
Grupo: Campones
Registrado: 29/11/07
Posts: 81
Reputação: +4
Char no Tibia: Dokmos
Monster Sleeping
Desenvolvido por Dokmos
Testado em TFS 8.4+
Funciomaneto
O script foi desenvolvido para simular uma espécie de soneca que os monstros podem tirar durante o jogo. Para que isso ocorra, existem zonas específicas configuradas no script e nome dos monstros que poderão tirar soneca. A soneca só ocorrerá se não houverem jogadores por perto dentro de uma distância mínima definida em SLEEP_RANGE.
Caso um monstro esteja dormindo e um jogador se aproximar, ele irá imediatamente acordar e, dependendo do monstro, atacar o jogador.
Portanto, esse script proporciona um mundo mais dinâmico e real ao mundo Open-Tibia Servers. Divirtam-se!
Configuração
A explicação detalhada do funcionamento e configuração do script estão dentro dele! Qualquer dúvida ou problema postem aqui.
Script
--[[-----------------Créditos--------------------- Idealizado por Ramza (Rick / Ricardo Ianelli). Desenvolvido por Dokmos (Bruno Braz). Data: 19 de Março de 2010. -----------------Funcão do Script----------------- O script foi desenvolvido para simular uma espécie de soneca que os monstros podem tirar durante o jogo. Para que isso ocorra, existem zonas específicas configuradas no script e nome dos monstros que poderão tirar soneca. A soneca só ocorrerá se não houverem jogadores por perto dentro de uma distância mínima definida em SLEEP_RANGE. Caso um monstro esteja dormindo e um jogador se aproximar, ele irá imediatamente acordar e, dependendo do monstro, atacar o jogador. Portanto, esse script proporciona um mundo mais dinâmico e real ao mundo Open-Tibia Servers. Divirtam-se! --------------Configuração do Script-------------- SLEEP_RANGE: (Recomendável - 5) Declaração da expansão de área que irá verificar se há jogador perto de um monstro dormindo para acordá-lo. Ou seja, quanto maior ele for, as criaturas acordarão com a presença de outros jogadores mais distantes. SLEEP_PERCENT: (Recomendável - 0.3) Porcentagem de monstros dentro da zona que irão tirar soneca. Ex.: 0.4 Corresponde a 40%. Condição.: 0 < SLEEP_PERCENT <= 1. MONSTERS_NAME: (Facultativo a Alteração) Tabela com o nome dos monstros que podem tirar soneca. ATENÇÃO! Os nomes dos monstros deverão obrigatoriamente estar com letras minúsculas. MONSTERS_CORPSE: (Facultativo a Alteração) Tabela com o id dos corpos dos monstros que serão apresentados como se estivessem "dormindo". Obs.: A posição do id deve ser correspondente à posição do nome do monstro em MONSTERS_NAME. Para verificar qual é o id, basta ir no diretório de monstros e abrir o arquivo .xml do monstro desejado e pegar o valor de "corpse". ZONE_MONTERS: (Obrigatório a Alteração) Armazenará tabelas para criação de zonas, onde as criaturas dentro da zona poderão tirar uma soneca aleatoriamente. A lógica dessa variável é armazenar posições centrais de zonas e a extensão das mesmas. Seguindo o padrão apresentado a seguir: {Posição X do Centro da Zona (CZ), Posição Y do CZ, Posição Z do CZ, Expansão (em sqm) da Zona} Ex.: {x = 100, y = 200, z = 7, range = 5} Neste caso, irá criar uma zona ao redor da posição x = 100, y = 200, z = 7, de expansão 5 para todas direção (norte, leste, sul e oeste). SIGNAL: (Não Alterar) É uma tabela que contém valores que serão utilizados para alterar o sinal das variáveis, a fim de checar todas posições possíveis. ---------------------------------------------------]] --------------------Configuração-------------------- SLEEP_RANGE = 5 SLEEP_PERCENT = 0.3 MONSTERS_NAME = {"bat", "globin"} MONSTERS_CORPSE = {6053, 6002} ZONE_MONSTERS = { {x = 94, y = 126, z = 7, range = 20}, {x = 92, y = 129, z = 8, range = 8}, } ---------------------------------------------------- SIGNAL = {{1, 1}, {1, -1}, {-1, 1}, {-1, -1}} ---------------------------------------------------- -- Função checkPlayers(pos) -- Verifica se existem jogadores próximos as criaturas. local function checkPlayers(pos) for i = 0, SLEEP_RANGE do for j = 0, SLEEP_RANGE do for k = 1, 4 do local PPos = {x = pos.x + (i*SIGNAL[k][1]), y = pos.y + (j*SIGNAL[k][2]), z = pos.z} local Player = getTopCreature(PPos).uid if isPlayer(Player) then return TRUE end end end end return FALSE end -- Função getMonsterByZone() -- Checagem de monstros da zona pré-definida no começo do script. local function getMonsterByZone() local Zone = ZONE_MONSTERS local Monsters = {} for i = 1, #Zone do for j = 0, Zone[i].range do for k = 0, Zone[i].range do for l = 1, 4 do local MPos = {x = Zone[i].x + (j*SIGNAL[l][1]), y = Zone[i].y + (k*SIGNAL[l][2]), z = Zone[i].z} local Monster = getTopCreature(MPos).uid if isMonster(Monster) then local Name = string.lower(getCreatureName(Monster)) local NPos = table.find(MONSTERS_NAME, Name) local Check = checkPlayers(MPos) if not Check and NPos ~= nil then table.insert(Monsters, {Monster, MONSTERS_CORPSE[NPos]}) end end end end end end return Monsters end -- Função onSleep(monster, pos, corpse, speed, time) -- Regula o estado do monstro, quer seja dormindo, quer seja para acordar. local function onSleep(monster, pos, corpse, speed, time) if isMonster(monster) then local Check = checkPlayers(pos) if not Check and (time > 0) then doSendMagicEffect(pos, 32) doSetItemOutfit(monster, corpse, 2000) addEvent(onSleep, 2000, monster, pos, corpse, speed, (time - 2)) else doSendMagicEffect(pos, 13) doChangeSpeed(monster, speed) end end end -- Função onThink(interval, lastExecution) -- Função principal que executa as demais funções e ações do script. function onThink(interval, lastExecution) local Monsters = getMonsterByZone() if #Monsters ~= 0 then for i = 1, math.floor(#Monsters*SLEEP_PERCENT) do local r = math.random(#Monsters) if isMonster(Monsters[r][1]) then local MPos = getCreaturePosition(Monsters[r][1]) local Speed = getCreatureSpeed(Monsters[r][1]) doChangeSpeed(Monsters[r][1], -Speed) onSleep(Monsters[r][1], MPos, Monsters[r][2], Speed, interval-10) table.remove(Monsters, r) end end end return TRUE endEm data/glovalevents/globalevents.xml
Imagem
Bom isso é tudo, qualquer dúvida postem aqui. Divirtam-se!
Obs.: Vocês vão perceber que configurei apenas dois monstros para dormirem, gostaria que alguém pudesse disponibilizar uma lista mais completa para eu atualizar o tópico!
Atenciosamente,
Dokmos
Editado Março 20 por Dokmos