Jump to content
Sign in to follow this  
Mecianosz

Suporte [help] Door com Magic Wall: BUG

Recommended Posts

Olá a todos! Estou com um bug nas doors do meu servidor: não consigo fechar uma porta quando tem MW na frente. O normal é você fechar a porta e quebrar a MW, ocupando o sqm onde ela estava. Mas no meu servidor eu não consigo quebrar a magic wall! Se não for na source, deve ser em actions/doors.lua ou em movements/closingdoor.lua, mas eu troquei esses scripts várias vezes e não corrigi o problema. Alguém pode me ajudar? Valeu!

 

Qual servidor ou website você utiliza como base? 

tfs 0.5 exclusive edition

 

Edited by Mecianosz (see edit history)

Share this post


Link to post
Share on other sites

Certifique-se de que a porta que está testando está registrada na tag XML do dito script.


 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Share this post


Link to post
Share on other sites
2 horas atrás, WooX disse:

Certifique-se de que a porta que está testando está registrada na tag XML do dito script.

@WooX a tag da door já estava em actions.xml (doors.lua) mas não estava no movements.xml (closingdoor.lua ). Porém, quando eu coloquei a tag da door no movements.xml , não corrigiu o problema da magic wall e ainda começou a dar outro bug: só de passar pela porta, ela se fecha sozinha. Deve ser outra coisa! Já tentei trocar os scripts.lua algumas vezes, mas nenhum está dando certo ... 

 

 

 

Edited by Mecianosz (see edit history)

Share this post


Link to post
Share on other sites
2 horas atrás, Mecianosz disse:

@WooX a tag da door já estava em actions.xml (doors.lua) mas não estava no movements.xml (closingdoor.lua ). Porém, quando eu coloquei a tag da door no movements.xml , não corrigiu o problema da magic wall e ainda começou a dar outro bug: só de passar pela porta, ela se fecha sozinha. Deve ser outra coisa! Já tentei trocar os scripts.lua algumas vezes, mas nenhum está dando certo ... 

 

 

 

Ela não tem que estar no script do movements, este é exclusivamente para as portas que devem fechar sozinhas mesmo. Manda seu scripts doors.lua, o que fica em actions mesmo.

 

 


 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Share this post


Link to post
Share on other sites
39 minutos atrás, WooX disse:

Ela não tem que estar no script do movements, este é exclusivamente para as portas que devem fechar sozinhas mesmo. Manda seu scripts doors.lua, o que fica em actions mesmo.

 

 

doors.lua

Ta aí!

:)

 

Share this post


Link to post
Share on other sites
4 minutos atrás, Mecianosz disse:

Posta como código.


 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Share this post


Link to post
Share on other sites
Agora, WooX disse:

Posta como código.

local config = {
	maxLevel = getConfigInfo('maximumDoorLevel')
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(fromPosition.x ~= CONTAINER_POSITION and isPlayerPzLocked(cid) and getTileInfo(fromPosition).protection) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
		return true
	end

	local locked = DOORS[item.itemid]
	if(locked) then
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.")
		return true
	end

	local door = getItemInfo(item.itemid)
	if(door.levelDoor > 0) then
		if(item.aid == 189) then
			if(not isPremium(cid)) then
				doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
				return true
			end

			doTeleportThing(cid, toPosition)
			return false
		end

		local gender = item.aid - 186
		if(isInArray({PLAYERSEX_FEMALE,  PLAYERSEX_MALE}, gender)) then
			if(gender ~= getPlayerSex(cid)) then
				doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
				return true
			end

			doTeleportThing(cid, toPosition)
			return false
		end

		local skull = item.aid - 180
		if(skull >= SKULL_NONE and skull <= SKULL_BLACK) then
			if(skull ~= getCreatureSkullType(cid)) then
				doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
				return true
			end

			doTeleportThing(cid, toPosition)
			return false
		end

		local group = item.aid - 150
		if(group >= 0 and group < 30) then
			if(group > getPlayerGroupId(cid)) then
				doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
				return true
			end

			doTeleportThing(cid, toPosition)
			return false
		end

		local vocation = item.aid - 100
		if(vocation >= 0 and vocation < 50) then
			local vocationEx = getVocationInfo(getPlayerVocation(cid))
			if(vocationEx.id ~= vocation and vocationEx.fromVocation ~= vocation) then
				doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
				return true
			end

			doTeleportThing(cid, toPosition)
			return false
		end

		if(item.aid == 190 or (item.aid >= 1000 and (item.aid - door.levelDoor) <= config.maxLevel and getPlayerLevel(cid) >= (item.aid - door.levelDoor))) then
			doTeleportThing(cid, toPosition)
			return false
		end

		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
		return true
	end

	if(door.specialDoor) then
		if(item.aid == 100 or (item.aid ~= 0 and getCreatureStorage(cid, item.aid) ~= EMPTY_STORAGE)) then
			doTeleportThing(cid, toPosition)
			return false
		end

		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "The door seems to be sealed against unwanted intruders.")
		return true
	end

	if(getTileInfo(toPosition).creatures > 0) then -- check only if there are any creatures
		local position = {x = toPosition.x, y = toPosition.y, z = toPosition.z, stackpos = STACKPOS_TOP_CREATURE}
		position.x = position.x + 1

		local query = doTileQueryAdd(cid, position, 20)
		if(query == RETURNVALUE_NOTPOSSIBLE) then
			position.x = position.x - 1
			position.y = position.y + 1
			query = doTileQueryAdd(cid, position, 20)
		end

		if(query ~= RETURNVALUE_NOERROR) then
			doPlayerSendDefaultCancel(cid, query)
			return true
		end

		toPosition.stackpos = STACKPOS_TOP_CREATURE
		while(true) do
			local thing = getThingFromPosition(toPosition)
			if(thing.uid == 0) then
				break
			end

			doTeleportThing(thing.uid, position)
		end
	end

	local field = getTileItemByType(toPosition, ITEM_TYPE_MAGICFIELD)
	if(field.uid ~= 0) then
		doRemoveItem(field.uid)
	end

	return door.closingDoor
end

@WooX

Share this post


Link to post
Share on other sites

Não tenho um servidor TFS 0.5 pra testar aqui, mas tentarei ajudar, sou um pouco novato também ahuahuhaa

 

troque:


	local field = getTileItemByType(toPosition, ITEM_TYPE_MAGICFIELD)
	if(field.uid ~= 0) then
		doRemoveItem(field.uid)
	end

	return door.closingDoor
end

por:


	local field = getTileItemByType(toPosition, ITEM_TYPE_MAGICFIELD)
	if(field.uid ~= 0) then
		doRemoveItem(field.uid)
	end

	return true
end

 

Share this post


Link to post
Share on other sites
11 horas atrás, Mirajane Sitri disse:

Não tenho um servidor TFS 0.5 pra testar aqui, mas tentarei ajudar, sou um pouco novato também ahuahuhaa

 

troque:



	local field = getTileItemByType(toPosition, ITEM_TYPE_MAGICFIELD)
	if(field.uid ~= 0) then
		doRemoveItem(field.uid)
	end

	return door.closingDoor
end

por:



	local field = getTileItemByType(toPosition, ITEM_TYPE_MAGICFIELD)
	if(field.uid ~= 0) then
		doRemoveItem(field.uid)
	end

	return true
end

 

Não corrigiu o caso da magic wall e agora a porta não fecha , rs.. Mas obrigado pela tentativa!

Share this post


Link to post
Share on other sites
7 horas atrás, Mecianosz disse:

Não corrigiu o caso da magic wall e agora a porta não fecha , rs.. Mas obrigado pela tentativa!

Hmm.. Tente trocar:


	local field = getTileItemByType(toPosition, ITEM_TYPE_MAGICFIELD)
	if(field.uid ~= 1) then
		doRemoveItem(field.uid)
	end

	return door.closingDoor
end

 

Share this post


Link to post
Share on other sites
32 minutos atrás, Mirajane Sitri disse:

Hmm.. Tente trocar:



	local field = getTileItemByType(toPosition, ITEM_TYPE_MAGICFIELD)
	if(field.uid ~= 1) then
		doRemoveItem(field.uid)
	end

	return door.closingDoor
end

 

continua não fechando as portas '-'.. voltei para o original e as portas voltaram a fechar, mas ainda não quebra a mw

	local field = getTileItemByType(toPosition, ITEM_TYPE_MAGICFIELD)
	if(field.uid ~= 0) then
		doRemoveItem(field.uid)
	end

	return door.closingDoor
end

 

Share this post


Link to post
Share on other sites
Em 29/07/2020 em 11:37, Mecianosz disse:

Olá a todos! Estou com um bug nas doors do meu servidor: não consigo fechar uma porta quando tem MW na frente. O normal é você fechar a porta e quebrar a MW, ocupando o sqm onde ela estava. Mas no meu servidor eu não consigo quebrar a magic wall! Se não for na source, deve ser em actions/doors.lua ou em movements/closingdoor.lua, mas eu troquei esses scripts várias vezes e não corrigi o problema. Alguém pode me ajudar? Valeu!

 

Qual servidor ou website você utiliza como base? 

tfs 0.5 exclusive edition

 

A solução não era tão simples, por isso ninguém conseguiu. Com a ajuda de meu amigo Nord, refizemos grande parte do doors.lua. A quem possa interessar:

Citar

local config = {
    maxLevel = getConfigInfo('maximumDoorLevel')
}

local horizontalDoors = {1214, 1222, 1226, 1230, 1236, 1240, 1244, 1248, 1254, 1258, 1262, 1542, 3537, 3539, 3541, 3543, 4918, 5085, 5100, 5102, 5104, 5106, 5118, 5120, 5122, 5124, 5136, 5139, 5280, 5287, 5291, 5295, 5518, 5734, 5746, 6197, 6201, 6205, 6209, 6254, 6258, 6262, 6266, 6796, 6800, 6893, 6895, 6897, 6899, 7035, 7037, 7039, 7041, 7057, 8546, 8550, 8554, 8558, 9170, 9174, 9272, 9276, 9280, 9284, 10273, 10277, 10281, 10285, 10470, 10472, 10476, 10474, 10777, 12094, 12190, 10781, 12096, 12196, 10783, 12098, 12194}
local magicWallIds = {1497, 1499}

local function removeMwall(toPosition)
    for _, id in ipairs(magicWallIds) do
        local item = getTileItemById(toPosition, id)
        if (item.uid ~= 0) then
            doRemoveItem(item.uid)
        end
    end
end

local function teleportFromDoor(cid, toPosition)
    removeMwall(toPosition)
    doTeleportThing(cid, toPosition)
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if(fromPosition.x ~= CONTAINER_POSITION and isPlayerPzLocked(cid) and getTileInfo(fromPosition).protection) then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
        return true
    end

    local locked = DOORS[item.itemid]
    if(locked) then
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.")
        return true
    end

    local door = getItemInfo(item.itemid)
    if(door.levelDoor > 0) then
        if(item.aid == 189) then
            if(not isPremium(cid)) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            teleportFromDoor(cid, toPosition)
            return false
        end

        local gender = item.aid - 186
        if(isInArray({PLAYERSEX_FEMALE,  PLAYERSEX_MALE}, gender)) then
            if(gender ~= getPlayerSex(cid)) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            teleportFromDoor(cid, toPosition)
            return false
        end

        local skull = item.aid - 180
        if(skull >= SKULL_NONE and skull <= SKULL_BLACK) then
            if(skull ~= getCreatureSkullType(cid)) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            teleportFromDoor(cid, toPosition)
            return false
        end

        local group = item.aid - 150
        if(group >= 0 and group < 30) then
            if(group > getPlayerGroupId(cid)) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            teleportFromDoor(cid, toPosition)
            return false
        end

        local vocation = item.aid - 100
        if(vocation >= 0 and vocation < 50) then
            local vocationEx = getVocationInfo(getPlayerVocation(cid))
            if(vocationEx.id ~= vocation and vocationEx.fromVocation ~= vocation) then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
                return true
            end

            teleportFromDoor(cid, toPosition)
            return false
        end

        if(item.aid == 190 or (item.aid >= 1000 and (item.aid - door.levelDoor) <= config.maxLevel and getPlayerLevel(cid) >= (item.aid - door.levelDoor))) then
            teleportFromDoor(cid, toPosition)
            return false
        end

        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Only the worthy may pass.")
        return true
    end

    if(door.specialDoor) then
        if(item.aid == 100 or (item.aid ~= 0 and getCreatureStorage(cid, item.aid) ~= EMPTY_STORAGE)) then
            teleportFromDoor(cid, toPosition)
            return false
        end

        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "The door seems to be sealed against unwanted intruders.")
        return true
    end

    if(getTileInfo(toPosition).creatures > 0) then -- check only if there are any creatures
        local position = {x = toPosition.x, y = toPosition.y, z = toPosition.z, stackpos = STACKPOS_TOP_CREATURE}
        if isInArray(horizontalDoors, item.itemid) then
            position.y = position.y + 1
        else
            position.x = position.x + 1
        end
        removeMwall(position)

        local query = doTileQueryAdd(cid, position, 20)
        if(query == RETURNVALUE_NOTPOSSIBLE) then
            position.x = position.x - 1
            position.y = position.y + 1
            query = doTileQueryAdd(cid, position, 20)
        end

        if(query ~= RETURNVALUE_NOERROR) then
            doPlayerSendDefaultCancel(cid, query)
            return true
        end

        toPosition.stackpos = STACKPOS_TOP_CREATURE
        while(true) do
            local thing = getThingFromPosition(toPosition)
            if(thing.uid == 0) then
                break
            end

            teleportFromDoor(thing.uid, position)
        end
    end

    local field = getTileItemByType(toPosition, ITEM_TYPE_MAGICFIELD)
    if(field.uid ~= 0) then
        doRemoveItem(field.uid)
    end

    return door.closingDoor
end
 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By Mor3nao
      Alguns scripts meus estão apresentando esse erro argument is unsafe, não me prejudica em nada, o script funciona normal, só polui minha distrô, e gostaria de saber doq se trata
      Tá acontecendo em pelo menos dois:
       
      1. Minha bolt vip:
      A ideia dessa bolt é ela ter 10% de chance de dar um atk extra
       
       
       
      2. Uma estatua que cospe fogo(tipo uma wave)
      A ideia é dar use na statua e ela lançar uma wave de fogo, q mata qualquer um no caminho.
       
       
       
      No caso desse segundo, esse erro aparece várias vezes,  sempre q uso, aparentemente, cada um dos "i" do for, o primeiro, só quando dá a segunda bolt, , queria saber como resolver, pra parar de aparecer
       
    • By victordlr
      Enfim, estou usando uma base OTPokémon, semelhante a PokeZr... Os pokémons não selvagens do servidor, os pokémons que os jogadores capturam, Gloom, etc.... Estão dando muito dano, queria pelomenos aumentar o life dos pokémons selvagens ou tirar o dano que essas spells absurdas estão dando, não estou conseguindo....
       
       
       
      QUEM ME AJUDAR, VAI GANHAR MEU RESPEITO. 
       
      Porfavor, se alguem puder me ajudar agradeço muito...

    • By alquimistarando
      Oi desculpa incomodar gostaria da ajuda de alguém pra ajeitar esse jutsu, é  um tsukuyomi que leva eu e o inimigo pro word. O problema q estou tendo é  que quando leva eu e o cara,  não consigo usar nenhum outro jutsu lá simplificando, o combo de ataques meu não sai porém, o inimigo pode usar jutsus  em mim é pode me comba com as magias dele normalmente entao se alguem puder dar um help tirando essa função que me bloqueia de usar outros ataques  ou colocar ela pra bloquear o tageth em vez de mim, agradeço.antes q alguém pergunte se eu repeti os storages  das spels, eu não repeti, desculpem se não expliquei bem sou meio leigo tô  começando agr a mexer nessas coisas 
       
       
       
      local time = 15 -- tempo em segundos para voltar
      local points = 80 -- o tanto de skills ele ficara mais forte
      local condition = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(condition, CONDITION_PARAM_TICKS, time*1000)
      setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, points)
      setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, points)
      setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, points)
      setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, points)
      setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, points)
      setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, points)
      setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, points)
      function onCastSpell(cid, var)
      local waittime = 30 -- Tempo de exhaustion
      local storage = 15288
      if exhaustion.check(cid, storage) then
      return false
      end
      exhaustion.set(cid, storage, waittime)
      local pos = getCreaturePosition(cid)
      local target = getCreatureTarget(cid)
      local targetpos = getCreaturePosition(target)
      local Tile1 = {x = 996, y = 1001, z = 7} -- position onde o player sera teleportado
      local Tile2 = {x = 996, y = 997, z = 7} -- position onde o target sera teleportado
      local from1,to1 = {x=1509, y=1259, z=7},{x=1509, y=1255, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      local from2,to2 = {x=979, y=911, z=7},{x=994, y=918, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      local from3,to3 = {x=1514, y=1262, z=7},{x=1504, y=1253, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      local from4,to4 = {x=1552, y=1254, z=7},{x=1561, y=1262, z=7} -- ponto 1 ao ponto 2 da area
      local from5,to5 = {x=979, y=911, z=7},{x=994, y=918, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      local from6,to6 = {x=1156, y=1192, z=7},{x=1172, y=1172, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      local from7,to7 = {x=664, y=1096, z=7},{x=685, y=1104, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      local from8,to8 = {x=1553, y=1254, z=7},{x=1562, y=1262, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      if isInRange(pos, from1, to1) or isInRange(pos, from2, to2) or isInRange(pos, from3, to3) or isInRange(pos, from4, to4) or isInRange(pos, from5, to5) or isInRange(pos, from6, to6) or isInRange(pos, from7, to7) or isInRange(pos, from8, to8) then
      doPlayerSendCancel(cid, "Você nao pode usar o Tsukuyomi World aqui!")
      return FALSE
      end
      if not isPlayer(target) then
      doPlayerSendCancel(cid, "Você so pode usar essa magia em players!")
      return FALSE
      end
      local function Teleport_Player(cid)
      doTeleportThing(cid,pos)
      end
      local function Teleport_Target(target)
      doCreatureSetNoMove(target, 0)
      doTeleportThing(target,targetpos)
      end
      doAddCondition(cid, condition)
      doCreatureSetNoMove(target, 1)
      doTeleportThing(cid,Tile1)
      doTeleportThing(target,Tile2)
      doSendMagicEffect(targetpos, 182)
      addEvent(Teleport_Player, time*1000, cid)
      addEvent(Teleport_Target, time*1000, target)
      return TRUE
      end
       
       
       
    • By knepperzik
      Boa Noite!
      Detalhes: tfs 0.4, narutibia.
      Então, estou com um problema gigantesco, peço a ajuda de vocês!
      Por exemplo:
      Vocações que usa gloves, quando vai usar uma sword e vai hitar alguma coisa, simplesmente o servidor congela!!
      Sem nenhum erro na distro.
       
       
    • By LeoPetry
      .Qual servidor ou website você utiliza como base?  TFS 0.4
       
      Qual o motivo deste tópico? Erros no SQLITE, se alguém puder me dar um auxilio
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
  • Recently Browsing   0 members

    No registered users viewing this page.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

Tibia King Recomenda

DokeHost - Soluções em Hospedagem

VPS Windows
VPS Linux
Servidor VPS
×
×
  • Create New...