Ir para conteúdo
  • Cadastre-se

(Resolvido)Venda de comandos por NPC, tem como?


Ir para solução Resolvido por Frenesy,

Posts Recomendados

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                     

Link para o post
Compartilhar em outros sites
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

Link para o post
Compartilhar em outros sites
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                     

Link para o post
Compartilhar em outros sites
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

Link para o post
Compartilhar em outros sites
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                     

Link para o post
Compartilhar em outros sites

Seu TFS não é o 0.4? Pesquisei e vi que os 0.4 tem o comando "getPlayerPVPBlessing(cid)"

O Tópico da qual me mandou também se encontra essa função.

cms1-pr%C3%AAmio.png

Link para o post
Compartilhar em outros sites
45 minutos atrás, Frenesy disse:

Seu TFS não é o 0.4? Pesquisei e vi que os 0.4 tem o comando "getPlayerPVPBlessing(cid)"

O Tópico da qual me mandou também se encontra essa função.

Sim é TFS 0.4, porem da este erro o.O...eu não teria que colocar este comando "getPlayerPVPBlessing" em algum outro local?

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites

Ele faz a verificação da Bless pra você não ter que comprar de novo. Sem essa verificação, ficaria assim:

 

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

Link para o post
Compartilhar em outros sites
50 minutos atrás, Frenesy disse:

Ele faz a verificação da Bless pra você não ter que comprar de novo. Sem essa verificação, ficaria assim:

 


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

 

Agora mostrou o efeito que comprei o Bless PvP, porem ainda assim deste jeito seria muito disperdicio de dinheiro a pessoa acabar gastando dinheiro com um tipo de bless que já tem, teria que dizer que o Player já tem, caso tenha ehhe...e ainda aparece esse erro na distro:

 

Spoiler

erro_bless.png

 

Sera que eu não teria que adicionar alguma função na pasta npc/lib/npcsystem/npchandler? Entendi que é algo na linha 390 certo?

de qualquer forma vou colocar um pedaço da lib npchandler, porque é muito grande...

 

Bom aqui está o meu npchandler apartir da linha 385:

 

Spoiler

385-                if(self.keywordHandler ~= nil) then
386-               if((self:isFocused(cid) and (class == TALKTYPE_PRIVATE_PN or NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT)) or not self:isFocused(cid)) then
387-                        local ret = self.keywordHandler:processMessage(cid, msg)
388-                        if(not ret) then
389-                           local callback = self:getCallback(CALLBACK_MESSAGE_DEFAULT)
390-                            if(callback ~= nil and callback(cid, class, msg)) then
391-                                if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
392-                                    self.talkStart[cid] = os.time()
393-                                else
394-                                    self.talkStart = os.time()
395-                                end
396-                            end
397-                        else
398-                            if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
399-                                self.talkStart[cid] = os.time()
400-                            else
401-                                self.talkStart = os.time()
402-                            end
403-                        end
404-                    end
405-                end

 

@Edite

 

Creio que não tenha nada ve a pasta Lib, verifiquei de outro TFS 0.4 e é a mesma coisa...que estranho este erro o.O

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

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites
  • Solução
4 minutos atrás, Digoshow disse:

Agora mostrou o efeito que comprei o Bless PvP, porem ainda assim deste jeito seria muito disperdicio de dinheiro a pessoa acabar gastando dinheiro com um tipo de bless que já tem, teria que dizer que o Player já tem, caso tenha ehhe

 

kkkk Pois é, cara. A função "get" verificaria se ele já tem ou não a bless.

Cara, eu vou fazer o seguinte. Eu vou DEDUZIR que essa benção que você quer seja a 6. Eu não tenho certeza, mas olhando o script da Ceremonial Ankh, aparece essa Bless 6. Deve ser elam já que as 5 primeiras são as bless normais. Sendo assim, teste esse:

 

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 getPlayerBlessing(cid, 6) 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)
	 --             doPlayerSetPVPBlessing(cid)
					doPlayerAddBlessing(cid, 6)
					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

Link para o post
Compartilhar em outros sites
16 horas atrás, Frenesy disse:

 

kkkk Pois é, cara. A função "get" verificaria se ele já tem ou não a bless.

Cara, eu vou fazer o seguinte. Eu vou DEDUZIR que essa benção que você quer seja a 6. Eu não tenho certeza, mas olhando o script da Ceremonial Ankh, aparece essa Bless 6. Deve ser elam já que as 5 primeiras são as bless normais. Sendo assim, teste esse:

 


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 getPlayerBlessing(cid, 6) 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)
	 --             doPlayerSetPVPBlessing(cid)
					doPlayerAddBlessing(cid, 6)
					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())

 

Agora funciou, porem quando o Player morre para Criatura ele ta perdendo a Bless PvP que no caso é a Twist, teria uma maneira de fazer a Twist ( Bless PvP ) só perder se morrer para Player?

 

@Edite

 

Estava me esquecendo, faltou colocar a Twist no talkactions também hehehe...

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

 

                                                           

55f6tc.gif                     

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo