Aprendendo conceitos básicos de SQLite.
- Í ndice:
Veja o que será exatamente neste tópico.
[list="box-sizing: border-box;"] - Introdução ao SQLite
- Oque é, e sua Histуria
- Como conectar com o banco de dados.
- Criando meu banco de dados!
[/list]
- I ntrudução ao SQLite
- Oque é, e sua Histуria
SQLite é uma biblioteca em linguagem C que implementa um banco de dados SQL embutido. Programas que usam uma biblioteca SQLite podem ter acesso a um banco de dados SQL sem executar um processo SGBD separado. SQLite não é uma biblioteca cliente usada para conectar com um grande servidor de banco de dados, mas sim o próprio servidor. A biblioteca SQLite lк e escreve diretamente para e do arquivo do banco de dados no disco. O uso do SQLite é recomendado onde a simplicidade da administração, implementação e manutenção são os mais importantes que recursos incontáveis que SGBDs mais voltados para aplicativos possivelmente implementam. As situações onde a simplicidade é a melhor escolha são muito mais frequentes do que pode-se imaginar. E você sabia que SQLite, faz quase, ou até o mesmo papel que o MySQL? Isto porque o SQLite foi criado,SQL ite, ou MySQL como tantos conhecem . SQL foi desenvolvido originalmente no início dos anos 70 nos laboratórios da IBM em San Jose, dentro do projeto System R, que tinha por objetivo demonstrar a viabilidade da implementação do modelo relacional proposto por EF Codd. O nome original da linguagem era SEQUEL, acrônimo para "Structured English Query Language", vindo de fato de, até hoje, a sigla, em inglês, ser comumente pronunciada "síquel" ao invés de "é-kié-él", letra a letra. No entanto, em português, a pronúncia mais corrente é a letra a letra: "йsse-quê-éle". Então gente, vamos começar a falar certo o correto é 'ésse-quê-éle'.
- Como conectar com o banco de dados.
No sa-mp para ter acesso às funções do SQLite nativo, basta adicionar a include padrão do sa-mp (a_samp) , pois a mesma já carrega com sigo mesmo a a_sampdb, que é responsável pelas funções do SQLite.
Entrada:
PHP como:
- Código:
#include <a_samp>
PHP como:
- Código:
#include <a_samp>
main(){}
new DB:Connect;
public OnGameModeInit()
{
Connect = db_open("mydb.db");
return 1;
}
- Criando meu banco de dados!
Para criarmos nosso banco de dados eu optei por usar um programa muito bom, e que muitos usam o SQLite Browser que é um programa muito bom para manipulação, e que eu uso e recomendo. Com ele você pode deletar, inserir e atualizar.. Vamos lá entгo, acompanhe o vídeo abaixo!
[ame="https://www.youtube.com/watch?v=q-X4jLNH3i8"]Tutorial..[/ame]
Caso queira aprender a criar seu banco de dados, manualmente sem ajuda de programas veja meu outro tutorial que relacionado a exatamente isso, veja .
- C onhecendo as funções do SQLite:
Para você poder usar o SQLite em seu servidor, certamente terá funções na qual você irá utilizar para abrir, fechar um db e até mesmo inserir, atualizar, selecionar dados de uma tabela. Hoje, conheceremos algumas delas! - db_open: Como já vimos acima, é usado para abrir uma conexão com um banco de dados SQLite. O modo de uso, é muito simples e nós já vimos, porém vamos também aprender a aprimorar a nossa conexão, veja como:
PHP como:
- Código:
#include <a_samp>
main(){}
new DB:Connect;
public OnGameModeInit()
{
if((Connect = db_open("mydb.db")) == DB:0)
{
return SendRconCommand("exit");
}
return 1;
}
- db_close: Se temos uma função para abrir uma conexão, certamente teremos outra para fechar essa mesma conexão. A db_close, ficará responsável em fechar um banco de dados SQLite que foi aberto com db_open, como nуs fizemos acima...entгo usando o mesmo handle de conexгo(Connect) fecharemos essa conexгo..
PHP como:
- Código:
public OnGameModeExit()
{
db_close(Connect);
return 1;
}
- db_query: Essa, serб sem dъvidas a funзгo mais usado por vocк. Pois será com ela que você terá todas as possibilidades de inserir, atualizar, deletar e tudo o que o SQLite oferece. Vamos ver um exemplo simples dessa função:
PHP como:
- Código:
new DB:db_handle;
// ...
public OnGameModeInit()
{
// Cria uma conexгo com o banco de dados.
if((db_handle = db_open("example.db")) == DB:0)
{
// Printa um erro no console caso o banco de dados nгo seja encontrado.
print("Nao foi possivel encontrar \"example.db\".");
SendRconCommand("exit");
}
else
{
// Se o banco foi encontrado, gera uma mensagem de sucesso.
print("Conecao com \"example.db\" efetuada!");
}
// ...
return 1;
}
public OnGameModeExit()
{
// Fecha a conexгo com o banco de dados...
db_close(db_handle);
// ...
return 1;
}
public OnPlayerSpawn(playerid)
{
// Declara query e p_name.
static query[98], p_name[MAX_PLAYER_NAME+1];
// Guarda o nome do jogador na vбriavel p_nome.
GetPlayerName(playerid, p_name, sizeof p_name);
// Formata a "query"
format(query, sizeof query, "INSERT INTO `spawn_log` (`PlayerID`,`PlayerName`) VALUES (%d,'%s')", playerid, p_name);
// Libera o resultado e insere um log na tabela 'spawn_log'..
db_free_result(db_query(db_handle, query));
// ...
return 1;
}
PHP como:
- Código:
//Selecionando.
db_query(db_handle, "SELECT * FROM `contas` WHERE `nome`='HaRdiiZin'");
// Selecionar tudo da tabela contas onde o nome for HaRdiiZin.
//Atualizar.
db_query(db_handle, "UPDATE `contas` SET `nome`='HaRdiiZola' WHERE `nome`='HaRdiiZin'");
// Atualizar a tabela colunas e alterar o nome para HaRdiiZola onde o nome for HaRdiiZin.
- db_free_result: Essa função, libera um resultado da memória alocada a partir de db_query. O modo de uso é suuuuper fácil, veja você mesmo: Vamos supor que estamos criando um sistema de login & registro para nosso servidor, e precisamos checar se o player já é registrado ou não.. faríamos da seguinte forma:
PHP como:
- Código:
//...
public OnPlayerConnect(playerid)
{
// Declara nome e query.
new nome[MAX_PLAYERS], query[128], DBResult:Resultado;
// Guarda o nome do player na vбriavel nome.
GetPlayerName(playerid, nome, sizeof nome);
// Formata a query.
format(query, sizeof query, "SELECT * FROM `contas` WHERE `nome`='%q'", nome);
// Seleciona tudo da tabela contas que conter o nome do player.
Resultado = db_query(db_handle,query);
// Retorna o nъmero de linhas da query, nesse caso se nгo houver nenhuma linha signfica que o player nгo tem uma conta no servidor.
if(db_num_rows(Resultado) == 0)
{
// Nгo tem uma conta.
}
else
{
// Tem uma conta.
}
db_free_result(Resultado);
return 1;
}
- db_num_rows: Essa função é responsável por retornar o número de linhas de uma consulta, e deve ser usado em conjunto com a db_free_result. Veja como usa-la:
PHP como:
- Código:
//...
public OnPlayerConnect(playerid)
{
// Declara nome e query.
new nome[MAX_PLAYERS], query[128], DBResult:Resultado;
// Guarda o nome do player na vбriavel nome.
GetPlayerName(playerid, nome, sizeof nome);
// Formata a query.
format(query, sizeof query, "SELECT * FROM `contas` WHERE `nome`='%q'", nome);
// Seleciona tudo da tabela contas que conter o nome do player.
Resultado = db_query(db_handle,query);
// Retorna o nъmero de linhas da query, nesse caso se nгo houver nenhuma linha signfica que o player nгo tem uma conta no servidor.
if(db_num_rows(Resultado) == 0)
{
// Nгo tem uma conta.
}
else
{
// Tem uma conta.
}
db_free_result(Resultado);
- PHP como:
- Código:
// Formata a query.
format(query, sizeof query, "SELECT * FROM `contas` WHERE `nome`='%q'", nome);
// Seleciona tudo da tabela contas que conter o nome do player.
Resultado = db_query(db_handle,query);
- PHP como:
- Código:
if(db_num_rows(Resultado) == 0)
- PHP como:
- Código:
db_free_result(Resultado);
- db_get_field_assoc: Obtem o conteъdo do campo com o nome especificado, lembrando que há uma funзгo bastante semelhante, a db_get_field porйm neste tutorial nгo comentбremos sobre ela.
PHP como:
- Código:
public OnPlayerConnect(playerid)
{
// Declara nome e query.
new nome[MAX_PLAYERS], query[128], DBResult:Resultado;
// Guarda o nome do player na vбriavel nome.
GetPlayerName(playerid, nome, sizeof nome);
// Formata a query.
format(query, sizeof query, "SELECT * FROM `contas` WHERE `nome`='%q'", nome);
// Seleciona tudo da tabela contas que conter o nome do player.
Resultado = db_query(db_handle,query);
// Retorna o nъmero de linhas da query, nesse caso se nгo houver nenhuma linha signfica que o player nгo tem uma conta no servidor.
if(db_num_rows(Resultado) == 0)
{
// Nгo tem uma conta.
ShowPlayerDialog(...
}
else
{
// Tem uma conta.
new field[10];
db_get_field_assoc(Resultado, "level", field, sizeof(field));
level = strval(field);
}
db_free_result(Resultado);
}
- PHP como:
- Código:
new field[10];
db_get_field_assoc(Resultado, "level", field, sizeof(field));
- PHP como:
- Código:
level = strval(field);
PHP como:
- Código:
new field[10], Float:PosX[MAX_PLAYERS];
db_get_field_assoc(Resultado, "PosicaoX", field, sizeof(field));
PosX[playerid] = float(strval(field));
E assim terminamos de analisar algumas das funções do SQLite. Lembrando que este tutorial foi feito exclusivamente para novos, e por isso não foi exatamente algumas funções do SQL, se você quiser conferir todas elas recomendo que veja a wiki-samp.
- Atualizando , selecionando, inserindo e excluindo dados da tabela.
Vamos então para as instruções que você usa e muito, muito mesmo. Vamos começar com a de inserir a INSERT, com ela você pode inserir dados em sua tabela. Mas antes, vamos entender o que é tabela, coluna, e dados. Tabela, é como se fosse um braço, já as coroas seriam suas gavetas, e os dados, obviamente, seria oque há dentro dessas gavetas.. pensando desta maneira, tenho certeza que você nunca irá se esquecer.. Então vamos lá. Para você usar qualquer uma das instruções que vou passar a baixo, você deve a função db_query, que é uma nativa que vem com a a_sampdb que nós já vimos como instala-la. A linguagem SQL é dividida em subconjuntos de acordo com as operações que queremos controlados sobre um banco de dados, porém veremos algumas.. Vamos começar com a Linguagem de Manipulação de Dados. - Linguagem de Manipulação de Dados.
DML(sigla em inglês) é um subconjunto da linguagem SQL que é utilizada para realizar inclusões, consultas, alterações e exclusões de dados presentes em registros, dentro dela temos as instruções INSERT, UPDATE e DELETE. - INSERT
A insert, como proprio nome já diz inserir um dado em seu banco de dados, ela é uma das sintaxes mais simples que tem, veja.
PHP como:
- Código:
db_query(db, "INSERT INTO `minhatabela` (`coluna01`, `coluna02`) VALUES ('0', 'HaRdiiZin')")
PHP como:
- Código:
INSERT INTO `tabela` (`colunas`) VALUES ('valores')
PHP como:
- Código:
INSERT INTO `jogadores` (`nick`, `senha`) VALUES ('HaRdiiZin', 'higor123')
-
Lembrando, que é o modo básico de como usar a instrução INSERT, se você quiser se aprofundar no SQL recomendo que aguarde meu próximo tutorial(se tiver) ou que saia a procura de alguns pela internet não relacionados a SA-MP.
- DELETE
A instrução delete, como o próprio nome já diz deleta algum valor de sua tabela, eo modo de uso é extremamente fácil.
PHP como:
- Código:
DELETE * FROM `minhatabela` WHERE `coluna01` = 'HaRdiiZin'
PHP como:
- Código:
public OnPlayerConnect(playerid)
{
db_query(db, "DELETE * FROM `minhatabela` WHERE `coluna01` = 'HaRdiiZin'");
return 1;
}
- UPDATE
Um instrutor update, é responsável por fazer a atualização dos dados de sua tabela, basicamente para usa-la você sу precisara informar a tabela que quer atualizar, os dados que serão atualizados e opcionalmente onde ela teria efeito.
PHP como:
- Código:
public OnPlayerConnect(playerid)
{
// Declara nome e query.
new nome[MAX_PLAYERS], query[128];
// Guarda o nome do player na vбriavel nome.
GetPlayerName(playerid, nome, sizeof nome);
format(query, sizeof query, "UPDATE `contas` SET `ultlogin`='%d' WHERE `nome`='%q'", nome, gettime());
db_query(db, query);
return 1;
}
- Linguagem de Consulta de Dados
Embora tenha apenas um comando, a DQL é a parte do SQL mais utilizada. O comando SELECT permite ao usuário especificar uma consulta ("query") como uma descrição do resultado desejado. Esse comando é composto de várias clбusulas e opзхes, permitindo elaborar consultas das mais simples аs mais elaboradas. - SELECT
O Select é o principal comando usado em SQL para realizar consultas a dados pertencentes a uma tabela, vamos ver um exemplo simples de como usa-lo no peão.
PHP como:
- Código:
public OnPlayerConnect(playerid)
{
db_query(db, "SELECT * FROM `minhatabela` WHERE `coluna`='%s'");
return 1;
}
PHP como:
- Código:
FROM – Utilizada para especificar a tabela que se vai selecionar os registros.
WHERE – Utilizada para especificar as condiзхes que devem reunir os registros que serгo selecionados.
Então como você viu, e se você sabe um pouquinho de inglês já sabe que a FROM é o local, e WHERE é a mesma coisa que perguntar a onde.
E para complementar um pouquinho mais o seu conhecimento, vamos ver também como usar Operadores Lógicos no SQL.
PHP como:
- Código:
AND – E lуgico. Avalia as condiзхes e devolve um valor verdadeiro caso ambos sejam corretos.
OR – OU lуgico. Avalia as condiзхes e devolve um valor verdadeiro se algum for correto.
NOT – Negaзгo lуgica. Devolve o valor contrбrio da expressгo.
PHP como:
- Código:
// Exemplo 01:
db_query(db, "SELECT * FROM `contas` WHERE `nome` = 'HaRdiiZin' AND `senha` = 'teste'");
// Exemplo 02:
db_query(db, "SELECT * FROM `teste` WHERE `teste01` = '5' OR `teste02` = '6'");
PHP como:
- Código:
db_query(db, "SELECT `id, senha` FROM `contas` WHERE `nome` = 'HaRdiiZin'");
- P erguntas & Respostas
- Pergunta: Qual é o melhor MySQL ou SQLite? Qual a diferença de um ao outro?
Resposta:
Citar:Postado originalmente por Day_
SQLite é local, MySQL pode não ser, é a maior diferença que eu vi.
Agora no SA-MP, MySQL é mais rápido com o multi-threading, SQL - Pergunta: É possível fazer as mesmas coisas em SQLite do que em MySQL?
Resposta:
Citar:Postado originalmente por PT
Sim atй incluнdo ligar a um website embora muitos falem sem saber. Só que claro com mysql e mais fácil ligar a um website.
- Sistema de login e registro em SQL
PHP como:
- Código:
/*
___ ____ _________ ______ ______ /
/ / \ /\ | | \ | | / | /
| | \/ | | | | | | /
\______ | | | |_____/ | | | |/\
\ |----| | | \ | | | | \
| | /\ | | | | | | | \
_______/ | | \/ | | | \______/ \______ | |
San Andreas Truck - 2015
*/
/*
*
* Autor do gamemode: HaRdiiZin
* Data de criaзгo: 26/10/15
* Nome do projeto: San Andreas Truck
* Descriзгo: Este projeto foi iniciado somente para relembrar as funзхes do sqlite,
* e tambйm porque eu iria iniciar um projeto de trucking mais acabei desistindo
* dele por falta de tempo, jб que eu tenho outro projeto em andamento..
*
*/
/*
*
* O que hб no gamemode?
* Como eu desisti nos primeiros dias de desenvolvimento, praticamente nem fiz nada no gamemode. Ele й uma base, uma base na qual
* novatos na linguagem possam aprender mais, e tambйm conhecer o quгo ъtil й o sqlite no sa-mp e como podemos utiliza-lo, atualmente o gamemode
* sу tem o sistema de login e registro, ambos funcionando 100% e salvando, admin, skin, e ъltima posiзгo. Espero que gostem!
*
*/
//--------------------------------------------------------------
/* Includes necessбrias para o bom funcionamento do servidor. */
#include <a_samp>
#include <foreach>
#include <mSelection>
/* Configuraзхes gerais do servidor. */
#define serverNome "hostname San Andreas Truck | HaRdiiZin"
#define serverPass "password 0"
#define serverLang "language Portugues - Brasil"
#define serverMod "by HaRdiiZin - v0.1 R1"
#define serverMap "mapname San Andreas"
#define serverSite "weburl www.forum.sa-mp.com"
#define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)
#define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)
/* Enums e outras vбriaveis.. */
enum
{
Branco = 0xFFFFFFFF,
Verde = 0x29BF33FF,
Vermelho = 0xFF0000FF,
Azul = 0x1DA7B9FF,
Rosa = 0xB837C1FF,
Roxo = 0xB11BCFFF,
Amarelo = 0xFFF300FF,
Laranja = 0xFFC000FF
};
enum
{
Login,
Registro,
SelectSkin
};
enum player_data
{
Admin,
Skin,
Float:px,
Float:py,
Float:pz,
Float:pa
};
new DB:Connect;
new pInfo[MAX_PLAYERS][player_data];
/* Necessarias para o script */
main() { print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n> HaRdiiZin"); }
public OnGameModeInit()
{
LoadServerConfig();
/* Carrega o banco de dados */
Connect = db_open("sql.db"); // Abre o banco de dados..
db_free_result(db_query(Connect, "CREATE TABLE IF NOT EXISTS `contas` (`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,`nome` TEXT NOT NULL,`senha` TEXT NOT NULL,`admin` INTEGER NOT NULL,`skin` INTEGER NOT NULL,`px` INTEGER NOT NULL,`py` INTEGER NOT NULL,`pz` INTEGER NOT NULL,`pa` INTEGER NOT NULL);"));
// Cria as tabelas caso elas nгo existam..
/* Inserir uma conta na tabela, caso a AutoRegister esteja habilitada. */
#if defined AutoRegister
db_query(Connect, "INSERT INTO `contas` (`nome`, `senha`, `admin`, `skin`, `px`, `py`, `pz`, `pa`) VALUES ('HaRdiiZin', 'teste', '0', '4', '0.0', '0.0', '0.0', '0.0')");
//Somente para testes..
#endif
return 1;
}
public OnGameModeExit()
{
for(new i = 0; i < MAX_PLAYERS; i++) SavePlayer(i);
return 1;
}
public OnPlayerConnect(playerid)
{
SetTimerEx("OnPlayerConnected", 100, false, "i", playerid);
return 1;
}
forward OnPlayerConnected(playerid);
public OnPlayerConnected(playerid)
{
/* Seta a camera do player e outras funзхes .*/
TogglePlayerSpectating(playerid, true);
InterpolateCameraPos(playerid, 1462.9407, -867.8122, 105.3706, 1322.1545, -956.1140, 136.5105, 10000, CAMERA_MOVE);
InterpolateCameraLookAt(playerid, 1462.3888, -866.9811, 104.9506, 1322.5913, -955.2172, 136.1455, 10000, CAMERA_MOVE);
/* Verifica se o player tem ou nгo uma conta, caso ele tenha ele serб jogado para dialog de login, se nгo ele irб para de registro. */
new query[61], DBResult:Result;
format(query, sizeof(query), "SELECT * FROM `contas` WHERE `nome` = '%s'", DB_Escape(GetName(playerid)));
Result = db_query(Connect, query);
if(db_num_rows(Result) == 0)
{
//Nгo tem uma conta..
ShowPlayerDialog(playerid, Registro, DIALOG_STYLE_PASSWORD, "{FF0000}# {FFFFFF}San Andreas: Truck", "{FFFFFF}Digite uma senha segura para que vocк se registre.", "Registrar", "");
}
else
{
//Tem uma conta..
ShowPlayerDialog(playerid, Login, DIALOG_STYLE_PASSWORD, "{FF0000}# {FFFFFF}San Andreas: Truck", "{FFFFFF}Digite a sua senha para logar-se", "Logar", "");
}
db_free_result(Result);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SavePlayer(playerid);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == Registro)
{
if(!response) Kick(playerid);
new query[300];
format(query, sizeof(query), "INSERT INTO `contas` (`nome`, `senha`, `admin`, `skin`, `px`, `py`, `pz`, `pa`) VALUES ('%s', '%s', '0', '0', '0.0', '0.0', '0.0', '0.0')", DB_Escape(GetName(playerid)), DB_Escape(inputtext));
db_free_result(db_query(Connect, query));
pInfo[playerid][Admin] = 0;
pInfo[playerid][Skin] = 0;
pInfo[playerid][px] = 0.0;
pInfo[playerid][py] = 0.0;
pInfo[playerid][pz] = 0.0;
pInfo[playerid][pa] = 0.0;
new skins_array[] =
{
20,23,26,27,29,32,33,34,37,43,44,45,49,51,52,57,58,59,60,68,72,73,81,96,97,101
};
ShowModelSelectionMenuEx(playerid, skins_array, 26, "Selecione sua skin", SelectSkin, 0.0, 0.0, 0.0);
return 1;
}
if(dialogid == Login)
{
if(!response) Kick(playerid);
new query[118], DBResult:Result;
format(query, sizeof(query), "SELECT * FROM `contas` WHERE `nome` = '%s' AND `senha` = '%s'", DB_Escape(GetName(playerid)), DB_Escape(inputtext));
Result = db_query(Connect, query);
if(db_num_rows(Result) == 0)
{
SendClientMessage(playerid, Vermelho, "* Vocк errou sua senha!");
Kick(playerid);
return 0;
}
else
{
//Acertou a senha
new Field[20];
db_get_field_assoc(Result, "admin", Field, sizeof(Field));
pInfo[playerid][Admin] = strval(Field);
db_get_field_assoc(Result, "skin", Field, sizeof(Field));
pInfo[playerid][Skin] = strval(Field);
db_get_field_assoc(Result, "px", Field, sizeof(Field));
pInfo[playerid][px] = float(strval(Field));
db_get_field_assoc(Result, "py", Field, sizeof(Field));
pInfo[playerid][py] = float(strval(Field));
db_get_field_assoc(Result, "pz", Field, sizeof(Field));
pInfo[playerid][pz] = float(strval(Field));
db_get_field_assoc(Result, "pa", Field, sizeof(Field));
pInfo[playerid][pa] = float(strval(Field));
TogglePlayerSpectating(playerid, false);
LoadPlayer(playerid);
}
db_free_result(Result);
return 1;
}
return 1;
}
public OnPlayerModelSelectionEx(playerid, response, extraid, modelid)
{
if(extraid == SelectSkin)
{
if(!response)
{
pInfo[playerid][Skin] = 4;
TogglePlayerSpectating(playerid, false);
LoadPlayer(playerid);
}
else
{
pInfo[playerid][Skin] = modelid;
TogglePlayerSpectating(playerid, false);
LoadPlayer(playerid);
}
return 1;
}
return 1;
}
/* Funзхes necessбrias */
LoadPlayer(playerid)
{
SpawnPlayer(playerid);
SetPlayerPos(playerid, pInfo[playerid][px], pInfo[playerid][py], pInfo[playerid][pz]);
SetPlayerFacingAngle(playerid, pInfo[playerid][pa]);
SetPlayerSkin(playerid, pInfo[playerid][Skin]);
return 1;
}
SavePlayer(playerid)
{
new query[300], DBResult:Result;
GetPlayerPos(playerid, pInfo[playerid][px], pInfo[playerid][py], pInfo[playerid][pz]);
GetPlayerFacingAngle(playerid, pInfo[playerid][pa]);
format(query, sizeof(query), "UPDATE `contas` SET `admin`='%d', `skin`='%d', `px`='%f', `py`='%f', `pz`='%f', `pa`='%f' WHERE `nome` = '%s'",
pInfo[playerid][Admin],
GetPlayerSkin(playerid),
pInfo[playerid][px],
pInfo[playerid][py],
pInfo[playerid][pz],
pInfo[playerid][pa],
DB_Escape(GetName(playerid)));
Result = db_query(Connect, query);
db_free_result(Result);
return 1;
}
LoadServerConfig()
{
new input[40]; // Cria a variavel com 40 cйlulas necessбrias..
/* Setando as configuraзхes de nome, etc */
format(input, sizeof(input), serverNome); // Seta o hostname do servidor.
SendRconCommand(input);
format(input, sizeof(input), serverPass); // Seta a senha do servidor.
SendRconCommand(input);
format(input, sizeof(input), serverLang); // Seta a linguagem que o servidor terб.
SendRconCommand(input);
format(input, sizeof(input), serverMod); // Seta o mode do servidor.
SetGameModeText(input);
format(input, sizeof(input), serverMap); // Seta o nome do mapa do servidor..
SendRconCommand(input);
format(input, sizeof(input), serverSite); // Seta o nome do mapa do servidor..
SendRconCommand(input);
#undef serverNome
#undef serverPass
#undef serverLang
#undef serverMod
#undef serverMap
#undef serverSite
/* Seta as configuraзхes para como o GTA deverб se portar em relaзгo ao servidor. */
ShowPlayerMarkers(PLAYER_MARKERS_MODE_OFF);
ShowNameTags(1);
AllowAdminTeleport(1);
UsePlayerPedAnims();
DisableInteriorEnterExits();
EnableStuntBonusForAll(true);
LimitGlobalChatRadius(15.0);
EnableTirePopping(1);
//ManualVehicleEngineAndLights();
return 1;
}
GetName(playerid)
{
new
gName[MAX_PLAYER_NAME + 1];
GetPlayerName(playerid, gName, sizeof(gName));
return gName;
}
forward Kicka(p); public Kicka(p)
{
#undef Kick
Kick(p);
#define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)
return 1;
}
forward Bana(p); public Bana(p)
{
#undef Ban
Ban(p);
#define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)
return 1;
}
DB_Escape(text[])
{
new
ret[80 * 2],
ch,
i,
j;
while ((ch = text[i++]) && j < sizeof (ret))
{
if (ch == '\'')
{
if (j < sizeof (ret) - 2)
{
ret[j++] = '\'';
ret[j++] = '\'';
}
}
else if (j < sizeof (ret))
{
ret[j++] = ch;
}
else
{
j++;
}
}
ret[sizeof (ret) - 1] = '\0';
return ret;
// '''
}
- C onclusхes finais
Espero que consiga entender o tutorial, eu chorei com muito carinho para você! Bons estudos para você, se tiver qualquer erro por favor me reporte.
Agradecimentos a: - Wikipedia
- Wiki-samp
- EditPawn por dar sugestões do que adicionar.
- HaRdiiZin