falta a função getplayersinarea.
- Fórum
- OTServ
- Suporte
- Tópicos Sem Resposta
- [Encerrado] Pf ajuda ?
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

como eu aplico getplayersinarea no script não manjo faze script :X
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

8 minutos atrás, igordutra disse:como eu aplico getplayersinarea no script não manjo faze script :X
Onde tu pegou esses scripts? lá deveria ter.
Eu baixei de um servidor de baiak mais veio sem as sources ai fui pegando oque eu achei no rme so que falto essa parada ai e eu não achei e nem sei como colocar :c
ele ta funcionando direito so que em vez de iniciar o evento ele ja fecha logo de começo.
Editado Agosto 18 por igordutra
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Se tu ainda tiver o servidor, busca na pasta lib algum arquivo relacionado a functions; pode ser que esteja nele.
Não sei se vai servir a teu proposito, mas tenta usar esse aqui:
function getCreaturesInRange(position, radiusx, radiusy, showMonsters, showPlayers) local creaturesList,radiusx,radiusy = {},radiusx or 0,radiusy or 0 for x = -radiusx, radiusx do for y = -radiusy, radiusy do local creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z, stackpos = STACKPOS_TOP_CREATURE}) if (creature.type == 1 and showPlayers == true) or (creature.type == 2 and showMonsters == true) then table.insert(creaturesList, creature.uid) end end end return creaturesListend
lembrando que tu vai ter que fazer as devidas adaptações de parâmetros.
é isso daqui ?
realCastle = {
open_storage = 722374,
guild_storage = 722375,
date_storages = {722376,722377,722378},
open_days = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Wednesday","Saturday"},
frompos = {x = 194, y = 393, z = 7},
topos = {x = 167, y = 50, z = 8}
}
realCastle.removePlayers = function()
local first_cave = getPlayersInArea({x = 2079, y = 1332, z = 6},{x = 2111, y = 1314, z = 3})
local second_cave = getPlayersInArea({x = 1995, y = 1307, z = 7},{x = 2014, y = 1328, z = 7})
local third_cave = getPlayersInArea({x = 2069, y = 1277, z = 7},{x = 2119, y = 1328, z = 7})
local fourth_cave = getPlayersInArea({x = 2172, y = 1286, z = 7},{x = 2226, y = 1312, z = 7})
local fifith_cave = getPlayersInArea({x = 1527, y = 1388, z = 7},{x = 1539, y = 1448, z = 7})
local sixth_cave = getPlayersInArea({x = 1606, y = 1392, z = 7},{x = 1645, y = 1453, z = 7})
local area7 = getPlayersInArea({x = 1736, y = 1385, z = 6}, {x = 1778, y = 1437, z = 6})
local area8 = getPlayersInArea({x = 1714, y = 1293, z = 7}, {x = 1704, y = 1353, z = 7})
local area9 = getPlayersInArea({x = 1792, y = 1310, z = 7}, {x = 1806, y = 1362, z = 7})
local area10 = getPlayersInArea({x = 1682, y = 1208, z = 7}, {x = 1687, y = 1257, z = 7})
local area11 = getPlayersInArea({x = 1766, y = 1205, z = 7}, {x = 1836, y = 1271, z = 7})
local area12 = getPlayersInArea({x = 1907, y = 1293, z = 7}, {x = 1920, y = 1365, z = 7})
local area13 = getPlayersInArea({x = 1834, y = 1383, z = 7}, {x = 1805, y = 1449, z = 7})
local area14 = getPlayersInArea({x = 1911, y = 1387, z = 7}, {x = 1920, y = 1459, z = 7})
local area15 = getPlayersInArea({x = 2013, y = 1094, z = 7}, {x = 2016, y = 1205, z = 7})
local area16 = getPlayersInArea({x = 2278, y = 1186, z = 7}, {x = 2339, y = 1293, z = 7})
local area17 = getPlayersInArea({x = 2223, y = 1227, z = 6}, {x = 2253, y = 1198, z = 5})
local area18 = getPlayersInArea({x = 1910, y = 1471, z = 6}, {x = 1878, y = 1404, z = 6})
local castle_area = getPlayersInArea(realCastle.frompos,realCastle.topos)
if first_cave then
for _, pid in pairs(first_cave) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if second_cave then
for _, pid in pairs(second_cave) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if third_cave then
for _, pid in pairs(third_cave) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if fourth_cave then
for _, pid in pairs(fourth_cave) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
for _, tid in pairs(getPlayersOnline()) do
local pos = getThingPos(tid)
if pos.x >= 2288 and pos.x <= 2364 and pos.y >= 433 and pos.y <= 509 then
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(tid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
for _, tid in pairs(getPlayersOnline()) do
local pos = getThingPos(tid)
if pos.x >= 2148 and pos.x <= 2189 and pos.y >= 641 and pos.y <= 679 then
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(tid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
for _, tid in pairs(getPlayersOnline()) do
local pos = getThingPos(tid)
if pos.x >= 2229 and pos.x <= 622 and pos.y >= 2320 and pos.y <= 704 then
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(tid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if fifith_cave then
for _, pid in pairs(fifith_cave) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if sixth_cave then
for _, pid in pairs(sixth_cave) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if area10 then
for _, pid in pairs(area10) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if area11 then
for _, pid in pairs(area11) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if area12 then
for _, pid in pairs(area12) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if area13 then
for _, pid in pairs(area13) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if area14 then
for _, pid in pairs(area14) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if area15 then
for _, pid in pairs(area15) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if area16 then
for _, pid in pairs(area16) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if area17 then
for _, pid in pairs(area17) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if area18 then
for _, pid in pairs(area18) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
if castle_area then
for _, pid in pairs(castle_area) do
doTeleportThing(pid,getTownTemplePosition(1))
doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.")
end
end
end
realCastle.open = function()
setGlobalStorageValue(realCastle.open_storage,1)
setGlobalStorageValue(realCastle.guild_storage,-1)
realCastle.removePlayers()
end
realCastle.release = function()
setGlobalStorageValue(realCastle.guild_storage,-1)
realCastle.removePlayers()
end
realCastle.close = function()
setGlobalStorageValue(realCastle.open_storage,-1)
local tomorrow = getTomorrowsDate(getTomorrowsDate()[1])
for i = 1,3 do
setGlobalStorageValue(realCastle.date_storages,tomorrow)
end
local players = getPlayersInArea(realCastle.frompos, realCastle.topos)
if players then
for _, pid in pairs(players) do
doTeleportThing(pid,getTownTemplePosition(1))
end
end
if getGlobalStorageValue(realCastle.guild_storage) == -1 then
doBroadcastMessage("[Real Castle] A batalha terminou e nenhuma guild conseguiu dominar o castelo! Amanhã às 19:00 vocês podem tentar novamente!")
else
doBroadcastMessage("[Real Castle] A batalha terminou e a guild vencedora foi "..getGuildNameByID(getGlobalStorageValue(realCastle.guild_storage)).."! Todos os jogadores dessa guild agora podem aproveitar o castelo até amanhâ às 19:00!")
end
doSaveServer()
end
realCastle.broadcast = function(message)
local players = getPlayersInArea(realCastle.frompos, realCastle.topos)
if players then
for _, pid in pairs(players) do
doPlayerSendTextMessage(pid,MESSAGE_STATUS_WARNING,message)
end
end
end
realCastle.domain = function(cid)
local guild_id = getPlayerGuildId(cid)
setGlobalStorageValue(realCastle.guild_storage,guild_id)
realCastle.broadcast("[Real Castle] O jogador "..getPlayerName(cid).." da guild "..getPlayerGuildName(cid).." dominou o castelo! As outras guilds têm até às 20:00 para conseguir tirar o domínio deles, não desistam!")
end
realCastle.isDominating = function(cid)
local guild_id = getPlayerGuildId(cid)
return guild_id == getGlobalStorageValue(realCastle.guild_storage)
end
realCastle.isOpen = function()
return getGlobalStorageValue(realCastle.open_storage) == 1
end
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

adiciona essa função a seu servidor.
function getPlayersInArea(frompos,topos) --[[( Marcryzius )]]--local players = {} for X = frompos.x,topos.x do for Y = frompos.y,topos.y do local get = getThingfromPos({x=X,y=Y,z=topos.z, stackpos=253}) if(get and isPlayer(get.uid))then table.insert(players,get.uid) end end end return playersend
onde eu coloco ela tentei faze umas gambiarra e aqui e não deu começo da um monte de error e derrubava o servidor ![]()
2 horas atrás, igordutra disse:onde eu coloco ela tentei faze umas gambiarra e aqui e não deu começo da um monte de error e derrubava o servidor
Poem o codigo que do @Poccnn no arquivo 050-function ou crie um arquivo .lua na pasta data/lib
(o arquivo 050-function fica localizado na mesma pasta lib)
Coloquei e agora deu esse error 
Eu tinha colocado no function e tinha dado esse error antes ai criei uma nova lua na lib e deu o mesmo error :x
Eu copiei os script desse server http://www.mediafire.com/file/q9m75ovnk7h6g9q/otserv.zip
Editado Agosto 19 por igordutra
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

3 horas atrás, igordutra disse:Coloquei e agora deu esse error
![]()
Eu tinha colocado no function e tinha dado esse error antes ai criei uma nova lua na lib e deu o mesmo error :x
Eu copiei os script desse server http://www.mediafire.com/file/q9m75ovnk7h6g9q/otserv.zip
Deixe o script dentro do arquivo function.
Esse erro se deu por não existir o tile. Verifique as posições se estão corretas; quando digo corretas, digo na posição certa e onde exista tiles.
info
Grupo: Herói
Registrado: 28/11/10
Posts: 3.4k
Reputação: +585
Gênero: Masculino






info
Grupo: Campones
Registrado: 14/08/10
Posts: 9
Reputação: 0
Char no Tibia: Virgox
Olá eu estou com um problema em um script que peguei de outro servidor coloquei tudo eu acho quando ele tenta iniciar o evento ele apenas Fecha não Inicia
da esse seguinte erro
uso TFs4 8.60
realcastle.lua:
local function announce(message, times)
if times == 0 then return true end
doBroadcastMessage(message)
addEvent(announce,5*60000,message,times - 1)
end
--[[function onTime()
if not realCastle.isOpen() then
announce("[Real Castle] O acesso à área de dominar do castelo está liberado até as 20:00. Boa sorte a todas as guilds!",11)
for i = 1,4 do
addEvent(doBroadcastMessage,60000 * i,"[Real Castle] O acesso à área de dominar do castelo está liberado até as 20:00. Boa sorte a todas as guilds!")
end
realCastle.open()
else
realCastle.close()
end
return true
end]]
function onTime()
if realCastle.isOpen() then
realCastle.close()
else
if isInArray(realCastle.open_days, os.date("%A")) then
announce("[Real Castle] O acesso à área de dominar do castelo está liberado até as 20:00. Boa sorte a todas as guilds!",11)
for i = 1,4 do
addEvent(doBroadcastMessage,60000 * i,"[Real Castle] O acesso à área de dominar do castelo está liberado até as 20:00. Boa sorte a todas as guilds!")
end
realCastle.open()
else
doBroadcastMessage("[Real Castle] O castelo foi fechado para os plebeus poderem prepará-lo para a próxima batalha, que ocorrerá amanhã às 19:00!")
realCastle.release()
end
end
return true
end