Ir para conteúdo

Featured Replies

Postado

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

Postado
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

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo