[NPC] Guild
2 participantes
Página 1 de 1
[NPC] Guild
Olá mais uma vez pessoal, estou trazendo pra vcs o npc Guild Master (de fazer guilds) que alguns servers n tem então vcs podem pegar aqui!
guild master.xml
guild.lua
guild master.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="163" head="20" body="30" legs="40" feet="50" corpse="3128"/>
</npc>
guild.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()
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
Aott- Membro
- Mensagens : 17
Placar : 34
Data de inscrição : 29/04/2011
Re: [NPC] Guild
Amigo so pra avisar o script não é meu. É que geralmente nos servers de pokemon eles retiram este script sem motivo!
Aott- Membro
- Mensagens : 17
Placar : 34
Data de inscrição : 29/04/2011
Re: [NPC] Guild
Ok, eu tava olhando minha pasta de scripts e ja tenho ele.
Mais eu recomendo. Isso ajuda bastante quem nao sabe criar guild por comando.
Por Favor se for fazer scripts, longos coloque eles em SPOILERs para o topico nao tomar muito espaço.
Obrigado por postar aqui na PTS.
Mais eu recomendo. Isso ajuda bastante quem nao sabe criar guild por comando.
Por Favor se for fazer scripts, longos coloque eles em SPOILERs para o topico nao tomar muito espaço.
Obrigado por postar aqui na PTS.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|