Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Iae :)

 

Bom, vim pedir alguns scripts para TFS 0.4... Vou explica-los.

 

1º- Atributos por storages:

 

 

Funcionaria da seguinte maneira: Existem 4 storages no meu servidor (21201) (21202) (21203) (21204), cada storage corresponde a uma quest de cada vocação de Sorcerer(01)  até knight (04). O pedido é se alguém conseguiria fazer um script onde cada storage adicionaria um atributo ao jogador (obs: esses storages são para sempre).

Atributos:

21201: Adicionaria uma porcentagem de regeneração de mana. (Se a porcentagem for 50%, o jogador tem 50% de chance de curar 20% de sua mana).

21202: Adicionaria uma porcentagem de absorver sangue de jogadores ou monstros em sua volta (3x3). (Se a porcentagem for 50%, o jogador tem 50% de chance de sugar 20% de life e mana de seus inimigos). obs: não sei e a absorção de mana funcionaria em monstros.

2103: A​diciona uma quantidade de velocidade ao jogador e aumenta uma porcentagem em sua precisão com armas de distancia. (Aumenta 20% em acertar ataques a longa distância). sabe quando o paladino erra o ataque? Então, essa porcentagem diminuiria a chance desses erros acontecerem.

2104: Aumenta uma porcentagem em refletir uma porcentagem do dano recebido dos inimigos. (Se a porcentagem for 50%, o jogador tem 50% de chance de refletir 20% do dano recebido).​

obs: Esses valores são exemplos, eles podem ser mudados*

 

2º- Magias passivas:

 

 

Funcionaria da seguinte maneira: O jogador iria receber uma storage já configurada no meu servidor, essa storage desbloquearia uma magia passiva. Após conseguir esse storage o jogador ficaria com um efeito nele mesmo eternamente. A magia teria uma porcentagem para lançar por exemplo: Se configurar 50% na magia, ela teria 50% de chance de se enfurecer e atacar quem está te atacando. Vou dar alguns exemplos de magias que se parecem com isso:

soul system/ - Esse sistema contém 3 scripts, o que se parece com meu pedido é o sistema de auras, onde o jogador fica com uma aura o rondando e ela tem uma chance de atacar quem o ataca. Mas eu não quero que ela fique em volta do jogador.

O estilo do ataque seria assim: Um efeito cairia do céu e atingira o alvo(ou os alvos) que a magia quer atingir, tenho esse script:

local water = {490, 491, 492, 493}

local combat = createCombatObject()

local meteor = createCombatObject()
setCombatParam(meteor, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(meteor, COMBAT_PARAM_EFFECT, 47)
setCombatFormula(meteor, COMBAT_FORMULA_LEVELMAGIC, -9.0, -30, -10.0, 4)


local condition = createConditionObject(CONDITION_ENERGY)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 10, 2000, -50)
setCombatCondition(combat, condition)

combat_arr = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
}

local combat_area = createCombatArea(combat_arr)
setCombatArea(combat, combat_area)

local function meteorCast(p)
 doCombat(p.cid, p.combat, positionToVariant(p.pos))
end

local function stunEffect(cid)
 doSendMagicEffect(getThingPos(cid), CONST_ME_STUN)
end

function onTargetTile(cid, pos)
 if (math.random(0, 0) == 0) then
 local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0})
 if (isInArray(water, ground.itemid) == TRUE) then
 local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z}
 doSendDistanceShoot(newpos, pos, 35)
 addEvent(meteorCast, 200, {cid = cid, pos = pos, combat = meteor_water})
 else
 local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z}
 doSendDistanceShoot(newpos, pos, 35)
 addEvent(meteorCast, 200, {cid = cid,pos = pos, combat = meteor})
 end
 end
end

setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

function onCastSpell(cid, var)
 return doCombat(cid, combat, var)
end

 

Ele foi modificado na gambiarra kkk, Mas é essa noção.

 

 

3º - Magia que absorve. ---- Resolvido pelo membro zipter98 em outro fórum. 

 

 

F​uncionaria da seguinte forma: Já viram o movimento "Lech Seed" nos poketibias? Então é o mesmo conceito. O jogador mandaria a magia no inimigo e a magia absorveria uma quantidade de sangue a cada 1 segundo por 10 segundos. Cada vez que a magia absorveria o sangue aparece um efeito no inimigo, mesma coisa que o lech seed.

 

4º- NPC Guild Master ---- Resolvido por Deadpool

 

Bom, seria um npc onde o jogador criaria uma guilda, invitaria um membro para guild (ele teria que eu ao npc para aceitar o convite), baniria alguém da guilda, promoveria alguém da guilda e deletaria a guilda.

 

5º​ - Editar magia.

 

 

E​ntão, fiz uma magia de área que fica conjurando direto por 6 segundos, mas quando o jogador anda, a magia não o acompanha... Gostaria que alguém me ajudasse nisso. Aqui o script:

 


-- SpellCreator generated.
 
-- =============== COMBAT VARS ===============
-- Areas/Combat for 6000ms
local combat60_Brush = createCombatObject()
setCombatParam(combat60_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatParam(combat60_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat60_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
 return (500)*-1,(1000)*-1
end
setCombatCallback(combat60_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
 

-- Areas/Combat for 5500ms
local combat55_Brush = createCombatObject()
setCombatParam(combat55_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatParam(combat55_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat55_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
 return (500)*-1,(1000)*-1
end
setCombatCallback(combat55_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
 

-- Areas/Combat for 5000ms
local combat50_Brush = createCombatObject()
setCombatParam(combat50_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatParam(combat50_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat50_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
 return (500)*-1,(1000)*-1
end
setCombatCallback(combat50_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
 

-- Areas/Combat for 4500ms
local combat45_Brush = createCombatObject()
setCombatParam(combat45_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatParam(combat45_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat45_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
 return (500)*-1,(1000)*-1
end
setCombatCallback(combat45_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
 

-- Areas/Combat for 0ms
local combat0_Brush = createCombatObject()
setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat0_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
 return (500)*-1,(1000)*-1
end
setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
 

-- Areas/Combat for 500ms
local combat5_Brush = createCombatObject()
setCombatParam(combat5_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatParam(combat5_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat5_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
 return (500)*-1,(1000)*-1
end
setCombatCallback(combat5_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
 

-- Areas/Combat for 1000ms
local combat10_Brush = createCombatObject()
setCombatParam(combat10_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatParam(combat10_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat10_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
 return (500)*-1,(1000)*-1
end
setCombatCallback(combat10_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
 

-- Areas/Combat for 1500ms
local combat15_Brush = createCombatObject()
setCombatParam(combat15_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatParam(combat15_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat15_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
 return (500)*-1,(1000)*-1
end
setCombatCallback(combat15_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
 

-- Areas/Combat for 2000ms
local combat20_Brush = createCombatObject()
setCombatParam(combat20_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatParam(combat20_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat20_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
 return (500)*-1,(1000)*-1
end
setCombatCallback(combat20_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
 

-- Areas/Combat for 2500ms
local combat25_Brush = createCombatObject()
setCombatParam(combat25_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatParam(combat25_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat25_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
 return (500)*-1,(1000)*-1
end
setCombatCallback(combat25_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
 

-- Areas/Combat for 3000ms
local combat30_Brush = createCombatObject()
setCombatParam(combat30_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatParam(combat30_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat30_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
 return (500)*-1,(1000)*-1
end
setCombatCallback(combat30_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
 

-- Areas/Combat for 3500ms
local combat35_Brush = createCombatObject()
setCombatParam(combat35_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatParam(combat35_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat35_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
 return (500)*-1,(1000)*-1
end
setCombatCallback(combat35_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
 

-- Areas/Combat for 4000ms
local combat40_Brush = createCombatObject()
setCombatParam(combat40_Brush, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatParam(combat40_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat40_Brush,createCombatArea({{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 3, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
 return (500)*-1,(1000)*-1
end
setCombatCallback(combat40_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")
 

-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
 if (isCreature(cid)) then
  doCombat(cid, c, var)
  if (dirList ~= nil) then -- Emit distance effects
   local i = 2;
   while (i < #dirList) do
    doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList,y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
    i = i + 2
   end  
  end
 end
end
 
function onCastSpell(cid, var)
 local startPos = getCreaturePosition(cid)
 addEvent(RunPart,6000,combat60_Brush,cid,var)
 addEvent(RunPart,5500,combat55_Brush,cid,var)
 addEvent(RunPart,5000,combat50_Brush,cid,var)
 addEvent(RunPart,4500,combat45_Brush,cid,var)
 RunPart(combat0_Brush,cid,var)
 addEvent(RunPart,500,combat5_Brush,cid,var)
 addEvent(RunPart,1000,combat10_Brush,cid,var)
 addEvent(RunPart,1500,combat15_Brush,cid,var)
 addEvent(RunPart,2000,combat20_Brush,cid,var)
 addEvent(RunPart,2500,combat25_Brush,cid,var)
 addEvent(RunPart,3000,combat30_Brush,cid,var)
 addEvent(RunPart,3500,combat35_Brush,cid,var)
 addEvent(RunPart,4000,combat40_Brush,cid,var)
 return true
end

 

Se alguém quiser simplificar eu aceito também uheueh

 

6º - Volatile spider

 

 B​om, o xWhiteWolf fez uma magia muito maneira a volatile spiderling   o​nde o jogador invoca uma aranha e ela explode quando toca o oponente. Bom, eu tentei modificar aqui mas não consegui. Queria que alguém me ajudasse a modificar a magia da aranha. Preciso de 2 magias:

 

A primeira seria um tipo de exeta res, onde a aranha ficaria mandando uma magia de área (uma exeta res) por 10 segundos (ou até que ela morra). Para que os monstros ataquem a aranha e não o player.

 

A segunda seria uma magia de paralyze, onde a aranha mandaria uma magia sem nenhum dano em uma área 1x1: 

 {1, 1, 1},
 {1, 3, 1},
 {1, 1, 1}

 

E os jogadores que forem atingidos por essa magia serão tomarão condition de paralyze. E depois de mandar a magia a aranha morre.

 

 

 

 

Bom, não sei se isso é possível, mas eu tive essas ideias só que não sei fazer os scripts. Espero que alguém me ajude, se eu tiver mais ideias eu posto aqui. Bjs :*​

Editado por NathanAmaro (veja o histórico de edições)

Oi

Link para o post
Compartilhar em outros sites

Bom, consegui o Guild Master..


data/npcs crie um arquivo.xml renomei para "Guild Master" e coloque isso dentro:
<?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>

script: "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

Aqui funcionou normal... Teste ai.. Quantos aos outros, mais tarde volto aqui ^^

Editado por Deadpool (veja o histórico de edições)

Se te ajudei, deixe seu curti, clique em melhor resposta, para que eu possa ajudar sempre.

 

skype.png

Trabalhos (C++):

Cor das mensagens nos channels

Ajusta/Mudar cor das mensagens de Loot

Liberação dos novos Remakes da PokeXGames.

NPC "Guild Master" que cria, deleta, invita, kicka players da guild.

 

 B4OBUkH.png At Soon, LIKE ON FACEBOOK. Clik on Imgs

Link para o post
Compartilhar em outros sites

Bom, consegui o Guild Master..

data/npcs crie um arquivo.xml renomei para "Guild Master" e coloque isso dentro:

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

script: "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

Aqui funcionou normal... Teste ai.. Quantos aos outros, mais tarde volto aqui ^^

 

Então cara, ele não tá reconhecendo a função

gstat = getPlayerGuildStatus(cname)

Oi

Link para o post
Compartilhar em outros sites

Qual a versão do seu TFS?


Troca por este:

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 = getCreatureName(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

Se te ajudei, deixe seu curti, clique em melhor resposta, para que eu possa ajudar sempre.

 

skype.png

Trabalhos (C++):

Cor das mensagens nos channels

Ajusta/Mudar cor das mensagens de Loot

Liberação dos novos Remakes da PokeXGames.

NPC "Guild Master" que cria, deleta, invita, kicka players da guild.

 

 B4OBUkH.png At Soon, LIKE ON FACEBOOK. Clik on Imgs

Link para o post
Compartilhar em outros sites

Qual a versão do seu TFS?

Troca por este:

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 = getCreatureName(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

 

TFS 0.3.6, achei essa função nas sourcers


		uint32_t getGuildId() const {return guildId;}
		void setGuildId(uint32_t newId) {guildId = newId;}
		uint32_t getRankId() const {return rankId;}
		void setRankId(uint32_t newId) {rankId = newId;}

		GuildLevel_t getGuildLevel() const {return guildLevel;}
		bool setGuildLevel(GuildLevel_t newLevel, uint32_t rank = 0);

		const std::string& getGuildName() const {return guildName;}
		void setGuildName(const std::string& newName) {guildName = newName;}
		const std::string& getRankName() const {return rankName;}
		void setRankName(const std::string& newName) {rankName = newName;}

		const std::string& getGuildNick() const {return guildNick;}
		void setGuildNick(const std::string& newNick) {guildNick = newNick;}

		bool isGuildInvited(uint32_t guildId) const;
		void leaveGuild();
Editado por NathanAmaro (veja o histórico de edições)

Oi

Link para o post
Compartilhar em outros sites

ah... Entendi, precisa da outra função nas sources, vejo que nas sua não tem puts..

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 

Tente esse..

Se te ajudei, deixe seu curti, clique em melhor resposta, para que eu possa ajudar sempre.

 

skype.png

Trabalhos (C++):

Cor das mensagens nos channels

Ajusta/Mudar cor das mensagens de Loot

Liberação dos novos Remakes da PokeXGames.

NPC "Guild Master" que cria, deleta, invita, kicka players da guild.

 

 B4OBUkH.png At Soon, LIKE ON FACEBOOK. Clik on Imgs

Link para o post
Compartilhar em outros sites

ah... Entendi, precisa da outra função nas sources, vejo que nas sua não tem puts..

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 

Tente esse..

 

Agora nem respondendo ao "hi" está... Faz o seguinte, não tem como você me passar a função que está nas sourcers que você se baseou e eu adiciono aqui não?

Oi

Link para o post
Compartilhar em outros sites

Bom, é que isso é tfs 0.4 rs..

 

Atualizado:

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

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 

Se te ajudei, deixe seu curti, clique em melhor resposta, para que eu possa ajudar sempre.

 

skype.png

Trabalhos (C++):

Cor das mensagens nos channels

Ajusta/Mudar cor das mensagens de Loot

Liberação dos novos Remakes da PokeXGames.

NPC "Guild Master" que cria, deleta, invita, kicka players da guild.

 

 B4OBUkH.png At Soon, LIKE ON FACEBOOK. Clik on Imgs

Link para o post
Compartilhar em outros sites

Bom, é que isso é tfs 0.4 rs..

 

Atualizado:

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

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 

 

erro:

guild master.lua:60: 'end' expected (to close 'function' at line 54) near 'if'​

Oi

Link para o post
Compartilhar em outros sites

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

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

:D

Se te ajudei, deixe seu curti, clique em melhor resposta, para que eu possa ajudar sempre.

 

skype.png

Trabalhos (C++):

Cor das mensagens nos channels

Ajusta/Mudar cor das mensagens de Loot

Liberação dos novos Remakes da PokeXGames.

NPC "Guild Master" que cria, deleta, invita, kicka players da guild.

 

 B4OBUkH.png At Soon, LIKE ON FACEBOOK. Clik on Imgs

Link para o post
Compartilhar em outros sites

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

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

:D

 

Nada =/, olha, vou trocar para o TFS 0.4 para funcionar a primeira tentativa lá.. :D

Oi

Link para o post
Compartilhar em outros sites

Isso é Otimo.. TFS 0.4 é melhor, tem mais fix, e novos sistemas como auto-stacking 

Se te ajudei, deixe seu curti, clique em melhor resposta, para que eu possa ajudar sempre.

 

skype.png

Trabalhos (C++):

Cor das mensagens nos channels

Ajusta/Mudar cor das mensagens de Loot

Liberação dos novos Remakes da PokeXGames.

NPC "Guild Master" que cria, deleta, invita, kicka players da guild.

 

 B4OBUkH.png At Soon, LIKE ON FACEBOOK. Clik on Imgs

Link para o post
Compartilhar em outros sites

Isso é Otimo.. TFS 0.4 é melhor, tem mais fix, e novos sistemas como auto-stacking 

 

Sim, eu comecei a modificar e traduzir todo meu 0.3.6 a um tempo, vou modificar também o 0.4 :D

Oi

Link para o post
Compartilhar em outros sites

Se eu fosse você usaria um sistema de multi linguagem ^^

Se te ajudei, deixe seu curti, clique em melhor resposta, para que eu possa ajudar sempre.

 

skype.png

Trabalhos (C++):

Cor das mensagens nos channels

Ajusta/Mudar cor das mensagens de Loot

Liberação dos novos Remakes da PokeXGames.

NPC "Guild Master" que cria, deleta, invita, kicka players da guild.

 

 B4OBUkH.png At Soon, LIKE ON FACEBOOK. Clik on Imgs

Link para o post
Compartilhar em outros sites
3º - Magia que absorve. ---- Resolvido pelo membro zipter98 em outro fórum. Citar F​uncionaria da seguinte forma: Já viram o movimento "Lech Seed" nos poketibias? Então é o mesmo conceito. O jogador mandaria a magia no inimigo e a magia absorveria uma quantidade de sangue a cada 1 segundo por 10 segundos. Cada vez que a magia absorveria o sangue aparece um efeito no inimigo, mesma coisa que o lech seed.

 

Aqui está o script feito pelo Zipter98 em outro fórum, todos os créditos são dele...

 

local config = {
    distance_effect = xxx,        --Distance effect. Se não quiser, basta colocar false.
    effect = xxx,                 --Efeito que aparecerá no alvo.
    times = 10,                   --Quantos hits, no total.
    interval = 1000               --Intervalo de tempo entre as absorções.
}
 
function leech_seed(cid, target, times)
    local damage_formula = {min = getPlayerLevel(cid) * 3, max = getPlayerLevel(cid) * 6}            --Fórmula de dano.
    
    if not isCreature(cid) or not isCreature(target) or times <= 0 then return true end
    local damage = math.random(damage_formula.min, damage_formula.max)
    
    doSendMagicEffect(getThingPos(target), config.effect)
    doSendAnimatedText(getThingPos(target), "-"..damage, 144)
    doCreatureAddHealth(target, -damage)
    doCreatureAddHealth(cid, damage)
    addEvent(leech_seed, config.interval, cid, target, times - 1)
end
 
function onCastSpell(cid, var)
    local target = variantToNumber(var)
    
    if not isCreature(target) then
        return doPlayerSendCancel(cid, "You need a target to cast this spell.")
    end
    if config.distance_effect then
        doSendDistanceShoot(getThingPos(cid), getThingPos(target), config.distance_effect)
    end
    leech_seed(cid, target, config.times)
    return true
end

 

 

---- Tópico atualizado para outra idéia ---

Editado por NathanAmaro (veja o histórico de edições)

Oi

Link para o post
Compartilhar em outros sites
  • 1 year later...

alguem pode ajudar com esse npcs GUILD MASTER?? porfavor, meu server é 8.60 em sqlite!

ou se me ajudarem, nisto, quando eu vou criar uma guild, !createguild Sou Um Noob

ele aparece que a guild foi formada, mais na verdade nao foi, e acaba aparecendo um erro no executavel do servidor.

podem ajudar-me?

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo