Ir para conteúdo

Featured Replies

Postado

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

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

Postado
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

Postado
  • Autor
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                     

Postado
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

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