PoccnnEnquanto houver armas no mundo, haverá guerra!PHerói
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino
01 de julho de 2017 às 14:26
Hail Xtibianos.
Trago a vós uma serie de funções que eu uso no meu servidor e que pode ser úteis ao seu.
Lembrando que algumas funções podem fazer uso de uma livraria xml criado por mim e posta nesse tópico.
Essa função tem por objetivo criar uma data formatada (00:00:00) de um intervalo de tempo.
function intervalClockFormat(ini,fim)--[[(Marcryzius)]]--local ini,fim = tonumber(ini),tonumber(fim)ifnot(ini or fim)thenreturn"error",print('function intervalClock erro: type de variaveis invalidas')endlocal tienpo = fim-ini-- existe o parametro de dia, mas não está sendo retornado (usado).local day,hour,minu,seco = tienpo/60/60/23%30,math.floor(tienpo/60/60%23), math.floor(tienpo/60%60),math.floor(tienpo%60)return(hour <10and"0"..hour or hour)..":"..(minu <10and"0"..minu or minu)..":"..(seco <10and"0"..seco or seco)endEx:print(intervalClockFormat(os.time(),os.time()+98))>>00:01:38print(intervalClockFormat(os.time(),os.time()+6598))>>01:49:58
Essas funções tem por objetivo salvar as informações de uma determinada quest e saber se o player tem essa quest salva em seu histórico.
function saveQuestsInfor(uid,name,cid,other)--[[(Marcryzius)]]----[[ uid =Item.uid usado no bau(entre outros) para receber o item da Quest name = nome do item dado ao player ou nome da quest cid = identificacao do player other = informacoes adicionais para serem salvas junto a quest]]--ifnot(db.executeQuery("SELECT * FROM `server_quests`;"))then-- caso a table não exista, será criada db.executeQuery("CREATE TABLE `server_quests` (`uid` INTEGER, `name` VARCHAR(255), `name_player` VARCHAR(255), `pos` VARCHAR(255), `other` TEXT);")end-- caso o parametro uid seja numero, se pega a posição do item ou, caso não, se pega a posição do player.local other,pos2 = other or'',''local pos = type(uid)=='number'and getThingPos(uid)or getCreaturePosition(cid) pos2 ='x='..pos.x..', y='..pos.y..', z='..pos.z -- verifica se tudo está correto.ifnot(type(name)=='string')ornot(tonumber(cid))thenreturnfalse,print('Funcao requer parametros: name,cid')end-- salva as informações na database. db.executeQuery("INSERT INTO `server_quests` (`uid`, `name`, `name_player`,`pos`,`other`) VALUES ("..(uid or tonumber(pos.x..''..pos.y..''..pos.z))..",'"..name.."', '"..getCreatureName(cid).."','"..pos2.."','"..other.."');")returntrueendfunction getSaveQuestsInfor(uid,cid)--[[(Marcryzius)]]--local str =falseif(tonumber(uid))then str = db.getResult("SELECT * FROM `server_quests` WHERE `uid` = '"..uid.."' AND `name_player` = ".. db.escapeString(getCreatureName(cid))..";") elseif(type(uid)=='string')then str = db.getResult("SELECT * FROM `server_quests` WHERE `name_player` = "..db.escapeString(getCreatureName(cid)).." AND `name` = '"..uid.."';")elsereturnfalse,print('getSaveQuestInfor: tipo de uid invalido > '..tostring(type(uid)))endreturn(str:getID()==-1)andtrueorfalseend
Essa função serve para por a primeira letra de cada palavra da 'msg' em maiúscula.
function upperPrimer(msg)--[[(Marcryzius)]]--local txt =''for k instring.gmatch(msg,'%a+')doif(#k >1)then txt = txt..' '..k:gsub("^%a",function(s)return s:upper()end)else txt = txt..' '..k endendreturn txt:sub(2,-1)endEx:print(upperPrimer("toda primeira letra de cada palavra desse texto foi colocada em maiusculo"))>>TodaPrimeiraLetraDeCadaPalavraDesseTextoFoiColocadaEmMaiusculo
Função criada para determinar o valor inteiro mais próximo de uma fração.
function math.proxInteger(value)--[[(Marcryzius)]]--local value = tonumber(value)ifnot(value)thenreturn0,print('Function error: math.proxInteger() > valor => '..type(value))endreturn value-math.floor(value)<0.5and math.floor(value)or math.ceil(value)end
Essa função converte a 'string' em números e devolve a soma de todos os números.
function getStoreString(str)--[[(Marcryzius)]]--local store =0if(type(str)=='string')thenfor pos =1,#str do store = store+str:sub(pos,pos):byte()end elseif(type(str)=='number')thenreturn str elseprint('function getStoreString adverte: tipo de parametro invalido. ('..type(str)..')')endreturn storeendEx:print(getStoreString("lua"))>>322
Pega o level necessário para usar a arma dentro do arquivo weapons.xml
function getLevelNeedToWeaponById(itemid)--[[(Marcryzius)]]--local xfile = xml:load("data/weapons/weapons.xml"):find('%a+','id',itemid)return tonumber(xfile and xfile.level)or0end
Essa função faz uma verificação se há um town em uma determinada área.
function getTownInArea(pos, ranger)--[[(Marcryzius)]]--local ranger,townid,bloked = ranger or200,1,{getTownId('Gods Island'),getTownId('Isle of Destiny')}-- towns suprimidos while getTownName(townid)dolocalget= getTownTemplePosition(townid)ifnot(isInArray(bloked,townid))and((pos.x >=get.x-ranger and pos.x <=get.x+ranger)and(pos.y >=get.y-ranger and pos.y <=get.y+ranger))thenreturn townid else townid = townid+1endendreturn0--retorna 0(zero) para servir como condição.end
Pega o nome e o level do top
function getTopLevel()--[[(Marcryzius)]]--local target,name,level = db.getResult("SELECT `name`, `level` FROM `players` WHERE `group_id` <= 2 ORDER BY 'level' DESC;"),"",0if(target:getID()~=-1)then repeat local glevel = target:getDataInt("level")if(level < glevel)then name,level = target:getDataString("name"), glevel enduntilnot(target:next())end target:free()return name,levelend
Verifica se existe o nome de um player mesmo ele estando offline.
function playerExistName(nome)--[[(Marcryzius)]]--local db = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..getPlayerGUIDByName(nome)..";")ifnot(db:getID()==-1)thenreturn db:getDataString("name")endreturnfalseend
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino
Hail Xtibianos.
Trago a vós uma serie de funções que eu uso no meu servidor e que pode ser úteis ao seu.
Lembrando que algumas funções podem fazer uso de uma livraria xml criado por mim e posta nesse tópico.
Essa função tem por objetivo criar uma data formatada (00:00:00) de um intervalo de tempo.
Essas funções tem por objetivo salvar as informações de uma determinada quest e saber se o player tem essa quest salva em seu histórico.
Essa função serve para por a primeira letra de cada palavra da 'msg' em maiúscula.
Função criada para determinar o valor inteiro mais próximo de uma fração.
Essa função converte a 'string' em números e devolve a soma de todos os números.
Pega o level necessário para usar a arma dentro do arquivo weapons.xml
Essa função faz uma verificação se há um town em uma determinada área.
Pega o nome e o level do top
Verifica se existe o nome de um player mesmo ele estando offline.
Retorna o tempo vigente apenas em segundos