Ir para conteúdo
  • Cadastre-se

Posts Recomendados

por enquanto só tem essa versão tosca que eu fiz pra testar o script: http://www.tibiaking.com/forum/topic/47264-gran-castle-event-map/

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

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

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Olá pessoa, hoje vim trazer pra vocês um script bem requisitado que inclusive é vendido por alguns scripters. Algumas versões "pioradas" dessse script podem ser encontradas em servidores cópias do Fox

só um adendo: Eu coloquei aquele mesmo efeito das shurikens que tem no vídeo (pelo que eu soube o fox fez essa atualização recentemente mas eu nunca entrei no server deles pra ver como é e resolvi faz

troca a linha do broadcast por isso aqui:   if getPlayerGuildId(killer) >= 1 and getPlayerGuildName(killer) then         doBroadcastMessage("[Gran Tower] "..getCreatureName(killer).." just de

Posted Images

Agora de primeiro tentativa esta dando esse erro no distro:

 

 

 

[15/12/2014 22:37:16] [Error - Monsters::deserializeSpell] Gran Tower - Unknown spell name: tower

[15/12/2014 22:37:16] [Warning - Monsters::loadMonster] Cant load spell. (data/monster/8.4/Gran Tower.xml)

 

- ALEM DE QUEM ESTIVER COM A AURA NÃO PODE DESLOGAR

e

- COMANDO DE COMEÇA O EVENTO TAMBÉM NÃO ESTA FUNCIONANDO:

 

Como conserto ?

 

- E fora do tema erro, queria sabe se tem como mudar aquele efeito de quem possui a aura para um efeito mais simples, com apenas 1 efeito em baixo dele

( EXP: As estrelinhas /z 31 )

Editado por Unico BR (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Unico BR, o primeiro erro foi porque vc não adicionou a spell tower que é usada no monstro gran tower, sobre estar com a aura e não deslogar é um mecanismo de segurança do evento, dps que ele acaba é possível deslogar sim e o comando de startar o evento é /grantower 1. Que versão é seu server?

Pra alterar o efeito vá em 046- Gran Tower na pasta data/lib e troque a função changeOutfit(uid) por isso daqui:
O 31 ali ja é o efeito que vai sair. 

function changeOutfit(uid) -- arrumado por xWhiteWolf e adicionado a opção da Shuri
 local sec = 0.5   
if getGlobalStorageValue(GRANTOWER.SAVELASTWINNER) ~= getCreatureName(uid) then
	if getGlobalStorageValue(GRANTOWER.SAVEWINNERGUILDID) ~= getPlayerGuildId(uid) then
			return true
	end
end 

if GRANTOWER.SHURIAURA then
 local pos = getCreaturePosition(uid)
	local effectPos = {
	[1] = {x = pos.x - 2, y = pos.y - 2, z = pos.z},
	[2] = {x = pos.x + 2, y = pos.y + 2, z = pos.z}
	}
	for i = 1, #effectPos do
	position = effectPos[i + 1] or effectPos[i - 1]
	doSendDistanceShoot(effectPos[i], position, 18)
	end
end
doSendMagicEffect(getCreaturePosition(cid), 31)
local event = addEvent(function()
	if isCreature(uid) then
		changeOutfit(uid)
	end
 end, 3.0 * sec * 450)
 events[uid] = event 
 return true
end



@CreatServer e @ZwhiteDog, esse efeito já tem no fórum. Você vai precisar da função getPositionsByDirection da minha lib

troque a 046- Gran Tower da lib de vocês por essa daqui:

GRANTOWER = {}
GRANTOWER.PREPARETIME = 2 -- Tempo até liberar a entrada para o evento.
GRANTOWER.CLOSETIME = 10 -- Tempo em minutos de duração do evento.
GRANTOWER.LEVEL = 80 -- Mínimo de level para participar do evento.
GRANTOWER.MAXGUILD = 7 -- Máximo de players por guild dentro do evento.     
GRANTOWER.DATES = {{"Monday", "19:00"}, {"Tuesday", "19:00"}, {"Saturday", "19:00"}, {"Sunday", "22:30"}} -- Dias e horários que ocorrem o evento.
GRANTOWER.ENTER = {x = 245, y = 641, z = 7} -- A posição da entrada do castelo, aonde os players são mandados pelo NPC.
GRANTOWER.TOWERPOSITION = {x = 264, y = 613, z = 6} -- Posição aonde fica o Gran Tower (o monstro).
GRANTOWER.AREA = {{x = 236, y = 587, z = 7}, {x = 283, y = 643, z = 5}} --[[A primeira posição é o canto superior esquerdo do mapa do castelo, e a segunda é o canto direito inferior
OBSERVAÇÃO IMPORTANTE: O script foi modificado por mim (xWhiteWolf) para aguentar diferentes andares, apenas coloque a posição dos cantos e o primeiro até o ultimo andar que ele irá remover todo mundo
em todos os andares quando alguém matar a gran tower, pra remover isso apenas coloque o z do mesmo andar da gran tower e apenas os membros que estão nesse andar serão teleportados,
contudo isso pode ocasionar que pessoas consigam ficar dentro do castelo mesmo após o evento ter sido encerrado!]]
GRANTOWER.AURAPERCENT = 0.8 --- porcentagem do dano que irá levar (0.8 = 80%) significa que ele ignora 20% de dano! (adicionado por xWhiteWolf)
GRANTOWER.SHURIAURA = true --- colocar true/false se quiser ativar/desativar a aura de shurikens pro player que tem a gran aura. (adicionado por xWhiteWolf)


--// Favor não mexer daqui para baixo se não souber oque está fazendo!!!
GRANTOWER.EMPTYWINNER = "# [Nobody] #"
GRANTOWER.PREPARE = 201405051746
GRANTOWER.RUNNING = 201405051747
GRANTOWER.AURA = 201405052018
GRANTOWER.DESTROYCOUNT = 201405051800
GRANTOWER.FINALWINNER = 201405051805
GRANTOWER.SAVELASTWINNER = 201405061333 
GRANTOWER.SAVEWINNERGUILDID = 201405061403

function doPrepareGranTower()
 if ((getGlobalStorageValue(GRANTOWER.PREPARE) ~= 1) and (getGlobalStorageValue(GRANTOWER.RUNNING) ~= 1)) then
  setGlobalStorageValue(GRANTOWER.PREPARE, 1)
  addEvent(doStartGranTower, GRANTOWER.PREPARETIME * 60 * 1000)
  addEvent(doBroadcastMessage, ((GRANTOWER.PREPARETIME / 2) * 60 * 1000), "[Gran Tower] Missing "..tostring((GRANTOWER.PREPARETIME / 2)).." minutes NPC Melkrapo will release the entrance to the event, get ready!")
  doBroadcastMessage("[Gran Tower] The event will be started in "..tostring(GRANTOWER.PREPARETIME).." minutes, please prepare your weapons and your team.")
 else
  print("[Erro] Gran Tower tentou ser iniciado ja ligado, favor verificar o codigo. (Roksas).")
 end
 return true
end

function doStartGranTower()
 if ((getGlobalStorageValue(GRANTOWER.PREPARE) ~= -1) and (getGlobalStorageValue(GRANTOWER.RUNNING) ~= 1)) then
  setGlobalStorageValue(GRANTOWER.RUNNING, 1)
  setGlobalStorageValue(GRANTOWER.PREPARE, -1)
  setGlobalStorageValue(GRANTOWER.SAVEWINNERGUILDID, -1)
  setGlobalStorageValue(GRANTOWER.FINALWINNER, GRANTOWER.EMPTYWINNER)
  setGlobalStorageValue(GRANTOWER.SAVELASTWINNER, GRANTOWER.EMPTYWINNER)
  setGlobalStorageValue(GRANTOWER.DESTROYCOUNT, 0)
  doCreateMonster("Gran Tower", GRANTOWER.TOWERPOSITION)
  addEvent(doBroadcastMessage, ((GRANTOWER.CLOSETIME - 1) * 60 * 1000), "[Gran Tower] The event will be closed in one minute. Hurry up!")
  addEvent(doCloseGranTower, GRANTOWER.CLOSETIME * 60 * 1000)
  doBroadcastMessage("[Gran Tower] Open event! Run to destroy the Gran Tower.")
 else
  print("[Erro] Gran Tower tentou ser iniciado já ligado, favor verificar o código.")
 end
 return true
end

function doCloseGranTower()
 if ((getGlobalStorageValue(GRANTOWER.PREPARE) ~= 1) and (getGlobalStorageValue(GRANTOWER.RUNNING) ~= -1)) then
  for index, creature in ipairs(getGranTowerPlayers()) do
   doTeleportThing(creature, getTownTemplePosition(getPlayerTown(creature)))
  end
  for index, creature in ipairs(getPlayersOnline()) do
   if (getPlayerGuildId(creature) >= 1) then
    if getPlayerGuildId(creature) ~= getGlobalStorageValue(GRANTOWER.SAVEWINNERGUILDID) then
     setPlayerStorageValue(creature, GRANTOWER.AURA, -1)
    end
   end 
  end
  setGlobalStorageValue(GRANTOWER.RUNNING, -1)
  if (getCreatureByName("Gran Tower")) then
   doRemoveCreature(getCreatureByName("Gran Tower"), true)
  end
  local TMP_WINNER = getGlobalStorageValue(GRANTOWER.FINALWINNER)
  doBroadcastMessage("[Gran Tower] The event was completed with "..tostring(getGlobalStorageValue(GRANTOWER.DESTROYCOUNT)).." wrecks to Gran Tower, the final winner was "..(TMP_WINNER)..".")
  setGlobalStorageValue(GRANTOWER.DESTROYCOUNT, -1)
  setGlobalStorageValue(GRANTOWER.SAVELASTWINNER, TMP_WINNER)
  setGlobalStorageValue(GRANTOWER.FINALWINNER, -1)
  local TMP_WINNER = nil
 end
 return true
end

function getGranTowerPlayers() -- xWhiteWolf
local players = {}	
local andares = math.abs(GRANTOWER.AREA[1].z - GRANTOWER.AREA[2].z)
	for index, creature in ipairs(getPlayersOnline()) do		
		local z = 0
		local pos1 = {x = GRANTOWER.AREA[1].x, y = GRANTOWER.AREA[1].y, z = GRANTOWER.AREA[1].z}
		local pos2 = {x = GRANTOWER.AREA[2].x, y = GRANTOWER.AREA[2].y, z = GRANTOWER.AREA[2].z}
		
		for i = 0, andares do
			z = z or 0
			pos1.z = pos1.z > pos2.z and pos2.z + z or pos1.z + z
			pos2.z = pos1.z
			z = 1
	
			if isInArea(getThingPos(creature), pos1, pos2) then
					table.insert(players, creature)
			end
		end
	end
return players
end

function getGranTowerGuild(guild_id) -- xWhiteWolf
local players = {}	
local andares = math.abs(GRANTOWER.AREA[1].z - GRANTOWER.AREA[2].z)
	for index, creature in ipairs(getPlayersOnline()) do		
		local z = 0
		local pos1 = {x = GRANTOWER.AREA[1].x, y = GRANTOWER.AREA[1].y, z = GRANTOWER.AREA[1].z}
		local pos2 = {x = GRANTOWER.AREA[2].x, y = GRANTOWER.AREA[2].y, z = GRANTOWER.AREA[2].z}
		
		for i = 0, andares do
			z = z or 0
			pos1.z = pos1.z > pos2.z and pos2.z + z or pos1.z + z
			pos2.z = pos1.z
			z = 1
	
			if isInArea(getThingPos(creature), pos1, pos2) then
				if (getPlayerGuildId(creature) == guild_id) then
					table.insert(players, creature)
				end
			end
		end
	end
return players
end

-- // Gran Aura \/
 
function newColor(n)  
 local n = tonumber(n) or 0
 local n = n + 19
 return tonumber(n) or 0
end

function newColor(n) 
 local n = tonumber(n) or 132
 local n = n - 19
 return tonumber(n) or 132
end
 
-- comentario: se a cor for preta o addon vai para branco sendo que o certo é diminuir 19..
 
local events = {}
function changeOutfit(uid) -- arrumado por xWhiteWolf e adicionado a opção da Shuri
 local sec = 0.5
 local temp = getCreatureOutfit(uid) 

 if (type(temp) == "number") then 
  return true 
 end
   
if getGlobalStorageValue(GRANTOWER.SAVELASTWINNER) ~= getCreatureName(uid) then
	if getGlobalStorageValue(GRANTOWER.SAVEWINNERGUILDID) ~= getPlayerGuildId(uid) then
			return true
	end
end
 
if GRANTOWER.SHURIAURA then
local effectPositions = getPositionsByDirection(uid)
doSendDistanceShoot(effectPositions[math.random(#effectPositions)], effectPositions[math.random(#effectPositions)], 18)
doSendDistanceShoot(effectPositions[math.random(#effectPositions)], effectPositions[math.random(#effectPositions)], 18)
end
 
 local outfit = {
  lookType = temp.lookType,
  lookHead = newColor(temp.lookHead),
  lookBody = newColor(temp.lookBody),
  lookLegs = newColor(temp.lookLegs),
  lookFeet = newColor(temp.lookFeet),
  lookAddons = getCreatureOutfit(uid).lookAddons,
 }
 doSetCreatureOutfit(uid, outfit, sec)
 local event = addEvent(function()
	 if isCreature(uid) then
	 changeOutfit(uid)
	 end
 end, 3.0 * sec * 450)
 events[uid] = event 
 return true
end


 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

[26/12/2014 22:52:44] Lua Script Error: [CreatureScript Interface]


[26/12/2014 22:52:44] data/creaturescripts/scripts/Gran Aura.lua:onLogin

[26/12/2014 22:52:44] data/creaturescripts/scripts/Gran Aura.lua:3: attempt to index global 'GRANTOWER' (a nil value)
[26/12/2014 22:52:44] stack traceback:
[26/12/2014 22:52:44] data/creaturescripts/scripts/Gran Aura.lua:3: in function

[26/12/2014 22:52:44] Lua Script Error: [CreatureScript Interface]
[26/12/2014 22:52:44] data/creaturescripts/scripts/Gran Aura.lua:onLogout

[26/12/2014 22:52:45] data/creaturescripts/scripts/Gran Aura.lua:20: attempt to index global 'GRANTOWER' (a nil value)
[26/12/2014 22:52:45] stack traceback:
[26/12/2014 22:52:45] data/creaturescripts/scripts/Gran Aura.lua:20: in function
[26/12/2014 22:52:45] ???? has logged out.

[26/12/2014 22:53:16] Lua Script Error: [GlobalEvent Interface]
[26/12/2014 22:53:16] data/globalevents/scripts/Gran Tower.lua:onThink

[26/12/2014 22:53:16] data/globalevents/scripts/Gran Tower.lua:2: attempt to index global 'GRANTOWER' (a nil value)
[26/12/2014 22:53:16] stack traceback:
[26/12/2014 22:53:16] data/globalevents/scripts/Gran Tower.lua:2: in function
[26/12/2014 22:53:16] [Error - GlobalEvents::onThink] Couldn't execute event: Gran Tower

Olá, eu coloquei a sua lib para evitar erros futuros, pois o meu tfs(TFS 0.3.1), é da para o tibia 8.4.
Mas obtive o seguinte erro ao tentar logar, assim que instalei o script todo no ot.

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites

seu TFS não tá entendo o GRANTOWER que é uma variavel da lib gran tower. Além da new lib tem outro documento na lib q vc tem que adicionar pra funcionar, e esse script aí que eu fiz é pra 8.54+

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Outra versão editada do grand castle, adicionado 2 andares, para ser editado à gosto !!!     -- Versão 860

 

Imagens aqui.

 

Vou dar updates nessa versão se houver necessidades ou atividades.

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

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

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

legal pena q não funcionou no sv q tentei instalar

Editado por fenixelite (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

um cara chamado Absolute postou o mapa que eu to usando, dá uma procurada no forum que vc acha. o titulo deve tar como Gran Castle xWhiteWolf e é do Absolute

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

eu escrevi errado sorry o que eu quis dizer é o OTSV com Gran Castle instalado.

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

você quer minha permissão pra usar?

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

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

Provável que eu coloquei tudo certo, mas o meu ainda está dando erros.

Eu estou usando New Slayer Yurots 8.6

 

Quando meu personagem tem Guild, da esse erro aqui. 

[26/03/2015 17:04:11] [Error - Npc interface] 
[26/03/2015 17:04:11] data/npc/scripts/Melkrapo.lua:onCreatureSay
[26/03/2015 17:04:11] Description: 
[26/03/2015 17:04:12] data/lib/032-position.lua:2: attempt to index global 'position' (a nil value)
[26/03/2015 17:04:12] stack traceback:
[26/03/2015 17:04:12] 	data/lib/032-position.lua:2: in function 'isInArea'
[26/03/2015 17:04:12] 	data/lib/046-Gran Tower.lua:119: in function 'getGranTowerGuild'
[26/03/2015 17:04:12] 	data/npc/scripts/Melkrapo.lua:22: in function 'callback'
[26/03/2015 17:04:12] 	data/npc/lib/npcsystem/npchandler.lua:383: in function 'onCreatureSay'
[26/03/2015 17:04:12] 	data/npc/scripts/Melkrapo.lua:8: in function <data/npc/scripts/Melkrapo.lua:8>

Quando eu ataco uma Barrier, da esse erro.

[26/03/2015 17:05:40] [Error - CreatureScript Interface] 
[26/03/2015 17:05:40] data/creaturescripts/scripts/Barrier.lua:onStatsChange
[26/03/2015 17:05:40] Description: 
[26/03/2015 17:05:40] data/creaturescripts/scripts/Barrier.lua:4: attempt to call global 'getCreatureHealth' (a nil value)
[26/03/2015 17:05:40] stack traceback:
[26/03/2015 17:05:40] 	data/creaturescripts/scripts/Barrier.lua:4: in function <data/creaturescripts/scripts/Barrier.lua:1>

Ele também não está sumonando o Gran Tower é o evento nunca acaba, esperei por 30 min mas o evento não fecha, já até tentei reiniciar o server.

 

Vou postar meu lib aqui para vocês verem se tem algum erro.

 

046-Gran Tower.lua

GRANTOWER = {}
GRANTOWER.PREPARETIME = 2 -- Tempo até liberar a entrada para o evento.
GRANTOWER.CLOSETIME = 3 -- Tempo em minutos de duração do evento.
GRANTOWER.LEVEL = 80 -- Mínimo de level para participar do evento.
GRANTOWER.MAXGUILD = 7 -- Máximo de players por guild dentro do evento.     
GRANTOWER.DATES = {{"Monday", "19:00"}, {"Tuesday", "19:00"}, {"Saturday", "19:00"}, {"Sunday", "22:30"}} -- Dias e horários que ocorrem o evento.
GRANTOWER.ENTER = {x = 312, y = 785, z = 7} -- A posição da entrada do castelo, aonde os players são mandados pelo NPC.
GRANTOWER.TOWERPOSITION = {x = 312, y = 760, z = 6} -- Posição aonde fica o Gran Tower (o monstro).
GRANTOWER.AREA = {{x = 287, y = 735, z = 7}, {x = 319, y = 789, z = 6}} --[[A primeira posição é o canto superior esquerdo do mapa do castelo, e a segunda é o canto direito inferior
OBSERVAÇÃO IMPORTANTE: O script foi modificado por mim (xWhiteWolf) para aguentar diferentes andares, apenas coloque a posição dos cantos e o primeiro até o ultimo andar que ele irá remover todo mundo
em todos os andares quando alguém matar a gran tower, pra remover isso apenas coloque o z do mesmo andar da gran tower e apenas os membros que estão nesse andar serão teleportados,
contudo isso pode ocasionar que pessoas consigam ficar dentro do castelo mesmo após o evento ter sido encerrado!]]
GRANTOWER.AURAPERCENT = 0.8 --- porcentagem do dano que irá levar (0.8 = 80%) significa que ele ignora 20% de dano! (adicionado por xWhiteWolf)
GRANTOWER.SHURIAURA = true --- colocar true/false se quiser ativar/desativar a aura de shurikens pro player que tem a gran aura. (adicionado por xWhiteWolf)


--// Favor não mexer daqui para baixo se não souber oque está fazendo!!!
GRANTOWER.EMPTYWINNER = "# [Nobody] #"
GRANTOWER.PREPARE = 201405051746
GRANTOWER.RUNNING = 201405051747
GRANTOWER.AURA = 201405052018
GRANTOWER.DESTROYCOUNT = 201405051800
GRANTOWER.FINALWINNER = 201405051805
GRANTOWER.SAVELASTWINNER = 201405061333 
GRANTOWER.SAVEWINNERGUILDID = 201405061403

function doPrepareGranTower()
 if ((getGlobalStorageValue(GRANTOWER.PREPARE) ~= 1) and (getGlobalStorageValue(GRANTOWER.RUNNING) ~= 1)) then
  setGlobalStorageValue(GRANTOWER.PREPARE, 1)
  addEvent(doStartGranTower, GRANTOWER.PREPARETIME * 60 * 1000)
  addEvent(doBroadcastMessage, ((GRANTOWER.PREPARETIME / 2) * 60 * 1000), "[Gran Tower] Missing "..tostring((GRANTOWER.PREPARETIME / 2)).." minutes NPC Melkrapo will release the entrance to the event, get ready!")
  doBroadcastMessage("[Gran Tower] The event will be started in "..tostring(GRANTOWER.PREPARETIME).." minutes, please prepare your weapons and your team.")
 else
  print("[Erro] Gran Tower tentou ser iniciado ja ligado, favor verificar o codigo. (Roksas).")
 end
 return true
end

function doStartGranTower()
 if ((getGlobalStorageValue(GRANTOWER.PREPARE) ~= -1) and (getGlobalStorageValue(GRANTOWER.RUNNING) ~= 1)) then
  setGlobalStorageValue(GRANTOWER.RUNNING, 1)
  setGlobalStorageValue(GRANTOWER.PREPARE, -1)
  setGlobalStorageValue(GRANTOWER.SAVEWINNERGUILDID, -1)
  setGlobalStorageValue(GRANTOWER.FINALWINNER, GRANTOWER.EMPTYWINNER)
  setGlobalStorageValue(GRANTOWER.SAVELASTWINNER, GRANTOWER.EMPTYWINNER)
  setGlobalStorageValue(GRANTOWER.DESTROYCOUNT, 0)
  doCreateMonster("Gran Tower", GRANTOWER.TOWERPOSITION)
  addEvent(doBroadcastMessage, ((GRANTOWER.CLOSETIME - 1) * 60 * 1000), "[Gran Tower] The event will be closed in one minute. Hurry up!")
  addEvent(doCloseGranTower, GRANTOWER.CLOSETIME * 60 * 1000)
  doBroadcastMessage("[Gran Tower] Open event! Run to destroy the Gran Tower.")
 else
  print("[Erro] Gran Tower tentou ser iniciado já ligado, favor verificar o código.")
 end
 return true
end

function doCloseGranTower()
 if ((getGlobalStorageValue(GRANTOWER.PREPARE) ~= 1) and (getGlobalStorageValue(GRANTOWER.RUNNING) ~= -1)) then
  for index, creature in ipairs(getGranTowerPlayers()) do
   doTeleportThing(creature, getTownTemplePosition(getPlayerTown(creature)))
  end
  for index, creature in ipairs(getPlayersOnline()) do
   if (getPlayerGuildId(creature) >= 1) then
    if getPlayerGuildId(creature) ~= getGlobalStorageValue(GRANTOWER.SAVEWINNERGUILDID) then
     setPlayerStorageValue(creature, GRANTOWER.AURA, -1)
    end
   end 
  end
  setGlobalStorageValue(GRANTOWER.RUNNING, -1)
  if (getCreatureByName("Gran Tower")) then
   doRemoveCreature(getCreatureByName("Gran Tower"), true)
  end
  local TMP_WINNER = getGlobalStorageValue(GRANTOWER.FINALWINNER)
  doBroadcastMessage("[Gran Tower] The event was completed with "..tostring(getGlobalStorageValue(GRANTOWER.DESTROYCOUNT)).." wrecks to Gran Tower, the final winner was "..(TMP_WINNER)..".")
  setGlobalStorageValue(GRANTOWER.DESTROYCOUNT, -1)
  setGlobalStorageValue(GRANTOWER.SAVELASTWINNER, TMP_WINNER)
  setGlobalStorageValue(GRANTOWER.FINALWINNER, -1)
  local TMP_WINNER = nil
 end
 return true
end

function getGranTowerPlayers() -- xWhiteWolf
local players = {}	
local andares = math.abs(GRANTOWER.AREA[1].z - GRANTOWER.AREA[2].z)
	for index, creature in ipairs(getPlayersOnline()) do		
		local z = 0
		local pos1 = {x = GRANTOWER.AREA[1].x, y = GRANTOWER.AREA[1].y, z = GRANTOWER.AREA[1].z}
		local pos2 = {x = GRANTOWER.AREA[2].x, y = GRANTOWER.AREA[2].y, z = GRANTOWER.AREA[2].z}
		
		for i = 0, andares do
			z = z or 0
			pos1.z = pos1.z > pos2.z and pos2.z + z or pos1.z + z
			pos2.z = pos1.z
			z = 1
	
			if isInArea(getThingPos(creature), pos1, pos2) then
					table.insert(players, creature)
			end
		end
	end
return players
end

function getGranTowerGuild(guild_id) -- xWhiteWolf
local players = {}	
local andares = math.abs(GRANTOWER.AREA[1].z - GRANTOWER.AREA[2].z)
	for index, creature in ipairs(getPlayersOnline()) do		
		local z = 0
		local pos1 = {x = GRANTOWER.AREA[1].x, y = GRANTOWER.AREA[1].y, z = GRANTOWER.AREA[1].z}
		local pos2 = {x = GRANTOWER.AREA[2].x, y = GRANTOWER.AREA[2].y, z = GRANTOWER.AREA[2].z}
		
		for i = 0, andares do
			z = z or 0
			pos1.z = pos1.z > pos2.z and pos2.z + z or pos1.z + z
			pos2.z = pos1.z
			z = 1
	
			if isInArea(getThingPos(creature), pos1, pos2) then
				if (getPlayerGuildId(creature) == guild_id) then
					table.insert(players, creature)
				end
			end
		end
	end
return players
end

-- // Gran Aura \/
 
function newColor(n)  
 local n = tonumber(n) or 0
 local n = n + 19
 return tonumber(n) or 0
end

function newColor(n) 
 local n = tonumber(n) or 132
 local n = n - 19
 return tonumber(n) or 132
end
 
-- comentario: se a cor for preta o addon vai para branco sendo que o certo é diminuir 19..
 
local events = {}
function changeOutfit(uid) -- arrumado por xWhiteWolf e adicionado a opção da Shuri
 local sec = 0.5
 local temp = getCreatureOutfit(uid) 

 if (type(temp) == "number") then 
  return true 
 end
   
if getGlobalStorageValue(GRANTOWER.SAVELASTWINNER) ~= getCreatureName(uid) then
	if getGlobalStorageValue(GRANTOWER.SAVEWINNERGUILDID) ~= getPlayerGuildId(uid) then
			return true
	end
end
 
if GRANTOWER.SHURIAURA then
local effectPositions = getPositionsByDirection(uid)
doSendDistanceShoot(effectPositions[math.random(#effectPositions)], effectPositions[math.random(#effectPositions)], 18)
doSendDistanceShoot(effectPositions[math.random(#effectPositions)], effectPositions[math.random(#effectPositions)], 18)
end
 
 local outfit = {
  lookType = temp.lookType,
  lookHead = newColor(temp.lookHead),
  lookBody = newColor(temp.lookBody),
  lookLegs = newColor(temp.lookLegs),
  lookFeet = newColor(temp.lookFeet),
  lookAddons = getCreatureOutfit(uid).lookAddons,
 }
 doSetCreatureOutfit(uid, outfit, sec)
 local event = addEvent(function()
	 if isCreature(uid) then
	 changeOutfit(uid)
	 end
 end, 3.0 * sec * 450)
 events[uid] = event 
 return true
end
Link para o post
Compartilhar em outros sites

troca onde tá isInArea por isInRange, se o erro persisistir abre seu data/lib/032-position.lua  e cola oque tem dentro dele aqui.
tem dois lugares pra trocar na lib.

O problema do barrier é que seu server não tem a função de pegar a vida atual do monstro:

data/creaturescripts/scripts/Barrier.lua:4: attempt to call global 'getCreatureHealth' (a nil value)

Verifica se vc tem algum script que utilize uma função parecida com essa e daí vc substitui na linha 4 do creaturescripts de barrier por essa função parecida;
Na dúvida tenta com getPlayerHealth(cid) apesar de eu achar que não é esse o nome

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Infelizmente não deu certo trocar isInArea por isInRange.

[27/03/2015 09:23:55] [Error - Npc interface] 
[27/03/2015 09:23:55] data/npc/scripts/Melkrapo.lua:onCreatureSay
[27/03/2015 09:23:55] Description: 
[27/03/2015 09:23:55] data/lib/032-position.lua:2: attempt to index global 'position' (a nil value)
[27/03/2015 09:23:55] stack traceback:
[27/03/2015 09:23:55] 	data/lib/032-position.lua:2: in function 'isInRange'
[27/03/2015 09:23:55] 	data/lib/046-Gran Tower.lua:119: in function 'getGranTowerGuild'
[27/03/2015 09:23:55] 	data/npc/scripts/Melkrapo.lua:22: in function 'callback'
[27/03/2015 09:23:55] 	data/npc/lib/npcsystem/npchandler.lua:383: in function 'onCreatureSay'
[27/03/2015 09:23:55] 	data/npc/scripts/Melkrapo.lua:8: in function <data/npc/scripts/Melkrapo.lua:8>

E do Barrier também não funciono e não achei a função parecida.

[27/03/2015 09:25:59] [Error - CreatureScript Interface] 
[27/03/2015 09:25:59] data/creaturescripts/scripts/Barrier.lua:onStatsChange
[27/03/2015 09:25:59] Description: 
[27/03/2015 09:25:59] data/creaturescripts/scripts/Barrier.lua:4: attempt to call global 'getPlayerHealth' (a nil value)
[27/03/2015 09:25:59] stack traceback:
[27/03/2015 09:25:59] 	data/creaturescripts/scripts/Barrier.lua:4: in function <data/creaturescripts/scripts/Barrier.lua:1>

E aqui está meu 032-position. 

function isInRange(pos, fromPosition, toPosition)
	return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.z >= fromPosition.z and position.x <= toPosition.x and position.y <= toPosition.y and position.z <= toPosition.z)
end

function getDistanceBetween(firstPosition, secondPosition)
	local x, y = math.abs(firstPosition.x - secondPosition.x), math.abs(firstPosition.y - secondPosition.y)
	local diff = math.max(x, y)
	if(firstPosition.z ~= secondPosition.z) then
		diff = diff + 9 + 6
	end

	return diff
end

function getDirectionTo(pos1, pos2)
	local dir = NORTH
	if(pos1.x > pos2.x) then
		dir = WEST
		if(pos1.y > pos2.y) then
			dir = NORTHWEST
		elseif(pos1.y < pos2.y) then
			dir = SOUTHWEST
		end
	elseif(pos1.x < pos2.x) then
		dir = EAST
		if(pos1.y > pos2.y) then
			dir = NORTHEAST
		elseif(pos1.y < pos2.y) then
			dir = SOUTHEAST
		end
	else
		if(pos1.y > pos2.y) then
			dir = NORTH
		elseif(pos1.y < pos2.y) then
			dir = SOUTH
		end
	end
	return dir
end

function getCreatureLookPosition(cid)
	return getPosByDir(getThingPos(cid), getCreatureLookDirection(cid))
end

function getPosByDir(fromPosition, direction, size)
	local n = size or 1

	local pos = fromPosition
	if(direction == NORTH) then
		pos.y = pos.y - n
	elseif(direction == SOUTH) then
		pos.y = pos.y + n
	elseif(direction == WEST) then
		pos.x = pos.x - n
	elseif(direction == EAST) then
		pos.x = pos.x + n
	elseif(direction == NORTHWEST) then
		pos.y = pos.y - n
		pos.x = pos.x - n
	elseif(direction == NORTHEAST) then
		pos.y = pos.y - n
		pos.x = pos.x + n
	elseif(direction == SOUTHWEST) then
		pos.y = pos.y + n
		pos.x = pos.x - n
	elseif(direction == SOUTHEAST) then
		pos.y = pos.y + n
		pos.x = pos.x + n
	end

	return pos
end

function doComparePositions(pos, posEx)
	return pos.x == posEx.x and pos.y == posEx.y and pos.z == posEx.z
end

function getArea(pos, rangeX, rangeY)
	local t = {}
	for i = (pos.x - rangeX), (pos.x + rangeX) do
		for j = (pos.y - rangeY), (pos.y + rangeY) do
			table.insert(t, {x = i, y = j, z = pos.z})
		end
	end

	return t
end

Link para o post
Compartilhar em outros sites

sua source e sua datapack estão incompletas!! sugiro que troque urgentemente pra evitar problemas no futuro. E não é pra menos estar dando erro, dá uma olhada nisso:

function isInRange(pos, fromPosition, toPosition)
    return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.z >= fromPosition.z and position.x <= toPosition.x and position.y <= toPosition.y and position.z <= toPosition.z)
end

a sua function isInRange usa como parametro pos, fromPosition e toPosition mas em nenhum momento ele usa pos e ele tá usando position (que não foi declarado):: Por isso os erros.

Usa meu 032-position.lua

function isInRange(position, fromPosition, toPosition)
	return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.z >= fromPosition.z and position.x <= toPosition.x and position.y <= toPosition.y and position.z <= toPosition.z)
end

function getDistanceBetween(firstPosition, secondPosition)
	local x, y = math.abs(firstPosition.x - secondPosition.x), math.abs(firstPosition.y - secondPosition.y)
	local diff = math.max(x, y)
	if(firstPosition.z ~= secondPosition.z) then
		diff = diff + 9 + 6
	end

	return diff
end

function getDirectionTo(pos1, pos2)
	local dir = NORTH
	if(pos1.x > pos2.x) then
		dir = WEST
		if(pos1.y > pos2.y) then
			dir = NORTHWEST
		elseif(pos1.y < pos2.y) then
			dir = SOUTHWEST
		end
	elseif(pos1.x < pos2.x) then
		dir = EAST
		if(pos1.y > pos2.y) then
			dir = NORTHEAST
		elseif(pos1.y < pos2.y) then
			dir = SOUTHEAST
		end
	else
		if(pos1.y > pos2.y) then
			dir = NORTH
		elseif(pos1.y < pos2.y) then
			dir = SOUTH
		end
	end
	return dir
end

function getCreatureLookPosition(cid)
	return getPosByDir(getThingPos(cid), getCreatureLookDirection(cid))
end

function getPosByDir(fromPosition, direction, size)
	local n = size or 1

	local pos = fromPosition
	if(direction == NORTH) then
		pos.y = pos.y - n
	elseif(direction == SOUTH) then
		pos.y = pos.y + n
	elseif(direction == WEST) then
		pos.x = pos.x - n
	elseif(direction == EAST) then
		pos.x = pos.x + n
	elseif(direction == NORTHWEST) then
		pos.y = pos.y - n
		pos.x = pos.x - n
	elseif(direction == NORTHEAST) then
		pos.y = pos.y - n
		pos.x = pos.x + n
	elseif(direction == SOUTHWEST) then
		pos.y = pos.y + n
		pos.x = pos.x - n
	elseif(direction == SOUTHEAST) then
		pos.y = pos.y + n
		pos.x = pos.x + n
	end

	return pos
end

function doComparePositions(pos, posEx)
	return pos.x == posEx.x and pos.y == posEx.y and pos.z == posEx.z
end

function getArea(pos, rangeX, rangeY)
	local t = {}
	for i = (pos.x - rangeX), (pos.x + rangeX) do
		for j = (pos.y - rangeY), (pos.y + rangeY) do
			table.insert(t, {x = i, y = j, z = pos.z})
		end
	end

	return t
end



Agora sobre a barrier, desativa o creaturescript removendo a tag no xml do monstro até vc trocar de source pra uma que tenha a função getCreatureHealth(uid)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Valeu pela lib, agora meu chars com Guild podem entrar.

O problema e que eu sou novato em Ot, tem como me explicar como funciona essa parte de soucer e datapack e como trocalas ?

Link para o post
Compartilhar em outros sites

Source funciona assim, é um monte de arquivos que tem informações sobre como o servidor vai rodar, funções que ele tem e tudo mais, daí vc compila esses arquivos em um executável, que é oque vc abre pra abrir seu server. Datapack é a pasta data do seu servidor, nela vc tem todas as informações do seu server. Se você não tem a função no seu server então provavelmente ela não foi compilada na source, o jeito é editar a source (caso vc tenha esses arquivos) ou trocar de source (mudar o executavel). A menos que a função seja feita no datapack. Nesse caso, dizemos que ela é lua-made. Uma lib não é nada mais, nada menos que um conjunto de funções lua-made num arquivo.

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

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 rafaelvozinho
      Vagas abertas [-]
      Foxers, é com grande felicidade que anunciamos o processo seletivo para recrutamento de um novo Developer e Mapper para a nossa equipe. 
       
      Nós da staff chegamos nessa decisão por sermos apaixonados pelo bom e velho fox world que foi lançado anos atrás no 8.4, por sermos apaixonados sempre tentamos abrir um servidor de fox world porém sempre faltou aquela pitada de inovação, foi então que tivemos a brilhante ideia. Converter o fox do 8.4 para o 12.31 e inserir novidades como: novas caves, itens, monstros e não menos importante quests com sistemas inovadores!

       
      No momento estamos a procura das vagas citadas acima para pessoas que estão afim de crescer com o servidor e evoluir com o mesmo, nós procuramos pessoas dedicadas, que tenha disponibilidade de horario, disponibilidade de contato e dispostas a se dedicarem com o trabalho em equipe. 
      A inscrição poderá ser enviada como mensagem privada ao meu perfil aqui no tibiaking @Faysal, as pessoas que se inscreveram irão passar por uma analise e serão selecionadas para uma entrevista. Aos interessados favor ler as características das vagas disponiveis.
       
      Características [-]
       
      Developer
       - Função: Programador Lua/C++
       - Descrição: Desenvolvimento em Lua, C++, as unicas exigências que pedimos é a entrega dentro do prazo.
       - Idade: Temos preferência por pessoas com mais de 18 anos
       - Experiência: Conhecimento em programação em Lua e C++, ter conhecimento avançado será um grande diferencial.
       - Confiança: Procuramos desenvolvedores responsáveis a fim de prestar um bom serviço na área de desenvolvimento de nossos sistemas, conhecimento, confiança e segurança é primordial!
       
       
      Mapper
       
       - Função: Mapper
       - Descrição: Elaboração de novas áreas e estilização das já existentes
       - Idade: Temos preferência por pessoas com mais de 16 anos
       - Experiência: Conhecimento mediano em mapping, ter conhecimento avançado será um grande diferencial.
       - Confiança: Procuramos mappers responsáveis a fim de prestar um bom serviço na área. Conhecimento e criatividade são essenciais!
       
      Inscrição [-]
       
      Aguardamos as inscrições via Private Messenger aqui no fórum com as seguintes Informações:
       
       
       - Nome Completo: 
       - Idade:
       - Vaga Escolhida:
       - Whatsapp para contato:
       - Experiência:
       - Conhecimentos Adicionais:

      Obs: No campo Experiência utilizar as seguntes categorias: Trainee (novato), Junior (mediano), Pleno (avançado), Sênior (Profissional)
       
      Aguardamos sua inscrição.

      Atenciosamente,
      Rafael  - ADM Rafael - 51 999465729 whatsapp 
    • Por Ribeiro Foda
      Pessoal vim perdi um script Chamada gran aura.
      A gran aura: Queria que quando voce derrota-se o boss Gran tower, Ganhasse a gran aura para a guild ou sozinho mesmo, E quando o time dar o ultimo hit na gran tower ganhar, e quem ganhasse tinha q proteger e se o time que esta de gran aura tenta matar a gran tower quando ele chegasse no 1 de vida ela se reala a cada atack q o time der nela, e queria q a gran aura tipo quando um player ou monstro atakar voce ela devolvese o ataka mais tipo nao tao forte, tipo se ritasse 100 receber so 50 do dano.
      Gran aura seria assim: http://www.youtube.com/watch?v=bzVJUlOljvc&feature=youtu.be
       
      Tipo a gran aura fika piscando a sua ropa que nem no vidio!
       
       
       
      Acho q é dificil poucos vao conseguir fazer isso! Eu n consigo intao vim pedir aqui!
       
    • Por Mathwsz
      PROJETO FOXWORLD
       
      Sobre o Servidor: Bom, estou criando um servidor que seja baseado no "FoxworldServer", visando bons combates Players versus Players, com uma equipe dedicada e honesta, pronta para trazer o melhor de nós.
      Site do Servidor: Bom, já tenho o site 80% identico ao do Foxworld, falta adicionar Specialls Skills e ajeitar uns bugs que são fáceis ( Provavelmente arrumarei essa semana ainda ).
      Mapa do Servidor: O mapa do servidor não está completo, falta adicionar hunts/quests e concertar partes do mapa que está cortada, porém muitas coisas estão identicas ao do verdadeiro Foxworld.
       
      Npcs: Os npcs estão quase todos prontos, faltando: Npc teleport do barco de "Bangalore", Npc teleport do barco de "Asauchi", Npc teleport da cidade de "Vérsia" e o npc teleport/task de "Bangalore-TheVolcano". Obs: Npcs de teleports eu mesmo irei criar, porém o de task/teleport deixarei para depois.
      Spells: As spells estão quase todas corretas, eu diria que está uns 90%, faltando arrumar apenas certos hits de combos "Duplos" para deixar equilibrado.
      Hunts/Quests: As hunts e quests estão criadas no mapa, faltando adicionar o respawn dos monstros. Obs: Já tenho uma base de onde copiar-os.
       
      Itens: Os itens estão praticamente todos corretos, eu diria que está uns 95%, faltando editar uns que provavelmente nem serão usados.
      Monstros: Os monstros falta criar alguns, e os que já estão prontos falta por os loots corretamente. Obs: Também tenho uma base de onde copiar-os.
       
      OBS: Estou procurando pessoas para equipe do meu projeto, desde que: A pessoa já jogou/joga algum OTserver Foxworld, A pessoa sabe editar/criar coisas que estão relacionadas ao FOXWORLD ( O que está faltando ). NÃO quero pessoas que intendem, porém são jogadores/admin de ots global, ots baiaks e etc. Eu quero pessoas que conhecem o Foxworld e querem participar deste projeto
       
      Skype: matheus.sardou
      Skype2: zarush.awesome
      Desculpe pela mal formatação no tópico, ainda não sei direitinho mais caso não intenda algo comentem aí, Aquele abraço e fique com Deus!
       
       
       



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo