11.03.2016, 05:06
SA-MP Toolkit 0.1
Construido pela comunidade, para a comunidade
Sumбrio
Sobre
- 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
Caracteristicas
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.
Links
Prй-CompiladorDocGen
- 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.
Caso queira ver uma arvore completa, pode acessar este link.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
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
Este й o conceito bбsico, vocк encontrarб mais informaзхes na documentaзгo.Quote:
User/header.inc
Admin/header.incPHP код:
new this.Variavel = 5;
Admin/callbacks/OnGameModeInit.incPHP код:
new this.Variavel = 2;
OutputPHP код:
{
printf("Admin.Variavel = %d", Admin.Variavel);
printf("User.Variavel = %d", User.Variavel);
}
Код:Admin.Variavel = 2 User.Variavel = 5- 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.
Porйm pode haver um conflito, em que no caso se deve usar um tag para corrigi-lo, exemplo do conflito.Quote:
User/header.inc
User/callbacks/OnPlayerDeath.incPHP код:
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
Ou pode usar assim, й a teu critйrio.PHP код:
if(killerid != INVALID_PLAYER_ID)
++killerid->Kills;
++playerid->Deaths;
User/callbacks/OnPlayerDeath.inc
PHP код:
if(killerid != INVALID_PLAYER_ID)
++User.Kills[killerid];
++User.Deaths[playerid];
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...
Tags para desiludir o Prй-Compilador.Quote:
User/header.inc
Veiculo/header.incPHP код:
new UserVar<int:Variavel>;
Admin/callbacks/OnGameModeInit.incPHP код:
new VehVar<int:Variavel>;
Como o Prй-Compilador entenderia isto? Como advinhar qual caminho o programdor quer, Veiculo ou User?PHP код:
new id;
id->Variavel = 5;
Para isto existe uma simples soluзгo.
Admin/callbacks/OnGameModeInit.inc
Assim o compilador assumiria que Variavel, vem de Player.PHP код:
new id;
P:id->Variavel = 5;
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 elasCaso vocк ultilize alguns dos Gamemodes bases, ou o sistema que nele tem destas variaveis vocк verб que.
- Player/User
- Veiculo
- Configuraзгo
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];
RegUserVar: User.Variavel;
new int:Vehicle.Variavel[MAX_VEHICLES];
RegVehicleVar: Vehicle.Variavel;
new ConfigVar[int:Variavel];
new int:Config.Variavel;
RegConfigVar: Config.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];
RegUserVar: User.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.
- 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
SiteBase
- 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.
TODOAnticheatTODO
Crйditos
SA-MP Toolkit
Referкncias
Contato
- 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.