Jump to content

Recommended Posts

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

Edited by G Asa (see edit history)
Link to post
Share on other sites

  • Assistente

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 to post
Share on other 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

 

arcixt.png.013e2ae477e2a550a7d99a71e2ca6758.png

Arcixt Mapping Build

Interessado(a) em Freelance de mapping? 5 anos na área trabalhando com todos os versões de otservers

Interested in Freelance mapping? 5 years in the field working with all versions from otservers

91_Discord_logo_logos-512.png.fb621298e5bfd4a911090b3363387c16.png  Discord: Arcixt#1329 

facebook-512.png.890e3fc2724e38221ca419deb6f3416a.png  Facebook Page: www.facebook.com/ArcixtMapping  

 

 

Link to post
Share on other sites

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 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.

  • Similar Content

    • By Kamity
      Ola tudo bem ? Meu nome e Guilherme sou formado em Engenharia de Software e trabalho com desenvolvimento web usando principalmente React e NodeJS, a um bom tempo atras antes da faculdade gostava de criar servidores e mexer com o próprio gesior em si, para tentar criar componentes personalizados para o próprio gesior, como muitos que mexem com o gesior sabem como e difícil implementar melhorias, pois o gesior em si e totalmente travado em questão de layout e responsividade. Por isso decidi recriar todo o layout do site do tibia tentando chegar o mais próximo possível do que a CipSoft tem em seu site, só que com a disposição de muito mais configurações de menus, componentes personalizados, uma estruturação de pastas muito melhor e fácil de se encontrar e muito mais, fora a questão de estar utilizando uma linguagem nova sendo ela React para o (FrontEnd) e NodeJS para o (BackEnd) os dois usando TypeScript para a tipagem das funções. Permitindo milhões de possibilidades a serem implantadas no site. 
       
      Por enquanto estou nessa empreitada do site sozinho, tenho um amigo que esta na equipe comigo, só que esta mexendo em uma source de ATS, que não esta ligada a minha por enquanto.  Por enquanto temos uma organização no github chamada Varspen onde iremos postar qual quer tipo de conteúdo gratuito para uso de vocês.
       
      Tenho certeza que muitos vão perguntar sobre a questão de ser gratuito a uso. Por enquanto estou criando ele em um repositório privado, só que sim pretendo em um futuro pretendo lançar ele gratuitamente para o uso da comunidade do OTS.
       
      Todo tipo de atualização que achar relevante irei colocar dentro dos spoilers.
       
      Varspen Preview
       
       
      Caso queiram conversar sobre o projeto, e como ira funcionar, sintam-se a vontades para entrar no servidor do discord, para tirarem maiores duvidas.
       
      Discord Varspen
      Github Varspen
      Meus Contatos
          Discord: Guilherme#3515
          Github: Guilherme Fontes 
       
    • By Joao Rocha
      ESTAMOS FAZENDO UM (Narutibia) E ESTAMOS DE PRECISANDO SCRIPTER PARA AJUDA A GENTE NO SERVIDOR!!
      STAFF DESTINY
      QUEM QUISER ENTRA NO DISCORD DO JOGO LINK https://discord.gg/fq3XAHbh
    • By Yan Liima
      Limite máximo de players em guild WEBSITE 😜

       
      Bom, decidi postar essa modificação que fiz a muito tempo, pois vi que bastante gente queria
      Para Modern AAC e vi que ninguém soube ajudar. Como é algo bem simples e ta parado aqui faz tempo
      Decidi disponibilizar. Não só para Modern, mas para Gesior também!
      Estarei disponibilizando de duas maneiras:
      1º Será um valor configurado no proprio config.php, onde determinará o limite máximo de todas as guild.
      2º A verificação será feita por DB, onde terá um valor padrão para cada guilda criada, podendo ser alterado o valor de membros maximo.
      Ou seja, a guilda número UM pode ter máximo de 50 players, e a guilda número DOIS pode ter o máximo de 100.
      Vocês pode ser criativos e vender items que aumenta o limite ou fazer eventos/sorteios para aumentar...

       
      Enfim, vamos lá...
      Primeira maneira:
      Modern AAC:
      Gesior:
       
      Segunda maneira:
       
      Modern AAC:
      Gesior:
       
      Prontinho galera!!!
      Caso queiram para cmd in-game: LINK
    • By Alpha045
      Boa noite!! Estou editando um site, e o mesmo do PokeMasterX, O nome do erro e esse: Sample character could not be found! Se alguem se disponibilizar a me ajudar ficarei grato!!

    • By Igor Suzuki
      [27/12/2020 19:53:00] [Error - TalkAction Interface] 
      [27/12/2020 19:53:00] In a timer event called from: 
      [27/12/2020 19:53:00] data/talkactions/scripts/move1.lua:onSay
      [27/12/2020 19:53:00] Description: 
      [27/12/2020 19:53:00] (luaGetThingFromPos) Tile not found
       
      Queria uma solução pra isso, por favor, está lagando muito o server.
       
      SCRIPT:
       
      local msgs = {"use ", ""}
      function doAlertReady(cid, id, movename, n, cd)
          if not isCreature(cid) then return true end
          local myball = getPlayerSlotItem(cid, 😎
          if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then
              doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!")
          return true
          end
          local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
          if not p or #p <= 0 then return true end
          for a = 1, #p do
              if getItemAttribute(p[a], cd) == "cd:"..id.."" then
                  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!")
              return true
              end
          end
      end
      function onSay(cid, words, param, channel)

          if param ~= "" then return true end
          if string.len(words) > 3 then return true end
          if #getCreatureSummons(cid) == 0 then
          doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.")
          return 0
          end
                            --alterado v1.5
      local mypoke = getCreatureSummons(cid)[1]
          if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end
          if getCreatureName(mypoke) == "Evolution" then return true end
          if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then
             name = getPlayerStorageValue(mypoke, 1010)   --edited
          else
             name = getCreatureName(mypoke)
          end  
          
          --local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke)
      local it = string.sub(words, 2, 3)
      local move = movestable[name].move1
      if getPlayerStorageValue(mypoke, 212123) >= 1 then
         cdzin = "cm_move"..it..""
      else
         cdzin = "move"..it..""       --alterado v1.5
      end
          if it == "2" then
              move = movestable[name].move2
          elseif it == "3" then
              move = movestable[name].move3
          elseif it == "4" then
              move = movestable[name].move4
          elseif it == "5" then
              move = movestable[name].move5
          elseif it == "6" then
              move = movestable[name].move6
          elseif it == "7" then
              move = movestable[name].move7
          elseif it == "8" then
              move = movestable[name].move8
          elseif it == "9" then
              move = movestable[name].move9
          elseif it == "10" then
              move = movestable[name].move10
          elseif it == "11" then
              move = movestable[name].move11
          elseif it == "12" then
              move = movestable[name].move12
          elseif it == "13" then
              move = movestable[name].move13
          end
          if not move then
              doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
          return true
          end
          
          if getPlayerLevel(cid) < move.level then
             doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.")
             return true
          end
          if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then
              doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.")
          return true
          end
          if getTileInfo(getThingPos(mypoke)).protection then
              doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")
          return true
          end
          
         if getPlayerStorageValue(mypoke, 3894) >= 1 then
            return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3
         end
                                        --alterado v1.6                  
          if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then       
              doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!")
          return true
          end
                                                                           --alterado v1.7 \/\/\/
      if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) then 
         local target = getCreatureTarget(cid)                                                                                       
         if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then 
            if isCreature(getMasterTarget(target)) then   --alterado v1.6                                                                   
               doSendMagicEffect(getThingPos(target), 211)
               doSendAnimatedText(getThingPos(target), "TOO BAD", 215)                                
               doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false)
               doSendMagicEffect(getThingPos(target), 211)
               doFaceCreature(target, getThingPos(mypoke))            
               return true       --alterado v1.6
            end
         end
      end

      if move.target == 1 then
          if not isCreature(getCreatureTarget(cid)) then
          doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.")
          return 0
          end
          if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then
          return 0
          end
          if getCreatureHealth(getCreatureTarget(cid)) <= 0 then
          doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.")
          return 0
          end
          if not isCreature(getCreatureSummons(cid)[1]) then
          return true
          end
          if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then
          doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.")
          return 0
          end
          if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then
          return 0
          end
      end
          local newid = 0
              if isSleeping(mypoke) or isSilence(mypoke) then  --alterado v1.5
                  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.")
                  return 0
              else
                  newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)
              end
              
          doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_ORANGE_1)
          
          local summons = getCreatureSummons(cid) --alterado v1.6
          addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)
          
          for i = 2, #summons do
             if isCreature(summons[i]) and getPlayerStorageValue(cid, 637501) >= 1 then
                docastspell(summons[i], move.name)        --alterado v1.6
             end
          end 
          docastspell(mypoke, move.name)
          doCreatureAddCondition(cid, playerexhaust)
          if useKpdoDlls then
              doUpdateCooldowns(cid)
          end
      return 0
      end
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo