sigma696 1 Postado Junho 6, 2011 Share Postado Junho 6, 2011 Quero um npc que faça guild ele ira vender aguild pra players lv 400+ Link para o comentário Compartilhar em outros sites More sharing options...
Matheuzinhoul 58 Postado Junho 6, 2011 Share Postado Junho 6, 2011 Por favor detalhe mais seu pedido, existem funções que existem em alguns ots, e em outros não. Se você citar a versão do seu Ot concerteza receberá respostas mais rápido. De nada. Link para o comentário Compartilhar em outros sites More sharing options...
nyuchiha 108 Postado Junho 6, 2011 Share Postado Junho 6, 2011 (editado) Npc/Script crie 1 arquivo LUA e renomeie para Guildmaster e adicione isso dentro: 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 Agora adicione esse NPC : <?xml version="1.0"?> <npc name="Guild Master" script="data/npc/scripts/guildmaster.lua" access="3" lookdir="1"> <health now="1" max="1"/> <look type="57" head="20" body="30" legs="40" feet="50" corpse="3128"/> </npc> Editado Junho 7, 2011 por DeathAngels Link para o comentário Compartilhar em outros sites More sharing options...
sigma696 1 Postado Junho 7, 2011 Autor Share Postado Junho 7, 2011 death o spoilet nao abriu =( versao 8.60 Link para o comentário Compartilhar em outros sites More sharing options...
nyuchiha 108 Postado Junho 9, 2011 Share Postado Junho 9, 2011 Abriu agora? Antes ja estava abrindo , qualquer coisa regarrega a pagina. Link para o comentário Compartilhar em outros sites More sharing options...
sigma696 1 Postado Junho 9, 2011 Autor Share Postado Junho 9, 2011 Abrir abriu so q o npc n prestou agente diz hi heloo tals e ele n presta da erro ao carregar ajuda ai Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados