Ir para conteúdo

1 Npc - Guild Master.


krudan

Posts Recomendados

Laranja = diretorio--------vermelho = nome do arquivo



 

Cara Vo Tentar So n Sei Se Vai Dar Certo Ai Vai:

 

vai em "Pasta Do Ot/data/npc" e cria um arquivo chamado guild master(Archive .xml)

<?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>

Agora Vai Em "Pasta Do Ot/data/npc/scripts" e cria um arquivo chamado guild(Archive .lua)

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 .. '! How can I help you?')
               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()
       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

 

N Sei Se Vai Funcionar Mais Se funcionar Da Rep++

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

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