Ir para conteúdo
  • Cadastre-se

[PEDIDO-SPELL] magia De Trap


Ir para solução Resolvido por Capitao wyz,

Posts Recomendados

Olá,gostaria que me ajudassem com uma magia que ao usar no target iria deixar ele trapado(não ficaria stun,ficaria imóvel mesmo) e uma que faria a mesma coisa só que em área proucurei aqui no tk mas não achei :/, não sei se coloquei na área certa não manjo muito das áreas aqui do tk

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

Este tópico foi movido para a seção de Suporte Otserv Alternativo

function onLove()
if getPlayerTrueLove(girlfriend) then
doPlayerBeHappy(cid, true)
doRemoveVirginity(cid, true)
else
doSendCancel(cid,"you do not know how good it feels to be loved")
end end

;)

 

Link para o post
Compartilhar em outros sites
Em 06/04/2021 em 19:34, G Asa disse:

Olá,gostaria que me ajudassem com uma magia que ao usar no target iria deixar ele trapado(não ficaria stun,ficaria imóvel mesmo) e uma que faria a mesma coisa só que em área proucurei aqui no tk mas não achei :/, não sei se coloquei na área certa não manjo muito das áreas aqui do tk

algo tipo isso? 

(não ta funcional)

local pos = getThingPos(cid)
local positions = { 
	[1] = {x = pos.x, y = pos.y-1, z = pos.z},
	[2] = {x = pos.x -1, y = pos.y-1, z = pos.z},
	}
	
function isWalkable(positions) -- by Nord / editado por Omega
	if getTileThingByPos({x = positions.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then
		return false
	elseif isCreature(getTopCreature(pos).uid) then
		return false
	elseif getTileInfo(pos).protection then
		return false
	elseif hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then
		return false
	end
	return true
end 
function onCastSpell(cid, var)
	for _, var in pairs(positions) do
		if isWalkable(var) then
		doCreatureSetNoMove(var, 1)
		
		local combat = createCombatObject()
		return doCombat(cid, combat, var)
		end
	end
	return true
end

 

Link para o post
Compartilhar em outros sites
  • Solução

Em area

 

local config = {
	exhaust_storage = 5750,
	exhaust_time = 30,
	
	-- walls conf
	walls_time = 10,
	area_size = 3,
	walls_pos = {
		["vertical"] = 13051,
		["horizontal"] = 13051,
		["rightcorner"] = 13051,
		["leftcorner"] = 13051
	}
}

local function buildWalls(cid)
	local cid_pos = getThingPosition(cid)
	local size = config.area_size
	for x = -size, size do
		for y = -size, size do
			if(math.abs(x) == size or math.abs(y) == size) then
				local target_pos = {x = (cid_pos.x + x), y = (cid_pos.y + y), z = cid_pos.z}
				if(doTileQueryAdd(cid, target_pos) == 1 and not getTileInfo(target_pos).protection) then
					local create_item = nil
					if(x == -size and y == -size) then
						create_item = config.walls_pos["leftcorner"]
					elseif(x == size and y == size) then
						create_item = config.walls_pos["rightcorner"]
					elseif(math.abs(x) == size and not (x == size and y == -size)) then
						create_item = config.walls_pos["vertical"]
					else
						create_item = config.walls_pos["horizontal"]
					end
					
					doCreateItem(create_item, 1, target_pos)
					local _time = config.walls_time
					for i = 0, _time do
						addEvent(function()
							local uid = getTileItemById(target_pos, create_item).uid
							if(uid ~= 0) then
								if(i < _time) then
									doSendAnimatedText(target_pos, (_time - i), 180)
								else
									doRemoveItem(uid)
								end
							end
						end, 1000 * i)
					end
				end
			end
		end
	end
end

function onCastSpell(cid, var)
	if(isPlayer(cid) and exhaustion.check(cid, config.exhaust_storage)) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde " .. exhaustion.get(cid, config.exhaust_storage) .. " segundos para usar novamente.")
		return false
	end
	
	exhaustion.set(cid, config.exhaust_storage, config.exhaust_time)
	buildWalls(cid)
	return true
end
	<instant name="Nome da magia" words="Nome da magia" lvl="325" mana="10" aggressive="1" range="5" blockwalls="1" selftarget="1" exhaustion="1900" needlearn="0" event="script" value="EX:Hashirama/Nome da magia.lua">

Em Target

local t = { 
remove_time = 5, -- tempo em segundos para remover as magic wall
item_id = 13057, -- id da lavar que vai ficar ao redor
effe =  480 -- efeito da lava(fogo- sla)
}

function isWalkable(pos, creature, pz, proj)
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
	local creature = getTopCreature(pos)
    if creature.type > 0 then	return false end
	if getTilePzInfo(pos) and not pz then return false end
	local n = not proj and 3 or 2
	for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                return false
            end
        end
	end
return true
end

function removeItem(posAll)
	for i=1, #posAll do
		for j=0, 255 do
			pos_stack = {x=posAll[i].x,y=posAll[i].y,z=posAll[i].z,stackpos=j}
			removeTile = getThingfromPos(pos_stack)
			if removeTile.itemid == t.item_id then
				doRemoveItem(removeTile.uid)
			end
		end
	end
end

function onCastSpell(cid, var)



local waittime = 3 -- Tempo de exhaustion em segundos
local storage = 5853 -- Storage de Spell, nunca usar a mesma em outra spell, a menos que não queira usar duas spell juntas!

if exhaustion.check(cid, storage) then
doPlayerSendCancel(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.")
return false
end

local pos = getPlayerPosition(getCreatureTarget(cid))
posTile1 = {x=pos.x+1,y=pos.y+1,z=pos.z,stackpos=1}
posTile2 = {x=pos.x+1,y=pos.y,z=pos.z,stackpos=1}
posTile3 = {x=pos.x+1,y=pos.y-1,z=pos.z,stackpos=1}
posTile4 = {x=pos.x,y=pos.y-1,z=pos.z,stackpos=1}
posTile5 = {x=pos.x-1,y=pos.y-1,z=pos.z,stackpos=1}
posTile6 = {x=pos.x-1,y=pos.y,z=pos.z,stackpos=1}
posTile7 = {x=pos.x-1,y=pos.y+1,z=pos.z,stackpos=1}
posTile8 = {x=pos.x,y=pos.y+1,z=pos.z,stackpos=1}
posAll = {posTile1,posTile2,posTile3,posTile4,posTile5,posTile6,posTile7,posTile8}


---- aqui \/ você configura de acordo com a posição do seu efeito, para centralizar ele
local pose = getPlayerPosition(getCreatureTarget(cid))
posTe1 = {x=pose.x+1,y=pose.y+1,z=pose.z}
posTe2 = {x=pose.x+1,y=pose.y,z=pose.z}
posTe3 = {x=pose.x+1,y=pose.y-1,z=pose.z}
posTe4 = {x=pose.x,y=pose.y-1,z=pose.z}
posTe5 = {x=pose.x-0,y=pose.y-1,z=pose.z}
posTe6 = {x=pose.x-0,y=pose.y,z=pose.z}
posTe7 = {x=pose.x-0,y=pose.y+1,z=pose.z}
posTe8 = {x=pose.x,y=pose.y+1,z=pose.z}
posTall = {posTe1,posTe2,posTe3,posTe4,posTe5,posTe6,posTe7,posTe8}
--- fim /\ da configuração

for a= 1, #posTall do
doSendMagicEffect(posTall[a], t.effe)
end

addEvent(function()
for i=1, #posAll do
	if isWalkable(posAll[i]) then
		doCreateItem(t.item_id, 1, posAll[i])
	end
end
end, 500)

addEvent(removeItem, t.remove_time*1000, posAll)
exhaustion.set(cid, storage, waittime)

return true
end
<instant name="Nome da magia" words="Nome da magia" lvl="180" mana="10" aggressive="1" range="5" blockwalls="1" needtarget="1" exhaustion="1900" needlearn="0" event="script" value="EX:Hashirama/Nome da magia.lua">

Se ajudei deixe o like e rep se possivel :3

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

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 Gabriel CM
      No tibia 8.6 é possivel editar o dat do tibia para que ao clicar no mapa o boneco passe por cima de fire field, etc. (https://tibialife.forumeiros.com/t20-seu-tibiabotng-nao-passa-em-cima-de-posion-fire-entre-aqui)

      tem como fazer isso em client 13+?
    • Por Kazuya9629
      LINK
      https://br.ccm.net/download/baixaki-409-adobe-air
       
      Scaner
      https://www.virustotal.com/gui/file/6718308e10a45176155d0ecc8458bd3606308925b91f26a7d08c148cf52c9db3?nocache=1
       
      Diretorio
      AdobeAIRInstaller-32.0.exe
    • Por Savidotti
      local object_itemid = { [16487] = {transform_to = 16488, premium = true, useWith=true}, [16488] = {transform_to = 16487, premium = true, useWith=false}, [16490] = {transform_to = 16491, premium = true, useWith=true}, [16491] = {transform_to = 16490, premium = true, useWith=false}, [16493] = {transform_to = 16494, premium = true, useWith=true}, [16494] = {transform_to = 16493, premium = true, useWith=false}, [16496] = {transform_to = 16497, premium = true, useWith=true}, [16497] = {transform_to = 16496, premium = true, useWith=false}, [16499] = {transform_to = 16500, premium = true, useWith=true}, [16500] = {transform_to = 16499, premium = true, useWith=false}, [16502] = {transform_to = 16503, premium = true, useWith=true}, [16503] = {transform_to = 16502, premium = true, useWith=false}, [16505] = {transform_to = 16506, premium = true, useWith=true}, [16506] = {transform_to = 16505, premium = true, useWith=false}, [16508] = {transform_to = 16509, premium = true, useWith=true}, [16509] = {transform_to = 16508, premium = true, useWith=false}, [16511] = {transform_to = 16512, premium = true, useWith=true}, [16512] = {transform_to = 16511, premium = true, useWith=false}, [16514] = {transform_to = 16515, premium = true, useWith=true}, [16515] = {transform_to = 16514, premium = true, useWith=false}, [16517] = {transform_to = 16518, premium = true, useWith=true}, [16518] = {transform_to = 16517, premium = true, useWith=false}, [16520] = {transform_to = 16521, premium = true, useWith=true}, [16521] = {transform_to = 16520, premium = true, useWith=false}, [16523] = {transform_to = 16524, premium = true, useWith=true}, [16524] = {transform_to = 16523, premium = true, useWith=false}, [16526] = {transform_to = 16527, premium = true, useWith=true}, [16527] = {transform_to = 16526, premium = true, useWith=false}, [16529] = {transform_to = 16530, premium = true, useWith=true}, [16530] = {transform_to = 16529, premium = true, useWith=false}, [16532] = {transform_to = 16533, premium = true, useWith=true}, [16533] = {transform_to = 16532, premium = true, useWith=false}, [16535] = {transform_to = 16536, premium = true, useWith=true}, [16536] = {transform_to = 16535, premium = true, useWith=false}, [16538] = {transform_to = 16539, premium = true, useWith=true}, [16539] = {transform_to = 16538, premium = true, useWith=false}, [16541] = {transform_to = 16542, premium = true, useWith=true}, [16542] = {transform_to = 16541, premium = true, useWith=false}, [16163] = {transform_to = 16164, premium = true, useWith=true}, [16164] = {transform_to = 16163, premium = true, useWith=false}, [16165] = {transform_to = 16166, premium = true, useWith=true}, [16166] = {transform_to = 16165, premium = true, useWith=false}, [16167] = {transform_to = 16168, premium = true, useWith=true}, [16168] = {transform_to = 16167, premium = true, useWith=false}, [16169] = {transform_to = 16170, premium = true, useWith=true}, [16170] = {transform_to = 16169, premium = true, useWith=false}, [16171] = {transform_to = 16172, premium = true, useWith=true}, [16172] = {transform_to = 16171, premium = true, useWith=false}, [16173] = {transform_to = 16174, premium = true, useWith=true}, [16174] = {transform_to = 16173, premium = true, useWith=false}, [16185] = {transform_to = 16186, premium = true, useWith=true}, [16186] = {transform_to = 16185, premium = true, useWith=false}, [16187] = {transform_to = 16188, premium = true, useWith=true}, [16188] = {transform_to = 16187, premium = true, useWith=false}, [16189] = {transform_to = 16190, premium = true, useWith=true}, [16190] = {transform_to = 16189, premium = true, useWith=false}, [16191] = {transform_to = 16192, premium = true, useWith=true}, [16192] = {transform_to = 16191, premium = true, useWith=false}, [16455] = {transform_to = 16456, premium = true, useWith=true}, [16456] = {transform_to = 16455, premium = true, useWith=false}, [16457] = {transform_to = 16458, premium = true, useWith=true}, [16458] = {transform_to = 16457, premium = true, useWith=false}, [16461] = {transform_to = 16462, premium = true, useWith=true}, [16462] = {transform_to = 16461, premium = true, useWith=false}, } function onUse(cid, item, frompos, item2, topos) local storage = 789561 local time = 1 local sendEffect = true -- true or false local EffectId = 1 local item_from_table = object_itemid[item.itemid] if exhaustion.check(cid, storage) then return false end if item_from_table then if getPlayerGroupId(cid) == 1 then if item_from_table.premium and not isPremium(cid) then return true and doPlayerSendCancel(cid, "Voce nao e vip.") end end doRemoveItem(item.uid,1) if item_from_table.useWith then doCreateItem(item_from_table.transform_to,1,topos) else doCreateItem(item_from_table.transform_to,1,frompos) end if sendEffect then doSendMagicEffect(getThingPos(cid), EffectId) end end return true and exhaustion.set(cid,storage,time) end Este é o Script, o que ocorre é que sempre que reinicia o servidor os carpets somem, pelo que percebi quando o carpet é colocado no piso esta acontecendo como se fosse uma alteração de mapa e não como decoração sobre o piso atual.. e por isso quando reinicia o servidor eles somem.. como qualquer outra alteração de mapa com jogo online.. por favor alguém pode ajudar?

    • Por Darkwonn
      Estou editando a base ZRing, porém me deparei com um erro quando dois ou mais players estão na mesma localidade, em muitos testes já percebemos que é um erro meio aleatório, porém na maioria das vezes acontece quando começam a se movimentar. Este é o único erro apresentado no Terminal do Cliente. A distro está limpa.
       
      Estou disposto a pagar pela solução. Entrar em contato pelo tópico ou via Discord 
      Arkain#7143

    • Por Imperius
      Tinha visto isso no servidor do MegaTibia / Kaldrox e achei bem interessante.
       
      Todos os tópicos que encontrei sobre o assunto de alterar a cor das mensagens dos GMs, CMs e ADM no channel Help para vermelho, falavam que tinham que fazer uma configuração na própria source do servidor.
       
      Fiz uma gambiarra que funciona, sem a necessidade de mexer na source do servidor e de utilizar comandos para isso. Testei somente em TFS 0.4 e funciona tranquilamente.
       
      segue abaixo como configurar em seu otserver:
       
      data > talkactions > scripts > crie um arquivo chamado gmsayred.lua e cole o código abaixo:
       
      function onSay(cid, words, param, channel) if channel == CHANNEL_HELP then for _, pid in ipairs(getPlayersOnline()) do doPlayerSendChannelMessage(pid, '', "".. getCreatureName(cid) .. ": ".. words, TALKTYPE_CHANNEL_R1, CHANNEL_HELP) end return true end end  
      em talkactions.xml cole a tag abaixo:

       
      <!-- Gamemasters --> <talkaction default="yes" filter="quotation" logged="no" access="3" event="script" value="gmsayred.lua"/>    
      e pronto! Agora é só enviar alguma mensagem no Help que a mensagem ficará em vermelho.
       

       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo