Ir para conteúdo

Featured Replies

Postado

Aqui você acha todas as funções do TFS atual: https://github.com/otland/forgottenserver/wiki/Script-Interface

Se clica em players nesse link irá ter as funções usadas nos players: https://github.com/otland/forgottenserver/wiki/Metatable%3APlayer

Se estudar um pouco de lógica de programação e algoritmos irá perceber que no TFS (e na maioria das coisas na programação) as funções são basicamente escritas em inglês, e no TFS você verifica no início delas o que ela faz: GET (puxa um valor da database), SET (muda algo na database), ADD (adiciona algo na database) e etc.

No link que te passei se você procurar por storage vai achar a função que puxa o valor database e a que muda o valor na database ... 

A tabela da storage na database é formada basicamente pelo chave da storage e pelo valor dela, tudo indicando para determinado player, POR EXEMPLO:
O player de ID 1 fez uma quest, você programou para quando ele clicar na quest mudar o valor da chave 2000 para 1, então a chave 2000 terá valor 1 para o PLAYER de ID 1.

Se você entender a lógica vai ver que dá para fazer milhares de coisas ... 

getStorageValue(key)

setStorageValue(key, value)

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

  • Respostas 8
  • Visualizações 624
  • Created
  • Última resposta

Top Posters In This Topic

Postado
  • Autor
Em 28/06/2020 em 20:38, Npc Bugado disse:

@schibuola 

 

Eu estou no celular e não pude testar, mas veja se lhe agrada e me reporte qualquer bug, usei como base o sistema de teleport do membro lordzetros, dito isso, vamos lá:

Em data/movements/scripts/ crie um arquivo chamado mov_janela_hunts.lua e adicione dentro:


-- Devidos créditos  pelo uso da base: lordzetros 

local config = {
	titulo = "BEM VINDO(A) A JANELA DE HUNTS!", -- Título da Janela
	mensagem = "Selecione qual hunt voce deseja ir:", -- Mensagem abaixo do título da janela
}

CONFIG_TPS_JANELA = {
	[19090] = { -- ID do action que ficará no portal da hunt
		{nome = "Demon 01", pos = {x = 98, y = 139, z = 7}}, -- Segue padrão, nome da cave e posição que o player será teleportado
		{nome = "Demon 02", pos = {x = 93, y = 144, z = 7}},
		{nome = "Demon 03", pos = {x = 91, y = 140, z = 7}},
		{nome = "Demon 04", pos = {x = 94, y = 138, z = 7}},
		{nome = "Demon 05", pos = {x = 95, y = 136, z = 7}},
	},
	[19091] = { 
		{nome = "Frost 01", pos = {x = 98, y = 140, z = 7}},
		{nome = "Frost 02", pos = {x = 93, y = 145, z = 7}},
		{nome = "Frost 03", pos = {x = 91, y = 141, z = 7}},
		{nome = "Frost 04", pos = {x = 94, y = 139, z = 7}},
		{nome = "Frost 05", pos = {x = 95, y = 137, z = 7}},
	},
}

function onStepIn(creature, item, pos, fromPosition)
	if ((CONFIG_TPS_JANELA[item:getActionId()]) and creature:isPlayer()) then
		JANELA_TP_ACTION = item:getActionId()
		creature:teleportTo(fromPosition, true)
		creature:registerEvent("janela hunts")
		local janela = ModalWindow(1000, config.titulo, config.mensagem)
		
		for i, v in ipairs(CONFIG_TPS_JANELA[JANELA_TP_ACTION]) do
			janela:addChoice(i, v.nome)
      		doPlayerAddExp(cid,500000)
			doPlayerSay(cid,"Eu ganhei esse exp ai de cima até passar pelo portal novamente :)",1)
		end
		
		janela:addButton(100, "Confirmar")
		janela:addButton(101, "Fechar")
		janela:setDefaultEnterButton(100)
		janela:setDefaultEscapeButton(101)
		janela:sendToPlayer(creature)
	end
	return true
end

 

Em data/movements/movements.xml adicione o seguinte código abaixo de um semelhante:


<movevent event="StepIn" itemid="5023" script="mov_janela_hunts.lua" />

 

Agora em data/creaturescripts/scripts/ crie um arquivo chamado creature_janela_hunts.lua e adicione dentro:


function onModalWindow(player, modalWindowId, buttonId, choiceId)
	player:unregisterEvent("janela hunts")
	if (modalWindowId == 1000) then
		if (buttonId == 100) then
			local tele_pos = CONFIG_TPS_JANELA[JANELA_TP_ACTION][choiceId].pos
			player:teleportTo(tele_pos)
			local pos_t = Position(tele_pos)
			pos_t:sendMagicEffect(CONST_ME_MAGIC_BLUE)
		end
	end
	return true
end

 

Em data/creaturescripts/creaturescripts.xml adicione o seguinte código abaixo de um semelhante:


<event type="ModalWindow" name="janela hunts" script="creature_janela_hunts.lua"/>

* Configuração *

    Bom, apesar de que não seja difícil de configurar, é necessário uma explicação, vamos lá...

1 - 


[19090] = { -- ID do action que ficará no portal da hunt
		{nome = "Demon 01", pos = {x = 98, y = 139, z = 7}}, -- Segue padrão, nome da cave e posição que o player será teleportado
		{nome = "Demon 02", pos = {x = 93, y = 144, z = 7}},
		{nome = "Demon 03", pos = {x = 91, y = 140, z = 7}},
		{nome = "Demon 04", pos = {x = 94, y = 138, z = 7}},
		{nome = "Demon 05", pos = {x = 95, y = 136, z = 7}},
	},

Em [19090] este número de dentro é o actionID que ficará no portal. Com ele será identificado de qual monstro se trata, bastando apenas configurar este número e o nome das opções de monstros que você quer aparecendo na janela, em seguida, a posição na qual o jogador será teleportado, seguindo a ordem. Segue imagem de como deve ficar o seu portal:

Screenshot_71.png.d5bd967d26e4cd1b17c63f4a82e38a5d.png

 

 

OBS²: VOCÊ EDITA O ACTIONID NO SEU EDITOR DE MAPA COLOCANDO NO ID DO ITEM DE TELEPORTE.

OBS³: PARA ADICIONAR NOVAS HUNTS NO SCRIPT, BASTA SEGUIR O PADRÃO QUE ESTÁ NO CÓDIGO, DO 19090 PARA O 19091.

 

2 - (por fim)

Em data/movements/movements.xml

 


<movevent event="StepIn" itemid="5023" script="mov_janela_hunts.lua" />

itemID = Id do item que o player andará para abrir a janela de hunt

Está como 5023 por conta que o magic forcefield é 5023, no qual utilizei para teste, aconselho você deixar da mesma forma (caso seja o mesmo id no seu servidor), ou mude, mas cuidado para não cometer algum erro.

 

Olá,

    Primeiramente obrigado pela ajuda.

 

eu fiz os passos que vc descreveu ai e qnd eu tento pular no tp, o boneco apenas anda pra tras do tp como se estivesse sendo empurrado, e nada acontece.

 

Fui olhar a distro e ta dando esse error lá

Spoiler

Lua Script Error: [MoveEvents Interface]
data/movements/scripts/others/mov_janela_hunts.lua:onStepIn
data/movements/scripts/others/mov_janela_hunts.lua:35: attempt to call global 'doPlayerSay' <a nil value>
stack traceback:
    [C]: in function 'doPlayerSay'
    data/movements/scripts/others/mov_janela_hunts.lua:35: in function <data/movements/scripts/others/mov_janela_hunts.lua:25>

Pelo oq eu pude observar, foi o unico error q deu.

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 520.1k

Informação Importante

Confirmação de Termo