Ir para conteúdo
  • Cadastre-se

Posts Recomendados

.Qual servidor ou website você utiliza como base? 

TFS 0.4 (8.60)

 

Qual o motivo deste tópico? 

Suporte com erro em script de NPC

 

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

Citar

No executável consta o seguinte erro:
[10:35:53.762] [Error - LuaInterface::loadFile] data/npc/scripts/guild.lua:53: unexpected symbol near ')'
[10:35:53.762] [Warning - NpcEvents::NpcEvents] Cannot load script: data/npc/scripts/guild.lua
[10:35:53.762] data/npc/scripts/guild.lua:53: unexpected symbol near ')'

 

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

local focus = 0
local talk_start = 0
local target = 0
local following = false
local attacking = false
local talk_state = 0
local gstat = 0 -- guild status
local grank = '' -- guild rank
local gname = '' -- guild name
local cname = '' -- name of player who talks to us
local pname = '' -- name of some other player
local maxnamelen = 30
local maxranklen = 20
local maxnicklen = 20
local leaderlevel = 50
local NONE = 0
local INVITED = 1
local MEMBER = 2
local VICE = 3
local LEADER = 4
local allow_pattern = '^[a-zA-Z0-9 -]+$'

function onThingMove(creature, thing, oldpos, oldstackpos)

end


function onCreatureAppear(creature)

end


function onCreatureDisappear(cid, pos)
  if focus == cid then
	  selfSay('Good bye then.')
	  focus = 0
	  talk_start = 0
  end
end


function onCreatureTurn(creature)

end


function msgcontains(txt, str)
  return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end


function onCreatureSay(cid, type, msg)
  cname = creatureGetGuildLeadernamecid)

function getGuildLeaderName(GuildName) --         
local leader = db.getResult("SELECT `players`.`name` FROM `players` WHERE `players`.`id` = (SELECT `guilds`.`ownerid` FROM `guilds` WHERE `guilds`.`name` = ".. db.escapeString(GuildName) .. ")")		if(leader:getID() ~= -1) then                  return
leader:getDataString("name")		end		return nilend

  if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then
  selfSay('Hello ' .. cname .. '! You can create a guild talking "!createguild ...and the name...". When you create go for the Guild-Chat, and talk ')
  talk_state = 0
  focus = cid
  talk_start = os.clock()

elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
  selfSay('Sorry, ' .. cname .. '! I talk to you in a minute.')

  elseif msgcontains(msg, 'bye') and (focus == cid) and getDistanceToCreature(cid) < 4 then
  selfSay('Good bye, ' .. cname .. '!')
  talk_state = 0
  focus = 0
  talk_start = 0

  elseif focus == cid then
  if talk_state == 0 then
  msg = string.lower(msg)

if msgcontains(msg, 'found') then -- found a new guild
  level = getPlayerLevel(cid)

  if level >= leaderlevel then
  gstat = getPlayerGuildStatus(cname)

  if gstat == NONE or gstat == INVITED then
  selfSay('What name your guild should have?')
  talk_state = 1
  elseif gstat == MEMBER or gstat == VICE or gstat == LEADER then
  selfSay('Sorry, you are member of a guild.')
  talk_state = 0
  end
  else
  selfSay('Sorry, you need level ' .. leaderlevel .. ' to found a guild.')
  end

  talk_start = os.clock()

  elseif msgcontains(msg, 'join')  then -- join a guild when invited
  gstat = getPlayerGuildStatus(cname)

  if gstat == NONE then
  selfSay('Sorry, you are not invited to any guild.')
  talk_state = 0
  elseif gstat == INVITED then
  gname = getPlayerGuildName(cname)
  selfSay('Do you want to join ' .. gname .. '?')
  talk_state = 3
  elseif gstat == MEMBER or gstat == VICE or gstat == LEADER then
  selfSay('Sorry, you are a member of a guild.')
  talk_state = 0
  end

  talk_start = os.clock()

  elseif msgcontains(msg, 'exclude') or msgcontains(msg, 'kick') then -- kick player from a guild
  gstat = getPlayerGuildStatus(cname)

  if gstat == VICE or gstat == LEADER then
  selfSay('Who do you want to kick today?')
  talk_state = 4
  else
  selfSay('Sorry, only leader and vice-leaders can kick players from a guild.')
  talk_state = 0
  end

  talk_start = os.clock()

  elseif msgcontains(msg, 'invite') then -- invite player to a guild
  gstat = getPlayerGuildStatus(cname)

  if gstat == VICE or gstat == LEADER then
  selfSay('Who do you want to invite to your guild?')
  talk_state = 5
  else
  selfSay('Sorry, only leader and vice-leaders can invite players to a guild.')
  talk_state = 0
  end

  talk_start = os.clock()

  elseif msgcontains(msg, 'leave') then -- leave a guild
  gstat = getPlayerGuildStatus(cname)

  if gstat == NONE or gstat == INVITED then
  selfSay('You are not in a guild.')
  talk_state = 0
  elseif gstat == MEMBER or gstat == VICE then
  gname = getPlayerGuildName(cname)
  selfSay('Do you want to leave ' .. gname .. '?')
  talk_state = 7
  elseif gstat == LEADER then
  selfSay('You are a leader of a guild. If you leave, no one can invite new players. Are you sure?')
  talk_state = 7
  end

  elseif msgcontains(msg, 'pass') then -- pass leadership
  gstat = getPlayerGuildStatus(cname)

  if gstat == LEADER then
  selfSay('Who do you want to be a new leader?')
  talk_state = 8
  else
  selfSay('Sorry, only leader can resign from his position.')
  talk_state = 0
  end

  elseif msgcontains(msg, 'vice') then -- set vice leader
  gstat = getPlayerGuildStatus(cname)

if gstat == LEADER then
selfSay('Which member do you want to promote to vice-leader?')
  talk_state = 9
  else
  selfSay('Sorry, only leader can promote member to vice-leader.')
  talk_state = 0
  end

  elseif msgcontains(msg, 'member') then -- remove vice-leader
  gstat = getPlayerGuildStatus(cname)

  if gstat == LEADER then
  selfSay('Which vice-leader do you want to demote to regular member?')
  talk_state = 10
  else
  selfSay('Sorry, only leader can demote vice-leaders to members.')
  talk_state = 0
  end

  elseif msgcontains(msg, 'nick') or msgcontains(msg, 'title') then -- set nick
  gstat = getPlayerGuildStatus(cname);

  if gstat == LEADER then
  selfSay('Whom player do you want to change nick?')
  talk_state = 11
  else
  selfSay('Sorry, only leader can change nicks.')
  talk_state = 0
  end
  end

  else -- talk_state != 0
  talk_start = os.clock()

  if talk_state == 1 then -- get name of new guild
  gname = msg

  if string.len(gname) <= maxnamelen then
 if string.find(gname, allow_pattern) then
 if foundNewGuild(gname) == 0 then
selfSay('Sorry, there is already a guild with that name.')
 talk_state = 0
 else
 selfSay('And what rank do you wish to have?')
 talk_state = 2
 end
 else
 selfSay('Sorry, guild name contains illegal characters.')
 talk_state = 0
 end
  else
  selfSay('Sorry, guild name cannot be longer than ' .. maxnamelen .. ' characters.')
  talk_state = 0
  end

  elseif talk_state == 2 then -- get rank of leader
  grank = msg

  if string.len(grank) <= maxranklen then
 if string.find(grank, allow_pattern) then
 setPlayerGuild(cname,LEADER,grank,gname)
 selfSay('You are now leader of your new guild.')
 talk_state = 0
 else
selfSay('Sorry, rank name contains illegal characters.')
 talk_state = 0
 end
  else
  selfSay('Sorry, rank name cannot be longer than ' .. maxranklen .. ' characters.')
  talk_state = 0
  end

  elseif talk_state == 3 then -- join a guild
  if msg == 'yes' then
  setPlayerGuildStatus(cname, MEMBER)
  selfSay('You are now member of a guild.')
  talk_state = 0
  else
  selfSay('What else can I do for you?')
  talk_state = 0
  end

  elseif talk_state == 4 then -- kick player
  pname = msg
  gname = getPlayerGuildName(cname)
  gname2 = getPlayerGuildName(pname)

  if cname == pname then
  selfSay('To kick yourself say leave.')
  talk_state = 0
  elseif gname == gname2 then
  gstat2 = getPlayerGuildStatus(pname)

  if gstat > gstat2 then
  clearPlayerGuild(pname)
  selfSay('You kicked ' .. pname .. ' from your guild.')
  talk_state = 0
  else
  selfSay('Sorry, vice-leaders can kick only regular members.')
  talk_state = 0
  end
  else
  selfSay('Sorry, ' .. pname .. ' is not in your guild.')
  talk_state = 0
  end

  elseif talk_state == 5 then -- get invited name
  pname = msg
  gstat = getPlayerGuildStatus(pname)

  if gstat == MEMBER or gstat == VICE or gstat == LEADER then
  selfSay('Sorry, ' .. pname .. ' is in another guild.')
  talk_state = 0
  else
  selfSay('And what rank do you wish to give him/her?')
  talk_state = 6
  end

  elseif talk_state == 6 then -- get invited rank
  grank = msg

  if string.len(grank) <= maxranklen then
 if string.find(grank, allow_pattern) then
 gname = getPlayerGuildName(cname)
 setPlayerGuild(pname, INVITED, grank, gname)
 selfSay('You have invited ' .. pname .. ' to your guild.')
 talk_state = 0
 else
 selfSay('Sorry, rank name contains illegal characters.')
 talk_state = 0
 end
  else
selfSay('Sorry, rank name cannot be longer than ' .. maxranklen .. ' characters.')
  talk_state = 0
  end

  elseif talk_state == 7 then -- leave a guild
  if msg == 'yes' then
  clearPlayerGuild(cname)
  selfSay('You have left your guild.')
  talk_state = 0
  else
selfSay('What else can I do for you?')
  talk_state = 0
  end

  elseif talk_state == 8 then -- pass leadership
  pname = msg
  level = getPlayerLevel(pname)

  if level >= leaderlevel then
  gname = getPlayerGuildName(cname)
  gname2 = getPlayerGuildName(pname)

  if gname == gname2 then
  setPlayerGuildStatus(cname,MEMBER)
  setPlayerGuildStatus(pname,LEADER)
  gname = getPlayerGuildName(cname)
  selfSay(pname .. ' is a new leader of ' .. gname .. '.')
  talk_state = 0
  else
  selfSay('Sorry, ' .. pname .. ' is not in your guild.')
  talk_state = 0;
  end
  else
  selfSay('Sorry, ' .. pname .. ' is not online.')
  talk_state = 0
  end

  elseif talk_state == 9 then -- set vice-leader
  pname = msg
  gname = getPlayerGuildName(cname)
  gname2 = getPlayerGuildName(pname)

  if cname == pname then
  selfSay('To resign from leadership say pass.')
  talk_state = 0
  elseif gname == gname2 then
  gstat = getPlayerGuildStatus(pname)

  if gstat == INVITED then
selfSay('Sorry, ' .. pname .. ' hasn\'t joined your guild yet.');
talk_state = 0
  elseif gstat == VICE then
  selfSay(pname .. ' is already a vice-leader.')
talk_state = 0
  elseif gstat == MEMBER then
  setPlayerGuildStatus(pname, VICE)
  selfSay(pname .. ' is now a vice-leader of your guild.')
talk_state = 0
  end
  else
  selfSay('Sorry, ' .. pname .. ' is not in your guild.')
  talk_state = 0
  end

  elseif talk_state == 10 then -- set member
  pname = msg
  gname = getPlayerGuildName(cname)
  gname2 = getPlayerGuildName(pname)

  if cname == pname then
  selfSay('To resign from leadership say pass.')
  talk_state = 0
  elseif gname == gname2 then
  gstat = getPlayerGuildStatus(pname)

  if gstat == INVITED then
  selfSay('Sorry, ' .. pname .. ' hasn\'t joined your guild yet.');
  talk_state = 0
  elseif gstat == VICE then
  setPlayerGuildStatus(pname, MEMBER)
  selfSay(pname .. ' is now a regular member of your guild.')
  talk_state = 0
  elseif gstat == MEMBER then
  selfSay(pname .. ' is already a regular member.')
  talk_state = 0
  end
  else
  selfSay('Sorry, ' .. pname .. ' is not in your guild.')
  talk_state = 0
  end

  elseif talk_state == 11 then -- get name of player to change nick
  pname = msg
gname = getPlayerGuildName(cname)
  gname2 = getPlayerGuildName(pname)

  if gname == gname2 then
  selfSay('And what nick do you want him to have (say none to clear)?')
  talk_state = 12
  else
  selfSay('Sorry, ' .. pname .. ' is not in your guild.')
  talk_state = 0
  end

  elseif talk_state == 12 then -- get nick
  if msg == 'none' then
  setPlayerGuildNick(pname, '')
  selfSay(pname .. ' now has no nick.')
  talk_state = 0
  else
  if string.len(msg) <= maxnicklen then
 if string.find(msg, allow_pattern) then
 setPlayerGuildNick(pname, msg)
 selfSay('You have changed ' .. pname .. '\'s nick.')
 talk_state = 0
 else
selfSay('Sorry, nick contains illegal characters.')
 talk_state = 0
 end
  else
  selfSay('Sorry, nick cannot be longer than ' .. maxnicklen .. ' characters.')
  talk_state = 0
  end
  end
  end
  end
  end
end


function onCreatureChangeOutfit(creature)

end


function onThink()
doNpcSetCreatureFocus(focus)
  if (os.clock() - talk_start) > 45 then
  if focus > 0 then
  selfSay('Next Please...')
  end
  focus = 0
  end
 if focus ~= 0 then
 if getDistanceToCreature(focus) > 5 then
 selfSay('Good bye then.')
 focus = 0
 end
 end
end 

 

Peguei esse script de um outro servidor 8.60 (antigo thyranics). No executável consta esse erro - sou super noob com programação - então não sei arrumar isso.

 

 

Editado por lolksky (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
10 horas atrás, lolksky disse:

function onCreatureSay(cid, type, msg)

     cname = creatureGetGuildLeadernamecid)

 

ta falando um "(" antes do CID, a própria distro listou o que precisa e a linha
coloca assim:

function onCreatureSay(cid, type, msg) 
  cname = creatureGetGuildLeadername(cid)

 

 

você pode resolver a maioria dos erros apenas lendo ou traduzindo o que a distro diz pra você, exemplo:

10 horas atrás, lolksky disse:

[10:35:53.762] [Error - LuaInterface::loadFile] data/npc/scripts/guild.lua:53: unexpected symbol near ')'

normalmente esse erro mostra você fechando um parênteses sem abri-lo, o que quebra a função toda

"guild.lua:53" > significa que vc tem um erro no arquivo guild.lua na linha 53 < isso deixa muito fácil achar o erro

 

fora que esse script que vc ta usando, é BEEEEEEEEMM antigo, atualmente os scripts são bem mais otimizados.. pode ser que você nem tenha as funções listadas nesse script, eu indicaria vc tentar modifica-lo pros scripts de NPC atuais

Link para o post
Compartilhar em outros sites

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 braianlomas
      Como faço para corrigir esse problema para meu cliente, eu uso o tfs 0.3.6  
      Quero resolver esse problema que tenho no meu cliente, como e onde posso resolver?  
      Eu uso o tfs 0.3.6, não tenho as fontes do cliente, se você puder me dar eu vou amá-las para sempre  
       

       
    • Por A.Mokk
      Ola pessoal, estou tentando compilar o TFS 1.5 Downgrade para 8.60 atraves do MSVC 2022, ao tentar compilar da o seguinte erro:
       
       
      Fiz o download do MSVC, GitDash, TFS-SDK-3.2, e de varios boosts que tentei, ao fazer o seguinte procedimento no GitDash:
       
      Ao chegar em ./bootstrap-vcpkg.bat o GitDash nao consegue realizar o procedimento corretamente, alguem poderia me ajudar ?

      Tentei de diversas formas mas o mesmo erro sempre persiste, atualmente meu servidor utiliza TFS 0.4, consigo compilar sem nenhum problema no MSVC 2010, porem, as limitações do TFS 0.4 estão me fazendo precisar atualizar, se alguem souber como corrigir esses erros eu agradeço !

      Tutoriais utilizados :
      Compiling on Windows (vcpkg) · otland/forgottenserver Wiki · GitHub
      Compiling on Windows · otland/forgottenserver Wiki · GitHub
      Compilando TFS 1.3 com vídeo-aula - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
      Compilar TFS 1.3 Vcpkg - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
       
      O que acontece no Powershell:
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      Canary 2.3.6
      Qual o motivo deste tópico? 
      Queria fazer com que os players não pudessem mexer no aleta sio, pois, agora os mesmos estão conseguindo mexer nos itens
      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. 
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      canary para o cliente 13.16
      Qual o motivo deste tópico? 
      Não consigo encontrar onde ajusta
      to com o problema no 13.16  o exausted, por exemplo os kinas era pra combar exori, erori gran e exori min, porém não ta indo ta dando exausted o char ta soltando magia ou runa e não consegue usar as potions
      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. 
       
    • Por Andersontatuador
      Olá galera da TK, me chamo Anderson estou procurando alguém profissional em otservs e site.
      Já tenho um servidor o site e o cliente preciso só de uma pessoal competente, que esteja empenhado a trabalhar,
      não quero nada de graça, pois nessa onda fui mais roubado do quer eu pagar um profissional.
      caso alguém se interesse entrar em contato comigo através do whatsapp
      82 9 9304-9462
       
      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. 
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo