Ir para conteúdo
  • Cadastre-se

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


Ir para solução Resolvido por Frenesy,

Posts Recomendados

Bom dia comunidade, estou de volta..hehe

 

Bom, estava pensando em fazer um negocio diferente, queria por um npc que vende comandos! Por exemplo: "bless"

 

E se for possivel, aparecer aquela janelinha de Buy, com os nomes dos comandos que será vendido ao player, se não der pode ser só falando mesmo com o npc direto!

 

Será possível alguma dessas opções?

 

Obrigado!

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites

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

 

Caso queira a janela de trade, é só selecionar um item qualquer para representar cada comando e por pra vender normalmente no NPC.

Ai ao comprar o item, clicar nele e ganhar a storage.

cms1-pr%C3%AAmio.png

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
Em 2017-5-23 ás 09:45, Frenesy disse:

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

 

Caso queira a janela de trade, é só selecionar um item qualquer para representar cada comando e por pra vender normalmente no NPC.

Ai ao comprar o item, clicar nele e ganhar a storage.

Estou meio enferrujado depois de tanto tempo sem mexer kkkkk...

Seria muito trabalho pedir pra você fazer ou pegar um exemplo pra mim ter uma base?

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites

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.

cms1-pr%C3%AAmio.png

Link para o post
Compartilhar em outros sites
Em 2017-6-2 ás 19:09, Frenesy disse:

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.

Bom, não quero que o comando seja vendida por um item representativo entendeu? Erá só para representar...

Mais achei melhor mudar de ideia, sem trade, apenas o npc vai dizer assim mais o menos:

 

Spoiler

 

Ola, sou a vendedora de benção desta cidade, você gostaria de verificar minhas lista de Bless ou comprar o Comando !bless full?

Player: Yes

Vejamos, posso vender pra você agora o Comando !bless full ou Blessing e também Bless PvP, o que deseja?

 

Bom, e caso o player usar o comando !bless full sem ter, aparecer tipo:

Spoiler

Você não tem o comando, compre na npc X

Script do comando da !bless eu não tenho ainda, está tudo 0 ehhe...

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites

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">
  <health now="200" max="200" />
    <look type="136" head="113" body="65" legs="0" feet="96" addons="2"/>
  <parameters>
    <parameter key="message_greet" value="Ola, sou a vendedora de benção desta cidade, você gostaria de verificar minhas lista de {Bless} ou comprar o Comando !bless full?. Diga {Trade}." />
  </parameters>
</npc>

 

Ana.lua

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 creatureSayCallback(cid, type, msg)

    if(not npcHandler:isFocused(cid)) then
        return false
    end

    if(msgcontains(msg, 'Trade') or msgcontains(msg, 'trade')) 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, '!bless full') or msgcontains(msg, 'bless full')) and talkState[talkUser] == 1) then
    selfSay('O comando "!bless full" custa {10.000 gold coin}. Deseja comprar?', cid)
	talkState[talkUser] = 0
	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
	
        end
        return true
end

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

 

Agora o comando.

Talkaction.xml

<talkaction words="!Bless Full;!bless full" script="Bless.lua"/>

 

Bless.lua

local bless = {1, 2, 3, 4, 5}

function onSay(cid, words, param)
	for i = 1, table.maxn(bless) do
		if(getPlayerBlessing(cid, bless[i])) then
		doPlayerSendCancel(cid, "Você já possui todas as Benções.")
		return TRUE
		end
	end

	if getPlayerStorageValue(cid,834005) == 1 then
		for i = 1, table.maxn(bless) do
			doPlayerAddBlessing(cid, bless[i])
		end
	
	doCreatureSay(cid, "Você recebeu as Benções dos Deuses!" ,19)
	doSendMagicEffect(getPlayerPosition(cid), 49)
	
	else
		doPlayerSendCancel(cid, "Você não tem o comando, compre na npc X.")
	end
	return TRUE
end 

 

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

cms1-pr%C3%AAmio.png

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

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">
  <health now="200" max="200" />
    <look type="136" head="113" body="65" legs="0" feet="96" addons="2"/>
  <parameters>
    <parameter key="message_greet" value="Ola, sou a vendedora de benção desta cidade, você gostaria de verificar minhas lista de {Bless} ou comprar o Comando !bless full?. Diga {Trade}." />
  </parameters>
</npc>

 

Ana.lua


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 creatureSayCallback(cid, type, msg)

    if(not npcHandler:isFocused(cid)) then
        return false
    end

    if(msgcontains(msg, 'Trade') or msgcontains(msg, 'trade')) 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, '!bless full') or msgcontains(msg, 'bless full')) and talkState[talkUser] == 1) then
    selfSay('O comando "!bless full" custa {10.000 gold coin}. Deseja comprar?', cid)
	talkState[talkUser] = 0
	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
	
        end
        return true
end

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

 

Agora o comando.

Talkaction.xml


<talkaction words="!Bless Full;!bless full" script="Bless.lua"/>

 

Bless.lua


local bless = {1, 2, 3, 4, 5}

function onSay(cid, words, param)
	for i = 1, table.maxn(bless) do
		if(getPlayerBlessing(cid, bless[i])) then
		doPlayerSendCancel(cid, "Você já possui todas as Benções.")
		return TRUE
		end
	end

	if getPlayerStorageValue(cid,834005) == 1 then
		for i = 1, table.maxn(bless) do
			doPlayerAddBlessing(cid, bless[i])
		end
	
	doCreatureSay(cid, "Você recebeu as Benções dos Deuses!" ,19)
	doSendMagicEffect(getPlayerPosition(cid), 49)
	
	else
		doPlayerSendCancel(cid, "Você não tem o comando, compre na npc X.")
	end
	return TRUE
end 

 

1°- Quando loguei um Player Teste, falei !Bless Full ou !bless full, e não aconteceu nada, saiu como mensagem normal!

 

2°- Quando falo com o npc, ele pede pra dizer Bless ou Trade, se der pra modificar, colocar Bless e Comando, como fala chave do npc, até porque quando eu falo Trade aparece esse erro:

Spoiler

bless.png

 

3°- 

Spoiler

12:44 Ana: Vejamos, posso vender pra você agora o Comando !bless full ou Blessing e também Bless PvP, o que deseja?

Nesta ultima parte, mesmo que você fale !bless full, Blessing ou Bless PvP não acontece nada...

Sendo que o !bless full é pra dar o comando para o player e o Blessing é para adicionar as 5 bless no player normal, e a Bless PvP é uma bless que faz o player perde menos 15% de exp também...

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

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites
34 minutos atrás, Digoshow disse:

1°- Quando loguei um Player Teste, falei !Bless Full ou !bless full, e não aconteceu nada, saiu como mensagem normal!

Tem que ver se você instalou a talkaction corretamente. Eu testei aqui essa parte e deu certo. Refaça os passos e veja como fica. Se mesmo assim não der certo, avise aqui.

 

35 minutos atrás, Digoshow disse:

2°- Quando falo com o npc, ele pede pra dizer Bless ou Trade, se der pra modificar, colocar Bless e Comando, como fala chave do npc, até porque quando eu falo Trade aparece esse erro:

 

Veja se dar certo. Dialogo:  Hi > Comando > bless full > yes

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 creatureSayCallback(cid, type, msg)

    if(not npcHandler:isFocused(cid)) then
        return false
    end

    if(msgcontains(msg, 'Comando') or msgcontains(msg, 'comando')) 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, 'Bless Full') or msgcontains(msg, 'bless full')) and talkState[talkUser] == 1) then
    selfSay('O comando "!bless full" 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
	
        end
        return true
end

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

 

40 minutos atrás, Digoshow disse:

Nesta ultima parte, mesmo que você fale !bless full, Blessing ou Bless PvP não acontece nada...

Sendo que o !bless full é pra dar o comando para o player e o Blessing é para adicionar as 5 bless no player normal, e a Bless PvP é uma bless que faz o player perde menos 15% de exp também...

É o seguinte, não acontece nada porque eu não adicionei. To focando apenas no comando.

Instale a Talkaction corretamente, instale o script do NPC que passei ai em cima e tenta usar o diálogo que mandei logo acima também e veja se da certo. Dando certo, a gente passa pra essas Blessing e Bless PvP aí. Vamos uma coisa de cada vez.

cms1-pr%C3%AAmio.png

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

Tem que ver se você instalou a talkaction corretamente. Eu testei aqui essa parte e deu certo. Refaça os passos e veja como fica. Se mesmo assim não der certo, avise aqui.

 

 

Veja se dar certo. Dialogo:  Hi > Comando > bless full > yes


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 creatureSayCallback(cid, type, msg)

    if(not npcHandler:isFocused(cid)) then
        return false
    end

    if(msgcontains(msg, 'Comando') or msgcontains(msg, 'comando')) 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, 'Bless Full') or msgcontains(msg, 'bless full')) and talkState[talkUser] == 1) then
    selfSay('O comando "!bless full" 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
	
        end
        return true
end

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

 

É o seguinte, não acontece nada porque eu não adicionei. To focando apenas no comando.

Instale a Talkaction corretamente, instale o script do NPC que passei ai em cima e tenta usar o diálogo que mandei logo acima também e veja se da certo. Dando certo, a gente passa pra essas Blessing e Bless PvP aí. Vamos uma coisa de cada vez.

Não, o mesmo erro permanece na imagem que mandei a cima, você está testando em TFS 0.4?

 

Falo Hi > Comando > bless full..e o npc não responde não fala mais nada e da o erro que citei a cima

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

 

                                                           

55f6tc.gif                     

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

Não, o mesmo erro permanece na imagem que mandei a cima, você está testando em TFS 0.4?

Sim.

 

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, 'Comando') or msgcontains(msg, 'comando')) 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, 'Bless Full') or msgcontains(msg, 'bless full')) and talkState[talkUser] == 1) then
    selfSay('O comando "!bless full" 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
	
		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
7 minutos atrás, Frenesy disse:

Sim.

 


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, 'Comando') or msgcontains(msg, 'comando')) 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, 'Bless Full') or msgcontains(msg, 'bless full')) and talkState[talkUser] == 1) then
    selfSay('O comando "!bless full" 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
	
		end	  
	return TRUE
end

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

 

Agora deu certo, quando falo Hi > Comando > bless full, vende por 10k certinho!

 

Agora falta o npc responder quando fala Bless também kkk, e o comando Talkactions que está saindo como mensagem normal! ehhe

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites
Agora, Digoshow disse:

Agora falta o npc responder quando fala Bless também kkk, e o comando Talkactions que está saindo como mensagem normal! ehhe

 

Você tem certeza que instalou corretamente a talkaction?

Porque cara, eu acabei de testar aqui e deu tudo certo. Verifica de novo aí com calma.

 

cms1-pr%C3%AAmio.png

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

 

Você tem certeza que instalou corretamente a talkaction?

Porque cara, eu acabei de testar aqui e deu tudo certo. Verifica de novo aí com calma.

 

Vou copiar novamente o script que você mandou de Talkactions e refazer o teste, um segundo já volto..

20 minutos atrás, Digoshow disse:

Vou copiar novamente o script que você mandou de Talkactions e refazer o teste, um segundo já volto..

@Edite

 

Nada amigo, olha ae testei de 2 formas as tags em talkactions e também não funcionou, e sem nenhum erro no distro:
 

talkactions.xml testadas de 2 formas:

Spoiler

 

<talkaction words="!bless full;/bless full" event="script" value="bless.lua"/>

<talkaction words="!bless full;/bless full" script="bless.lua"/>

 

 

talkactions/script/bless.lua:

Spoiler

 

local bless = {1, 2, 3, 4, 5}

function onSay(cid, words, param)
    for i = 1, table.maxn(bless) do
        if(getPlayerBlessing(cid, bless)) then
        doPlayerSendCancel(cid, "Você já possui todas as Benções.")
        return TRUE
        end
    end

    if getPlayerStorageValue(cid,834005) == 1 then
        for i = 1, table.maxn(bless) do
            doPlayerAddBlessing(cid, bless)
        end
    
    doCreatureSay(cid, "Você recebeu as Benções dos Deuses!" ,19)
    doSendMagicEffect(getPlayerPosition(cid), 49)
    
    else
        doPlayerSendCancel(cid, "Você não tem o comando, compre na npc X.")
    end
    return TRUE
end

 

 

@Edite

 

Pronto, o problema era o espaço no comando da talkactions, tem que deixar tudo junto "blessfull" e ae funcionou, porem o npc ainda não responde algumas funções, e perguntando para a npc sobre "Comando" ele cita as bless também, não teria como separar, se falar "Comando" a npc Ana só citar sobre o comando, e se o Player falar de Bless ela vai citar sobre Blessing e Bless PvP?

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

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites

Que tal 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, '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
	
		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
25 minutos atrás, Frenesy disse:

Que tal 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, '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
	
		end	  
	return TRUE
end

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

 

Perfeito, só editei está parte:

Spoiler

selfSay('Vejamos, posso vender pra você agora o Comando {bless full} ou {Blessing} e também {Bless PvP}, o que deseja?', cid)

Ficando assim:

Spoiler

selfSay('Vejamos, posso vender pra você agora {Blessing} e também {Bless PvP}, o que deseja?', cid)

 

Porem agora só falta adicionar as funções finais para que quando o Player responde as opções da NPC com: Blessing ou Bless PvP se o Player não tiver ela colocar...no momento quando responde alguma dessas opções ela retorna a mesma mensagem anterior, olhe só:

Spoiler

16:01 Ana: Vejamos, posso vender pra você agora o Comando Blessing e também Bless PvP, o que deseja?
16:01 Teste [1]: blessing
16:01 Ana: Vejamos, posso vender pra você agora o Comando Blessing e também Bless PvP, o que deseja?

16:07 Teste [1]: bless pvp
16:07 Ana: Vejamos, posso vender pra você agora o Comando Blessing e também Bless PvP, o que deseja?

 

E por ultimo e não menos importante, teria como colocar a Bless PvP para ser adicionada ao Player pelo comando comprada pela NPC também? 

 

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

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites
3 minutos atrás, Digoshow disse:

Blessing ou Bless PvP 

 

Blessing é todas as 5 benções, né? Quanto custaria?

E o que seria essa tal de Bless PvP que reduz 30%? É só 1 Bless? Se for só 1 bless, qual seria?

Dê mais detalhes pra reformular o NPC.

cms1-pr%C3%AAmio.png

Link para o post
Compartilhar em outros sites
1 minuto atrás, Frenesy disse:

 

Blessing é todas as 5 benções, né? Quanto custaria?

E o que seria essa tal de Bless PvP que reduz 30%? É só 1 Bless? Se for só 1 bless, qual seria?

Dê mais detalhes pra reformular o NPC.

 

Blessing: São as 5 blessing normal do jogo, morreu pra Monstro ou Player, perdeu!

 

Bless PvP: É uma benção que quanto o Player comprar na NPC Ana, ele vai perder menos 15% de exp se morrer para Player, e morrendo para Monstro a Bless PvP não faz efeito, e só vai perde a Bless PvP se Morrer para Player

 

Entendeu? :)

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites
1 hora atrás, Digoshow disse:

Bless PvP: É uma benção que quanto o Player comprar na NPC Ana, ele vai perder menos 15% de exp se morrer para Player, e morrendo para Monstro a Bless PvP não faz efeito, e só vai perde a Bless PvP se Morrer para Player

 

Entendi, mas essa bless já tem no jogo? Qual é?

cms1-pr%C3%AAmio.png

Link para o post
Compartilhar em outros sites
1 hora atrás, Frenesy disse:

 

Entendi, mas essa bless já tem no jogo? Qual é?

Não tem não, teria como implantar nestes script algo assim?

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites
2 horas atrás, Digoshow disse:

Não tem não, teria como implantar nestes script algo assim?

 

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

cms1-pr%C3%AAmio.png

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