Jump to content
kubqq

Scripting Bestiary & Charms - not giving to character

Recommended Posts

Hello.
I have problem with bestiary system.
I copied all files form other engine. These are:

C:\Users\Kuba\Desktop\OTS2\data\modules\scripts\bestiary\bestiary.lua

https://justpaste.it/9ix67     <-- File is too big to post here

C:\Users\Kuba\Desktop\OTS2\data\modules\scripts\bestiary\assets.lua:

https://justpaste.it/8pg6t

 

Ofc in modules.xml :

Code:
    <!-- Bestiary -->
    <module type="recvbyte" byte="225" script="bestiary/bestiary.lua" />
    <module type="recvbyte" byte="226" script="bestiary/bestiary.lua" />
    <module type="recvbyte" byte="227" script="bestiary/bestiary.lua" />
    <module type="recvbyte" byte="228" script="bestiary/bestiary.lua" />

 

I also added two tables to my database:

https://imgur.com/PACMdlO

https://imgur.com/QZIRDJU

 

And next:

C:\Users\Kuba\Desktop\OTS2\data\creaturescripts\scripts\others\bestiaryadd.lua:

 

function onKill(cid, target)
    if (not isMonster(target)) then
        return false
    end

    if getCreatureName(target) == "Chicken"  and getPlayerStorageValue(cid, 15001) < 2 then
        setPlayerStorageValue(cid, 15001, 2)
         doCreatureSay(cid, "You have added the creature 'Chicken' to your bestiary.", TALKTYPE_ORANGE_1)
        end
    return true

end

 

and ofc creaturescripts.xml:


     <!-- Bestiary -->
      <event type="kill" name="BestiaryOnKill" script="others/bestiaryadd.lua"/>

 

 

Before I added these of all, I did have empty popup windows Charms and Bestiary in Client, after add this I have these windows the same as Real Tibia but when I kill X monster I didnt have yellow frame on Bestiary Button and dont have unlocked monster also.

Can somebody help me with that?

Regards

Edited by kubqq (see edit history)

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.


  • Similar Content

    • By victor4312
      TFS EXCLUSIVE EDTION 0.5
      tentei varios scripts do forum e nenhum funciona, o problema é que também não aparece erros na distro,
      se alguem puder me ajudar a fazer esse script funcionar agradeço
       
       
       
    • By Pvp Easy
      .Qual servidor ou website você utiliza como base? 
      Baiak Wake
      Qual o motivo deste tópico? 
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
      Estou com problema no meu systema de vip, ele está todo perfeito em relação adicionar [VIP] name, e Tirar [VIP] quando acabar a vip, só estou com problema em uma scripts que peguei de checkvip, ela server como uma proteção de criações de chares exemplo se meu nick é [VIP] roberto, se eu criar Roberto, a scripts vai perdir para Mudar de Nome através de !unlock Name
      Só se eu criar o char Roberto e não logar, o char dar erro na distro, e depois que der SS ou servidor reiniciar, consigo entrar no char e andar normalmente. no caso eu queria que esta scripts desse uma opção de mudança de 1 minuto, se caso ele não mudasse de nome e passe 1minuto se tivesse off ou não, o char seria deletado

      @Storm
      Data/Creaturescripts/Checkname.lua
       
      local tempo = 30 -- em segundos para kickar o player
      function onLogin(cid)
      if isVipName(cid) then
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your name is invalid. Use !unlock NewCharName to unlock your char name. You will be kicked in ".. tempo .." seconds.") 
      doCreatureSetNoMove(cid, true)
      addEvent(doRemoveCreature, tempo*1000, cid, true)
      end
      return true
      end

      function isVipName(cid)
      local list = {}
      local query = db.getResult("SELECT `name` FROM `players` WHERE `group_id` < 2 ")
      if (query:getID() == -1) then
          return true 
      end
      repeat
      local name = query:getDataString("name")
      table.insert(list, name)
      until not query:next()
      for _, names in pairs(list) do
         if names:find("[VIP]") then
              names = names:gsub("%[VIP] ", "")
              if getPlayerName(cid) == names then
                  return true
              end
          end
      end
      query:free()
      return false
      end
       
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • By DarkRed
      .Qual servidor ou website você utiliza como base? 
      Poke Skyfall
       
      Qual o motivo deste tópico? 
      scripting que teleporta o player ao clica no items
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
      [09/07/2020 11:37:31] [Error - LuaScriptInterface::loadFile] data/actions/scripts/Corda.lua:3: '(' expected near 'onUse'
      [09/07/2020 11:37:31] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/Corda.lua)
      [09/07/2020 11:37:31] data/actions/scripts/Corda.lua:3: '(' expected near 'onUse'
       
       
      Você tem o código disponível? Se tiver publique-o aqui: 
      local newpos= {x = 1153, y = 954, z = 7}, -- posicao que o player deve ir ao clica na corda --
      function onUse(cid, newPosition,  toPosition)
      getPlayerStorage(cid,12345) =1 then
      doPlayerTeleportThing(cid, newpos),
      doplayerItemsTeleportitems(cid,12716) then -- 12716 id do items --
      end 
      end
       
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

    • By Lisbeky
      Bom dia pessoal, olha eu de novo ai :D
       
      Então, dessa vez irei pedir uma ajuda, pois ja tentei de tudo.
       
      tenho um evento chamado war Arena, nele são divididos 2 times(vermelho, azul), e o nome ja diz war arena, entao o objetivo é matar o outro time. bem... até ai tudo bem, o evento esta em perfeito estado, mas sendo que se eu entrar com 1 player no evento, ele fica preso la dentro, pois o sistema não reconhece que ele sobrou na war, pois não matou ninguém. 
       
      gostaria de pedir para implementar no meu script uma função para anular o evento quando tiver 1 ou 0 players na sala de espera.
       
      abaixo o script globalevents:
       
      local configWar = {
      MessageType = MESSAGE_INFO_DESCR,
      wallPos = {x=512,y=846,z=5,stackpos=1},
      wallPos1 = {x=513,y=846,z=5,stackpos=1},
      wallPos2 = {x=513,y=847,z=5,stackpos=1},
      wallPos3 = {x=513,y=848,z=5,stackpos=1},
      wallPos4 = {x=513,y=849,z=5,stackpos=1},
      wallPos5 = {x=512,y=849,z=5,stackpos=1},
      AccessMessage = "Only Gods and Gamemasters can execute an event!",
      FirstMessage = "Event Notice!",
      SecondMessage = "War Arena has been opened to join go through the portal on the top floor of depot.",
      ThirdMessage = "War Arena will begin in 5 minutes!",
      FourthMessage = "War Arena will begin in 3 minutes!",
      ClosingMessage = "War Arena will close and begin in 1 minute!",
      CloseMessage = "War Arena portal has closed and the event has begun!"
      }

      local waitingRoomFrompos = {x=617, y=625, z=7, stackpos=253}
      local waitingRoomTopos = {x=652, y=654, z=7, stackpos=253}
      --Functions for war.
      function EventNotice11(cid)
      addEvent(EventNotice21,5000,cid)
      doBroadcastMessage(configWar.FirstMessage,configWar.MessageType)
      end
      function EventNotice21(cid)
      addEvent(EventNotice31,10*1000,cid)
      doBroadcastMessage(configWar.SecondMessage,configWar.MessageType)
      end
      function EventNotice31(cid)
      addEvent(EventNotice41,120*1000,cid)
      doBroadcastMessage(configWar.ThirdMessage,configWar.MessageType)
      end
      function EventNotice41(cid)
      addEvent(EventNotice51,120*1000,cid)
      doBroadcastMessage(configWar.FourthMessage,configWar.MessageType)
      end
      function EventNotice51(cid)
      addEvent(EventNotice61,60*1000,cid)
      doBroadcastMessage(configWar.ClosingMessage,configWar.MessageType)
      end
      function EventNotice61(cid)
      doCreateItem(1600,1,configWar.wallPos)
      doCreateItem(1595,1,configWar.wallPos1)
      doCreateItem(1596,1,configWar.wallPos2)
      doCreateItem(1596,1,configWar.wallPos3)
      doCreateItem(1601,1,configWar.wallPos4)
      doCreateItem(1600,1,configWar.wallPos5)
      doBroadcastMessage(configWar.CloseMessage,configWar.MessageType)
      addEvent(BeginWAR,5*1000,cid)
      end
      --Start for War Event
      function BeginWAR(cid)
      for _, pid in ipairs(getPlayersOnline()) do
      if isInArea(getPlayerPosition(pid), waitingRoomFrompos, waitingRoomTopos) then
      doTeleportThing(pid, {x=635,y=614,z=7,stackpos=1}, false)
      end
      end
      end
      function SetEventWAR(cid)
      setGlobalStorageValue(1005, 0)--WAR
      end
      local WAR = 0
      local eventType = getGlobalStorageValue(1005)
      function onThink(cid, item, fromPosition, toPosition)
      if getGlobalStorageValue(1005) <= WAR then
      doRemoveItem(getThingFromPos(configWar.wallPos).uid,1)
      doRemoveItem(getThingFromPos(configWar.wallPos1).uid,1)
      doRemoveItem(getThingFromPos(configWar.wallPos2).uid,1)
      doRemoveItem(getThingFromPos(configWar.wallPos3).uid,1)
      doRemoveItem(getThingFromPos(configWar.wallPos4).uid,1)
      doRemoveItem(getThingFromPos(configWar.wallPos5).uid,1)
      setGlobalStorageValue(1005, 1)
      setGlobalStorageValue(2001, 0)
      setGlobalStorageValue(2002, 0)
      addEvent(EventNotice11,2000,cid)
      setGlobalStorageValue(28000, os.time(t))
      else
      doBroadcastMessage('Event System:\nEvent System Error, Please notify staff.')
      end
      return 1
      end
       
       
    • By Pvp Easy
      .Qual servidor ou website você utiliza como base? 
      Baiak Wake
       
       
      Pasta/Libs: 
       
      if not RealCastle then
          RealCastle = {
              openStorage = 722374,
              guildStorage = 722375,
              dateStorages = {722376,722377,722378}
          
          }
          function RealCastle:isInside(cid)
              local thingPos = getThingPos(cid)
              local areas = {
                  {{x = 1921, y = 484, z = 6}, {x = 2098, y = 607, z = 6}},
                  {{x = 2187, y = 396, z = 6}, {x = 2264, y = 511, z = 6}},
                  {{x = 2442, y = 416, z = 4}, {x = 2604, y = 521, z = 4}},
                  {{x = 2446, y = 391, z = 5}, {x = 2619, y = 543, z = 5}},
                  {{x = 2091, y = 449, z = 6}, {x = 2166, y = 508, z = 6}},
                  {{x = 1907, y = 606, z = 6}, {x = 2099, y = 735, z = 6}},
                  {{x = 2653, y = 442, z = 6}, {x = 2741, y = 559, z = 6}},
                  {{x = 2653, y = 442, z = 5}, {x = 2741, y = 559, z = 5}},
                  {{x = 2653, y = 442, z = 4}, {x = 2741, y = 559, z = 5}},
                  {{x = 2277, y = 613, z = 7}, {x = 2462, y = 716, z = 7}},
                  {{x = 2277, y = 613, z = 6}, {x = 2462, y = 716, z = 6}},
                  {{x = 2277, y = 613, z = 5}, {x = 2462, y = 716, z = 5}},
                  {{x = 2277, y = 613, z = 4}, {x = 2462, y = 716, z = 4}},
                  {{x = 2242, y = 723, z = 6}, {x = 2442, y = 894, z = 6}},
                  {{x = 2255, y = 804, z = 7}, {x = 2282, y = 832, z = 7}},
                  {{x = 2103, y = 638, z = 6}, {x = 2262, y = 740, z = 6}},
                  {{x = 2103, y = 638, z = 7}, {x = 2262, y = 740, z = 7}},
                  {{x = 1899, y = 590, z = 7}, {x = 2102, y = 730, z = 7}},
                  {{x = 2130, y = 781, z = 7}, {x = 2210, y = 923, z = 7}},
                  {{x = 2240, y = 835, z = 7}, {x = 2304, y = 916, z = 7}},
                  {{x = 1927, y = 739, z = 5}, {x = 2043, y = 927, z = 5}}
              }
              for _, area in next, areas do
                  if isInRange(thingPos, area[1], area[2]) then
                      return true
                  end
              end
              if (thingPos.x >= 2288 and thingPos.x <= 2364 and thingPos.y >= 433 and thingPos.y <= 509) or (thingPos.x >= 2148 and thingPos.x <= 2189 and thingPos.y >= 641 and thingPos.y <= 679) or (thingPos.x >= 2229 and thingPos.x <= 622 and thingPos.y >= 2320 and thingPos.y <= 704) then
                  return true
              end
              return false
          end
          function RealCastle:getAllPlayers()
              local players = {}
              for _, pid in next, getPlayersOnline() do
                  if self:isInside(pid) then
                      table.insert(players, pid)
                  end
              end
              return players
          end
          function RealCastle:removePlayers(messageType, message)
              local players = self:getAllPlayers()
              for _, pid in next, players do
                  doPlayerSetPzLocked(pid, false)
                  doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
                  if type(messageType) == "string" and messageType == "popup" then
                      doPlayerPopupFYI(pid, message)
                  else
                      doPlayerSendTextMessage(pid, messageType, message)
                  end
              end
          end
          function RealCastle:open()
              setGlobalStorageValue(self.openStorage, 1)
              setGlobalStorageValue(self.guildStorage, EMPTY_STORAGE)
              self:removePlayers("popup", "[War Castle] O domínio de sua guild pelo castelo acabou e você foi trazido a seu Templo.")
          end
          function RealCastle:close()
              setGlobalStorageValue(self.openStorage, EMPTY_STORAGE)
              local tomorrow = getTomorrowsDate()
              local tomorrowString = tomorrow[1].."/"..tomorrow[2].."/"..tomorrow[3]
              for i = 1, 3 do
                  setGlobalStorageValue(self.dateStorages, tomorrow)
              end
              local guild_id = getGlobalStorageValue(self.guildStorage)
              local guild_name = ""
              if guild_id ~= EMPTY_STORAGE then
                  guild_name = getGuildNameByID(guild_id)
                  self:removePlayers(MESSAGE_STATUS_CONSOLE_ORANGE, "[War Castle] A batalha pelo domínio do castelo se encerrou com vitória da guild "..guild_name.." e você foi trazido a seu Templo.")
                  doBroadcastMessage("[War Castle] A batalha terminou e a guild vencedora foi "..guild_name.."! Todos os jogadores dessa guild agora podem aproveitar o castelo até amanhã às 21:00!")
              else
                  guild_name = "Castelo LIVRE"
                  self:removePlayers(MESSAGE_STATUS_CONSOLE_ORANGE, "[War Castle] A batalha pelo domínio do castelo se encerrou e "..guild_name.." ficou com o domínio. Você foi trazido a seu Templo.")
                  doBroadcastMessage("[War Castle] A batalha terminou e nenhuma guild conseguiu dominar o castelo! Amanhã às 21:00 haverá uma nova batalha!")
              end
              db.query("DELETE FROM real_castle WHERE world_id = '"..getWorldId().."'")
              db.query("INSERT INTO real_castle (guild_name, guild_id, tomorrow, world_id) VALUES ('"..guild_name.."', '"..guild_id.."', '"..tomorrowString.."', '"..getWorldId().."')")
              doSaveServer()
          end
          function RealCastle:broadcast(message)
              for _, pid in next, self:getAllPlayers() do
                  doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, message)
              end
          end
          function RealCastle:domain(cid)
              setGlobalStorageValue(self.guildStorage, getPlayerGuildId(cid))
              self:broadcast("[War Castle] O jogador ["..getPlayerName(cid).."] da guild ["..getPlayerGuildName(cid).."] dominou o castelo! As outras guilds têm até às 21:59 para conseguir tirar o domínio deles, não desistam!")
          end
          function RealCastle:isDominating(cid)
              return getPlayerGuildId(cid) == getGlobalStorageValue(self.guildStorage)
          end
          function RealCastle:isOpen()
              return getGlobalStorageValue(self.openStorage) ~= EMPTY_STORAGE
          end
          function RealCastle:checkLogin(cid)
              if self:isInside(cid) then
                  if not self:isDominating(cid) then
                      doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
                      doPlayerPopupFYI(cid, "[War Castle] Você foi removido do castelo pois ele não pertence mais a sua guild.")
                  end
              end
              return true
          end
          function RealCastle:announce(message, times)
              if times == 0 then
                  return true
              end
              doBroadcastMessage(message)
              addEvent(self.announce, 5*60000 , self, message, (times - 1))
          end
          function RealCastle:checkOnTime()
              if self:isOpen() then
                  self:close()
              else
                  self:open()
                  self:announce("[War Castle] O acesso à área de dominar do castelo está liberado até às 22:00. Boa sorte a todas as guilds!", 11)
                  for i = 1, 4 do
                      addEvent(doBroadcastMessage, 500000 * i, "[War Castle] O acesso à área de dominar do castelo está liberado até as 22:00. Boa sorte a todas as guilds!")
                  end
              end
              return true
          end
          function RealCastle:checkOnUse(cid, item, frompos, item2, topos)
              if item.uid == 61466 then
                  local guild_id = getGlobalStorageValue(self.guildStorage)
                  local guild = guild_id > 1 and "a guild "..getGuildNameByID(guild_id).." possui o domínio" or "nenhuma guild possui o domínio do castelo"
                  local time = getGlobalStorageValue(self.dateStorages[1]).."/"..getGlobalStorageValue(self.dateStorages[2]).."/"..getGlobalStorageValue(self.dateStorages[3])
                  local domain = self:isOpen() and "as guilds estão batalhando pelo domínio do castelo" or guild
                  local msg = " ----------[War Castle]---------\n\n\nAtualmente "..domain..".\n\nPróxima batalha: "..time.." às 21:00."
                  doShowTextDialog(cid,8977,msg)
                  return true
              end
              if not self:isOpen() then 
                  doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid))) 
                  return true 
              end
              if not self:isDominating(cid) then
                  self:domain(cid)
                  doSendMagicEffect(getThingPos(cid), CONST_ME_CRAPS)
              else
                  doSendMagicEffect(cid, item, frompos, item2, topos, CONST_ME_POFF)
                  doPlayerSay(cid,"[War Castle] Sua guild já está com o domínio do castelo!", TALKTYPE_ORANGE_1)
              end
              return true
          end
          function RealCastle:checkStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
              if item.actionid == 61465 then
                  if self:isOpen() then
                      if getPlayerGuildId(cid) > 0 then
                          if getPlayerLevel(cid) >= 200 then
                              doSendMagicEffect(getThingPos(cid), 13)
                              return true
                          else
                              doTeleportThing(cid, fromPosition)
                              doSendMagicEffect(fromPosition, CONST_ME_POFF)
                              doPlayerSay(cid,"[War Castle] Somente jogadores com level 200 ou mais podem batalhar pelo castelo!", TALKTYPE_ORANGE_1)
                          end
                      else
                          doTeleportThing(cid, fromPosition)
                          doSendMagicEffect(fromPosition, CONST_ME_POFF)
                          doPlayerSay(cid,"[War Castle] Somente jogadores com guild podem batalhar pelo castelo!", TALKTYPE_ORANGE_1)
                      end
                  else
                      doTeleportThing(cid, fromPosition)
                      doSendMagicEffect(fromPosition, CONST_ME_POFF)
                      doPlayerSay(cid,"[War Castle] O castelo não está aberto para invasões!", TALKTYPE_ORANGE_1)
                  end
              elseif item.actionid == 61466 then
                  if self:isDominating(cid) then
                      doSendMagicEffect(getThingPos(cid), 14)
                      doPlayerSay(cid,"Bem vindo ao War Castle!", TALKTYPE_ORANGE_1)
                      return true
                  end
                  if self:isOpen() then
                      doTeleportThing(cid, fromPosition)
                      doSendMagicEffect(fromPosition, CONST_ME_POFF)
                      doPlayerSay(cid,"[War Castle] Não é permitido entrar no castelo enquanto as guilds estão batalhando pelo seu domínio.", TALKTYPE_ORANGE_1)
                  else
                      local guild_id = getGlobalStorageValue(self.guildStorage)
                      doTeleportThing(cid, {x = toPosition.x, y = toPosition.y + 2, z = toPosition.z})
                      doSendMagicEffect({x = toPosition.x, y = toPosition.y + 2, z = toPosition.z}, CONST_ME_FIREAREA)
                      doPlayerSay(cid, guild_id ~= EMPTY_STORAGE and "[War Castle] Somente membros da guild ["..getGuildNameByID(guild_id).."] podem entrar." or "[War Castle] Somente membros da guild dominante podem entrar.", TALKTYPE_ORANGE_1)
                  end
              end
              return true
          end
      end 
       
       
       
      Pasta/Globalevents/realCastleClose: 
      function onTime()
          RealCastle:close()
          return true
      end
       
          
       
      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!

×
×
  • Create New...