Ir para conteúdo
  • 0

(Quest) - Da um help


julhinhuu

Pergunta

#Boa Tarde Xtibianos.

 

Bem eu gostaria de criar uma quest que ao clicar no baú ganhasse skills ( configurável ), cada vocaçao ganharia seu determinado skill, exemplo: mages - magic level (avá), paladins - distance e Knights - axe, sword, club e shielding se possível.

 

Agradeço desde já aquele que me der uma luz, estou na tentativa.

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0


local config = {

--[vocation_id] = {skillId = {skills}, amount = quantidade},

--Se for magic level, coloque "ml". Se não, confira os valores (ou variáveis) correspondentes a cada skill em 000-constant.lua (data/lib).

--Ex.:

[1] = {skillId = {SKILL_CLUB}, amount = 10},

[2] = {skillId = {SKILL_CLUB, SKILL_SWORD, SKILL_AXE}, amount = 10},

[4] = {skillId = {"ml"}, amount = 5},

[9] = {skillId = {"ml", SKILL_FIST}, amount = 5},

}

 

function doPlayerUpdateSkill(cid, SKILL, amount)

local query = ""

if tonumber(SKILL) and SKILL >= 0 and SKILL <= 5 then

query = "UPDATE player_skills SET value = value + "..amount.." WHERE player_id = "..getPlayerGUID(cid).. " AND skillid = "..SKILL

elseif SKILL == "ml" then

query = "UPDATE players SET maglevel = maglevel + "..amount.." WHERE id = "..getPlayerGUID(cid)

else

return true

end

db.executeQuery(query)

end

 

local storage = 4934

function onUse(cid)

local voc_skill = config[getPlayerVocation(cid)]

if getPlayerStorageValue(cid, storage) < 1 and voc_skill then

setPlayerStorageValue(cid, storage, 1)

for i = 1, #voc_skill.skillId do

doPlayerUpdateSkill(cid, voc_skill.skillId, voc_skill.amount)

end

doRemoveCreature(cid, true)

else

doPlayerSendCancel(cid, "It is empty.")

end

return true

end

 

Link para o comentário
Compartilhar em outros sites

  • 0

Bem, tente isso:

Crie um arquivo .lua na pasta action/scripts chamado bauskill.lua e cole isso dentro:

local config = {
skills_amount = 1, -- quantidade de skills que o player ganhará se ele for Knight ou Paladin
magiclevel_amount = 1, -- quantidade de magic levels o player ganhará se ele for Druid ou Sorcerer
storage = 10000, -- Storage para quest.
uniqueID = 1000, -- UniqueID que você colocará no Map Editor
mensagem = "Voce recebeu "..config.skills_amount.." skills e "..config.magiclevel_amount.." magic levels.",
}

local skills_id = {1, 2, 3, 4, 5} -- Não mexer.
		
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(item.uid == config.uniqueID) then
		if getPlayerStorageValue(cid, config.storage) == -1 then
			if isInArray({1, 2, 5, 6}, getPlayerVocation(cid)) then
				for i = 1, table.maxn(skills_id) do
					doPlayerAddSkill(cid, skills_id[i], config.skills_amount)
				end
			else
				doPlayerAddMagLevel(cid, config.magiclevel_amount)
			end
			doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, config.mensagem)
			setPlayerStorageValue(cid, config.storage, 1)
		else
			doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ja recebeu seu premio.")
		end
	end
return true
end

Depois abra seu action.xml e cole essa tag dentro:

<action uniqueid="10000" script="bauskill.lua"/>

No script você pode configurar o UniqueID e a quantidade de skills que o player vai ganhar, eu separei que os knights e paladins não ganharão magic level, apenas skills.

Editado por MudrocK
Link para o comentário
Compartilhar em outros sites

  • 0

@MudrocK.

@Zipter98

 

Obrigado, estou trampando agora quando chegar em casa vejo se funciona e edito o post, vai ser com muito gosto e prazer que lhes darei meu rep.

MudrocK só uma duvida se eu quiser colocar uma vocação para ganhar magic level teria como??

Link para o comentário
Compartilhar em outros sites

  • 0

 

Bem, tente isso:

Crie um arquivo .lua na pasta action/scripts chamado bauskill.lua e cole isso dentro:

local config = {
skills_amount = 1, -- quantidade de skills que o player ganhará se ele for Knight ou Paladin
magiclevel_amount = 1, -- quantidade de magic levels o player ganhará se ele for Druid ou Sorcerer
storage = 10000, -- Storage para quest.
uniqueID = 1000, -- UniqueID que você colocará no Map Editor
mensagem = "Voce recebeu "..config.skills_amount.." skills e "..config.magiclevel_amount.." magic levels.",
}

local skills_id = {1, 2, 3, 4, 5} -- Não mexer.
		
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(item.uid == config.uniqueID) then
		if getPlayerStorageValue(cid, config.storage) == -1 then
			if isInArray({1, 2, 5, 6}, getPlayerVocation(cid)) then
				for i = 1, table.maxn(skills_id) do
					doPlayerAddSkill(cid, skills_id[i], config.skills_amount)
				end
			else
				doPlayerAddMagLevel(cid, config.magiclevel_amount)
			end
			doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, config.mensagem)
			setPlayerStorageValue(cid, config.storage, 1)
		else
			doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ja recebeu seu premio.")
		end
	end
return true
end

Depois abra seu action.xml e cole essa tag dentro:

<action uniqueid="10000" script="bauskill.lua"/>

No script você pode configurar o UniqueID e a quantidade de skills que o player vai ganhar, eu separei que os knights e paladins não ganharão magic level, apenas skills.

 

 

Erro:

 

[30/08/2015 00:59:25] [Error - Action Interface]

[30/08/2015 00:59:25] data/actions/scripts/bauskill.lua

[30/08/2015 00:59:25] Description:

[30/08/2015 00:59:25] data/actions/scripts/bauskill.lua:6: attempt to index global 'config' (a nil value)

[30/08/2015 00:59:25] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/bauskill.lua)

 

local config = {
    --[vocation_id] = {skillId = {skills}, amount = quantidade},
    --Se for magic level, coloque "ml". Se não, confira os valores (ou variáveis) correspondentes a cada skill em 000-constant.lua (data/lib).
    --Ex.:
    [1] = {skillId = {SKILL_CLUB}, amount = 10},
    [2] = {skillId = {SKILL_CLUB, SKILL_SWORD, SKILL_AXE}, amount = 10},
    [4] = {skillId = {"ml"}, amount = 5},
    [9] = {skillId = {"ml", SKILL_FIST}, amount = 5},
}
    
function doPlayerUpdateSkill(cid, SKILL, amount)
    local query = ""
    if tonumber(SKILL) and SKILL >= 0 and SKILL <= 5 then
        query = "UPDATE player_skills SET value = value + "..amount.." WHERE player_id = "..getPlayerGUID(cid).. " AND skillid = "..SKILL
    elseif SKILL == "ml" then
        query = "UPDATE players SET maglevel = maglevel + "..amount.." WHERE id = "..getPlayerGUID(cid)
    else
        return true
    end
    db.executeQuery(query)
end

local storage = 4934
function onUse(cid)
    local voc_skill = config[getPlayerVocation(cid)]
    if getPlayerStorageValue(cid, storage) < 1 and voc_skill then
        setPlayerStorageValue(cid, storage, 1)
        for i = 1, #voc_skill.skillId do
            doPlayerUpdateSkill(cid, voc_skill.skillId[i], voc_skill.amount)
        end
        doRemoveCreature(cid, true)
    else
        doPlayerSendCancel(cid, "It is empty.")
    end
    return true
end

 

@Zipter98 da um erro igual ao do MudrocK

 

[30/08/2015 01:09:52] [Error - Action Interface]

[30/08/2015 01:09:52] data/actions/scripts/bauskill.lua

[30/08/2015 01:09:52] Description:

[30/08/2015 01:09:52] data/actions/scripts/bauskill.lua:6: attempt to index global 'config' (a nil value)

[30/08/2015 01:09:52] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/bauskill.lua)

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

No caso ira aumentar 10 club, axe e sword.. magic level 5?? Mais o que nao entendi se é para cada vocaçao?

Posso adicionar mais vocações ao script?

 

Basta ler as observações deixadas no código.

As configurações que deixei são apenas exemplos. Você pode configurar a quantidade de skill que quiser.

Pode adicionar infinitas vocações no código, basta seguir o modelo que deixei.

Cada vocação (configurada entre colchetes [ ]) receberá amount pontos nas skills configuradas na tabela skillId. Para ML, a skill deve ser "ml". Para as outras, você confere seus valores e variáveis em 000-constant.lua (dê um CTRL + F por SKILL_CLUB que você encontrará tais variáveis).

Novamente: leia as observações e exemplos que você entenderá.

 

Exemplo:

[10] = {skillId = {SKILL_CLUB, SKILL_SWORD}, amount = 2},

Assim, a vocação 10 irá receber 2 pontos em club e sword.

Sobre seu erro, você deve ter esquecido de copiar a tabela config.

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

Ta bom zipter, quando eu chegar em casa vou fazer novamente e edito o post, obrigado desde ja.

 

Basta ler as observações deixadas no código.

As configurações que deixei são apenas exemplos. Você pode configurar a quantidade de skill que quiser.

Pode adicionar infinitas vocações no código, basta seguir o modelo que deixei.

Cada vocação (configurada entre colchetes [ ]) receberá amount pontos nas skills configuradas na tabela skillId. Para ML, a skill deve ser "ml". Para as outras, você confere seus valores e variáveis em 000-constant.lua (dê um CTRL + F por SKILL_CLUB que você encontrará tais variáveis).

Novamente: leia as observações e exemplos que você entenderá.

 

Exemplo:

[10] = {skillId = {SKILL_CLUB, SKILL_SWORD}, amount = 2},

Assim, a vocação 10 irá receber 2 pontos em club e sword.

Sobre seu erro, você deve ter esquecido de copiar a tabela config.

 

Pronto o script funcionou sem erros mais não esta dando a recompensa que no caso seria os SKILLS, apenas aparece It is empty, mais tentei com outros personagens que fiz e a mesma coisa acontece.

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...