Ir para conteúdo

colex

Visconde
  • Total de itens

    301
  • Registro em

  • Última visita

Tudo que colex postou

  1. colex

    Plastic Bomb

    UPDATE NO SCRIPT @tochaazul a idéia do barco que se mvoe, acho que ja foi feita pela B.O. (sem confirmação) Mas de qualquer forma, obrigado pelas ideias, não sei se iremos desenvolver alguma delas, mas caso fizermos avisamos! Colex
  2. colex

    Plastic Bomb

    O DevLand tem essa função, como eu disse eu usei o DevLand para fazer este script... Não sei se mais algum outro OT tem essa função ou alguma função semelhante, mas pelo menos esses dois
  3. colex

    Magic Area Live!

    Magic Area Live! Este software tem como utilidade criação rápida e visual de areas para magias! Este é um programa pessoal, ou seja, criado para uso próprio, mas resolvi libera-lo, eu não ensinarei como usa-lo, porque é muito simples e acho que qualquer pessoa consegue descobrir em menos de 5 minutos Screenshots de 2 Areas de Magia: (Uma com e outra sem direction) Nazi's Apocalipse: Golden Trident: Download do Software: Magic Area Live! Colex
  4. colex

    Teleport Panel

    O que é o "Teleport Panel"? Teleport Panel é um sistema de teleporte que interage com um sistema de base de dados (elaborado tambem por mim). Com este sistema os Gamemasters (jogadores com o acesso permitido) podem adicionar, remover e utilizar pontos de teleporte. A sintaxe do comando é: teleport "[command]. Mais a frente você poderá saber como funciona melhor através de umas screenshots! Quais são os comandos existentes? Os comandos que este sistema oferece são: teleport - oferece uma lista de todos os comandos teleport "list - lista todos os pontos de teleporte existentes teleport "add [nome] - adiciona um ponto de teleporte com um determinado nome teleport "remove [nome] - remove um determinado ponto de teleporte teleport "to [nome] - teleport o char. para um certo ponto de teleporte (A maioria dos comandos estarão a seguir ilustrados) Imagens do Sistema: Lista dos comandos disponíveis: (comando teleport) Lista dos Pontos de Teleporte adicionados: (comando teleport "list) Mensagem de sucesso seguida de uma adição: (comando teleport "add) Mensagem de sucesso depois de remover um Ponto de Teleporte: (comando teleport "remove) Como instalar este sistema? 1º Passo: Você deverá instalar o meu sistema de base de dados na lib das talkactions, ou seja, no arquivo data\talkactions\lib\talkactions.lua...Você pode encontrar o sistema no seguinte link: http://www.xtibia.com/forum/index.php?showtopic=64485 2º Passo: No directório data\talkactions\scripts crie um arquivo com o nome teleport.lua e dentro dele guarde o seguinte script: 3º Passo: Agora, por último, adicione no arquivo data\talkactions\talkactions.xml a seguinte linha: <talkaction words="teleport" script="teleport.lua" /> Se você fez tudo certo, o sistema deverá estar funcionado... Se você achar algum bug, ou tiver alguma dúvida, poste aqui. Colex
  5. colex

    Plastic Bomb

    Ele funcionará em Outros servers com a mesma função eu usei o DevLand para fazer o script vou adicionar o mayNotLogout, mas da para fazer exit na mesma, obrigado pela idéia!
  6. colex

    Plastic Bomb

    PLASTIC BOMB BY COLEX Como funciona? O player faz use em uma Plastic Bomb (eu uso o item 4825), e ficará imóvel um certo tempo (default é 5 segundos) instalando a bomba, depois de a bomba estar instalada o player poderá mover-se e a bomba irá demorar um certo tempo para explodir (default 5 segundos). A explosão será causada numa área 3x3 em que o player que estiver no centro da explosão levará sempre os danos mais elevados possiveis e os outros players que estiverem à volta será aleatório entre os danos maiores e menores (os danos são definidos no inicio do script em MAX_HIT e MIN_HIT). 1º Passo: na pasta data/actions/scripts crie um novo arquivo com o nome bomb.lua e insira o seguinte texto dentro dele: ----------Plastic Bomb by Colex----------- local PLANTING_DELAY = 5 --seconds local EXPLOSION_DELAY = 5000 --milliseconds local MAX_HIT = 500 local MIN_HIT = 100 local PVP = true -- true for PVP, false for Non-PVP local PLAYERS = {} function isInArray(table, valor) for i,j in pairs(table) do if (j == valor) then return i end end return 0 end function explosion(info) area = { {0,0,0,0,0}, {0,1,1,1,0}, {0,1,1,1,0}, {0,1,1,1,0}, {0,0,0,0,0}, } hitpos = {x=info.pos.x, y=info.pos.y, z=info.pos.z, stackpos=253} center = {} center.y = math.floor(table.getn(area)/2)+1 for i in ipairs(area) do center.x = math.floor(table.getn(area[i])/2)+1 for j, v in ipairs(area[i]) do if (v == 1) then hitpos.x = info.pos.x + (j - center.x) hitpos.y = info.pos.y + (i - center.y) if (getTilePzInfo(hitpos) == 0) then victim = getThingfromPos(hitpos) effect = 4 if ((j == center.x) and (i == center.y)) then doSendAnimatedText(hitpos,"KABOOOOOM",TEXTCOLOR_RED) hitpoints = MAX_HIT effect = 5 else hitpoints = math.random(MIN_HIT,MAX_HIT) end if (isPlayer(victim.uid) == 1) then if (PVP == true) then doPlayerSendTextMessage(victim.uid,20,"You have lost "..hitpoints.." hitpoints by "..getPlayerName(info.player).."'s plastic bomb") else hitpoints = 0 end end if (isCreature(victim.uid) == 1) then doPlayerAddHealth(victim.uid,-hitpoints) end doSendMagicEffect(hitpos,effect) end end end end PLAYERS[isInArray(PLAYERS, info.player)] = 0 mayNotLogout(info.player, 0) return 1 end function planting(info) if info.num == PLANTING_DELAY then doPlayerSendTextMessage(info.player,22,"Plastic Bomb successfully planted!") mayNotMove(info.player,0) addEvent(explosion,EXPLOSION_DELAY,info) else info.num = info.num + 1 doPlayerSendTextMessage(info.player,22,info.num.."...") addEvent(planting,1000,info) end return 1 end function onUse(cid, item, frompos, item2, topos) position = getThingPos(item.uid) if (getTilePzInfo(position) == 0) then if (isInArray(PLAYERS, cid) == 0) then table.insert(PLAYERS, cid) doSendMagicEffect(frompos,3) info = {player = cid, pos = position, num = 1} doPlayerSendTextMessage(cid,22,"Planting the bomb...") doPlayerSendTextMessage(cid,22,"1...") mayNotMove(cid,1) mayNotLogout(cid, 1) doRemoveItem(item.uid,1) addEvent(planting,1000,info) else doPlayerSendCancel(cid,"You can only plant one bomb at the same time.") end else doPlayerSendCancel(cid,"You can not plant this bomb in a PZ!") end return 1 end 2º Passo: abra a pasta data/actions e adicione a seguinte linha dentro do arquivo actions.xml: <action itemid="4852" script="bomb.lua" /> Pronto! Sua plastic bomb deve estar funcional... Alguma dúvida? poste e eu tentarei ajuda-lo! (Esta action foi apenas testado em um server 8.0) Colex
  7. Olá, Venho postar um sistema simples de base de dados, que poderá ser útil para algumas pessoas... O sistema deverá funcionar em todos os tipos de scripting (por isso que eu estou criando o tópico nesta area), basta cola o código do controle da base de dados nas libs! Porque usar uma base de dados: Com uma Base de Dados as informações são fixas, ou seja, os valores não serão alterados devidos a problemas no server ou quando o mesmo desliga-se. O acesso às base de dados são simples e não requerem experiencia em programação. As Base de Dados poderão ajudar na criação de novos sistemas (alguns que você poderia não saber como fazer até agora)! o Script fornece: - Criação de Base de Dados com campos - Adicionar campos às bases de dados - Remover campos de bases de dados - Obter valor de um campo - Mudar valor de um campo - Obter todos os valores e campos de uma base de dados As funções serão explicadas depois dos script... [sCRIPT] Sistema de Base de Dados Simples: ----------Simple Database System v1.1 by Colex---------- function getAllFieldsValues(database) local file = io.open(database,"r") local i = 1 local variable = "" values = {} while true do local line = file:read() if line == nil or line == "" then break end variable = string.sub(line,0,string.find(line, "=")-1) --Getting Info field val = string.sub(line,string.find(line, "=")+1,string.len(line)) --Getting Info Value values[i] = {field = variable, value = val} i = i + 1 end io.close(file) return values end function getFieldValue(database,field,isNumber) local file = io.open(database,"r") local found = 0 local variable = "" while true do local line = file:read() if line == nil or line == "" then break end variable = string.sub(line,0,string.find(line, "=")-1) --Getting Info field if (string.upper(variable) == string.upper(field)) then value = string.sub(line,string.find(line, "=")+1,string.len(line)) --Getting Info Value if (isNumber == true) then num = tonumber(value) end found = 1 break end end io.close(file) if (found == 0) then return false elseif (isNumber == true) then return num else return value end end function setFieldValue(database,field,newvalue) uFile = io.open(database,"r") i = 0 lines = {} if getFieldValue(database,field,false) == false then return 0 end while true do lines[i] = uFile:read() if lines[i] == nil or lines[i] == "" then break end variable = string.sub(lines[i],0,string.find(lines[i], "=")-1) --Getting Info field if (string.upper(variable) == string.upper(field)) then lines[i] = variable.."="..newvalue end i = i+1 end io.close(uFile) i = 0 uFile = io.open(database,"w") while true do if lines[i] == nil or lines[i] == "" then break end uFile:write(lines[i].."\n") i = i+1 end io.close(uFile) return 1 end function addField(database,field,value) i = 0 ret = 1 if getFieldValue(database,field,false) ~= false then return false end uFile = io.open(database,"a+") uFile:write(field.."="..value.."\n") io.close(uFile) return 1 end function removeField(database,field) uFile = io.open(database,"r") i = 0 lines = {} if getFieldValue(database,field,false) == false then return false end while true do lines[i] = uFile:read() if lines[i] == nil or lines[i] == "" then break end variable = string.sub(lines[i],0,string.find(lines[i], "=")-1) --Getting Info field if (string.upper(variable) == string.upper(field)) then i = i-1 end i = i+1 end io.close(uFile) i = 0 uFile = io.open(database,"w") while true do if lines[i] == nil or lines[i] == "" then break end uFile:write(lines[i].."\n") i = i+1 end io.close(uFile) return 1 end function createDatabase(database,fields,values) uFile = io.open(database,"w") for i in ipairs(fields) do uFile:write(fields[i].."="..values[i].."\n") end io.close(uFile) return 1 end -------------------------------------------------------------------- Funções, Explicações e Exemplos: createDatabase(database, fields, values) - Cria uma base de dados com determinados campos e valores database - arquivo onde serão guardadas as informações fields - campos da base de dados (tabela) values - valores dos campos (tabela) exemplo: campos = {"nome", "level", "vocacao"} valores = {"Colex", 157, "sorcerer"} createDatabase("database.ini",campos,valores} ---------------------------------------------------------- addField(database, field, value) - Adiciona um campo à uma Base de Dados existente (retorna 0 se o campo ja existir) database - Base de Dados onde será adicionado o campo field - Nome do campo que será adicionado value - Valor do campo Exemplo: i = addField("database.ini", "MagicLevel", 60) if i == 0 then print("Campo existente") else print("Campo adicionado!") end ---------------------------------------------------------- removeField(database, field) - Remove um campo de uma Base de Dados existente (retorna 0 se o campo não existir) database - Base de Dados da onde será removido o campo field - Nome do campo que será removido Exemplo: i = removeField("database.ini", "MagicLevel") if i == 0 then print("Campo não existe") else print("Campo removido!") end ---------------------------------------------------------- getFieldValue(database,field,isNumber) - Pega o valor de determinado campo (retorna FALSE se campo não existir) database - Base de Dados de onde será obtido o valor field - Campo desejado isNumber - se isNumber for TRUE o valor retornado será um numero, case seja FALSE o valor retornado será texto Exemplo: name = getFieldValue("database.ini", "nome",false) print("O teu nome é: "..name) ---------------------------------------------------------- setFieldValue(database,field,newvalue) - Muda o valor de um campo (retorna 0 se o campo não existir) database - Base de Dados onde o valor será mudado field - Campo que deseja mudar o valor newvalue - Novo valor do campo Exemplo: i = setFieldValue("database.ini", "nome", "Magic Colex") if i == 0 then print("Campo não existe") else print("Campo atualizado!") end ---------------------------------------------------------- getAllFieldsValues(database) - Retorna todos os fields e valores em uma tabela com a seguinte estrutura table[numero].field (campo) e table[numero].value (valor do campo) database - Base de Dados de onde os valores serão obtidos Exemplo: data = getAllFieldsValues("database.ini") print(data[1].field.." = "..data[1].value) ---------------------------------------------------------- O POST DESTE SCRIPT EM OUTRO FÓRUM OU QUALQUER OUTRO LUGAR, NÃO SERÁ AUTORIZADO SEM UM PEDIDO PRÉVIU AUTORIZADO! OS CRÈDITOS DO SCRIPT DEVERÃO SER INALTERADOS. Se houver alguma dúvida, poste que eu tentarei ajudar! Colex
  8. Respondendo a pergunta de muitos: "Porque o Bank System não funciona em versões mais recentes?" O facto é que as funções de input/output (io) foram praticamente retiradas de todos os OTServers por questões de segurança. O Bank System é baseado nessas funções para a criação da base de dados. Ainda não testei em versões muito recentes (por exemplo 8.0) mas a estrutura dos NPC's poderá ter mudado o que tambem poderia parar o funcionamento do script. Atenciosamente, Colex
  9. o exhaust é identico ao meu, só foi mudado o nome das variaveis: (nem todas foram mudadas) function getPlayerExhaust(player,number,time) now = os.time() before = getPlayerStorageValue(player,number) exhaust = os.difftime(now,before) if before == -1 then setPlayerStorageValue(player,number,now) return -1 else if exhaust >= time then setPlayerStorageValue(player,number,now) return -1 else return 1 end end end esse script pode ser encontrado aberto ao publico: http://www.xtibia.com/forum/index.php?showtopic=19317 de resto a action esta boa para uma primeira action, muitas pessoas não consegues colocar o exhaust system nas suas actions.
  10. Muito boa a iniciativa, tem codes bem legais ai. continue fazendo seus scripts que devem ajudar muito... abraços, Colex
  11. Nome da Aplicação: Sight Tibia Auto-Screenshot Versão: 2.0 to Tibia 7.92 Linguagem: Object Pascal Criador: Nick: Colex Nome: Alexandre Correia dos Santos Features: *novo Variaveis úteis para o "send msg" do player* Opções de yell, say e whisper* Player dizer alguma coisa quando passa de level Player dizer alguma coisa quando passa de MagicLevel Tirar screenshot automaticamente quando passa de level/magic level esconder aplicação no tray Sobre a Aplicação: Aplicação util para não se preocupar em mandar mensagem e tirar screenshot no momento em que pegar um level ou um magic level. Variaveis para o Talk System: Com o update 2.0, o software contem 4 variáveis úteis para te ajudar no uso do programa: --------------- {level} = Level para o qual o char passou {mlevel} = Magic Level para o qual o char passou --------------- {lvl} = level atual {mlvl} = Magic level atual --------------- Download da Aplicação: http://rapidshare.com/files/16084074/Sight...enshot_v2.0.rar Software by Colex Atenciosamente, Colex A lincensa do projeto é freeware logo voce poderá contribuir de livre vontade se assim desejar:
  12. as funções que voce citou são do LUA, para saber mais sobre elas é só voce pesquisar no google que voce encontra definições. o tonumber() fui eu que fiz e ela esta no script
  13. muito bom a versão que mais me agradou até agora belo trabalho abraços, Colex
  14. errado?? voce não deve saber o que é abreviações, eu nem uso mais abreviações, mas quando eu escrevi o tópico eu usava, não vou agora ficar tirando as abreviaturas só porque alguem não se esforça para ler. olha para a tua frase: descula ai colex mais é verdade -.- descula ou desculpa? mais ou mas? erros de escrita é normal acontecerem, por isso voce pode encontrar varios, mas o resto são só abreviaturas que voce encontra em todo lado.
  15. Legal o programa, muito bom para controlar o tempo das suas hunts mesmo sabendo que não vai sair totalmente correto ja ajuda muito. Abraços, Colex
  16. ficou muito bom o tutorial eu achei ele muito bem explicado! parabens pelo tutorial @down isso é só um exemplo e a questão não é ser igual ao tibia, os ots devem ser criativos nos seus sistemas e não ficarem presos onde o tibia ficar.
  17. se o seu ot tem a função onSay tem que funcionar verifique a versão que voce esta usando
  18. Testei e funcionou certinho Obrigado, espero que ajude os outros como ajudou a mim! abraços, Colex
  19. legal deve ter tado trabalho para comprar todas as furnitures só pra fazer um script bom script! Abraços, Colex
  20. Obrigado pelos comentários se uma pessoa estudar LUA provavelmente ira aprender "nil", mas eu fiz um teste e verifiquei que nill é igual a nil caso alguem queira fazer o teste, eu usei estas linhas de codigo: t = nill if t == nil then doPlayerSay(cid,'funciona!',2) end Abraços, Colex
  21. Olá Este script é possivelmente inutil, porque existe um comando com uma função semelhante implementado nas sources, mas de qualquer jeito, este script poderá ajudar algumas pessoas nem que seja para "estudo". Esta talkaction é acionada quando o player diz tp "coordenadas por exemplo: tp "150 500 7 1º na pasta data/talkactions/scripts crie um arquivo cujo nome é tp.lua e insira dentro do mesmo o seguinte: --------Teleport Command by Colex------------- function onSay(cid, words, param) access = 3 ---só altere isso conforme deseja acc = getPlayerAccess(cid) pos = {} h = {} a = 1 if acc >= access then if string.len(param) >= 5 then s = 1 h[s] = 0 i = 0 repeat pos[s] = "" i = i + 1 ver = string.byte(param, i) length = string.len(param) + 1 if ver ~= 32 and length >= i then h[s] = i else pos[s] = string.sub(param, 1, h[s]+1) param = string.gsub(param, pos[s], "") pos[s+3] = getNumber(pos[s]) if pos[s+3] == 0 then s = 4 doPlayerSendCancel(cid,'Wrong position!') a = 0 end s = s + 1 h[s] = 0 i = 0 end until s >= 4 if a == 1 then doTeleportThing(cid,{x=pos[4], y=pos[5], z=pos[6]}) end else doPlayerSendCancel(cid,'Wrong position!') end else doPlayerSendCancel(cid,'You cannot use this command!') end return 1 end function getNumber(txt) x = string.gsub(txt,"%a","") x = tonumber(x) if x ~= nill and x > 0 then return x else return 0 end end 2º no arquivo talkactions.xml localizado no diretório data/talkactions adicione a seguinte linha: <talkaction words="tp" script="tp.lua" /> Espero que ajude alguem e aproveitem bem NÃO POSTAR EM QUALQUER OUTRO SITE SEM PEDIDO AO AUTOR PROCEDIDO POR UMA AUTORIZAÇÃO DO PRÓPRIO Atenciosamente, Colex
  22. Ficou muito bom o tutorial voce sabe explicar bem, acho que qualquer um vai entender bom trabalho Frerety vou fixar ele, realmente ajuda muito se algum outro membro da moderação achar que não merece avise. Abraços, Colex
  23. A quest de ganhar item, voce pode fazer separadamente, neste script voce não ganha item, voce é teleportado para outra sala, nessa sala voce pode fazer um script para ganhar um item!
  24. Simples e funcional. qualquer um pode usar! parabens pela idéia como referido acima este não é local correto, vou mover para a seção "envie seu tutorial" Obrigado! Movido
  25. Eu testei numa versão 7.6 do Ghettoserv Nota Houve um bugfix no withdraw! agradecimentos ao GM Dudu por ter encontrado ele
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...