Ir para conteúdo

Featured Replies

Postado

Opa Galerinha do TK

 

gostaria de um auxilio em 2 casos aqui um é o NPC Mission que eu implantei no servidor, e o outro é um npc que te da algumas missões para fazer e quando termina-las ele te promove para a classe configurada no script.

 

bom vamos la

 

- o npc de promotion funciona assim resumidamente vc paga para ele (configuravel o valor) para ele te dar algumas missões onde vc tera que matar alguns monstros e no final vc retorna e fala com ele e ele te promove para a determinada vocação.

 

1º - problema 

 

 [spoiler*]

 [spoiler*]

 

Npc =   Rodrick.Xml

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Rodrick" script="swordmanpromotion.lua" walkinterval="2000" floorchange="0">
	<health now="100" max="100"/>
	<look type="128" head="17" body="54" legs="114" feet="0" addons="2"/>
	<parameters>
		<parameter key="message_greet" value="Olá |PLAYERNAME|, para você ser promoivido precisa passar por uma {mission}, para de uma olhada no que fazer diga {lista} ."/>
	</parameters>
</npc>

[/spoiler*]

 

swordmanpromotion.lua

 

[spoiler*]

 

local Config = {
    Monsters = {
      -- ["Name"] = {amount = quantidade}
      ["Demon"] = {amount = 30},
      ["Hydra"] = {amount = 10},
    },
    StoragePro = 54661, -- Não mexer se não souber editar
    Money = 100000 -- Dinheiro
}
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
    local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
    local msg = msg:lower()
    local release = talkState[talkUser]
    if msgcontains(msg, "mission") then
      	if getPlayerStorageValue(cid, Config.StoragePro) < 1 then
        	selfSay("A missão para promovido custa " .. Config.Money .. " você aceita fazer ?", cid)
        	release = 1
      	elseif getPlayerStorageValue(cid, Config.StoragePro) == (2 + #Config.Monsters) then
        	selfSay("Você já cumpriu a missão peça pra ser {promovido}.", cid)
        	release = 2 
      	elseif getPlayerStorageValue(cid, Config.StoragePro) == (3 + #Config.Monsters) then
      		selfSay("Voce já terminou as missões, pode ir em embora!", cid)
      		release = 0
      	end
    elseif msgcontains(msg, "yes") and release == 1 then
      	if doPlayerRemoveMoney(cid, Config.Money) then
        	local text = ""
        	for monsters, v in pairs(Config.Monsters) do
          		txt = txt .. ", "
          		txt = txt .. v.amount .. " {" .. monsters .. "}"
        	end
        	npcHandler:say("A missão é matar esses monstros para mim" .. text .. ".", cid)
        	for i, _ in pairs(Config.Monsters) do
          		setPlayerStorageValue(cid, i, 0)
        	end
        	setPlayerStorageValue(cid, Config.StoragePro, 1)
        	release = 0
      	else
        	selfSay("Você não tem money suficiente!", cid)
        	release = 0
      	end
    elseif msgcontains(msg, "no") and release == 2 then
      	selfSay("Até logo!", cid)
      	release = 0  
    end
    if msgcontains(msg, "lista") and getPlayerStorageValue(cid, Config.StoragePro) < (#Config.Monster + 3) then
      	local text, n = "", 0
      	for monsters, v in pairs(Config.Monsters) do
      		local sto = getPlayerStorageValue(cid, monsters)
      		if  sto < v.amount then
          		n = n + 1
          		text = text .. ", "
          		text = text .. (tostring(sto) < tostring(1) and v.amount or (tostring(v.amount) - tostring(sto))) .. " {" .. monsters .. "}"
        	end
      	end
      	text = text:sub(3)
      	if n > 1 then
        	selfSay("Para terminar sua missão você ainda tem que matar esses monstros : " .. text, cid)
        	release = 0
      	elseif n == 1 then
        	selfSay("Você só tem mais um monstro à matar : " .. text, cid)
        	release = 0
      	else
        	selfSay("Você já terminou de matar os monstro que lhe pedi, agora sim tu é digno de ser {promovido}.", cid)
        	release = 2
      	end
    elseif msgcontains(msg, "promovido") and release == 2 then
      	selfSay("Aqui está sua promoção jovem soldado!!", cid)
      	setPlayerVocation(cid, (getPlayerVocation(cid) + 4))
      	setPlayerStorageValue(cid, Config.StoragePro, (#Config.Monsters + 3))
      	-- Para deixar em utilizavel a storage para outras coisas
      	for monsters, _ in pairs(Config.Monsters) do
      		setPlayerStorageValue(cid, monsters, -1)
      	end
      	release = 0
    end
    return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

[/spoiler*]

 

Creaturescripts/scripts/swordmantasks.lua

 

[spoiler*]

local Config = {
    Monsters = {
      -- ["Name"] = {amount = quantidade}
      ["Demon"] = {amount = 30},
      ["Hydra"] = {amount = 10},
    },
    StoragePro = 54661, -- Não mexer se não souber editar
    Money = 100000 -- Dinheiro
}
function onKill(cid, target)
	if not isMonster(target) and getPlayerStorageValue(cid, Config.StoragePro) >= (2 + #Config.StoragePro) then
		return false
	end
	local monster = Config.Monsters[getCreatureName(target):lower]
	if monster then
		local sto = getPlayerStorageValue(cid, monster)
		if sto < (monster.amount - 1) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Task message: ["  .. (sto + 1) ..  "/" .. monster.amount .. "] of " .. getCreatureName(target) .. ".")
			setPlayerStorageValue(cid, monster, (sto + 1))
		elseif sto == (monster.amount - 1)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Congratulations!! you have killed ["  .. (sto + 1) ..  "/" .. monster.amount .. "] of " .. getCreatureName(target) .. "s ands and completed the task.")
			setPlayerStorageValue(cid, monster, (sto + 1)) 
			setPlayerStorageValue(cid, Config.StoragePro, (getPlayerStorageValue(cid, Config.StoragePro) + 1))
		end
	end
	return true
end
function onLogin(cid)
	registerCreatureEvent('taskNpc')
	return true
end

[/spoiler*]

 

Creaturescripts.xml    TAGS

 

[spoiler*]

	<event type="login" name="verf_taskNpc" event="script" value="swordmantasks.lua"/>
	<event type="kill" name="taskNpc" event="script" value="swordmantasks.lua"/>

[/spoiler*]

 

e o erro que aparece na distro é esse aqui 

[23/03/2016 17:38:16] [Error - LuaScriptInterface::loadFile] data/creaturescripts/scripts/swordmantasks.lua:14: function arguments expected near ']'
[23/03/2016 17:38:16] [Warning - Event::loadScript] Cannot load script (data/creaturescripts/scripts/swordmantasks.lua)
[23/03/2016 17:38:16] data/creaturescripts/scripts/swordmantasks.lua:14: function arguments expected near ']'

[23/03/2016 17:38:16] [Error - LuaScriptInterface::loadFile] data/creaturescripts/scripts/swordmantasks.lua:14: function arguments expected near ']'
[23/03/2016 17:38:16] [Warning - Event::loadScript] Cannot load script (data/creaturescripts/scripts/swordmantasks.lua)
[23/03/2016 17:38:16] data/creaturescripts/scripts/swordmantasks.lua:14: function arguments expected near ']'

[/spoiler*]

 

 

2 - problema

 

o NPC Mission funciona assim vc fala com ele hi, quest e ele vai pedindo para vc trazer itens para ele conforme o script ele deveria te entregar um premio no final pelas missoes feitas mas não acontece  e pra cada pedido novo de missão ocorre um erro na distro

 

dados do npc.

 

Mission.XML

[spoiler*]

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Mission" script="mission.lua" walkinterval="2000" floorchange="0">
	<health now="100" max="100"/>
	<look type="325" head="29" body="4" legs="20" feet="96" addons="3" corpse="2212"/>
	<parameters>
    	<parameter key="message_greet" value="Hello |PLAYERNAME|. What brings you to me? You want start the {quest}?"/>
	</parameters>
</npc>

[/spoiler*]

 

Mission.lua

[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 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, 'quest')) then

selfSay('To start this quest tell {mission}', cid) --This is just an example, In this script added 4 mission for you 

end

	if(msgcontains(msg, 'mission')) then

    	if(getPlayerStorageValue(cid,700) < 1) then

        	selfSay('Your first mission will be to get 100 {tarantula egg}.', cid)

        	talkState[talkUser] = 1

    	elseif (getPlayerStorageValue(cid,701) < 1) then

            	selfSay('Your next mission will be to get 150 {strands of medusa hair}.', cid)

            	talkState[talkUser] = 1

    	elseif (getPlayerStorageValue(cid,702) < 0) then

            	selfSay('Your next mission will be to get 300 {red dragon scales}.', cid)

            	talkState[talkUser] = 1

    	elseif (getPlayerStorageValue(cid,703) < 0) then

            	selfSay('Your next mission will be to get 400 {green dragon scales}.', cid)

            	talkState[talkUser] = 1





    	elseif (getPlayerStorageValue(cid,703) == 1) then --zmieniac w zaleznosci od ostatniego storage!!

            	selfSay('You have done all missions.', cid)

            	talkState[talkUser] = 1





    	end

    	---------------------------------------

    	elseif(msgcontains(msg, 'tarantula egg') and talkState[talkUser] == 1 and (getPlayerStorageValue(cid,700) < 1)) then

    	if(doPlayerRemoveItem(cid, 11198, 100) == TRUE) then

        	setPlayerStorageValue(cid,700,1)

        	doPlayerAddPercentLevel(cid, 5)

        	selfSay('Thank you.', cid)

        	talkState[talkUser] = 0

    	else

        	selfSay('To end mission you need have 100 {tarantula egg}.', cid)

    	end

    	---------------------------------------

    	elseif(msgcontains(msg, 'strands of medusa hair') and talkState[talkUser] == 1  and (getPlayerStorageValue(cid,701) < 1) and (getPlayerStorageValue(cid,700) == 1)) then

    	if(doPlayerRemoveItem(cid, 11226, 150) == TRUE) then

        	setPlayerStorageValue(cid,701,1)

        	doPlayerAddPercentLevel(cid, 7)

        	selfSay('Thank you.', cid)

        	talkState[talkUser] = 0

    	else

        	selfSay('To end mission you need have 150 {strands of medusa hair}.', cid)

    	end

    	---------------------------------------

    	elseif(msgcontains(msg, 'red dragon scales') and talkState[talkUser] == 1  and (getPlayerStorageValue(cid,702) < 1) and (getPlayerStorageValue(cid,701) == 1)) then

    	if(doPlayerRemoveItem(cid, 5882, 300) == TRUE) then

        	setPlayerStorageValue(cid,702,1)

        	doPlayerAddPercentLevel(cid, 6)

        	selfSay('Thank you.', cid)

        	talkState[talkUser] = 0

    	else

        	selfSay('To end mission you need have 300 {red dragon scales}.', cid)

    	end

    	---------------------------------------

    	elseif(msgcontains(msg, 'green dragon scales') and talkState[talkUser] == 1 and (getPlayerStorageValue(cid,703) < 1) and (getPlayerStorageValue(cid,702) == 1)) then

    	if(doPlayerRemoveItem(cid, 5920, 400) == TRUE) then

        	setPlayerStorageValue(cid,703,1)

        	doPlayerAddPercentLevel(cid, 5)

        	selfSay('Thank you.', cid)

        	talkState[talkUser] = 0

    	else

        	selfSay('To end mission you need have 400 {green dragon scales}.', cid)

    	end

    	------------------------------------------


	end

end    

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

[/spoiler*]

erro que aparece na distro

[23/03/2016 17:57:23] [Error - Npc interface] 
[23/03/2016 17:57:23] data/npc/scripts/mission.lua:onCreatureSay
[23/03/2016 17:57:23] Description: 
[23/03/2016 17:57:23] data/npc/scripts/mission.lua:83: attempt to call global 'doPlayerAddPercentLevel' (a nil value)
[23/03/2016 17:57:23] stack traceback:
[23/03/2016 17:57:23] 	data/npc/scripts/mission.lua:83: in function 'callback'
[23/03/2016 17:57:23] 	data/npc/lib/npcsystem/npchandler.lua:390: in function 'onCreatureSay'
[23/03/2016 17:57:23] 	data/npc/scripts/mission.lua:13: in function <data/npc/scripts/mission.lua:13>
[23/03/2016 18:11:38] > Broadcasted message: "Qualquer duvida, sujestao ou critica, mantenha o Help Chat aberto e contate um responsavel. Trabalhando por um OT melhor!".

[23/03/2016 18:20:38] [Error - Npc interface] 
[23/03/2016 18:20:38] data/npc/scripts/mission.lua:onCreatureSay
[23/03/2016 18:20:38] Description: 
[23/03/2016 18:20:38] data/npc/scripts/mission.lua:103: attempt to call global 'doPlayerAddPercentLevel' (a nil value)
[23/03/2016 18:20:38] stack traceback:
[23/03/2016 18:20:38] 	data/npc/scripts/mission.lua:103: in function 'callback'
[23/03/2016 18:20:38] 	data/npc/lib/npcsystem/npchandler.lua:390: in function 'onCreatureSay'
[23/03/2016 18:20:38] 	data/npc/scripts/mission.lua:13: in function <data/npc/scripts/mission.lua:13>

[23/03/2016 18:25:01] [Error - Npc interface] 
[23/03/2016 18:25:01] data/npc/scripts/mission.lua:onCreatureSay
[23/03/2016 18:25:01] Description: 
[23/03/2016 18:25:01] data/npc/scripts/mission.lua:123: attempt to call global 'doPlayerAddPercentLevel' (a nil value)
[23/03/2016 18:25:01] stack traceback:
[23/03/2016 18:25:01] 	data/npc/scripts/mission.lua:123: in function 'callback'
[23/03/2016 18:25:01] 	data/npc/lib/npcsystem/npchandler.lua:390: in function 'onCreatureSay'
[23/03/2016 18:25:01] 	data/npc/scripts/mission.lua:13: in function <data/npc/scripts/mission.lua:13>

[23/03/2016 18:25:14] [Error - Npc interface] 
[23/03/2016 18:25:14] data/npc/scripts/mission.lua:onCreatureSay
[23/03/2016 18:25:14] Description: 
[23/03/2016 18:25:14] data/npc/scripts/mission.lua:143: attempt to call global 'doPlayerAddPercentLevel' (a nil value)
[23/03/2016 18:25:14] stack traceback:
[23/03/2016 18:25:14] 	data/npc/scripts/mission.lua:143: in function 'callback'
[23/03/2016 18:25:14] 	data/npc/lib/npcsystem/npchandler.lua:390: in function 'onCreatureSay'
[23/03/2016 18:25:14] 	data/npc/scripts/mission.lua:13: in function <data/npc/scripts/mission.lua:13>

bom galera quem puder e ajudar além do rep ficarei eternamente agradecido

 

 

vlw a todos

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

  • Respostas 6
  • Visualizações 527
  • Created
  • Última resposta

Top Posters In This Topic

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