Ir para conteúdo

Poccnn

Herói
  • Total de itens

    1418
  • Registro em

  • Última visita

  • Dias Ganhos

    48

Histórico de Reputação

  1. Thanks
    Poccnn recebeu reputação de raulcdj em Aulas de scripting lua   
    Hail xtibianos!
     
    Gostaria de saber se vocês se interessam em ter aulas de scripting lua.
     

     
    Já temos cerca de oito aulas prontas para o primeiro módulo,.
     
    As aulas são compostas de teoria e prática, métodos e tarefas para fixar o conhecimento aos alunos.
    Serão disponibilizados aulas em três módulos: conceito e aplicações básicas, técnicas e conceitos intermediarios, spoo lua; disponibilizado em uma gama de aulas que serão postas todos os sábados até o final do módulo vigente.
     
    Ao final, pretendemos dar uma "pip" de scripting lua para todos os alunos que completarem o(s) módulo(s).
     
    Dependendo da quantidade de interessados, poderemos iniciar as aulas em princípios do mês subsequente. 
     
    Deixem nos comentários seu aval ou sua queixa. Esperamos que tenham bastante participantes. 
     
    Obrigado.



  2. Upvote
    Poccnn recebeu reputação de Fhaney Almeida em [Resolvido] ajuda urgente temple position is wrong contact with the administration   
    Nos informe como tu resolveu seu problema para que outros possam resolver também.
  3. Upvote
    Poccnn recebeu reputação de gacjogos em [Resolvido] [Pedido] Npc Que Muda de Lugar   
    local dia ={ ["Sunday"] = {['npc name'] = {x=0,y=0,z=0},['other npc']={x=0,y=0,z=0}}, -- domingo ["Monday"] = {['npc name'] = {x=0,y=0,z=0},['other npc']={x=0,y=0,z=0}}, -- segunda ["Tuesday"] = {['npc name'] = {x=0,y=0,z=0},['other npc']={x=0,y=0,z=0}}, -- terça ["Wednesday"] = {['npc name'] = {x=0,y=0,z=0},['other npc']={x=0,y=0,z=0}}, -- quarta ["Thursday"] = {['npc name'] = {x=0,y=0,z=0},['other npc']={x=0,y=0,z=0}}, -- quinta ["Friday"] = {['npc name'] = {x=0,y=0,z=0},['other npc']={x=0,y=0,z=0}}, -- sexta ["Saturday"] = {['npc name'] = {x=0,y=0,z=0},['other npc']={x=0,y=0,z=0}}, -- sabado}function onStartup()local CM = dia[os.date("%A")] for npc,pos in pairs(CM) do if not(doCreateNpc(npc, pos))then print("Npc: "..npc.." não foi criado na pos: x="..pos.x..", y="..pos.y..", z="..pos.z..".") end end return trueend  
  4. Upvote
    Poccnn recebeu reputação de 28041 em [Encerrado] Ajudadinha simples script outfit   
    Faz uma mudança na tabela e deixa ela dessa forma:
    local c_out = {
    -- [voc_id] = {[0]=femaleoutfit,[1]=maleoutfit,addon=0},
    }
     
    Além de fazer as mudanças de termos necessárias no código, adicione esse código abaixo da função changeoutfit:
     
    doPlayerAddOutfit(cid,c_out[voc][getPlayerSex(cid)],c_out.addon or 0)
  5. Upvote
    Poccnn recebeu reputação de Mudrock em [Resolvido] Checar tempo offline   
    tempo_off = os.time()-getPlayerStorageValue(cid, 62668)
    tempo_ex = tempo_off+os.time()
    setPlayerStorageValue(cid,chave de exaustão,tempo_ex)
  6. Upvote
    Poccnn recebeu reputação de Fhaney Almeida em [Resolvido] por favor tem como ajuda   
    Acredito eu que tu tenha que criar um novo logo e por no lugar desse ai.
  7. Upvote
    Poccnn recebeu reputação de Fhaney Almeida em [Resolvido] por favor tem como ajuda   
    Cria um tópico na seção de sprites pedindo uma mudança nisso ai. Depois tu pergunta como faz pra mudar no site, se não souber.
  8. Upvote
    Poccnn recebeu reputação de Gabrielkss em [Resolvido] Adaptar Script   
  9. Upvote
    Poccnn recebeu reputação de Frenvius em O que você faria para tentar MUDAR o MUNDO?   
    Queimaria todas as florestas e poços de petróleo do mundo; lançaria todas as armas nucleares na China, Eua e Europa onde tem a maior concentração populacional do mundo; liberaria todas as reservas de CFC existentes no mundo para acabar com a camada de ozônio. 
    Faria uma fogueira e comeria meu último pedaço de churrasco e beberia minha última cerveja.
    Era o fim da humanidade.
  10. Upvote
  11. Upvote
  12. Upvote
    Poccnn deu reputação a StriterAlfa em Tripeace - Desenvolvimento de site em .NET C#   
    O que é Tripeace?
    Tripeace é um site em código aberto para Tibia OT Server, sendo desenvolvido na linguagem C# .NET, principalmente para ser uma opção diferente aos sites existentes para OT Server em PHP. Tripeace é apenas o nome do projeto, nome de minha antiga guild no Tibia Global, mas será possível e fácil configurar o nome do site para o que você quiser.
     
     

    Quem é você, Striter?
    Me chamo Igor, tenho experiência profissional como desenvolvedor .NET por mais de 3 anos, principalmente como back-end. Também já trabalhei com automação de testes de sistemas e gestão de equipes de desenvolvimento. Atualmente estou desempregado. 
    Meu GitHub: igorquintaes · GitHub
    Meu Portfólio: Igor Pauli Quintaes

    O que será necessário para hospedar o site?
    - Sistema operacional Windows com IIS e .NET Framework instalados e atualizados, ou Linux;
    - Atualizar o banco de dados do jogo com um arquivo .sql que é disponibilizado junto ao projeto;
    - Opcionalmente, ter o Visual Studio instalado caso queira alterar regras de negócio ou adicionar novas funcionalidades (back-end);

    Características e recursos
    - Suporte a mais de um idioma simultaneamente
    O site tem uma linguagem padrão baseada no acesso do usuário, mas ele pode alterar para a linguagem que quiser em tempo real. É possível, também, adicionar facilmente novos idiomas ao projeto.

    - Segurança
    Projetado em arquitetura em camadas, para prevenir acessos indesejados e injeções de dados. Também possui sistemas próprios de logins e criptografia, sistema de proteção a SQL Injection e de acessos não autorizados.

    - Multi-plataforma
    Mesmo desenvolvido em C#, linguagem da microsoft, é possível hospedar o site tanto em um servidor Windows quanto em servidor Linux. É possível também hospedar em um local diferente ao do servidor do OT Server e do banco de dados.

    - ORM ao invés de consultas por SQL
    Acha chato trabalhar no back-end fazendo aqueles selects e updates utilizando linguagem de banco de dados? O Tripeace faz tudo isso baseado em variáveis. 

    - Registre tudo o que acontece
    A plataforma registra automaticamente o IP das pessoas, que páginas elas tentam acessar, a conta com a qual está conectada, tentativas de hack, tentativas de acessar páginas restritas, tentativas de explorar erros ou de enviar dados falsos. Tudo, e você ainda tem a opção de configurar para adicionar mais ou retirar algo que não deseja.

    - Painel administrativo para Gods e Game Masters
    Com informações sobre número de jogadores online, momentos de pico, edição de dados, bloqueio de contas, número de visitas e muito mais.

    - Template todo customizável
    Tendo conhecimento das linguagens utilizadas no front-end de um site (HTML, CSS, Javascript), é possível alterar todo o layout sem nem tocar no back-end do sistema, e nem mesmo ter o Visual Studio instalado. Dados dinâmicos para IFs, FORs, demais lógicas e variáveis estão em Razor Syntax, similar ao PHP mas sem precisar compilar com o back-end. 

    - Sistema de postagems
    Para notícias, novidades, anúncios, enquetes. O que você quiser, e com comentários.

    - Sistema de E-mails
    Para anúncios, recuperação de conta, alertas, e mais!

    O que já está pronto?
    - Conexão ao banco de dados e mapeamento em variáveis;
    - Sistema para suporte a vários idiomas;
    - Sistema de registro de atividades;
    - Sistema seguro de login;
    - Criação de conta;
    - Criação de personagem;
    - Painel administrativo;
    - Gerenciamento de contas no painel administrativo (listar, bloquear/desbloquear acesso do site, editar, banir/desbanir do jogo);

    O que ainda será desenvolvido?
    - Gerenciamento de contas no painel administrativo (exclusão de conta);
    - Gerenciamento de personagens no painel administrativo;
    - Gerenciamento de configurações no painel administrativo;
    - Biblioteca
    - Forum (?)
    - Sistema de postagens;
    - Sistema de Guilds;
    - Ranking;
    - Sistema VIP e de pagamentos;
    - Formulário de contato;
    - E mais, muito mais!

    Quais ferramentas Tripeace usa? (útil para devs)
    - C# .NET Core as como linguagem e framework back-end;
    - HTML, CSS, Javascript/JQuery w Razor Syntaxe para front-end;
    - Entity Framework Core como ORM (trabalhar com SQL em variáveis);
    - NLOG para registrar atividades;
    - Cloudscribe para paginações;
    - AutoMapper para mapear e transferir objetos entre camadas;
    - .NET Core Identity para criar sistema de login mais seguro e à parte ao do jogo.

    Código fonte (Aberto, licença MIT)
    GitHub - igorquintaes/Tripeace: An open-source and free Open Tibia Website written in C# .NET

    Doações
    O projeto é grande, totalmente código aberto, e quem tá fazendo é um cara desempregado. Se você está curtindo o andamento das coisas, dê uma contribuição aí!
    Meu PayPal: striteralfa@gmail.com
  13. Upvote
    Poccnn recebeu reputação de GameTwu em Reset Frags e prêmios, Mensalmente   
    Não pode ser para o primeiro dia?
     
     
  14. Upvote
    Poccnn recebeu reputação de Wase Wiss em [ Sem solução] Erro ao usar comando !createguild em Sqlite   
    O erro que está dando é por falta de uma coluna na database. Tu terá que criar essa coluna rodando o script que o mudrock postou na database.
     


  15. Upvote
    Poccnn recebeu reputação de NelsonMaldonado em Sistema de spellbook   
    Seu servidor é derivado? ou tem sources modificadas?
  16. Upvote
    Poccnn recebeu reputação de Crypter em Nova livraria lua para xml   
    Fala XTibianos!
    Vim disponibilizar e ensinar como usar a livraria xml em lua, desenvolvida por mim. 
     
    Ela foi desenvolvida para substituir a livraria padrão disponibilizada por lua para trabalhar com dados xml.
    Essa livraria não requer a dll-xml necessária para a livraria padrão lua.
     
    Aqui tem o tutorial criado por mim para demonstrar as funções e suas implementações da livraria luaxml.
    Tutorial lua lib xml padrão
     
    Vamos lá.
    Primeiro, a livraria: 
     
    Vou ensinar como usar ela. 
    Vou usar como exemplo uma parte do arquivo vocations.xml: 
       
     
    Primeiro, carregar o arquivo. 
    Ele vai retornar um objeto para ser usado pelos metametodos ou uma string para outros fins como "print". 
     
    Buscar a tag desejada. 
    Ele vai retornar uma tabela contendo todos os parametros que foram lidos no arquivo. 
    O primeiro argumento da função, é o nome da tag requerida. exemplo: <tagNome ....>, tagNome seria o primeiro argumento da função. 
    O segundo elemento é usado para diferenciar um bloco de outro como no caso do arquivo vocations que contem varias vocations, mas apenas uma é a requerida. 
    O terceiro elemento é o que diferencia um bloco de outro similar. seguindo o exemplo do arquivo vocations, existe varias vocações, mas apenas uma delas tem o id de numero 2. 
     
    Imprime o que foi lido no arquivo. 

    a saida seria essa, nesse caso. 
     
    Mas, ela tambem é uma tabela, por isso, voce pode pegar os elementos dentro dela dessa forma. 
     
    As tags existentes dentro do bloco "vocation", tambem é uma tabela com indice numerico; portanto é valido pegar os dados dela dessa forma. 
     
    Cada tag que exista dentro do bloco, vem como uma tabela com indicie numerico. 
     
    Criando objetos para xml:
    O argumento inserido , seria o nome do bloco. Ex -> <novo> </novo> 
     
    Adiciona tag's dentro do corpo do bloco. 
    Pode ser adicionado quantas tags quiser. 
     
    Cria uma tagbloco ou bloco dentro do bloco principal. Ex -> <tagBloco inserido="primer" ordem="2" face="not"> </tagBloco> 
    Essa função retorna um objeto para ser usado pelos metametodos ou uma string para outros fins como "print". 
     
    Dessa forma que foi declarada sem uma tabela contendo os parametros da tag, ela é criada como um bloco. Ex -> <newBloco> </newBloco> 
     
    Adiciona tag's ao corpo do novo bloco/tagbloco criado pela função append. 
     
    E por fim, salva os dados em um arquivo. 
    Nessa função, existe o argumento unico que é o destino do arquivo e seu nome, que nesse caso foi ocultado. 
     
    Esse é os dados dentro do arquivo gerador pelo script.
     
     
    Devido as novas atualizações feitas a lib, agora podeis usar caracteres especial de busca e inserção de maiores informações para busca.
     
    Vou usar como exemplo essa parte do arquivo items.xml e movements.xml para explicar essas mudanças.
     
    items
     
    movements
     
    Na versão anterior da lib ela não poderia buscar informações no arquivo items.xml devido a um erro na ora de selecionar o bloco buscado.
     
    O problema residia em que: ao encontrar uma tag ela busca o seu fechamento, sendo que, no exemplo da parte do arquivo items que postei acima, ela pegava todo esse bloco, dessa forma anulando o verdadeiro id buscado.
     
    Isso foi resolvido. agora ela filtra o bloco encontrado antes de fazer a analise de que seja o dado requisitado.
     
    Outro problema era quando se desejava buscar uma informação mais precisa, como no caso do arquivo movements.xml que existe duas tags com os mesmo ids equip e deequip; se eu colocasse o id de qualquer item ele me retornaria a primeira sentença encontrada que na maioria das vezes não era a que eu queria. isso também foi corrigido; agora podeis usar mais informações para melhorar a precisão da busca. Veja esse exemplo:
     
     
    Obs. Os codigos estão codificados em utf8, converta para ansi antes de usa-los.
     
    É isso ae pessoal, espero que gostem; qualquer erro ou sugestão serão bem vindas. obrigado.
     
  17. Upvote
    Poccnn recebeu reputação de Crypter em Funções úteis   
    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)if not(ini or fim)then return "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 < 10 and "0"..hour or hour)..":"..(minu < 10 and "0"..minu or minu)..":"..(seco < 10 and "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]]--if not(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.    if not(type(name) == 'string') or not(tonumber(cid))then         return false, 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.."');")    return trueendfunction getSaveQuestsInfor(uid,cid) --[[( Marcryzius )]]--local str = false    if(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.."';")    else        return false,print('getSaveQuestInfor: tipo de uid invalido > '..tostring(type(uid)))    end    return (str:getID() == -1) and true or false end  
    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 in string.gmatch(msg,'%a+') do        if(#k > 1)then            txt = txt..' '..k:gsub("^%a", function(s) return s:upper() end)        else            txt = txt..' '..k        end    end    return txt:sub(2,-1)endEx:print(upperPrimer("toda primeira letra de cada palavra desse texto foi colocada em maiusculo")) >> Toda Primeira Letra De Cada Palavra Desse Texto Foi Colocada Em Maiusculo  
    Função criada para determinar o valor inteiro mais próximo de uma fração.
    function math.proxInteger(value) --[[( Marcryzius )]]-- local value = tonumber(value)    if not(value)then return 0,print('Function error: math.proxInteger() > valor => '..type(value)) end    return value-math.floor(value) < 0.5 and 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 = 0    if(type(str) == 'string')then        for pos = 1,#str do            store = store+str:sub(pos,pos):byte()        end    elseif(type(str) == 'number')then        return str    else        print('function getStoreString adverte: tipo de parametro invalido. ('..type(str)..')')    end    return 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) or 0end
    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 or 200,1,{getTownId('Gods Island'),getTownId('Isle of Destiny')} -- towns suprimidos    while getTownName(townid) do    local get  = getTownTemplePosition(townid)        if not(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))then            return townid        else            townid = townid+1        end    end    return 0 --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;"),"",0    if(target:getID() ~= -1) then         repeat        local glevel = target:getDataInt("level")                if(level < glevel)then                name,level = target:getDataString("name"),    glevel            end        until not(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).. ";")    if not(db:getID() == -1) then        return db:getDataString("name")    end    return falseend  
    Retorna o tempo vigente apenas em segundos
    function HorasParaSegundos() --[[( Marcryzius )]]--    local hour,minu,second = tostring(os.date("%H:%M:%S")):match('(%d+)%d+)%d+)')    return ((tonumber(hour) or 0)*3600)+((tonumber(minu) or 0)*60)+secondend  
  18. Downvote
    Poccnn deu reputação a yanloco70 em [AJUDA] Tile com Reset   
    Pessoal ??/
  19. Upvote
    Poccnn recebeu reputação de Mudrock em [Encerrado] Gesior AAC 1.2   
    @Mudrock
    Trouxe a questão dele para esse tópico para que possam ajuda-lo a solucionar o problema. 
  20. Upvote
    Poccnn recebeu reputação de LeoTK em [Resolvido] [Dúvida] Como permitir mais itens nas houses?   
    items que posam ser movidos não deveriam estar dentro de houses.
    Para tirar isso, tem que modificar as sources, mais precisamente no carregamento do mapa.
  21. Upvote
    Poccnn recebeu reputação de LeoTK em Malleus Maleficarum   
    MALLEUS MALEFICARUM
     
    O Martelo das Bruxas ou O Martelo das Feiticeiras é um livro que foi escrito e publicado em 1486 ou 1487 pelos dominicanos Heinrich Kraemer (também conhecido por Heinrich Institoris) e James Sprenger, na Alemanha, em cumprimento à bula papal Summis Desiderantis Affectibus de Inocêncio VIII, que os autorizava criar um manual de combate aos praticantes de heresias - e que veio a se tornar o guia dos inquisidores pelo restante do século XV e seguintes; embora outros manuais tenham sido escritos no período, este é dos mais "perversos e cruéis", verdadeiro "manual de ódio, de tortura e morte".
     

     
    Devido a heresia cometidas pelas pessoas que renegaram a fé um dia obtida e pactuando sua vida com o diabo, trouxeram para si a ira de Deus.
    Negaram a fé, negaram a igreja, negaram Deus e prestaram culto ao diabo.

     
     
     
     
    A ARTE DO PENTAGRAMA
     
    As Bruxas são mulheres que praticam culto ao diabo e se satisfazem de seu poder para suas feitiçarias, encantos e adivinhações. 
    Devido a suas capacidade de conhecerem as artes da magia negra, os Bruxos conseguem causar pânico por onde passam e onde atuam.
    O pentagrama é o simbolo chave para a Bruxaria; é dele que dizem que as forças do mal emanam e os Bruxos o usam para suas artes malignas.
     

     
     
    Não era para ser uma quest esse sistema, mas eu adaptei para poder publica-lo.
     
    Inicialmente foi desenvolvido apenas como forma de punição pela sentença dada pela inquisição aos acusados de bruxaria; agora ele se tornou uma quest.
     
    Adicionando o sistema.
     
    data/movements/movements.xml
     
    data/movements/scripts/quests
    crie um arquivo com extensão .lua e nomeio para malleus; adicione esse código ao arquivo:
     
    Coloque apenas as posições requisitadas na tabela config.
    Adicione o respawn nas outras áreas, exceto na sala de tortura e no pentagrama.
     
    Nessa área, seria bom por esses monstros, como mostra a imagem:

     
    adicione na posição central, exatamente onde está a arvore morta, esse monstro:
     
     
    Nessa outra área, adicione na posição central, exatamente onde está a arvore, esse monstro:

     
    mapa:
    clean.rar
     



    clean.rar


  22. Upvote
    Poccnn recebeu reputação de Marshmello em [Resolvido] torneio Script   
    _PREMIO = 0
     
    do
     _PREMIO = _PREMIO+100
    end
    print (_PREMIO) > 100
     
  23. Upvote
    Poccnn recebeu reputação de Azinhawk em Olímpia - Servidor baseado em Mitologia.   
    Que legal. Ficou muito bom.
    Estou fazendo um baseado na mitologia cristã. 
  24. Upvote
    Poccnn recebeu reputação de Hisoka Fail2 em #1 - Aula de scripting Lua - logica de programação.   
    Logica de Programação
    Eu sei que vocês estão cansados de saber disso, mas se faz muito necessário que tenham isso em mente.
    Para se criar um programa de computador, tem que imaginar como será o programa, qual o objetivo do mesmo, O que é necessário para que ele funcione, Quais são os passos que terei que dar para fazê-lo...
    São perguntas que tem que ser feitas e postas para podermos traçar um caminho que nos leve ao objetivo do programa.
    Vamos entender um pouco sobre cada passo necessário para a criação de um programa.
     
     
    LOGICA DE PROGRAMAÇÃO:
    Logica de programação é a técnica de encadear pensamentos para atingir determinado objetivo.
    Em outras palavras, tu tens que pensar em como a coisa vai ter que funcionar; O que é preciso para que ele funcione; qual é o proposito dele.
     
     
    Exemplo:
     
    Um carro caiu em um barranco; qual seria a melhor maneira de prestar socorro aos ocupantes do veiculo?
    Retirar o veiculo? Com cordas? Não! com cabo de aço; puxando ou içando-o? Enviando uma equipe para lá?
    São perguntas necessárias para se desenvolver a melhor maneira de resolver o problema; é nesse sentido que tem que pensar em logica de programação.
     
     
    SEQUÊNCIA LOGICA:
    Sequência logica são os passos executados até atingir um objetivo ou solução de um problema.
     
    Os eventos seguem uma logica na qual um fator depende do outro. Não posso fazer um ovo mexido sem antes quebrar o ovo; primeiro quebra o ovo, põe na frigideira ao fogo com óleo, depois mexe; Pronto, saiu um ovo mexido.
     
    INSTRUÇÕES.
    Instruções é um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em informática, é o que indica a um computador uma ação elementar a executar.
     
     
    Dando um exemplo hipotético para descrever o que seja instruções:
     
    Ir à padaria; saia pela rua x vá em frente, vire a direita na venda do seu zé, ande por 200 metros e a sua esquerda estará a padaria.
    Todos estes conceitos podem ser descritos como um algoritmo, que devem ser seguidas para se cumprir uma determinada tarefa.
     
     
    ALGORITMO:
    Um algoritmo é formalmente uma sequencia finita de passos que levam a execução de uma tarefa.
     
     
    Podemos pensar em algoritmo como uma receita, uma sequencia de instruções que dão cabo de uma meta especifica. Estas tarefas não podem ser redundantes nem subjetivas na sua definição, devem ser claras e precisas.
     
     
     PROGRAMA:
     Programa é uma sequência, uma lista na qual fica marcado todos os eventos do que se deve fazer.
     
    Em outras palavras... Se tu queres fazer algo, tu deve seguir uma lista de afazeres para que esse algo seja feito.
     
     
    Vamos criar uma lista de um evento hipotético:
             >> Vá à lanchonete.
             >> Peça um Xburger.
             >> Pague.
             >> Volte para casa.
     
     
    As instruções são claras: ir a uma lanchonete comprar um lanche especifico e voltar pra casa.
    Mas por trás existe uma serie de algoritmos, instruções, sequência e lógica de programação que são necessários para executar esse programa.
     
     
    Descrevo aqui passo a passo como eu faço quando estou a desenvolver um código de programa:
    Passo 1:
    Idealizar o código. Por em minha mente o funcionamento dele por completo.
     
    Passo2:
    Dividir o código idealizado em partes; partes essa que se divide em requisitos e eventos.
     
    Passo 3:
    Traçar a melhor metodologia para confecção do script.
     
     
    Vamos a um exemplo hipotético de criação de código.
    Vamos criar um script para uma quest hipotética.
     
    Primeiro vamos idealizar como seria essa quest:
     
    O jogador terá que entrar em uma sala e enfrentar um monstro sozinho.
    Opa, aparti daí nós já temos um requisito que seria impedir de outros entrarem na sala.
    Esse requisito já vai para o passo dois no bloco de requisitos.
    Pode haver outros requisitos à medida que vamos idealizando como seria tal quest.
    Agora vamos imaginar os eventos que ocorrerão nessa quest:
     
    Se já tiver alguém na sala, então impede dele entrar na sala e envia uma mensagem.
    Não pode sair da sala.
    Tem tempo para terminar a sala.
    E etc...
     
     
    Então chegamos a esse resultado:
    Requisitos [ir sozinho a sala; ter level 100 ou mais; ser um druid, ...]
    Eventos [impedir múltiplos jogadores na sala, impedir dele sair da sala, retira-lo da sala após 10 minutos, ...]
     
    Agora tu escreves o código usando uma linguagem de programação, como lua que é o foco do nosso estudo, e cria o código para tal quest ou outra coisa que seja teu foco.
     
    Tarefa:
    Escrevam os eventos de um programa hipotético na qual o objetivo seja construir algo.
     
     
    Inté a próxima aula e bons estudos.

  25. Upvote
    Poccnn recebeu reputação de Hisoka Fail2 em #2 - Aula de Scripting Lua - indentação e comentários   
    indentação e comentários
     
    Link da aula anterior, caso tu não tenha lido ela.
     
    Para que o código fique bonito, organizado e de fácil entendimento; usamos de indentação e comentários que nos ajudam e ajuda aos demais programadores, a saber, de forma fácil do que se trata cada código.
    Um código sem indentação se torna de difícil leitura além de dar margem aos erros de escrita do código.
        
     
     
    Esse código demonstra como é difícil entendê-lo. Não se sabe bem onde inicia um bloco ou onde ele termina; não tem comentários para ajudar, a saber, do que se trata ou o que cada coisa faz. Vejamos o mesmo código com indentação e comentários.
    Obs: Será usada a forma de comentários usada na linguagem de programação lua.
     


    Tudo isso ajuda quando escrevemos um código; torna o código mais legível, de fácil entendimento e qualquer outro programador que queira dar continuidade ao código ou modifica-lo, saberá de uma forma fácil o que cada coisa faz. Essa é uma boa pratica em programação. Qualquer pessoa que queira ser programador, primeiro tem que saber como escrever um código e torna-lo claro e de fácil leitura.
     
    Uma pratica em programação é quando estamos criando longos códigos é não conseguimos termina-los, deixamos escrito no código o que ficou para ser terminado ou, no caso se estivermos testando o script, onde ocorreu o erro, que tipo de erro sucedeu, qual a localização da função, método onde ocorreu o erro e etc.

     
    Agora insiram no código criado por vocês na aula anterior uma boa indentação e comentários para que se tornem legíveis e de fácil entendimento.
     



  • Quem Está Navegando   0 membros estão online

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