podem fazer qualquer funcao, e sao geralmente usados para fazer includes.6. User DatabasesUser databases sao includes usados para salvar os dados de algum jogador. Neste tutorial vou explicar como usar o DUDB.O dudb, na minha opiniao e o melhor include de database. Aqui vou explicar como utilizar as funcoes do dudb:udb_Create(Filename[], password[]): Funcao utilizada para criar uma conta no dudb. Veja no exemplo de sistema de registro/login.udb_UserSet(Filename[], key[], value[]): Funcao utilizada para salvar algum dado em formato de texto.udb_UserSetInt(Filename[], key[], value): Funcao utilizada para salvar algum dado em formato de numero INTEIRO. Ex: Variaveis de kills /mortesudb_UserSetFloat(Filename[], key[], Float:value): Funcao utilizada para salvar algum dado em formato de float ( como por exemplo, as coordenadas de spawn de algum player )udb_UserInt(Filename[], key[]): Checa o valor de alguma variavel de numero INTEIRO no arquivo, utilizada para carregar os dados.udb_UserFloat(Filename[], key[]): Checa o valor de alguma variavel de numero FLOAT no arquivo, utilizada para carregar dados de coordenadas.udb_CheckLogin(Filename[], password[]): Funcao utilizada nos sistemas de login/registro para ver se a senha esta correta.Bom, agora que sabemos as funcoes principais do DUDB e pra que elas servem, vamos criar nosso sistema de login/registro.Vamos adicionar isso no nosso gamemode:CODIGO//No topo de tudo, junto com os outros includes:#include #define amarelo 0xFFFF00AA#define verde 0x33FF33AA#define vermelho 0xFF0000AA#define vermelhoescuro 0xAA3333AA#define branco 0xFFFFFFAA#define rosa 0xCCFF00FFAA#define azul 0x057ABDAA#define cinza 0xC0C0C0AA#define yellow 0xFFFF00AA#define laranja 0xFFA500AA//agora no OnPlayerConnect:new nomepl[MAX_PLAYER_NAME];GetPlayerName(playerid, nomepl, sizeof(nomepl))if(!udb_Exists(nomepl)){SendClientMessage(playerid, azul, "[LOGIN/REGISTRO] Voce nao esta registrado, registre-se com /registrar senha");}else{SendClientMessage(playerid, azul, "[LOGIN/REGISTRO] Voce ja esta registrado, logue-se com /logar senha");}//agora no OnPlayerCommandTextif (strcmp(cmd, "/registrar", true)==0){new tmp[256];new senha[256];tmp = strtok(cmdtext, idx);if(!strlen(tmp)){SendClientMessage(playerid,vermelhoescuro,"/registrar [senha] - Exemplo: /registrar 123");return 1;}if(udb_Exists(PlayerName(playerid))){SendClientMessage(playerid, vermelhoescuro, "Voce ja tem uma conta no Renaissance RPG!");return 1;}format(senha, sizeof(senha), "%s", tmp); new nomepl[MAX_PLAYER_NAME]; GetPlayerName(playerid, nomepl, sizeof(nomepl));udb_Create(nomepl, senha);SendClientMessage(playerid, azul, "Registrado com sucesso!");return 1;}if (strcmp(cmd, "/logar", true)==0){new tmp[256];new senha[256];tmp = strtok(cmdtext, idx);if(!strlen(tmp)){SendClientMessage(playerid,vermelhoescuro,"/logar [senha] - Exemplo: /logar 123");return 1;}if(logado[playerid] == 1){SendClientMessage(playerid, vermelhoescuro, "Voce ja esta logado!");return 1;}format(senha, sizeof(senha), "%s", tmp);if (udb_CheckLogin(PlayerName(playerid),tmp)) {SendClientMessage(playerid, azul, "Logado com sucesso!");return 1;}else{SendClientMessage(playerid, vermelho, "Senha errada!");}return 1;}Agora acabamos de criar nosso sistema de login/registro. Vamos criar agora um sistema para salvar o dinheiro de alguem.CODIGO//no OnPlayerDisconnectnew grana;new nomepl[MAX_PLAYER_NAME];GetPlayerName(playerid, nomepl, sizeof(nomepl));grana = GetPlayerMoney(playerid);udb_UserSetInt(nomepl, "Grana", grana);//agora no OnPlayerSpawnnew grana;new nomepl[MAX_PLAYER_NAME];GetPlayerName(playerid, nomepl, sizeof(nomepl));grana = udb_UserInt(nomepl, "Grana");GivePlayerMoney(playerid, grana);Pronto! Agora criamos um sistema que salva o dinheiro de alguem quando esta pessoa volta ao servidor! Para fazer as variaveis salvarem, e muito simples, basta adicionar o seguinte code no /logar e no OnPlayerDisconnect:CODIGO//No OnPlayerDisconectnew nomepl[MAX_PLAYER_NAME];GetPlayerName(playerid, nomepl, sizeof(nomepl));udb_UserSetInt(nomepl, "Banco", banco[playerid]);/*isso faz salvar, coloquei a variavel banco[playerid] por pedido do Cronos, mas dependendo do que vc quiser salvar, mude isto*///no sistema de /logarnew nomepl[MAX_PLAYER_NAME];GetPlayerName(playerid, nomepl, sizeof(nomepl));Banco[playerid] = udb_UserInt(nomepl, "Banco");//Isso faz carregar, mude a variavel Banco[playerid] e "Banco" pela variavel que quiser carregarIsso vai fazer salvar a variavel banco quando o player desconectar, e carregar quando ele logar.7. Y_ObjectsY_Objects e um streamer de objetos usado para poder exceder o limite de objetos no sa-mp, evitando crashs. O ponto bom dele, e que voce pode criar muitos objetos, o ponto ruim e que deixa seu script muito pesado e demora um pouco para carregar os objetos dentro do jogo. Enfim, vamos ao que interessa:Para