Ir para conteúdo

20tever

Campones
  • Total de itens

    2
  • Registro em

  • Última visita

Posts postados por 20tever

  1. Fala galera do Xtbia. Boa tarde
    preciso de uma ajuda já procurei no site todo e não achei..um NPC Guild Master
    no meu Otserv theforgottenserver 0.4 tem o NPC, mais quando digo "Hi" ele não fala nada! já tentei "oi,ola,vem sempre aqui" e nada haha
    quem puder me ajudar..

    agradeço desde já
    :-*

     

    á o meu ta assim.. o XML do npc:

     

    <?xml version="1.0"?>
    
    <npc name="Guild Master" script="data/npc/scripts/guild.lua" access="3" lookdir="1">
    	<health now="1" max="1"/>
    	<look type="57" head="20" body="30" legs="40" feet="50" corpse="3128"/>
    </npc>

    e o guild.lua ta assim:
     

    Spoiler
    
    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 = creatureGetName(cid)
    
      	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

     

    e da o seguinte erro na distro quando eu digo HI pra ele:

    [17:17:15.894] [Error - NpcScript Interface]
    [17:17:15.897] data/npc/scripts/guild.lua:onCreatureSay
    [17:17:15.901] Description:
    [17:17:15.903] data/npc/scripts/guild.lua:53: attempt to call global 'creatureGetName' (a nil value)
    [17:17:15.912] stack traceback:
    [17:17:15.914]  data/npc/scripts/guild.lua:53: in function <data/npc/scripts/guild.lua:52>

     

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...