Jump to content

Recommended Posts

.Qual servidor ou website você utiliza como base? 
OTX2 / TFS 0.4 

 

Qual o motivo deste tópico? 

 

Está surgindo algum erro? Se sim coloque-o aqui. 

Citar

Não

 

Você tem o código disponível? Se tiver publique-o aqui: 

 

Spoiler


   local PosicionesDeLosJugadores = {
      { x = 32249, y = 31585, z = 7, stackpos = 253 }, -- ultimo sempre sem virgula
      { x = 32249, y = 31586, z = 7, stackpos = 253 },
      { x = 32249, y = 31587, z = 7, stackpos = 253 },
      { x = 32249, y = 31588, z = 7, stackpos = 253 }
   }
   local DestinoDeLosJugadores = {
      { x = 32250, y = 31600, z = 8 }, -- ultimo sempre sem virgula 
      { x = 32250, y = 31600, z = 8 },
      { x = 32250, y = 31600, z = 8 },
      { x = 32250, y = 31600, z = 8 }

   }


local monsters = {
{nome = "Rat", pos = {x= 32244, y= 31594, z=8}}, -- MONSTRO QUE VAI NASCER SE SÓ 1 PLAYER FOR TELEPORTADO
{nome = "Spider", pos = {x= 32244, y= 31594, z=8}}, -- MONSTRO QUE VAI NASCER SE 2 PLAYERS FOR TELEPORTADO
{nome = "Dwarf", pos = {x= 32244, y= 31594, z=8}}, -- MONSTRO QUE VAI NASCER SE 3 PLAYERS FOR TELEPORTADO
{nome = "Elf", pos = {x= 32244, y= 31594, z=8}}, -- MONSTRO QUE VAI NASCER SE 4 PLAYERS FOR TELEPORTADO
{nome = "Rotworm", pos = {x= 32244, y= 103159450, z=8}}  -- MONSTRO QUE VAI NASCER SE 5 PLAYERS FOR TELEPORTADO
}
   --# Cantidad minima de jugadores que pueden entrar.
   local JugadoresMinimosParaEntrar = 1
   local NivelMinimoRequerido = 1

   --# Esta funcion solo se puede modificar si usara otro tipo de palanca.
   local function onUseLever(item)
      doTransformItem(item.uid, (item.itemid == 1945 and 1946 or 1945))
      return true
   end

   --# Funcion principal, no necesitas editarla solo configurar las variables al comienzo del script!!!
   function onUse(cid, item, fromPosition, target, toPosition)
   local count_players = 0
   local _errorLvl = 0
   local GrupoDeJugadores = {}
   local index = 1
   local _errorInfo = ''
   for _, position in pairs(PosicionesDeLosJugadores) do
      local Jugador = getThingfromPos(position)
      if isPlayer(Jugador.uid) then
         if getPlayerLevel(Jugador.uid) >= NivelMinimoRequerido then
         GrupoDeJugadores[index] = Jugador
         index = index + 1
         else
         _errorLvl = _errorLvl + 1
         end
      end
   end
   if _errorLvl > 0 then
      _errorInfo = ' (The minimum level is ' .. NivelMinimoRequerido .. ' and some players do not meet this requirement.)'
   end
   if ((index * 2) > (#PosicionesDeLosJugadores + #DestinoDeLosJugadores)) then
      if getPlayerAccess(cid) then
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'A symmetry error has been detected in the code, check the console for more details.')
      end
      print('ERROR: The variables do not comply with a correct symmetry.')
      --!!! Solution: reparar las tablas de posiciones...
      return false
   end
   if #GrupoDeJugadores == 0 then
      doPlayerSendCancel(cid, 'There is no player in his starting position.' .. _errorInfo)
      return onUseLever(item)
   end
   if #GrupoDeJugadores < JugadoresMinimosParaEntrar then
      doPlayerSendCancel(cid, 'To start, there must be at least ' .. JugadoresMinimosParaEntrar .. ' players.' .. _errorInfo)
      return onUseLever(item)
   end
   for _, Jugador in pairs(GrupoDeJugadores) do
      doSendMagicEffect(getCreaturePosition(Jugador.uid), CONST_ME_POFF)
      doTeleportThing(Jugador.uid, DestinoDeLosJugadores[_])
      count_players = count_players + 1
      doSendMagicEffect(DestinoDeLosJugadores[_], CONST_ME_TELEPORT)
      ---------- sistema de criar bixos por jogadores -----
       if (i == #DestinoDeLosJugadores) and (count_players == 0) then
          return true
         end   
      end
   
      if count_players == 1 then
         doSummonCreature(monsters[1].nome, monsters[1].pos)
      
      elseif count_players == 2 then
         doSummonCreature(monsters[2].nome, monsters[2].pos)
         
      elseif count_players == 3 then
         doSummonCreature(monsters[3].nome, monsters[3].pos)

      elseif count_players == 4 then
         doSummonCreature(monsters[4].nome, monsters[4].pos)

      elseif count_players == 5 then
         doSummonCreature(monsters[5].nome, monsters[5].pos)
         ---------- fim do sistema de criar monstros por jogadores ------
            


      doPlayerSendCancel(cid, 'You are welcome!')
   end
   return onUseLever(item)
   end

---------------------- kick test 2 

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

 

Salve ! Gostaria de pedir ajuda  com uma coisa ... eu não estou conseguindo dar um clear na area do boss ... "EXEMPLO"  se eu entro  e não consigo matar o boss ... ao entrar de novo terá 2 boss ... Outro problema é fazer uma checagem ... se existir algum player fazendo a boss room  o outro player que puxar a alavanca consegue descer gostaria de bloquear isso com uma mensagem que esta ocupado ... e o ultimo problema é adicionar um tempo para que o player ou os players que fizerem esta boss room só possam fazer novamente após 12 horas ...  e também adicionar um tempo X para que o player ou os players possam fazer o boss se não conseguirem serão kickados para fora da sala   estou  a dias procurando uma solução e enchendo o saco de muita gente pra fazer isso dar certo ...

 

 

 

 

OTCv8_-_Admin_2021-02-27_18-54-00.gif

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

👽Coloque isso nas funçoes da lib do servidor (Data/lib/compat/compat.lua)👽

Spoiler

 


function removeMonsterInArea() -- by Daaniel Gay
local positionsCheck = {}
for i = config.fromPos.x, config.toPos.x do
positionsCheck[#positionsCheck+1] = {x=i, y = config.fromPos.y, z = config.fromPos.z, stackpos = 0}
for j = config.fromPos.y+1, config.toPos.y do
positionsCheck[#positionsCheck+1] = {x=i, y = j, z = config.fromPos.z, stackpos = 0}
end
end
for j=1, #positionsCheck do
for i = 0, 255 do
positionsCheck[j].stackpos = i
local tile = getTileThingByPos(positionsCheck[j])
if isMonster(tile.uid) then
if getCreatureName(tile.uid) == config.boss then
doRemoveCreature(tile.uid)
end
end
end
end
end

 

 

 

 

🤓 Script do item vai ficar assim🧐

Spoiler

local Room_ini = {0, 0, 0} -- canto superior esquerdo da sala
local Room_fim = {0, 0, 0} -- canto inferior direito da sala
local Teleport_Player = {0, 0, 0} -- aonde o player ira ser teleportado

local Monster_name = "Flame Arcixt Gostoso" -- nome do monstro
local Monster_poss = {x,x,videos} -- posição que o monstro vai nascer

function onUse(cid,item,fromPosition,itemEx,toPosition)
	if #getPlayersInRange(Room_ini, Room_fim) >= 1 then
		doPlayerSendCancel(cid,"Tem alguém nessa sala.")
		return TRUE
	else
		removeMonsterInArea(Room_ini, Room_fim)
		doTeleportThing(cid,Teleport_Player)
		doCreateMonster(NOME,Monster_poss)
		return TRUE
	end
end

 

 

Edited by FlameArcixt (see edit history)

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

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 miguelprojac
      Estou tentando adaptar o script de subir texto animados do chão pra versa TSF 1.3 - revscript.
      mas estou tendo um problema em oque colocar nessa parte do script:
      local positions = { { x = 32365, y = 32236, z = 7 }, } local textoEvent = GlobalEvent("textoEvent") function textoEvent.onThink(interval) for i = 1, #positions do Position(positions[i]):doSendAnimatedText ...????? --------- ESSA LINHA ******* end return true end textoEvent:interval(50) textoEvent:register()    
      Não sei se estou no caminho certo, então se alguem que manja ai puder me dar um help, agradeço!
       
    • By dscmanga
      .Qual servidor ou website você utiliza como base? 
      tsf 3.0
      Qual o motivo deste tópico? 
      Portal para os bosses das tasks não funcionam
      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. 
      Boa noite pessoal, estou com problemas no portal dos bosses das tasks.
      Mesmo após terminar as tasks os portais não funcionam, eu verifique o RME e o UNIQUE ID esta correto, olhei no Script e tbm parece estar tudo em ordem.
      Cheguei a alterar o Unique para Action e tbm nada acontece.

      Os players não passam pelo portal. Alguém ja teve esse erro?
    • By samueldev
      Estou utilizando o TFS 1.3 e estou aprendendo a criar spells, fiz uma spell mas a condition não está funcionando, alguém sabe dizer o porque?
       
      local effect = 35 local effect2 = 32 local condition = Condition(CONDITION_PARALYZE) condition:setTicks(5 * 1000) local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE) combat:setParameter(COMBAT_PARAM_EFFECT, effect) local combat2 = Combat() combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_UNDEFINEDDAMAGE) combat2:setParameter(COMBAT_PARAM_EFFECT, effect2) combat2:addCondition(condition) local area = createCombatArea({     {1,3,1} }) combat:setArea(area) combat2:setArea(area) function onGetFormulaValues(player, level, magicLevel)     local min = (level / 5) + (magicLevel * 1.4) + 3     local max = (level / 5) + (magicLevel * 2.2) + 8     return -min, -max end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") local function execute(creature, variant)     combat2:execute(creature, variant) end function onCastSpell(creature, variant)     combat:execute(creature, variant)     addEvent(execute, 400, creature:getId(), variant)     return true end  
    • By Juliet
      .Qual servidor ou website você utiliza como base? 
      Dbo
      Qual o motivo deste tópico? 
      Erro no auto loot (Talk Actions)
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
      function ExistItemByName(name) -- by vodka local items = io.open("data/items/items.xml", "r"):read("*all") local get = items:match('name="'..name..'"') if get == nil or get == "" then return false end return true end local function getPlayerList(cid) local tab = {} if getPlayerStorageValue(cid, 04420021) ~= -1 then table.insert(tab, getPlayerStorageValue(cid, 04420021)) end if getPlayerStorageValue(cid, 04420031) ~= -1 then table.insert(tab, getPlayerStorageValue(cid, 04420031)) end if getPlayerStorageValue(cid, 04420041) ~= -1 then table.insert(tab, getPlayerStorageValue(cid, 04420041)) end if getPlayerStorageValue(cid, 04420051) ~= -1 then table.insert(tab, getPlayerStorageValue(cid, 04420051)) end if #tab > 0 then return tab end return false end local function addToList(cid, name) local itemid = getItemIdByName(name) if getPlayerList(cid) and isInArray(getPlayerList(cid), itemid) then return false end if getPlayerStorageValue(cid, 04420021) == -1 then return doPlayerSetStorageValue(cid, 04420021, itemid) elseif getPlayerStorageValue(cid, 04420031) == -1 then return doPlayerSetStorageValue(cid, 04420031, itemid) elseif getPlayerStorageValue(cid, 04420041) == -1 then return doPlayerSetStorageValue(cid, 04420041, itemid) elseif getPlayerStorageValue(cid, 04420051) == -1 then return doPlayerSetStorageValue(cid, 04420051, itemid) end end local function removeFromList(cid, name) local itemid = getItemIdByName(name) if getPlayerStorageValue(cid, 04420021) == itemid then return doPlayerSetStorageValue(cid, 04420021, -1) elseif getPlayerStorageValue(cid, 04420031) == itemid then return doPlayerSetStorageValue(cid, 04420031, -1) elseif getPlayerStorageValue(cid, 04420041) == itemid then return doPlayerSetStorageValue(cid, 04420041, -1) elseif getPlayerStorageValue(cid, 04420051) == itemid then return doPlayerSetStorageValue(cid, 04420051, -1) end return false end function onSay(cid, words, param) if param == "" then local fi = getPlayerStorageValue(cid, 04420021) ~= -1 and getItemNameById(getPlayerStorageValue(cid, 04420021)) or "" local se = not vip.hasVip(cid) and "Não disponível para free account" or getPlayerStorageValue(cid, 04420031) ~= -1 and getItemNameById(getPlayerStorageValue(cid, 04420031)) or "" local th = not vip.hasVip(cid) and "Não disponível para free account" or getPlayerStorageValue(cid, 04420041) ~= -1 and getItemNameById(getPlayerStorageValue(cid, 04420041)) or "" local fo = not vip.hasVip(cid) and "Não disponível para free account" or getPlayerStorageValue(cid, 04420051) ~= -1 and getItemNameById(getPlayerStorageValue(cid, 04420051)) or "" local stt = getPlayerStorageValue(cid, 04421011) == 1 and "sim" or "não" local str = getPlayerStorageValue(cid, 04421001) == 1 and "sim" or "não" doPlayerPopupFYI(cid, "{Auto-Loot} ---Menu Auto Loot do jogador\n{Auto-Loot} ----------------\n{Auto-Loot} ---Coletar dinheiro: "..stt..". Para ligar/desligar: !autoloot gold \n{Auto-Loot} ---Coletar itens únicos: "..str..". Para ligar/desligar: !autoloot power\n{Auto-Loot} --Configuração dos slots:\n{Auto-Loot} ---Slot 1: "..fi.."\n{Auto-Loot} ---Slot 2: "..se.."\n{Auto-Loot} ---Slot 3: "..th.."\n{Auto-Loot} ---Slot 4: "..fo.."\n{Auto-Loot} ---Para adicionar um novo item aos slots: !autoloot add, <nome do item>\n{Auto-Loot} ---Para retirar um item dos slots: !autoloot remove, <nome do item>\n{Auto-Loot} ---Para limpar todos os slots utilize: !autoloot clear\n{Auto-Loot} ---Para informações de quanto você já fez utilizando a coleta de dinheiro, use: !autoloot goldinfo\n\nSe seu autoloot bugar use !autoloot desbug\n\n{Auto-Loot} ----------------") return true end local t = string.explode(param, ",") if t[1] == "power" then local check = getPlayerStorageValue(cid, 04421001) == -1 and "ligou" or "desligou" doPlayerSetStorageValue(cid, 04421001, getPlayerStorageValue(cid, 04421001) == -1 and 1 or -1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você "..check.." o auto loot.") elseif t[1] == "gold" then local check = getPlayerStorageValue(cid, 04421011) == -1 and "ligou" or "desligou" doPlayerSetStorageValue(cid, 04421011, getPlayerStorageValue(cid, 04421011) == -1 and 1 or -1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você "..check.." a coleta de dinheiro.") doPlayerSetStorageValue(cid, 04421021, 0) elseif t[1] == "goldinfo" then local str = getPlayerStorageValue(cid, 04421011) == -1 and "O sistema de coleta de dinheiro está desligado" or "O sistema já coletou "..getPlayerStorageZero(cid, 04421021).." gold coins" doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, str) elseif t[1] == "add" then if ExistItemByName(t[2]) then local item = getItemIdByName(t[2]) if isInArray({2160, 2148, 2152}, item) then return doPlayerSendCancel(cid, "Você não pode adicionar moedas no autoloot. Para coletar dinheiro use !autoloot gold") end if vip.hasVip(cid) then if getPlayerStorageValue(cid, 04420011) < 3 then if addToList(cid, t[2]) then doPlayerSetStorageValue(cid, 04420011, getPlayerStorageValue(cid, 04420011) + 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, t[2].." adicionado à sua lista do auto loot! Para ver sua lista diga !autoloot list") else doPlayerSendCancel(cid, t[2].." já está em sua lista!") end else doPlayerSendCancel(cid, "Sua lista já tem 4 itens! Você deve remover algum antes de adicionar outro.") end else if getPlayerStorageValue(cid, 04420011) == -1 then if addToList(cid, t[2]) then doPlayerSetStorageValue(cid, 04420011, getPlayerStorageValue(cid, 04420011) + 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, t[2].." adicionado à sua lista do auto loot! Para ver sua lista diga !autoloot") else doPlayerSendCancel(cid, t[2].." já está em sua lista!") end else doPlayerSendCancel(cid, "Você já tem um item adicionado no auto loot! Para adicionar outro, você deve remover o item atual.") end end else doPlayerSendCancel(cid, "Este item não existe!") end elseif t[1] == "remove" then if ExistItemByName(t[2]) then if removeFromList(cid, t[2]) then doPlayerSetStorageValue(cid, 04420011, getPlayerStorageValue(cid, 04420011) - 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, t[2].." removido da sua lista do auto loot!") else doPlayerSendCancel(cid, "Este item não está na sua lista!") end else doPlayerSendCancel(cid, "Este item não existe!") end elseif t[1] == "clear" then if getPlayerStorageValue(cid, 04420011) > -1 then doPlayerSetStorageValue(cid, 04420011, -1) doPlayerSetStorageValue(cid, 04420021, -1) doPlayerSetStorageValue(cid, 04420031, -1) doPlayerSetStorageValue(cid, 04420041, -1) doPlayerSetStorageValue(cid, 04420051, -1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Lista limpa!") else doPlayerSendCancel(cid, "Sua lista ja esta limpa!") end elseif t[1] == "desbug" or t[1] == "desbugar" then doPlayerSetStorageValue(cid, 04420011, -1) doPlayerSetStorageValue(cid, 04420021, -1) doPlayerSetStorageValue(cid, 04420031, -1) doPlayerSetStorageValue(cid, 04420041, -1) doPlayerSetStorageValue(cid, 04420051, -1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Desbugado!") elseif t[1] == "list" then local fi = getPlayerStorageValue(cid, 04420021) ~= -1 and ""..getItemNameById(getPlayerStorageValue(cid, 04420021)).."\n" or "" local se = getPlayerStorageValue(cid, 04420031) ~= -1 and ""..getItemNameById(getPlayerStorageValue(cid, 04420031)).."\n" or "" local th = getPlayerStorageValue(cid, 04420041) ~= -1 and ""..getItemNameById(getPlayerStorageValue(cid, 04420041)).."\n" or "" local fo = getPlayerStorageValue(cid, 04420051) ~= -1 and ""..getItemNameById(getPlayerStorageValue(cid, 04420051)).."\n" or "" doPlayerPopupFYI(cid, "O sistema auto loot está coletando:\n "..fi..""..se..""..th..""..fo) end return true end  
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

    • By So volto tarde
      Boas, resolvi me aventurar em LUA e me deparei em um ponto onde não sabia como utilizar dos parâmetros de uma função para ter um clean code, no JS, poderíamos usar no seguinte padrão:
       
      function somar(param1, param2) {
      let result = param1 + param2
      return result;
      }
      Executando a função, com somar(1, 4), o valor retornado seria 5.
       
      Não encontrei nenhuma forma semelhante nos derivados que andei mexendo. Alguém consegue dar uma luz?
       
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo