Ir para conteúdo

Featured Replies

Postado
  • Autor
35 minutos atrás, Frenesy disse:

 

Aí já não é algo de NPC. Já é outra área com novos conhecimentos. Eu consigo o NPC, essa daí já terá que pedir ajuda pra alguém que entenda melhor. kkkk

Ok, no caso teria que criar uma Script de Bless PvP antes para depois ser adicionado no NPC? 

MAis podiamos já deixar o NPC vendendo a Blessing normal já no npc? No momento ele está só vendendo o Comando, agradeço o suporte que está me dando!

 

                                                           

55f6tc.gif                     

  • Respostas 30
  • Visualizações 1.3k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • É só por nos comandos que quer vender um requisito de storage. (O player precisa de storage para usar tal comando) E no NPC, colocar pra dar tal storage pro player valendo certa quantia.  

  • Tudo bem. Faz o seguinte. Me dê as seguintes coisas:   - O Script de um comando que você planeja vender. - A ID de um item qualquer que você não use no servidor para por a venda no NPC.

  • Ok, então vejamos. Fiz um aqui sem testar. Vejamos como fica. Começando com o NPC:   Ana.xml <?xml version="1.0"?> <npc name="Ana" script="Ana.lua" walkinterval="2000">

Postado
12 horas atrás, Digoshow disse:

Ok, no caso teria que criar uma Script de Bless PvP antes para depois ser adicionado no NPC? 

 

Isso mesmo. Cria ele e me diz como funciona que eu adiciono no NPC. Até lá... Vou ficar de devendo essa.

 

12 horas atrás, Digoshow disse:

MAis podiamos já deixar o NPC vendendo a Blessing normal já no npc? No momento ele está só vendendo o Comando, agradeço o suporte que está me dando!

 

Isso já está dentro da minha jurisdição (=D). Testa isso aqui:

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
 

function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid)             npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg)     npcHandler:onCreatureSay(cid, type, msg) end
function onThink()                         npcHandler:onThink() end



function doCreatureSayWithDelay(cid,text,type,delay,e)
   if delay<=0 then
      doCreatureSay(cid,text,type)
   else
      local func=function(pars)
                    doCreatureSay(pars.cid,pars.text,pars.type)
                    pars.e.done=TRUE
                 end
      e.done=FALSE
      e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e})
   end
end


function cancelNPCTalk(events)
  local ret=1
  for aux=1,table.getn(events) do
     if events[aux].done==FALSE then
        stopEvent(events[aux].event)
     else
        ret=ret+1
     end
  end
  events=nil
  return(ret)
end


function doNPCTalkALot(msgs,interval)
  local e={}
  local ret={}
  if interval==nil then interval=3000 end --3 seconds is default time between messages
  for aux=1,table.getn(msgs) do
      e[aux]={}
      doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux])
      table.insert(ret,e[aux])
  end
  return(ret)
end

function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then
        return false
    end
	
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	
	if(msgcontains(msg, 'Bless') or msgcontains(msg, 'bless')) then
	selfSay('Vejamos, posso vender pra você agora o Comando {bless full} ou {Blessing} e também {Bless PvP}, o que deseja?', cid)
	talkState[talkUser] = 1
	
	elseif(msgcontains(msg, 'Comando') or msgcontains(msg, 'comando') or msgcontains(msg, 'Bless Full') or msgcontains(msg, 'bless full')) then
    selfSay('Eu posso vender para você o comando "!bless full". No entanto, ele custa {10.000 gold coin}. Deseja comprar?', cid)
	talkState[talkUser] = 2
	
	elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 2) then
		if getPlayerStorageValue(cid,834005) == 1 then
			selfSay('Você já comprou esse comando.', cid)
			talkState[talkUser] = 0
		else
			if doPlayerRemoveMoney(cid, 10000) == TRUE then
				selfSay('Pronto! Agora você pode usar o comando {!bless full}', cid)
				doSendMagicEffect(getPlayerPosition(cid), 49)
				setPlayerStorageValue(cid, 834005, 1)
				talkState[talkUser] = 0
			else
			selfSay('Você não tem o dinheiro necessário.', cid)
			talkState[talkUser] = 0
			end
		end
		
	elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 2) then
			selfSay('Sem problemas.', cid)
			talkState[talkUser] = 0
	
	elseif(msgcontains(msg, 'Blessing') or msgcontains(msg, 'blessing')) then
		selfSay('Eu posso lhe conceder todas as benções por {20.000 gold coin}. Deseja comprar? - [{Yes} | {No}]', cid)
		talkState[talkUser] = 3
	
		elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 3) then
			if getPlayerBlessing(cid, 1) or getPlayerBlessing(cid, 2) or getPlayerBlessing(cid, 3) or getPlayerBlessing(cid, 4) or getPlayerBlessing(cid, 5) then
				selfSay('Você já tem todas as benções.', cid)
				talkState[talkUser] = 0
			else
			if doPlayerRemoveMoney(cid, 20000) == TRUE then
				selfSay('Você agora está protegido!', cid)
				doSendMagicEffect(getPlayerPosition(cid), 49)
				doPlayerAddBlessing(cid, 1)
				doPlayerAddBlessing(cid, 2)
				doPlayerAddBlessing(cid, 3)
				doPlayerAddBlessing(cid, 4)
				doPlayerAddBlessing(cid, 5)
				talkState[talkUser] = 0
			else
			selfSay('Você não tem o dinheiro necessário.', cid)
			end
		end
	
	elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 3) then
			selfSay('Tudo bem, mas tenho novas coisas para vender.', cid)
			talkState[talkUser] = 0
	
		end	  
	return TRUE
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new()) 

 

cms1-pr%C3%AAmio.png

Postado
  • Autor
1 hora atrás, Frenesy disse:

 

Isso mesmo. Cria ele e me diz como funciona que eu adiciono no NPC. Até lá... Vou ficar de devendo essa.

 

 

Isso já está dentro da minha jurisdição (=D). Testa isso aqui:

 


local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
 

function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid)             npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg)     npcHandler:onCreatureSay(cid, type, msg) end
function onThink()                         npcHandler:onThink() end



function doCreatureSayWithDelay(cid,text,type,delay,e)
   if delay<=0 then
      doCreatureSay(cid,text,type)
   else
      local func=function(pars)
                    doCreatureSay(pars.cid,pars.text,pars.type)
                    pars.e.done=TRUE
                 end
      e.done=FALSE
      e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e})
   end
end


function cancelNPCTalk(events)
  local ret=1
  for aux=1,table.getn(events) do
     if events[aux].done==FALSE then
        stopEvent(events[aux].event)
     else
        ret=ret+1
     end
  end
  events=nil
  return(ret)
end


function doNPCTalkALot(msgs,interval)
  local e={}
  local ret={}
  if interval==nil then interval=3000 end --3 seconds is default time between messages
  for aux=1,table.getn(msgs) do
      e[aux]={}
      doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux])
      table.insert(ret,e[aux])
  end
  return(ret)
end

function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then
        return false
    end
	
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	
	if(msgcontains(msg, 'Bless') or msgcontains(msg, 'bless')) then
	selfSay('Vejamos, posso vender pra você agora o Comando {bless full} ou {Blessing} e também {Bless PvP}, o que deseja?', cid)
	talkState[talkUser] = 1
	
	elseif(msgcontains(msg, 'Comando') or msgcontains(msg, 'comando') or msgcontains(msg, 'Bless Full') or msgcontains(msg, 'bless full')) then
    selfSay('Eu posso vender para você o comando "!bless full". No entanto, ele custa {10.000 gold coin}. Deseja comprar?', cid)
	talkState[talkUser] = 2
	
	elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 2) then
		if getPlayerStorageValue(cid,834005) == 1 then
			selfSay('Você já comprou esse comando.', cid)
			talkState[talkUser] = 0
		else
			if doPlayerRemoveMoney(cid, 10000) == TRUE then
				selfSay('Pronto! Agora você pode usar o comando {!bless full}', cid)
				doSendMagicEffect(getPlayerPosition(cid), 49)
				setPlayerStorageValue(cid, 834005, 1)
				talkState[talkUser] = 0
			else
			selfSay('Você não tem o dinheiro necessário.', cid)
			talkState[talkUser] = 0
			end
		end
		
	elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 2) then
			selfSay('Sem problemas.', cid)
			talkState[talkUser] = 0
	
	elseif(msgcontains(msg, 'Blessing') or msgcontains(msg, 'blessing')) then
		selfSay('Eu posso lhe conceder todas as benções por {20.000 gold coin}. Deseja comprar? - [{Yes} | {No}]', cid)
		talkState[talkUser] = 3
	
		elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 3) then
			if getPlayerBlessing(cid, 1) or getPlayerBlessing(cid, 2) or getPlayerBlessing(cid, 3) or getPlayerBlessing(cid, 4) or getPlayerBlessing(cid, 5) then
				selfSay('Você já tem todas as benções.', cid)
				talkState[talkUser] = 0
			else
			if doPlayerRemoveMoney(cid, 20000) == TRUE then
				selfSay('Você agora está protegido!', cid)
				doSendMagicEffect(getPlayerPosition(cid), 49)
				doPlayerAddBlessing(cid, 1)
				doPlayerAddBlessing(cid, 2)
				doPlayerAddBlessing(cid, 3)
				doPlayerAddBlessing(cid, 4)
				doPlayerAddBlessing(cid, 5)
				talkState[talkUser] = 0
			else
			selfSay('Você não tem o dinheiro necessário.', cid)
			end
		end
	
	elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 3) then
			selfSay('Tudo bem, mas tenho novas coisas para vender.', cid)
			talkState[talkUser] = 0
	
		end	  
	return TRUE
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new()) 

 

Tipo, quando eu falo {Blessing} ele não pula para a próxima fala, ele repete a anterior ou seja, ele repete a mesma frase, olhe só:

Spoiler

11:59 Ana: Olá, sou a vendedora de bençãos desta cidade, você gostaria de verificar minhas lista de Bless ou comprar o Comando !bless, ou diga Trade para comprar ou vender Aol e Ceremonial Ankh.
11:59 Teste [1]: bless
11:59 Ana: Vejamos, posso vender pra você Blessing e também Bless PvP, o que deseja?
11:59 Teste [1]: blessing
11:59 Ana: Vejamos, posso vender pra você Blessing e também Bless PvP, o que deseja?
12:00 Teste [1]: Blessing
12:00 Ana: Vejamos, posso vender pra você Blessing e também Bless PvP, o que deseja?

 

Eu fiz uma simples modificação no arquivo Ana.xml, acho que não tem nada a ver, está aqui:

Spoiler

<?xml version="1.0"?>
<npc name="Ana" script="Ana.lua" walkinterval="2000">
  <health now="200" max="200" />
    <look type="136" head="113" body="65" legs="0" feet="96" addons="2"/>
  <parameters>
    <parameter key="module_shop" value="1"/>
    <parameter key="shop_sellable" value="Amulet Of Loss,2173,10000; Ceremonial Ankh,6561,30000"/>
    <parameter key="shop_buyable" value="Amulet Of Loss,2173,50000; Ceremonial Ankh,6561,300000"/>
    <parameter key="message_greet" value="Olá, sou a vendedora de bençãos desta cidade, você gostaria de verificar minhas lista de {Bless} ou comprar o {Comando} !bless, ou diga {Trade} para comprar ou vender Aol e Ceremonial Ankh."/>
  </parameters>
</npc>

 

@Edite

 

Trocando a palavra chave {Blessing} por qualquer uma alinhatoria por exemplo {xd} ela responde certinho a proxima fala, a NPC está lendo o Blessing como Bless? o.O..vou continuar dando uma olhada no script pra ve se entendo o que está acontecendo.. 

 

@Edite

 

Resolvido, ficou assim!

Spoiler

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
 

function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid)             npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg)     npcHandler:onCreatureSay(cid, type, msg) end
function onThink()                         npcHandler:onThink() end

function doCreatureSayWithDelay(cid,text,type,delay,e)
   if delay<=0 then
      doCreatureSay(cid,text,type)
   else
      local func=function(pars)
                    doCreatureSay(pars.cid,pars.text,pars.type)
                    pars.e.done=TRUE
                 end
      e.done=FALSE
      e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e})
   end
end


function cancelNPCTalk(events)
  local ret=1
  for aux=1,table.getn(events) do
     if events[aux].done==FALSE then
        stopEvent(events[aux].event)
     else
        ret=ret+1
     end
  end
  events=nil
  return(ret)
end


function doNPCTalkALot(msgs,interval)
  local e={}
  local ret={}
  if interval==nil then interval=3000 end --3 seconds is default time between messages
  for aux=1,table.getn(msgs) do
      e[aux]={}
      doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux])
      table.insert(ret,e[aux])
  end
  return(ret)
end

function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then
        return false
    end
    
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    
    if(msgcontains(msg, 'Blessing') or msgcontains(msg, 'blessing')) then
    selfSay('Vejamos, posso vender pra você {Bless} e também {Bless PvP}, o que deseja?', cid)
    talkState[talkUser] = 1
    
    elseif(msgcontains(msg, 'Comando') or msgcontains(msg, 'comando') or msgcontains(msg, 'Comando Bless') or msgcontains(msg, 'comando bless')) then
    selfSay('Eu posso vender para você o comando "!bless full". No entanto, ele custa {120.000 gold coin}. Deseja comprar?', cid)
    talkState[talkUser] = 2
    
    elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 2) then
        if getPlayerStorageValue(cid,834005) == 1 then
            selfSay('Você já comprou esse comando.', cid)
            talkState[talkUser] = 0
        else
            if doPlayerRemoveMoney(cid, 120000) == TRUE then
                selfSay('Pronto! Agora você pode usar o comando {!bless}', cid)
                doSendMagicEffect(getPlayerPosition(cid), 49)
                setPlayerStorageValue(cid, 834005, 1)
                talkState[talkUser] = 0
            else
            selfSay('Você não tem o dinheiro necessário.', cid)
            talkState[talkUser] = 0
            end
        end
        
    elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 2) then
            selfSay('Sem problemas.', cid)
            talkState[talkUser] = 0
    
    elseif(msgcontains(msg, 'Bless') or msgcontains(msg, 'bless')) then
        selfSay('Eu posso lhe conceder todas as benções por {50.000 gold coin}. Deseja comprar? - [{Yes} | {No}]', cid)
        talkState[talkUser] = 3
    
        elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 3) then
            if getPlayerBlessing(cid, 1) or getPlayerBlessing(cid, 2) or getPlayerBlessing(cid, 3) or getPlayerBlessing(cid, 4) or getPlayerBlessing(cid, 5) then
                selfSay('Você já tem todas as benções.', cid)
                talkState[talkUser] = 0
            else
            if doPlayerRemoveMoney(cid, 50000) == TRUE then
                selfSay('Você agora está protegido!', cid)
                doSendMagicEffect(getPlayerPosition(cid), 49)
                doPlayerAddBlessing(cid, 1)
                doPlayerAddBlessing(cid, 2)
                doPlayerAddBlessing(cid, 3)
                doPlayerAddBlessing(cid, 4)
                doPlayerAddBlessing(cid, 5)
                talkState[talkUser] = 0
            else
            selfSay('Você não tem o dinheiro necessário.', cid)
            end
        end
    
    elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 3) then
            selfSay('Tudo bem, mas tenho novas coisas para vender.', cid)
            talkState[talkUser] = 0
    
        end      
    return TRUE
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

Vou ver se consigo arrumar o Script Bless PvP, e retorno aqui para adicionar no Script da NPC e talkactions ok?

 

Por enquanto eu te agradeço, muito obrigado! :) 

 

@Edite

kkk, amigo a "Bless PvP", creio que ela já existe dentro do jogo, é a "Twist of Fate" você saberia colocar ela no comando e no NPC?

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

 

                                                           

55f6tc.gif                     

Postado
30 minutos atrás, Digoshow disse:

kkk, amigo a "Bless PvP", creio que ela já existe dentro do jogo, é a "Twist of Fate" você saberia colocar ela no comando e no NPC?

 

Ok, tenta isso.

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
 
function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid)             npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg)     npcHandler:onCreatureSay(cid, type, msg) end
function onThink()                         npcHandler:onThink() end
function doCreatureSayWithDelay(cid,text,type,delay,e)
   if delay<=0 then
      doCreatureSay(cid,text,type)
   else
      local func=function(pars)
                    doCreatureSay(pars.cid,pars.text,pars.type)
                    pars.e.done=TRUE
                 end
      e.done=FALSE
      e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e})
   end
end

function cancelNPCTalk(events)
  local ret=1
  for aux=1,table.getn(events) do
     if events[aux].done==FALSE then
        stopEvent(events[aux].event)
     else
        ret=ret+1
     end
  end
  events=nil
  return(ret)
end

function doNPCTalkALot(msgs,interval)
  local e={}
  local ret={}
  if interval==nil then interval=3000 end --3 seconds is default time between messages
  for aux=1,table.getn(msgs) do
      e[aux]={}
      doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux])
      table.insert(ret,e[aux])
  end
  return(ret)
end
function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then
        return false
    end
    
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    
    if(msgcontains(msg, 'Blessing') or msgcontains(msg, 'blessing')) then
    selfSay('Vejamos, posso vender pra você {Bless} e também {Bless PvP}, o que deseja?', cid)
    talkState[talkUser] = 1
    
    elseif(msgcontains(msg, 'Comando') or msgcontains(msg, 'comando') or msgcontains(msg, 'Comando Bless') or msgcontains(msg, 'comando bless')) then
    selfSay('Eu posso vender para você o comando "!bless full". No entanto, ele custa {120.000 gold coin}. Deseja comprar?', cid)
    talkState[talkUser] = 2
    
    elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 2) then
        if getPlayerStorageValue(cid,834005) == 1 then
            selfSay('Você já comprou esse comando.', cid)
            talkState[talkUser] = 0
        else
            if doPlayerRemoveMoney(cid, 120000) == TRUE then
                selfSay('Pronto! Agora você pode usar o comando {!bless}', cid)
                doSendMagicEffect(getPlayerPosition(cid), 49)
                setPlayerStorageValue(cid, 834005, 1)
                talkState[talkUser] = 0
            else
            selfSay('Você não tem o dinheiro necessário.', cid)
            talkState[talkUser] = 0
            end
        end
        
    elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 2) then
            selfSay('Sem problemas.', cid)
            talkState[talkUser] = 0
    
    elseif(msgcontains(msg, 'Bless') or msgcontains(msg, 'bless')) then
        selfSay('Eu posso lhe conceder todas as benções por {50.000 gold coin}. Deseja comprar? - [{Yes} | {No}]', cid)
        talkState[talkUser] = 3
    
        elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 3) then
            if getPlayerBlessing(cid, 1) or getPlayerBlessing(cid, 2) or getPlayerBlessing(cid, 3) or getPlayerBlessing(cid, 4) or getPlayerBlessing(cid, 5) then
                selfSay('Você já tem todas as benções.', cid)
                talkState[talkUser] = 0
            else
            if doPlayerRemoveMoney(cid, 50000) == TRUE then
                selfSay('Você agora está protegido!', cid)
                doSendMagicEffect(getPlayerPosition(cid), 49)
                doPlayerAddBlessing(cid, 1)
                doPlayerAddBlessing(cid, 2)
                doPlayerAddBlessing(cid, 3)
                doPlayerAddBlessing(cid, 4)
                doPlayerAddBlessing(cid, 5)
                talkState[talkUser] = 0
            else
            selfSay('Você não tem o dinheiro necessário.', cid)
            end
        end
    
    elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 3) then
            selfSay('Tudo bem, mas tenho novas coisas para vender.', cid)
            talkState[talkUser] = 0
			
	elseif(msgcontains(msg, 'Bless PvP') or msgcontains(msg, 'bless pvp')) then
        selfSay('Eu posso lhe conceder a Bless PvP por {50.000 gold coin}. Deseja comprar? - [{Yes} | {No}]', cid)
        talkState[talkUser] = 4
    
        elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 4) then
            if getPlayerPVPBlessing(cid) == true then
                selfSay('Você já tem essa PvP Bless.', cid)
                talkState[talkUser] = 0
            else
            if doPlayerRemoveMoney(cid, 50000) == TRUE then
                selfSay('Você agora está protegido!', cid)
                doSendMagicEffect(getPlayerPosition(cid), 49)
                doPlayerSetPVPBlessing(cid)
                talkState[talkUser] = 0
            else
            selfSay('Você não tem o dinheiro necessário.', cid)
            end
        end
    
    elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 4) then
            selfSay('Volte quando tiver interesse.', cid)
            talkState[talkUser] = 0
    
        end      
    return TRUE
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

cms1-pr%C3%AAmio.png

Postado
  • Autor
15 minutos atrás, Frenesy disse:

 

Ok, tenta isso.

 


local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
 
function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid)             npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg)     npcHandler:onCreatureSay(cid, type, msg) end
function onThink()                         npcHandler:onThink() end
function doCreatureSayWithDelay(cid,text,type,delay,e)
   if delay<=0 then
      doCreatureSay(cid,text,type)
   else
      local func=function(pars)
                    doCreatureSay(pars.cid,pars.text,pars.type)
                    pars.e.done=TRUE
                 end
      e.done=FALSE
      e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e})
   end
end

function cancelNPCTalk(events)
  local ret=1
  for aux=1,table.getn(events) do
     if events[aux].done==FALSE then
        stopEvent(events[aux].event)
     else
        ret=ret+1
     end
  end
  events=nil
  return(ret)
end

function doNPCTalkALot(msgs,interval)
  local e={}
  local ret={}
  if interval==nil then interval=3000 end --3 seconds is default time between messages
  for aux=1,table.getn(msgs) do
      e[aux]={}
      doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux])
      table.insert(ret,e[aux])
  end
  return(ret)
end
function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then
        return false
    end
    
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    
    if(msgcontains(msg, 'Blessing') or msgcontains(msg, 'blessing')) then
    selfSay('Vejamos, posso vender pra você {Bless} e também {Bless PvP}, o que deseja?', cid)
    talkState[talkUser] = 1
    
    elseif(msgcontains(msg, 'Comando') or msgcontains(msg, 'comando') or msgcontains(msg, 'Comando Bless') or msgcontains(msg, 'comando bless')) then
    selfSay('Eu posso vender para você o comando "!bless full". No entanto, ele custa {120.000 gold coin}. Deseja comprar?', cid)
    talkState[talkUser] = 2
    
    elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 2) then
        if getPlayerStorageValue(cid,834005) == 1 then
            selfSay('Você já comprou esse comando.', cid)
            talkState[talkUser] = 0
        else
            if doPlayerRemoveMoney(cid, 120000) == TRUE then
                selfSay('Pronto! Agora você pode usar o comando {!bless}', cid)
                doSendMagicEffect(getPlayerPosition(cid), 49)
                setPlayerStorageValue(cid, 834005, 1)
                talkState[talkUser] = 0
            else
            selfSay('Você não tem o dinheiro necessário.', cid)
            talkState[talkUser] = 0
            end
        end
        
    elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 2) then
            selfSay('Sem problemas.', cid)
            talkState[talkUser] = 0
    
    elseif(msgcontains(msg, 'Bless') or msgcontains(msg, 'bless')) then
        selfSay('Eu posso lhe conceder todas as benções por {50.000 gold coin}. Deseja comprar? - [{Yes} | {No}]', cid)
        talkState[talkUser] = 3
    
        elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 3) then
            if getPlayerBlessing(cid, 1) or getPlayerBlessing(cid, 2) or getPlayerBlessing(cid, 3) or getPlayerBlessing(cid, 4) or getPlayerBlessing(cid, 5) then
                selfSay('Você já tem todas as benções.', cid)
                talkState[talkUser] = 0
            else
            if doPlayerRemoveMoney(cid, 50000) == TRUE then
                selfSay('Você agora está protegido!', cid)
                doSendMagicEffect(getPlayerPosition(cid), 49)
                doPlayerAddBlessing(cid, 1)
                doPlayerAddBlessing(cid, 2)
                doPlayerAddBlessing(cid, 3)
                doPlayerAddBlessing(cid, 4)
                doPlayerAddBlessing(cid, 5)
                talkState[talkUser] = 0
            else
            selfSay('Você não tem o dinheiro necessário.', cid)
            end
        end
    
    elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 3) then
            selfSay('Tudo bem, mas tenho novas coisas para vender.', cid)
            talkState[talkUser] = 0
			
	elseif(msgcontains(msg, 'Bless PvP') or msgcontains(msg, 'bless pvp')) then
        selfSay('Eu posso lhe conceder a Bless PvP por {50.000 gold coin}. Deseja comprar? - [{Yes} | {No}]', cid)
        talkState[talkUser] = 4
    
        elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 4) then
            if getPlayerPVPBlessing(cid) == true then
                selfSay('Você já tem essa PvP Bless.', cid)
                talkState[talkUser] = 0
            else
            if doPlayerRemoveMoney(cid, 50000) == TRUE then
                selfSay('Você agora está protegido!', cid)
                doSendMagicEffect(getPlayerPosition(cid), 49)
                doPlayerSetPVPBlessing(cid)
                talkState[talkUser] = 0
            else
            selfSay('Você não tem o dinheiro necessário.', cid)
            end
        end
    
    elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 4) then
            selfSay('Volte quando tiver interesse.', cid)
            talkState[talkUser] = 0
    
        end      
    return TRUE
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Quando eu falo Bless PvP a NPC novamente responde como se eu tivesse falado Bless apenas eheh, porem isso eu posso trocar por uma outra frase que resolve, o problema é que quando eu confirmo falando Yes para comprar a Bless PvP, ela não responde mais, e também da um erro na Distro, acho que na linha 114, de uma conferida no erro:

 

Spoiler

v8ebdj.png

 

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

 

                                                           

55f6tc.gif                     

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo