Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ___ ____ _________ ______ ______ /
- / / \ /\ | | \ | | / | /
- | | \/ | | | | | | /
- \______ | | | |_____/ | | | |/\
- \ |----| | | \ | | | | \
- | | /\ | | | | | | | \
- _______/ | | \/ | | | \______/ \______ | |
- 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;
- // '''
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement