Ir para conteúdo
  • 0

Escrever em livro X, salvar em bloco de notas, exibe em livro Y


Mazynho

Pergunta

Galera queria um script em que eu dou use em um livro de ID X, que está na minha bp, escrevo algo nele e depois clico em ok, até ai nada de mais, só que queria que depois que clicasse em ok, tudo que ele escreveu fosse salvo em um bloco de nota na pasta do ot, e em outro livro de ID Y ao dar use iria aparecer o que está escrito nesse bloco de nota.

OBS:

arrow.gif Isso seria em um livro que podia escrever infinitas vezes, por varias pessoas, com quantidade ilimitada de caracteres.

 

Ex:

Player1 escreveu: Oi tudo bom?
Player2 escreveu: Olá!
Player3 escreveu: como vai?

Obs.:

arrow.gif Cada player escreveu em seu livro de ID X.

 

arrow.gif Logo após escrever no livro de ID X e, der ok,, seria salvo no bloco de notas, se o player for escrever outra coisa novamente ao dar use no livro de id x ele irá aparecer como se nada tivesse sido escrito antes, ele aparecerá em branco.

 

 

 

Caso alguém der use no livro de ID Y iria aparecer da seguinte forma:

[Player1] Oi tudo bom? - 14/10/13 - 10:30
[Player2] Olá! - 08/11/13 - 11:39
[Player3] como vai? - 20/12/13 - 05:47

Obs.:

arrow.gif Essas mensagens são exibidas como se fossem escritas em um livro normal, naquela caixa de texto.

 

arrow.gif O livro de ID Y apenas exibe as mensagens, nele não é possível apagar.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Você faz pedidos bem difíceis e interessantes, heim...

 

Bom, aqui vai o primeiro script. Salve como booktext.lua em creaturescripts/scripts:

 

 

local book_id = 1947

function onTextEdit(cid, item, newText)
	if item.itemid == book_id then
		local file = io.open("book_.txt", "a+")
		local content = file:read("*a")
		local newWrite = "["..getCreatureName(cid) .. "] ".. newText .. " ("..os.date("%c")..")"
		if content == "" then
			file:write(newWrite)
		else
			file:write('\n' .. newWrite)
		end
		file:close()
		return false
	end
	return true
end

 

 

 

Salve como text_action em actions/scripts:

 

 

local max_length = 999 -- Máximo de caracteres no texto antes de dar erro...

function onUse(cid, item, fromPos)
	local file = io.open("book_.txt", "a+")
	local content = file:read("*a")
	if type(content) == "string" and max_length and content:len() > max_length then
		return doPlayerSendCancel(cid, "Text is too big!")
	end
	doShowTextDialog(cid, item.itemid, content)
	file:close()
	return false
end

 

 

 

Tag actions.xml (não esqueça de mudar o book_id pro id do book que vai ler o texto)

<action itemid="book_id" event="script" value="text_action.lua"/>

Tag creaturescripts.xml:

<event type="textedit" name="book_text" event="script" value="booktext.lua"/>

Login.lua:

registerCreatureEvent(cid, "book_text")

Para ler, use um livro que não mande caixa de texto ou desative (editando o .dat) de um livro qualquer, porque não dá pra impedir a caixa com o texto do próprio livro por script. Outra coisa, mesmo você tendo pedido caracteres ilimitados, existe um limite (não sei qual) que passa a dar erro na hora de mandar a caixa de textos. Deixei como padrão 999, se quiser mudar é só mexer na primeira linha do creaturescript.

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu Omega, perfeito exatamente como queria.

 

Muito obrigado!

 

Você podia olhar este meu topico aqui

 

E da uma olhada nesse topico anterior http://www.xtibia.com/forum/topic/225318-talkaction-verificando-item-x-na-data-base/

 

min diz alguma coisa, se é possível fazer ou não.

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

×
×
  • Criar Novo...