Ir para conteúdo

Installotscript(File, Tag, Type_ [, Dir])


dalvorsn

Posts Recomendados

Autor: Dalvo

Descrição: A função como o próprio nome diz, instala um script padrão de otserv. Junto com essa função vem mais duas que precisei fazer para que funciona-se da maneira esperada.

listDir(dirname)

divisor.png

function listDir(dirname)
local file = io.popen("dir "..tostring(dirname))
if(file)then
	str = file:read("*a")
	file:close()
end
return str
end

A função listDir(dirname) retorna uma string contendo todos os arquivos do diretório dirname ou nil caso não seja um diretório.

 

 

 

 

isFile(file, dirname)

divisor.png

function isFile(file, dirname)
local files = listDir(dirname)
if not(files)then
	return error("Can't open directory")
elseif not io.open(dirname..""..file) then
	return error("File not found")
end
return true
end

A função isFile(file, dirname) verifica se o arquivo file pertence ao diretório dirname. Se pertecer a função retorna true, se não ela dispara um erro no console.

Obs.: ela está com alguns erros ainda, mas pro propósito que foi criada serve.

 

 

 

 

 

installOTScript(file, tag, type_ [, dir])

divisor.png

function installOTScript(file, tag, type_,dir)
if not(dir)then
	dir = ""
end
local types = {
	[1] = {dirscript = "data/actions/scripts/", dirtag="data/actions/actions.xml", find = "<actions>"},
	[2] = {dirscript = "data/creaturescripts/scripts/",dirtag = "data/creaturescripts/creaturescripts.xml",find= "<creaturescripts>"},
	[3] = {dirscript = "data/globalevents/scripts/",dirtag = "data/globalevents/globalevents.xml",find= "<globalevents>"},
	[4] = {dirscript = "data/lib/",dirtag ="empty"},
	[5] = {dirscript = "data/movements/scripts/",dirtag = "data/movements/movements.xml",find= "<movements>"},
	[6] = {dirscript = "data/spells/scripts/",dirtag = "data/spells/spells.xml",find = "<spells>"},
	[7] = {dirscript = "data/talkactions/scripts/",dirtag = "data/talkactions/talkactions.xml",find = "<talkactions>"},
	[8] = {dirscript = "data/weapons/scripts/",dirtag = "data/weapons/weapons.xml",find= "<weapons>"},
}
if(isFile(file, dir))then
	if(types[type_])then
		str = io.open(dir..""..file):read(-1):close()
		io.open(types[type_].dirscript..file,"w+"):write(str):close()
		if not(types[type_].dirtag == "empty")then
			if(type_ == 2)then
				name = tag:gmatch("name=\"(.+)\"")
				register = io.open("data/creaturescripts/scripts/login.lua"):read(-1):close():gsub("function onLogin(cid)","function onLogin(cid) \n	registerCreatureEvent(cid, "..name..")")
				io.open("data/creaturescripts/scripts/login.lua","w+"):write(register):close()
			end
			str_ = io.open(types[type_].dirtag):read(-1):close():gsub(types[type_].find, tag)
			if(str_:find(tag))then
				return print("This script is already installed")
			end
			xml = io.open(types[type_].dirtag, "w+")
			xml:write(str_):close()
		end
	else
		print("This type of script is not valid")
	end
end
end

A função acima tem como objetivo facilitar a vida de pessoas mais leigas em scripting ou até mesmo facilitar a instalação de scripts.

file é o nome do arquivo a ser instalado;

tag é a tag do script a ser instalado;

type_* é o número correspondente ao tipo de script de OTserv;

dir é o diretório aonde estão os arquivos a serem instalados.

 

* Os números referentes aos tipos de scripts são:

1 -> Actions

2 -> CreatureScripts

3 -> GlobalEvents

4 -> Lib

5 -> Movements

6 -> Spells

7 -> TalkActions

8 -> Weapons

 

Obs.: Não foi possível testar a função ainda, pois meu computador está muito lento e mal está dando para abrir servidores, então caso haja algum erro ou bugs, por favor me informem, obrigado.

 

Atenciosamente, Dalvo

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

  • 2 weeks later...
×
×
  • Criar Novo...