Ir para conteúdo
  • 0
lepiigor

Scripting Chest Claustrophobic Inferno

Pergunta

lepiigor    16
lepiigor

Antes de fazer a sua pergunta, tenha certeza de ter lido as regras da seção e o guia abaixo:

https://forums.otserv.com.br/index.php?/forums/topic/168583-regras-da-seção/

https://forums.otserv.com.br/index.php?/forums/topic/165121-como-fazer-uma-pergunta-ou-o-grande-guia-do-usuário-com-dúvidas/

Obs: não delete esse formulário pré-definido, preencha-o corretamente para postar o seu tópico!

Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.).

Base:

TFS 1.3 , 12.60 OtservBR, Custom Znote Acc

Qual é a sua pergunta?

olá,

sempre fiz a quest com action ID 2000 no baú e portanto os itens nos quadrados pretos, agora queria saber o baú do inferno claustrofóbico ( soulhexer, soulbiter, etc ), aquele que clicou e dá um item aleatório, mas um apenas uma vez, como coloco isso em Remeres? Nunca o fiz, estando o servidor online não consigo reiniciar de momento, mas coloquei: Seguro: AID: 2000, UID: 51323, Script abaixo , mas de repente será 1 Apenas uma vez, ou se você colocar 2000 e um ID que corresponda apenas ao ID do item e não ao ID do script?

Ou, faça como em RL, abra toda vez que chegar na frente do CHEST, mas apenas uma vez se obtiver o Storage X, e clicando no script, remova o storage (como moeda de troca, obrigado a refazer uma missão , chefe, para ter o storage e reabrir o cofre) Eu olhei para 12.63 e não tinha visto nenhuma mudança nova nisso, parece-me que o mapa também não estava lá

Ou se for apenas uma vez, não importa, aleatório, 1 Apenas uma vez 1 apenas ID Única, copiaria as salas X vezes se necessário

Você tem o código disponível? Se tiver poste-o na caixa de código que está dentro do spoiler abaixo:

Spoiler

local rewards = {
    { id = 38917, name = "Soulcutter" },
    { id = 38918, name = "Soulshredder" },
    { id = 38919, name = "Soulbiter" },
    { id = 38920, name = "Souleater" },
    { id = 38921, name = "Soulcrusher" },
    { id = 38922, name = "Soulmaimer" },
    { id = 38923, name = "Soulbleeder" },
    { id = 38924, name = "Soulpiercer" },
    { id = 38925, name = "Soultainter" },
    { id = 38926, name = "Soulhexer" },
    { id = 38927, name = "Soulshanks" },
    { id = 38928, name = "Soulstrider" },
    { id = 38929, name = "Soulshell" },
    { id = 38930, name = "Soulmantel" },
    { id = 38931, name = "Soulshroud" },
    { id = 38932, name = "Pair of Soulwalkers" },
    { id = 38933, name = "Pair of Soulstalkers" },
    { id = 38934, name = "Soulbastion" }
}

local bagyouDesire = Action()

function bagyouDesire.onUse(player, item, fromPosition, target, toPosition, isHotkey)
	local randId = math.random(1, #rewards)
	local rewardItem = rewards[randId]

	player:addItem(rewardItem.id, 1)

	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You received a ' .. rewardItem.name .. '.')
	return true
end

bagyouDesire:id(51323)
bagyouDesire:register() 

 

Chest: AID: 2000 / UID: 51323 ?

Você tem alguma imagem que possa auxiliar no problema? Se sim, anexe-a dentro do spoiler abaixo:

Spoiler

 

 

Compartilhar este post


Link para o post

2 respostass a esta questão

Recommended Posts

  • 0
lepiigor    16
lepiigor

Hoje eu salvei o servidor depois de 2 semanas sem desligar, a action id 2000 e o ID bag you desire  não funcionam, diz 'tente adicionar' ao seu bag 'como se tivéssemos sem capacidade, acho que é melhor adicionar um UID de sub-script a ele, como seria um único script para um chest ? 

esse script da dawnport, poderia funcionar se eu deletar 3 linhas e deixar apenas uma com a La bag you desire ?

o problema estará no storage, como modificar o script para que aceite o 'número' de storage por exemplo 750000 e não o nome?

 

local UniqueTable = {
	-- Dawnport vocation rewards
	-- Sorcerer
	[14025] = {
		itemBag = 21475,
		itemReward = {{2643, 1}, {2175, 1}, {2190, 1}, {8819, 1}, {8820, 1}, {2649, 1}},
		itemRewardContainer = {{7620, 10}, {18559, 1}, {24774, 2}, {2152, 5}},
		storage = Storage.Quest.Dawnport.VocationReward,
		value = 1
	},
	-- Druid
	[14026] = {
		itemBag = 21475,
		itemReward = {{2643, 1}, {2175, 1}, {2182, 1}, {8819, 1}, {8820, 1}, {2649, 1}},
		itemRewardContainer = {{7620, 10}, {18559, 1}, {24774, 2}, {2152, 5}},
		storage = Storage.Quest.Dawnport.VocationReward,
		value = 2
	},
	-- Paladin
	[14027] = {
		itemBag = 21475,
		itemReward = {{2643, 1}, {2389, 1}, {2660, 1}, {8923, 1}, {2461, 1}, {2512, 1}},
		itemRewardContainer = {{40397, 1}, {18559, 1}, {24774, 2}, {2152, 5}},
		storage = Storage.Quest.Dawnport.VocationReward,
		value = 3
	},
	-- Knight
	[14028] = {
		itemBag = 21475,
		itemReward = {{2643, 1}, {2509, 1}, {8602, 1}, {2465, 1}, {2460, 1}, {2478, 1}},
		itemRewardContainer = {{7618, 10}, {18559, 1}, {3966, 1}, {2428, 1}, {24774, 2}, {2152, 5}},
		storage = Storage.Quest.Dawnport.VocationReward,
		value = 4
	}
}

local vocationReward = Action()

function vocationReward.onUse(player, item, fromPosition, itemEx, toPosition)
	local setting = UniqueTable[item.uid]
	if not setting then
		return true
	end

	if player:getStorageValue(setting.storage) >= 0 then
		player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The ".. getItemName(1740) .. " is empty.")
		return true
	end

	for i = 1, #setting.itemReward do
		local itemid = setting.itemReward[i][1]
		local count = setting.itemReward[i][2]
		for c = 1, count do
			player:addItem(itemid, 1)
		end
	end
	local container = player:addItem(setting.itemBag)
	for v = 1, #setting.itemRewardContainer do
		local itemid = setting.itemRewardContainer[v][1]
		local count = setting.itemRewardContainer[v][2]
		if ItemType(itemid):isStackable() or ItemType(itemid):getCharges() then
			container:addItem(itemid, count)
		else
			for c = 1, count do
				container:addItem(itemid, 1)
			end
		end
	end
	player:setStorageValue(setting.storage, setting.value)
	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a " .. getItemName(setting.itemBag) .. ".")
	return true
end

for index, value in pairs(UniqueTable) do
	vocationReward:uid(index)
end

vocationReward:register()

 

Editado por lepiigor

Compartilhar este post


Link para o post
  • 0
lepiigor    16
lepiigor

A solução que funciona, mas com um storage global, para torná-lo acessível toda vez que o chefe o matar, ainda não encontrei.

local chest = Action()

function chest.onUse(player, item, fromPosition, target, toPosition, isHotkey)
	if (player:getStorageValue(491456) == 1) then
		player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The chest is empty.")
		return true
	end

	player:addItem(38944, 1)
	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You found a bag you desire.")
	player:setStorageValue(491456, 1)
	return true
end

chest:aid(59711)
chest:register()

 

Editado por lepiigor

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×