[Projeto] SA-MP Toolkit
#1

SA-MP Toolkit 0.1

Construido pela comunidade, para a comunidade



Sumбrio
  • Sobre
  • Caracteristicas
    • Prй-Compilador
      • Mуdulos dinвmicos
      • Simulaзгo de objetos
      • Variaveis
      • Personalizavel
    • DocGen
      • Visualizaзгo em HTML
      • JSON
      • Sintaxe like DoxyGen, PHPDoc
      • Extensivo
    • Site
      • Responsivo
      • Changelog
      • Metas
      • Sugestхes
      • Blog
      • Disqus comentбrios
      • ****** analytics
      • Contador
      • Feed rss
    • Base
      • TODO
    • Anticheat
      • TODO
  • Links
  • Crйditos
Sobre

Algum tempo atrбs deparei-me com "PAWN Boilerplate" uma ferramenta incrнvel criada por Slice e ******, que me deu a idйia e inspiraзгo para fazer algo melhor, maior.
Tomando assim resolvi fazer o SA-MP Toolkit, tanto com o Prй-Compilador como outras ferramentas que vocк verб logo mais.
Optei neste projeto ultilizar a linguagem php, por ser uma linguagem de fбcil manuseio, porйm como php nгo й tгo veloz em um grande projeto atrasaria o compilador em no minimo 12 segundos devido a isto a melhor opзгo seria usar c++, porйm nгo o domino fluentemente, mas caso alguйm se interesse no que eu busco e tenha o conhecimento para ajudar a transcrever o cуdigo, serб bem vindo.
Caracteristicas

Prй-Compilador
  • Mуdulos dinвmicos.
    Com o prй compilador vocк pode usufruir de um abrangente sistema de modularidade, vocк abaixo pode ver um escopo de mуdulos.
    Quote:
    • Mуdulos
      • User
        • callbacks
          • OnPlayerConnect.inc
          • OnPlayerDeath.inc
          • CustomCallback.inc
        • Login
          • callbacks
            • OnPlayerConnect.inc
            • OnPlayerRequestSpawn.inc
          • callbacks.inc
          • commands.inc
          • CustomFile.inc
          • functions.inc
          • header.inc
        • callbacks.inc
        • commands.inc
        • CustomFile.inc
        • functions.inc
        • header.inc
    Caso queira ver uma arvore completa, pode acessar este link.

    Cada mуdulo tem seu prefixo.
    User => User.
    Admin => Admin.
    Podendo tambem ser acessado via 'this.', este indicarб o prefixo do mуdulo atual.
    Exemplo

    Quote:
    User/header.inc
    PHP код:
    new this.Variavel 5
    Admin/header.inc
    PHP код:
    new this.Variavel 2
    Admin/callbacks/OnGameModeInit.inc
    PHP код:
    {
        
    printf("Admin.Variavel = %d"Admin.Variavel);
        
    printf("User.Variavel = %d"User.Variavel);

    Output
    Код:
    Admin.Variavel = 2
    User.Variavel = 5
    Este й o conceito bбsico, vocк encontrarб mais informaзхes na documentaзгo.
  • Simulaзгo de objetos.
    Fora os prefixos que vocк ja viu acima, caso ativado nas configuraзхs, vocк pode usar uma espйcie de "Objeto orientado", um exemplo disto seria.
    Quote:
    User/header.inc
    PHP код:
    new UserVar<int:Kills>;
    new 
    UserVar<int:Deaths>;
    new 
    UserVar<string:Nome[MAX_PLAYER_NAME 1]>;
    new 
    UserVar<BitArray:Logado>; // Y_Bits
    new UserVar<Iterator:Veiculos<15>>; // Y_Iterate 
    User/callbacks/OnPlayerDeath.inc
    PHP код:
    if(killerid != INVALID_PLAYER_ID)
        ++
    killerid->Kills;
    ++
    playerid->Deaths
    Ou pode usar assim, й a teu critйrio.
    User/callbacks/OnPlayerDeath.inc

    PHP код:
    if(killerid != INVALID_PLAYER_ID)
        ++
    User.Kills[killerid];
    ++
    User.Deaths[playerid]; 
    Porйm pode haver um conflito, em que no caso se deve usar um tag para corrigi-lo, exemplo do conflito.
    Eu recomendo sempre usar a tag, pois hoje vocк pode nгo ter 2 ou mais variaveis de mesmo nome, porйm em um futъro...

    Quote:
    User/header.inc
    PHP код:
    new UserVar<int:Variavel>; 
    Veiculo/header.inc
    PHP код:
    new VehVar<int:Variavel>; 
    Admin/callbacks/OnGameModeInit.inc
    PHP код:
    new id;
    id->Variavel 5
    Como o Prй-Compilador entenderia isto? Como advinhar qual caminho o programdor quer, Veiculo ou User?
    Para isto existe uma simples soluзгo.

    Admin/callbacks/OnGameModeInit.inc

    PHP код:
    new id;
    P:id->Variavel 5
    Assim o compilador assumiria que Variavel, vem de Player.
    Tags para desiludir o Prй-Compilador.
    P: - Player/Usuario
    U: - Player/Usuario
    V: - Veiculo
    C: - Config

    Vocк poderб altera-las sem editar o source na seзгo abaixo.
  • Variaveis.

    Como jб viu nos exemplos acima, vocк pode criar variaveis de um modo diferente do habitual.
    Nativamente se pode criar 3 tipos de variaveis sendo elas
    • Player/User
    • Veiculo
    • Configuraзгo
    Caso vocк ultilize alguns dos Gamemodes bases, ou o sistema que nele tem destas variaveis vocк verб que.
    As variaveis criadas para players e configuraзхes, sгo salvas e carregadas automбticamente, bastando apenas cria-las e nada mais.
    Para criar uma destas variaveis pode-se fazer assim:

    PHP код:
    new UserVar[int:Variavel];
    new 
    VehVar[int:Variavel];
    new 
    ConfigVar[int:Variavel]; 

    Apуs fazer isto o prй-compilador irб transforma-la em algo similar.

    PHP код:
    new int:User.Variavel[MAX_PLAYERS];
    RegUserVarUser.Variavel;
    new 
    int:Vehicle.Variavel[MAX_VEHICLES];
    RegVehicleVarVehicle.Variavel;
    new 
    ConfigVar[int:Variavel];
    new 
    int:Config.Variavel;
    RegConfigVarConfig.Variavel

    Ambos mйtodos de criaзгo de variaveis podem ser acessados por objetos/nгo.
    Depois disto o processamento serб no prуpio, prй-compilador do pawncc.
    As variaveis de usuбrio serгo resetadas, automбticamente para o valor 0, porйm vocк pode setar o valor inicial da variavel, assim toda vez que o player se logar ela irб ser setada aquele valor.

    PHP код:
    new UserVar[int:Variavel = -1]; 

    Ou tambйm desta forma:

    PHP код:
    new int:User.Variavel[MAX_PLAYERS];
    RegUserVarUser.Variavel, -1

    Vocк tambйm pode alterar como a variavel criada ficarб salva no banco de dados/arquivo. Por padrгo ela assume o nome da variavel criada, mas podes altera-la da seguinte forma.

    PHP код:
    new UserVar[int:Variavel] => "Var"

    Ou tambйm desta forma:

    PHP код:
    new int:User.Variavel[MAX_PLAYERS];
    RegUserVar"Var"User.Variavel, -1
  • Personalizavel.

    Existe um arquivo .ini de configuraзгo, aonde nele vocк pode:
    • Alterar nome do projeto(GM) e sigla do mesmo.
    • Desativar Simulaзгo de objetos.
    • Desativar Ferramentas de traduзгo.
    • Desativar Prefixos de mуdulos.
    • Desativar declaraзгo "dinвmica" de variaveis.
    • Adicionar novo tipo de variavel.
    • Adicionar novo arquivo a incluir.
    • Alterar estilo do cabeзalho.
    • Reordenar ordem de inclusхes.
DocGen
  • Visualizaзгo em HTML.
    Ainda nгo hб um layout prй definido para apresentar a documentaзгo, porйm pode-se ter em mente algo similar a:
    SourceMod
    PHP Doc
    Doxygen
  • JSON.
    O retorno do aplicativo й completamente em JSON tendo em mente este escopo:
    Response
    Junto da resposta, tem o 'data' outra responsta que vocк pode encontrar dentro do item acima.
    Data dentro do response.
  • Sintaxe like DoxyGen, PHPDoc.
    A sintaxe da documentaзгo diferentemente da padrгo do pawnc, nгo й no formato XML vocк pode ver um exemplo abaixo
    PHP код:
    /**
     * <Uma curta linha de descriзгo>
     *
     * <Descriзгo maior>
     * <Pode criar mъltiplas linhas ou parбgrafos se quiser>
     *
     * @param nome Descriзгo dos parвmetros de entrada de funзхes ou mйtodos
     * @param  ...
     * @retorno Descriзгo do valor de retorno
     */
    stock Funcao(nome, ...){
        return 
    1;

  • Extensivo.
    Ao contrбrio da documentaзгo padrгo do pawnc, esta ferramenta tambem suporta:
    • Variaveis
    • Enums e itens
    • Macros
    • Callbacks
    • Funзхes

Site
  • Responsivo.
  • Changelog.
    Area para postar seu changelog, para que seu publico possa acompanhar o desenvolvimento.
  • Metas.
    Area para postar metas que tendem a ser desenvolvida, para que seu publico possa ver o futuro do servidor.
  • Sugestхes.
    Seu publico pode interagir com vocк, dando sugestхes para seu modo de jogo.
  • Blog.
  • Disqus comentбrios.
  • ****** analytics.
  • Contador.
  • Feed rss.
Base
TODO
Anticheat
TODO
Links


SA-MP Toolkit

Referкncias

Contato

Crйditos
  • Dayvison - iniciativa e atual desenvolvimento do projeto.
  • Slice - PBP extrutura inicial do prй-compilador.
  • Dan - Anticheat extrutura inicial do anticheat.

Observaзхes

Apуs este longo e cansativo tуpico(BBCode is a really shit), se vocк se interessou pelo projeto vocк pode se juntar a mim na construзгo do mesmo.
Todos os repositуrios do GitHub atualmente estгo vazios, nos prуximos dias estarei fazendo o Push de meu computador para a nuvem.
Atualmente tenho concluido:
  • Prй-Compilador - Feito em PHP, porйm C++ seria uma boa transcriзгo...
  • Site - feito em PHP puro, porйm quero saber wordpress й uma boa idйia a pensar?
  • Base - Sistemas de salvamento citados(SQLite, MySQL, Y_INI), motor de sistema administrativo.

Reply
#2

@reservado
Reply
#3

Boa iniciativa! Boa sorte.
Reply
#4

Bom trabalho aos envolvidos, e terгo bastante! rs
Reply
#5

Pelo que vi parece ser bem legal, mas hб uma coisa que nгo entendi 100%.

Quote:

Vai ser uma "especie de pawno" que serб usada para criar gamemodes?

Reply
#6

Se nao desistires disse sera algo muito top.
Reply
#7

уtimo projeto , espero que nгo desista !
Reply
#8

Quote:
Originally Posted by ZombieSmash
Посмотреть сообщение
Pelo que vi parece ser bem legal, mas hб uma coisa que nгo entendi 100%.
Quote:

Vai ser uma "especie de pawno" que serб usada para criar gamemodes?

O prй-compilador irб usar de expressгo regular e outros artifнcios para criar novos atalhos na sintaxe que nгo existiam antes, convertendo o que vocк escreveu de nova forma e transformando em pawn puro, tambйm irб fazer todo trabalho de Modularidade por vocк, vocк tem apenas que criar a pasta em seu mуdulos, e pronto a mesma estarб incluнda em seu modo de jogo.
Apуs ele recriar todo o arquivo de compilaзгo e fazer as transcriзхes, ele repassa o arquivo ao pawnc.
Reply
#9

Quote:
Originally Posted by Day_
Посмотреть сообщение
O prй-compilador irб usar de expressгo regular e outros artifнcios para criar novos atalhos na sintaxe que nгo existiam antes, convertendo o que vocк escreveu de nova forma e transformando em pawn puro, tambйm irб fazer todo trabalho de Modularidade por vocк, vocк tem apenas que criar a pasta em seu mуdulos, e pronto a mesma estarб incluнda em seu modo de jogo.
Apуs ele recriar todo o arquivo de compilaзгo e fazer as transcriзхes, ele repassa o arquivo ao pawnc.
Nossa, ai sim, boa sorte ae
Reply
#10

Уtimo projeto muito interessante,
boa sorte.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)