Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Concluido:
- - Registro/Login
- - Cameras
- - Sistema de ban
- - TextDraws
- - Gasolina
- - Mensagens Randomicas
- - Controle de veículo
- Fazer:
- - Clima dinâmico
- - Sistema de propriedades
- - Sistema de organizações
- - Sistema de roubo
- - Sistema de administração
- - Sistema VIP
- */
- #include <a_samp>
- #include <a_mysql>
- #include <a_zones>
- //#include <sscanf2>
- #include <foreach>
- #include <zcmd>
- //#include <streamer>
- #if defined MAX_PLAYERS
- #undef MAX_PLAYERS
- #endif
- native WP_Hash(buffer[], len, const string[]);
- new const
- SERVER_NAME[] = "Los Santos RPG",
- SERVER_VERSION[] = "0.1 (Rev. 3)",
- //Dados da conexão ao banco de dados
- DB_HOST[] = "127.0.0.1",
- DB_USER[] = "root",
- DB_NAME[] = "ls_rpg",
- DB_PASS[] = "";
- enum
- {
- //Players
- MAX_PLAYERS = 101,
- //Properties
- MAX_PROPERTIES = 1000,
- PROPERTY_TYPE_HOUSE = 1,
- PROPERTY_TYPE_BUSINESS = 2,
- //Factions
- MAX_FACTIONS = 11,
- FACTION_TYPE_COP = 1,
- FACTION_TYPE_GANG = 2,
- FACTION_TYPE_MAFIA = 3,
- FACTION_TYPE_TERRORIST = 4
- }
- //Sistema de registro
- enum E_PLAYER_INFO
- {
- bool: gPlayerLogged,
- bool: gPlayerRegistered,
- gPlayerLoginTries,
- //Identificação
- gPlayerID,
- gPlayerName[24],
- gPlayerIP[16],
- //Registro
- gPlayerPassword[129],
- gPlayerPasswordTip[64],
- gPlayerSecretAsk[64],
- gPlayerSecretAnswer[64],
- //Informações pessoais
- gPlayerGender,
- gPlayerBirth[3],
- gPlayerAge,
- gPlayerMoney,
- gPlayerSkin,
- //Sistema de administração
- gPlayerAdminLevel,
- gPlayerAdminRepPoints,
- gPlayerAdminDuty,
- //Sistema vip
- gPlayerVipLevel,
- //Sistema de drogas
- gPlayerMarijuana,
- gPlayerCocaine,
- gPlayerCrack,
- gPlayerMats,
- //Sistema de Level
- Float: gPlayerExp,
- gPlayerLevel,
- //Salvar posição após crash
- gPlayerLeaveReason,
- gPlayerInterior,
- gPlayerWorld,
- Float: gPlayerPos[4],
- Float: gPlayerHealth,
- Float: gPlayerArmour,
- //TextDraws
- Text: gPlayerStatsTD,
- Text: gPlayerNetStatsTD,
- Text: gPlayerSpeedoTD,
- //Timers
- gPlayerUpTimer
- }
- new gPlayerInfo[MAX_PLAYERS][E_PLAYER_INFO];
- //Sistema de cameras
- enum E_CAM_INFO
- {
- Float: cam_Pos[3],
- Float: cam_LookAt[3]
- }
- //Variáveis globais
- new Float: gDefaultSpawn[4] = { 1568.2737, -1892.3541, 13.5595, 0.8003 };
- new cam_Info[][E_CAM_INFO] = { //Créditos aos criadores do MyRPG pelas coordenadas
- {{719.8196, -1984.5413, 0.8574 }, {719.7933, -1983.5378, 0.7499 }},
- {{842.0169, -1772.2430, 365.1170 }, {841.0131, -1772.2399, 362.0245}},
- {{1085.8168, -1507.1821, 32.6435 }, {1086.4247, -1506.3833, 32.2360 }},
- {{1138.8068, -1400.2664, 22.4200 }, {1139.8031, -1400.1439, 22.3171 }},
- {{1532.3412, -1361.0857, 341.1450}, {1532.7753, -1361.9911, 339.6769}},
- {{1518.8756, -1628.3341, 18.7397 }, {1519.3651, -1629.2109, 18.6616 }},
- {{1834.7419, -1303.5442, 120.2275}, {1835.5393, -1304.1547, 119.9244}},
- {{1935.7708, -1395.2288, 342.9268}, {1935.7756, -1394.2245, 341.1788}},
- {{2200.1458, -1106.1829, 107.0125}, {2200.9858, -1105.6324, 106.6644}},
- {{2571.9436, -1278.1204, 131.3794}, {2572.5393, -1278.9288, 130.8064}}
- };
- new gSecretAsks[][] =
- {
- "Qual o nome da sua primeira professora?\n",
- "Qual o nome do seu time do coração?\n",
- "Qual o nome da rua aonde você mora?\n",
- "Qual o nome do seu primeiro animal de estimação?\n",
- "Qual o seu super herói favorito?"
- };
- new random_Messages[][] = {
- "LS-RPG:{FFFFFF} Gostou do servidor? Seja vip e faça parte do nosso crescimento!",
- "LS-RPG:{FFFFFF} Mantenha-se informado visitando o fórum, ls-rpg.com",
- "LS-RPG:{FFFFFF} Precisa de ajuda? Consulte um administrador. {1E90FF}/relato",
- "LS-RPG:{FFFFFF} Novo no servidor? Use {1E90FF}/ajuda{FFFFFF} e receba um amplo suporte!",
- "LS-RPG:{FFFFFF} Obrigado por jogar aqui, sua presença faz o nosso crescimento!",
- "LS-RPG:{FFFFFF} A equipe {1E90FF}Los Santos RPG{FFFFFF} agradece a sua preferência.",
- "LS-RPG:{FFFFFF} Ajude na divulgação do servidor e vamos crescer juntos!",
- "LS-RPG:{FFFFFF} Promoção de inauguração: Chame {1E90FF}10{FFFFFF} amigos e receba Vip Ouro!",
- "LS-RPG:{FFFFFF} Para ver os créditos do game mode em geral use {1E90FF}/creditos",
- "LS-RPG:{FFFFFF} Nunca peça para ser administrador, isso não se pede, se conquista!"
- };
- new VehiclesName[][] =
- {
- "Landstalker","Bravura","Buffalo","Linerunner","Pereniel","Sentinel","Dumper","Firetruck","Trashmaster",
- "Limosine","Manana","Infernus","Voodoo","Pony","Mule","Cheetah","Ambulancia","Leviathan","Moonbeam","Esperanto",
- "Taxi","Washington","Bobcat","Mr Whoopee","BF Injection","Hunter","Premier","Enforcer","Securicar","Banshee",
- "Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie","Stallion","Rumpo",
- "RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer",
- "Turismo","Speeder","Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer",
- "PCJ-600","Faggio","Freeway","RC Baron","RC Raider","Glendale","Oceanic","Sanchez","Sparrow","Patriot",
- "Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR-350","Walton","Regina","Comet","BMX",
- "Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","FBI Rancher","Virgo",
- "Greenwood","Jetmax","Hotring","Sandking","Blista Compact","Maverick Policial","Boxville","Benson","Mesa",
- "RC Goblin","Hotring Racer A","Hotring Racer B","Bloodring Banger","Rancher","Super GT","Elegant",
- "Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain","Nebula","Majestic",
- "Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune","Cadrona",
- "FBI Truck","Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight",
- "Streak","Vortex","Vincent","Bullet","Clover","Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob",
- "Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A","Monster B","Uranus",
- "Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight",
- "Trailer","Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford",
- "BF-400","Newsvan","Tug","Trailer A","Emperor","Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C",
- "Andromada","Dodo","RC Cam","Launch","Viatura (LSPD)","Viatura (SFPD)","Viatura (LVPD)","Police Ranger",
- "Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
- "Stair Trailer","Boxville","Farm Plow","Utility Trailer"
- };
- //Sistema de gasolina by Drakins
- new gVehicleGas[MAX_VEHICLES];
- new Float:gVehicleSpeed[3];
- new gConsumedGas[MAX_PLAYERS];
- new Text: g_tdMain;
- new db;
- new gstring[1024];
- //Main
- main()
- print("\n| (main) LS-RPG Script by Pedro Miranda, inicializado!\n");
- //Callbacks
- public OnGameModeInit()
- {
- new tick = tickcount();
- db = mysql_connect(DB_HOST, DB_USER, DB_NAME, DB_PASS);
- if(mysql_ping(db) < 1)
- return printf("\n| Falha na conexão com o banco de dados %s, o script não pôde ser inicializado.", DB_NAME), SendRconCommand("exit");
- SendRconCommand("mapname Los Santos");
- SetGameModeText("LS-RPG v0.1 (Rev. 3)");
- SendRconCommand("hostname [BR-PT] Los Santos RPG v0.1 (Rev. 3)");
- ShowNameTags(1);
- UsePlayerPedAnims();
- AllowInteriorWeapons(1);
- EnableStuntBonusForAll(0);
- DisableInteriorEnterExits();
- ManualVehicleEngineAndLights();
- g_tdMain = TextDrawCreate(3, 429, "Los Santos RPG ls-rpg.com 00/00/0000 - 00:00:00");
- TextDrawSetOutline(g_tdMain, 1);
- TextDrawFont(g_tdMain, 2);
- TextDrawLetterSize(g_tdMain, 0.389999, 1.7);
- TextDrawUseBox(g_tdMain, 1);
- TextDrawBoxColor(g_tdMain, 80);
- TextDrawTextSize(g_tdMain, 650, 0);
- SetTimer("RandomMessages", 90000, 1);
- SetTimer("Player_Updates", 1000, 1);
- SetTimer("UpdateTime", 1000, 1);
- printf("\n| Script: %s by Pedro Miranda", SERVER_NAME);
- printf("| Versão: %s", SERVER_VERSION);
- print ("| Status: Dados importados, aguardando main()...");
- printf("\n[DEBUG] OnGameModeInit() - Tempo: %i ms.", (tickcount() - tick));
- return 1;
- }
- public OnGameModeExit()
- {
- new tick = tickcount();
- mysql_close(db);
- printf("[DEBUG] OnGameModeExit() - Tempo: %i ms.", (tickcount() - tick));
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new tick = tickcount();
- GameTextForPlayer(playerid, "~w~Los Santos ~b~RPG", 5000, 1);
- gPlayerInfo[playerid][gPlayerLogged] = false;
- gPlayerInfo[playerid][gPlayerLoginTries] = 0;
- GetPlayerName(playerid, gPlayerInfo[playerid][gPlayerName], 24);
- GetPlayerIp(playerid, gPlayerInfo[playerid][gPlayerIP], 16);
- //Checando ban
- mysql_format(db, gstring,
- "SELECT * FROM `ban_info` WHERE `ban_name` = '%s' OR `ban_ip` = '%s'",
- gPlayerInfo[playerid][gPlayerName],
- gPlayerInfo[playerid][gPlayerIP]
- );
- mysql_function_query(db, gstring, true, "r@Player_BanCheck", "i", playerid);
- printf("[DEBUG] OnPlayerConnect(%i) - Tempo: %i ms.", playerid, (tickcount() - tick));
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(gPlayerInfo[playerid][gPlayerLogged])
- {
- new tick = tickcount();
- TextDrawHideForPlayer(playerid, gPlayerInfo[playerid][gPlayerStatsTD]);
- TextDrawHideForPlayer(playerid, gPlayerInfo[playerid][gPlayerNetStatsTD]);
- TextDrawHideForPlayer(playerid, g_tdMain);
- KillTimer(gPlayerInfo[playerid][gPlayerUpTimer]);
- gPlayerInfo[playerid][gPlayerLeaveReason] = reason;
- gPlayerInfo[playerid][gPlayerInterior] = GetPlayerInterior(playerid);
- gPlayerInfo[playerid][gPlayerWorld] = GetPlayerVirtualWorld(playerid);
- GetPlayerPos(playerid, gPlayerInfo[playerid][gPlayerPos][0], gPlayerInfo[playerid][gPlayerPos][1], gPlayerInfo[playerid][gPlayerPos][2]);
- GetPlayerFacingAngle(playerid, gPlayerInfo[playerid][gPlayerPos][3]);
- GetPlayerHealth(playerid, gPlayerInfo[playerid][gPlayerHealth]);
- GetPlayerArmour(playerid, gPlayerInfo[playerid][gPlayerArmour]);
- Player_Save(playerid);
- printf("[DEBUG] OnPlayerDisconnect(%i, %i) - Tempo: %i ms.", playerid, reason, (tickcount() - tick));
- }
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- new tick = tickcount();
- new rand = random(sizeof cam_Info);
- SetPlayerVirtualWorld(playerid, 0);
- SetPlayerInterior(playerid, 0);
- SetPlayerCameraPos(playerid, cam_Info[rand][cam_Pos][0], cam_Info[rand][cam_Pos][1], cam_Info[rand][cam_Pos][2]);
- SetPlayerCameraLookAt(playerid, cam_Info[rand][cam_LookAt][0], cam_Info[rand][cam_LookAt][1], cam_Info[rand][cam_LookAt][2]);
- printf("[DEBUG] OnPlayerRequestClass(%i, %i) - Tempo: %i ms.", playerid, classid, (tickcount() - tick));
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- if(gPlayerInfo[playerid][gPlayerLogged])
- {
- TextDrawHideForPlayer(playerid, g_tdMain);
- TextDrawHideForPlayer(playerid, gPlayerInfo[playerid][gPlayerStatsTD]);
- TextDrawHideForPlayer(playerid, gPlayerInfo[playerid][gPlayerNetStatsTD]);
- }
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- new tick = tickcount();
- if(!gPlayerInfo[playerid][gPlayerLogged])
- {
- SendClientMessage(playerid, 0xFFFFFFFF, " ** Você foi kickado, motivo: {1E90FF}Spawn antes do login.");
- Kick(playerid);
- }
- Player_Spawn(playerid);
- TextDrawShowForPlayer(playerid, gPlayerInfo[playerid][gPlayerStatsTD]);
- TextDrawShowForPlayer(playerid, gPlayerInfo[playerid][gPlayerNetStatsTD]);
- TextDrawShowForPlayer(playerid, g_tdMain);
- printf("[DEBUG] OnPlayerSpawn(%i) - Tempo: %i ms.", playerid, (tickcount() - tick));
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- new tick = tickcount();
- format(gstring, sizeof gstring,
- "%s: %s",
- gPlayerInfo[playerid][gPlayerName], text
- );
- ProxDetector(20.0, playerid, 0xFFFFFFAA, gstring);
- SetPlayerChatBubble(playerid, text, 0xFFFFFFAA, 15.0, 5000);
- printf("[DEBUG] OnPlayerText(%i, %s) - Tempo: %i ms.", playerid, text, (tickcount() - tick));
- return 0;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- new tick = tickcount();
- switch(newstate)
- {
- case PLAYER_STATE_DRIVER: TextDrawShowForPlayer(playerid, gPlayerInfo[playerid][gPlayerSpeedoTD]);
- case PLAYER_STATE_ONFOOT:
- {
- if(oldstate == PLAYER_STATE_DRIVER)
- {
- TextDrawHideForPlayer(playerid, gPlayerInfo[playerid][gPlayerSpeedoTD]);
- }
- }
- }
- printf("[DEBUG] OnPlayerStateChange(%i, %i, %i) - Tempo: %i ms.", playerid, newstate, oldstate, (tickcount() - tick));
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- new tick = tickcount();
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Key: {1E90FF}%i", newkeys);
- new engine, lights, alarm, doors, bonnet, boot, objective;
- switch(newkeys)
- {
- case 4: //Alt - Motor (Engine)
- {
- if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- if(gVehicleGas[vehicleid] > 0)
- {
- GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
- format(gstring, sizeof gstring,
- " ** %s %s a chave e %s o motor de seu veículo.",
- gPlayerInfo[playerid][gPlayerName],
- (engine) ? ("gira") : ("engata"),
- (engine) ? ("desliga") : ("liga")
- );
- ProxDetector(5.0, playerid, 0x828282AA, gstring);
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Motor %s.", (engine) ? ("{E31919}desligado") : ("{32CD32}ligado"));
- SetVehicleParamsEx(vehicleid, (engine) ? (VEHICLE_PARAMS_OFF) : (VEHICLE_PARAMS_ON), lights, alarm, doors, bonnet, boot, objective);
- }
- }
- }
- case 132: //CTRL Direito - Capô (Bonnet)
- {
- if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
- format(gstring, sizeof gstring,
- " ** %s %s o capô de seu veículo.",
- gPlayerInfo[playerid][gPlayerName],
- (bonnet) ? ("fecha") : ("abre")
- );
- ProxDetector(5.0, playerid, 0x828282AA, gstring);
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Capô %s.", (bonnet) ? ("{E31919}fechado") : ("{32CD32}aberto"));
- SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, (bonnet) ? (VEHICLE_PARAMS_OFF) : (VEHICLE_PARAMS_ON), boot, objective);
- }
- }
- case 1: //CTRL Esquerdo - Porta malas (Boot)
- {
- if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
- format(gstring, sizeof gstring,
- " ** %s %s o porta-malas de seu veículo.",
- gPlayerInfo[playerid][gPlayerName],
- (boot) ? ("fecha") : ("abre")
- );
- ProxDetector(5.0, playerid, 0x828282AA, gstring);
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Porta-malas %s.", (boot) ? ("{E31919}fechado") : ("{32CD32}aberto"));
- SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, (boot) ? (VEHICLE_PARAMS_OFF) : (VEHICLE_PARAMS_ON), objective);
- }
- }
- case 131072: //N - Farol (Lights)
- {
- if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
- format(gstring, sizeof gstring,
- " ** %s %s o farol de seu veículo.",
- gPlayerInfo[playerid][gPlayerName],
- (lights) ? ("apaga") : ("acende")
- );
- ProxDetector(5.0, playerid, 0x828282AA, gstring);
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Farol %s.", (lights) ? ("{E31919}apagado") : ("{32CD32}aceso"));
- SetVehicleParamsEx(vehicleid, engine, (lights) ? (VEHICLE_PARAMS_OFF) : (VEHICLE_PARAMS_ON), alarm, doors, bonnet, boot, objective);
- }
- }
- }
- printf("[DEBUG] OnPlayerKeyStateChange(%i, %i, %i) - Tempo: %i ms.", playerid, newkeys, oldkeys, (tickcount() - tick));
- return 1;
- }
- enum
- {
- //Registro
- DIALOG_REGISTER,
- DIALOG_PASSWORD_CONFIRMATION,
- DIALOG_PASSWORD_TIP,
- DIALOG_SECRET_ASK,
- DIALOG_SECRET_ANSWER,
- DIALOG_GENDER_SELECTION,
- DIALOG_BIRTH,
- DIALOG_LOGIN
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- new tick = tickcount();
- new buffer[129];
- new string[300];
- switch(dialogid)
- {
- //Registro
- case DIALOG_REGISTER:
- {
- if(!response)
- {
- SendClientMessageFormatted(playerid, 0x1E90FFFF, "(!){FFFFFF} Muito bem {1E90FF}%s{FFFFFF}, você pode registrar-se posteriormente pelo {1E90FF}/registro.");
- }
- else
- {
- if(1 < (strlen(inputtext)) > 32)
- {
- //Senha inválida
- format(gstring, sizeof gstring,
- "{FFFFFF}Olá {1E90FF}%s{FFFFFF}\nÉ um prazer recebê-lo no {1E90FF}%s{FFFFFF}\nParece que você ainda não é registrado em nosso servidor\nDigite uma senha abaixo para iniciar seu registro.\n\n{E31919}ERRO: Sua senha deve conter entre 1 e 32 caracteres.",
- gPlayerInfo[playerid][gPlayerName],
- SERVER_NAME
- );
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registrando...", gstring, "Prosseguir", "Cancelar");
- }
- else
- {
- WP_Hash(gPlayerInfo[playerid][gPlayerPassword], 129, inputtext);
- format(gstring, sizeof gstring,
- "{FFFFFF}Muito bem {1E90FF}%s{FFFFFF}\nAgora, digite sua senha abaixo novamente.\nPara termos certeza de que a senha foi digitada corretamente.",
- gPlayerInfo[playerid][gPlayerName]
- );
- ShowPlayerDialog(playerid, DIALOG_PASSWORD_CONFIRMATION, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registrando...", gstring, "Prosseguir", "Voltar");
- }
- }
- }
- case DIALOG_PASSWORD_CONFIRMATION:
- {
- if(!response)
- {
- format(gstring, sizeof gstring,
- "{FFFFFF}Olá {1E90FF}%s{FFFFFF}\nÉ um prazer recebê-lo no {1E90FF}%s{FFFFFF}\nParece que você ainda não é registrado em nosso servidor\nDigite uma senha abaixo para iniciar seu registro.",
- gPlayerInfo[playerid][gPlayerName],
- SERVER_NAME
- );
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registrando...", gstring, "Prosseguir", "Cancelar");
- }
- else
- {
- WP_Hash(buffer, 129, inputtext);
- if(strcmp(buffer, gPlayerInfo[playerid][gPlayerPassword], false, 129))
- {
- //Senha incorreta
- format(gstring, sizeof gstring,
- "{FFFFFF}Muito bem {1E90FF}%s{FFFFFFF}\nAgora, digite sua senha abaixo novamente.\nPara termos certeza de que a senha foi digitada corretamente.\n\n{E31919}ERRO: Senha e confirmação diferem, digite sua senha corretamente ou troque-a.",
- gPlayerInfo[playerid][gPlayerName]
- );
- ShowPlayerDialog(playerid, DIALOG_PASSWORD_CONFIRMATION, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registrando...", gstring, "Prosseguir", "Voltar");
- }
- else
- {
- format(gstring, sizeof gstring,
- "{FFFFFF}Muito bem {1E90FF}%s{FFFFFF}\nAgora, digite abaixo uma dica de senha.\nEla poderá lhe servir caso você esqueça sua senha.",
- gPlayerInfo[playerid][gPlayerName]
- );
- ShowPlayerDialog(playerid, DIALOG_PASSWORD_TIP, DIALOG_STYLE_INPUT, "{FFFFFF}Registrando...", gstring, "Prosseguir", "Cancelar");
- }
- }
- }
- case DIALOG_PASSWORD_TIP:
- {
- if(!response)
- {
- SendClientMessageFormatted(playerid, 0x1E90FFFF, "(!){FFFFFF} Muito bem {1E90FF}%s{FFFFFF}, você pode registrar-se posteriormente pelo {1E90FF}/registro.");
- }
- else
- {
- if(1 < (strlen(inputtext)) > 64)
- {
- format(gstring, sizeof gstring,
- "{FFFFFF}Muito bem {1E90FF}%s{FFFFFF}\nAgora, digite abaixo uma dica de senha.\nEla poderá lhe servir caso você esqueça sua senha.\n\n{E31919}ERRO: Sua dica de senha deve conter entre 1 e 64 caracteres.",
- gPlayerInfo[playerid][gPlayerName]
- );
- ShowPlayerDialog(playerid, DIALOG_PASSWORD_TIP, DIALOG_STYLE_INPUT, "{FFFFFF}Registrando...", gstring, "Prosseguir", "Cancelar");
- }
- else
- {
- format(gPlayerInfo[playerid][gPlayerPasswordTip], 129, inputtext, 0);
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Muito bem {1E90FF}%s{FFFFFF}, Você agora precisa escolher uma das seguintes perguntas abaixo.", gPlayerInfo[playerid][gPlayerName]);
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Em seguida, você fornecerá a resposta dessa pergunta a nós da equipe {1E90FF}%s.", SERVER_NAME);
- SendClientMessage (playerid, 0xFFFFFFFF, " ** Em caso de perda de senha, você poderá responder futuramente esta pergunta para recuperá-la.");
- for(new i = 0; i < sizeof gSecretAsks; ++i)
- {
- strcat(string, gSecretAsks[i]);
- }
- ShowPlayerDialog(playerid, DIALOG_SECRET_ASK, DIALOG_STYLE_LIST, "{FFFFFF}Registrando...", string, "Responder", "Cancelar");
- }
- }
- }
- case DIALOG_SECRET_ASK:
- {
- if(!response)
- {
- SendClientMessageFormatted(playerid, 0x1E90FFFF, "(!){FFFFFF} Muito bem {1E90FF}%s{FFFFFF}, você pode registrar-se posteriormente pelo {1E90FF}/registro.");
- }
- else
- {
- format(gPlayerInfo[playerid][gPlayerSecretAsk], 64, gSecretAsks[listitem], 0);
- format(gstring, sizeof string,
- "{FFFFFF}Muito bem {1E90FF}%s{FFFFFF}\nAgora digite abaixo a resposta de sua pergunta secreta:\n{1E90FF}%s",
- gPlayerInfo[playerid][gPlayerName],
- gPlayerInfo[playerid][gPlayerSecretAsk]
- );
- ShowPlayerDialog(playerid, DIALOG_SECRET_ANSWER, DIALOG_STYLE_INPUT, "{FFFFFF}Registrando...", gstring, "Prosseguir", "Voltar");
- }
- }
- case DIALOG_SECRET_ANSWER:
- {
- if(!response)
- {
- for(new i = 0; i < sizeof gSecretAsks; ++i)
- {
- strcat(string, gSecretAsks[i]);
- }
- ShowPlayerDialog(playerid, DIALOG_SECRET_ASK, DIALOG_STYLE_LIST, "{FFFFFF}Registrando...", gstring, "Responder", "Cancelar");
- }
- else
- {
- format(gPlayerInfo[playerid][gPlayerSecretAnswer], 64, inputtext, 0);
- ClearChat(playerid, 10);
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Certo {1E90FF}%s{FFFFFF}, chegamos a uma nova parte de seu registro.", gPlayerInfo[playerid][gPlayerName]);
- SendClientMessage (playerid, 0xFFFFFFFF, " ** Agora lhe pediremos algumas informações pessoais, feito isso, seu registro estará concluído.");
- format(gstring, sizeof gstring,
- "{FFFFFF}Muito bem {1E90FF}%s{FFFFFF}\nVamos começar com a segunda e última etapa do seu registro: {1E90FF}Informações pessoais.\n{FFFFFF}Responda: Você é {32CD32}Homem{FFFFFF} ou {FF00FF}Mulher{FFFFFF}?",
- gPlayerInfo[playerid][gPlayerName]
- );
- ShowPlayerDialog(playerid, DIALOG_GENDER_SELECTION, DIALOG_STYLE_MSGBOX, "{FFFFFF}Registrando...", gstring, "Homem", "Mulher");
- }
- }
- case DIALOG_GENDER_SELECTION:
- {
- gPlayerInfo[playerid][gPlayerGender] = (response) ? (1) : (2);
- gPlayerInfo[playerid][gPlayerSkin] = (response) ? (23) : (12);
- //Última etapa
- format(gstring, sizeof gstring,
- "{FFFFFF}Muito bem {1E90FF}%s{FFFFFF}\nChegamos ao passo final de seu registro\nDigite abaixo sua data de nascimento.\nUtilize o formato {1E90FF}dd/mm/aaaa{FFFFFF} para evitar erros.",
- gPlayerInfo[playerid][gPlayerName]
- );
- ShowPlayerDialog(playerid, DIALOG_BIRTH, DIALOG_STYLE_INPUT, "{FFFFFF}Registrando...", gstring, "Registrar", "Cancelar");
- }
- case DIALOG_BIRTH:
- {
- if(!response)
- {
- SendClientMessageFormatted(playerid, 0x1E90FFFF, "(!){FFFFFF} Muito bem {1E90FF}%s{FFFFFF}, você pode registrar-se posteriormente pelo {1E90FF}/registro.");
- }
- else
- {
- //Créditos à equipe que criou o Godfather pelo código abaixo
- new year, month,day;
- getdate(year, month, day);
- new DateInfo[3][20];
- split(inputtext, DateInfo, '/');
- if(year - strval(DateInfo[2]) > 100 || strval(DateInfo[2]) < 1 || strval(DateInfo[2]) >= year)
- {
- format(gstring, sizeof gstring,
- "{FFFFFF}Muito bem {1E90FF}%s{FFFFFF}\nChegamos ao passo final de seu registro\nDigite abaixo sua data de nascimento.\nUtilize o formate {1E90FF}dd/mm/aaaa{FFFFFF} para evitar erros.\n\n{E31919}ERRO: Data em formato incorreto.",
- gPlayerInfo[playerid][gPlayerName]
- );
- ShowPlayerDialog(playerid, DIALOG_BIRTH, DIALOG_STYLE_INPUT, "{FFFFFF}Registrando...", gstring, "Registrar", "Cancelar");
- }
- else
- {
- new check = year - strval(DateInfo[2]);
- if(check == year)
- {
- format(gstring, sizeof gstring,
- "{FFFFFF}Muito bem {1E90FF}%s{FFFFFF}\nChegamos ao passo final de seu registro\nDigite abaixo sua data de nascimento.\nUtilize o formate {1E90FF}dd/mm/aaaa{FFFFFF} para evitar erros.\n\n{E31919}ERRO: Data em formato incorreto.",
- gPlayerInfo[playerid][gPlayerName]
- );
- ShowPlayerDialog(playerid, DIALOG_BIRTH, DIALOG_STYLE_INPUT, "{FFFFFF}Registrando...", gstring, "Registrar", "Cancelar");
- }
- else
- {
- if(strval(DateInfo[1]) > month)
- {
- check -= 1;
- }
- else if(strval(DateInfo[1]) == month && strval(DateInfo[0]) > day)
- {
- check -= 1;
- }
- //Fim do código
- gPlayerInfo[playerid][gPlayerBirth][0] = strval(DateInfo[0]);
- gPlayerInfo[playerid][gPlayerBirth][1] = strval(DateInfo[1]);
- gPlayerInfo[playerid][gPlayerBirth][2] = strval(DateInfo[2]);
- gPlayerInfo[playerid][gPlayerAge] = check;
- //Inserindo...
- mysql_format(db, gstring,
- "INSERT INTO `player_info` (`name`,`password`,`password_tip`,`secret_ask`,`secret_answer`,`gender`,`day`,`month`,`year`,`age`,`skin`) VALUES ('%s','%s','%s','%s','%s',%i,%i,%i,%i,%i,%i)",
- gPlayerInfo[playerid][gPlayerName],
- gPlayerInfo[playerid][gPlayerPassword],
- gPlayerInfo[playerid][gPlayerPasswordTip],
- gPlayerInfo[playerid][gPlayerSecretAsk],
- gPlayerInfo[playerid][gPlayerSecretAnswer],
- gPlayerInfo[playerid][gPlayerGender],
- gPlayerInfo[playerid][gPlayerBirth][0],
- gPlayerInfo[playerid][gPlayerBirth][1],
- gPlayerInfo[playerid][gPlayerBirth][2],
- gPlayerInfo[playerid][gPlayerAge],
- gPlayerInfo[playerid][gPlayerSkin]
- );
- mysql_function_query(db, gstring, false, "r@Player_Register", "i", playerid);
- }
- }
- }
- }
- case DIALOG_LOGIN:
- {
- if(!response)
- {
- SendClientMessageFormatted(playerid, 0x1E90FFFF, "(!){FFFFFF} Muito bem {1E90FF}%s{FFFFFF}, você pode registrar-se posteriormente pelo {1E90FF}/login.");
- }
- else
- {
- WP_Hash(buffer, 129, inputtext);
- Player_Login(playerid, buffer);
- }
- }
- }
- printf("[DEBUG] OnDialogResponse(%i, %i, %i, %i, %s) - Tempo: %i ms.", playerid, dialogid, response, listitem, inputtext, (tickcount() - tick));
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- //Gasolina by DraKiNs
- if(IsPlayerInAnyVehicle(playerid))
- {
- new carid = GetPlayerVehicleID(playerid);
- new engine, lights, alarm, doors, bonnet, boot, objective;
- GetVehicleParamsEx(carid, engine, lights, alarm, doors, bonnet, boot, objective);
- if(engine) //Só consumirá gasolina com motor ligado (by Pedro Miranda)
- {
- GetVehicleVelocity(carid, gVehicleSpeed[0], gVehicleSpeed[1], gVehicleSpeed[2]);
- if(floatround(((floatsqroot(((gVehicleSpeed[0] * gVehicleSpeed[0]) + (gVehicleSpeed[1] * gVehicleSpeed[1]) + (gVehicleSpeed[2] * gVehicleSpeed[2]))) * (170.0))) * 1) > 5)
- {
- if(gVehicleGas[carid] == 0)
- {
- SetVehicleParamsEx(carid, VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
- SendClientMessage(playerid, 0xE31919FF, " ** A Gasolina de seu carro acabou, chame um guincho, arraste o carro até um posto, ou compre um galão na 24/7 mais próxima.");
- }
- if(gVehicleGas[carid] > 0)
- {
- gConsumedGas[playerid]+=1;
- if(gConsumedGas[playerid] >= (45 * 13))
- {
- gVehicleGas[carid]--;
- gConsumedGas[playerid] = 0;
- }
- }
- }
- }
- }
- //Fim sistema de gasolina
- //Sem debug pra não poluir visualmente o console
- return 1;
- }
- public OnQueryError(errorid, error[], callback[], query[], connectionHandle)
- {
- return printf("\n\nQuery Error: %s - Query ( %s )\n\n", error, query);
- }
- //Local functions
- #define function%0(%1) forward%0(%1);public%0(%1)
- //Sistema de bans
- new adminname[24];
- function Player_Ban(playerid, adminid, reason[])
- {
- if(adminid == INVALID_PLAYER_ID) adminname = "{1E90FF}Los Santos RPG";
- else GetPlayerName(adminid, adminname, sizeof adminname);
- new day, month, year, hour, minute, second;
- gettime(hour, minute, second);
- getdate(year, month, day);
- mysql_format(db, gstring,
- "INSERT INTO `ban_info` (`ban_name`,`ban_admin`,`ban_reason`,`ban_date`,`ban_ip`) VALUES ('%s','%s','%s','%02i/%02i/%04i - %02i:%02i:%02i','%s')",
- gPlayerInfo[playerid][gPlayerName],
- adminname,
- reason,
- day, month, year,
- hour, minute, second,
- gPlayerInfo[playerid][gPlayerIP]
- );
- mysql_function_query(db, gstring, false, "r@Player_Ban", "is", playerid, reason);
- return 1;
- }
- function r@Player_Ban(playerid, reason[])
- {
- format(gstring, sizeof gstring,
- "AdmCmd:{FFFFFF} O jogador {1E90FF}%s{FFFFFF} foi banido pelo administrador {1E90FF}%s{FFFFFF}, motivo: {1E90FF}%s",
- gPlayerInfo[playerid][gPlayerName],
- adminname,
- reason
- );
- SendClientMessageToAll(0x1E90FFFF, gstring);
- return Kick(playerid);
- }
- function r@Player_BanCheck(playerid)
- {
- new rows, fields;
- cache_get_data(rows, fields, db);
- if(rows)
- {
- //Banido
- enum ban_info
- {
- name[24],
- admin[24],
- reason[64],
- date[30],
- ip[16]
- }
- new ban_record[ban_info];
- cache_get_field_content(0, "ban_name", ban_record[name], db);
- cache_get_field_content(0, "ban_admin", ban_record[admin], db);
- cache_get_field_content(0, "ban_reason", ban_record[reason], db);
- cache_get_field_content(0, "ban_date", ban_record[date], db);
- cache_get_field_content(0, "ban_ip", ban_record[ip], db);
- SendClientMessageFormatted(playerid, 0x1E90FFFF, "(!){FFFFFF} Você está banido do {1E90FF}%s.", SERVER_NAME);
- SendClientMessageFormatted(playerid, 0x1E90FFFF, "(!){FFFFFF} Seguem abaixo as informações do seu banimento, {1E90FF}%s.", gPlayerInfo[playerid][gPlayerName]);
- SendClientMessageFormatted(playerid, 0x1E90FFFF, "(!){FFFFFF} Conta: {1E90FF}%s.", ban_record[name]);
- SendClientMessageFormatted(playerid, 0x1E90FFFF, "(!){FFFFFF} Administrador: {1E90FF}%s.", ban_record[admin]);
- SendClientMessageFormatted(playerid, 0x1E90FFFF, "(!){FFFFFF} Motivo: {1E90FF}%s.", ban_record[reason]);
- SendClientMessageFormatted(playerid, 0x1E90FFFF, "(!){FFFFFF} Data/Hora: {1E90FF}%s.", ban_record[date]);
- SendClientMessageFormatted(playerid, 0x1E90FFFF, "(!){FFFFFF} IP: {1E90FF}%s.", ban_record[ip]);
- return 1;
- }
- //Livre, checando registro
- mysql_format(db, gstring,
- "SELECT * FROM `player_info` WHERE `name` = '%s' LIMIT 1",
- gPlayerInfo[playerid][gPlayerName]
- );
- mysql_function_query(db, gstring, true, "r@Player_Connect", "i", playerid);
- return 1;
- }
- //Sistema de registro
- function r@Player_Connect(playerid)
- {
- new rows, fields;
- cache_get_data(rows, fields, db);
- ClearChat(playerid, 10);
- if(!rows)
- {
- //Não registrado
- gPlayerInfo[playerid][gPlayerRegistered] = false;
- format(gstring, sizeof gstring,
- "{FFFFFF}Olá {1E90FF}%s{FFFFFF}\nÉ um prazer recebê-lo no {1E90FF}%s{FFFFFF}\nParece que você ainda não é registrado em nosso servidor\nDigite uma senha abaixo para iniciar seu registro.",
- gPlayerInfo[playerid][gPlayerName],
- SERVER_NAME
- );
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registrando...", gstring, "Prosseguir", "Cancelar");
- return 1;
- }
- //Registrado
- gPlayerInfo[playerid][gPlayerRegistered] = true;
- format(gstring, sizeof gstring,
- "{FFFFFF}Olá {1E90FF}%s{FFFFFF}\nÉ um prazer recebê-lo novamente no {1E90FF}%s{FFFFFF}\nDigite sua senha abaixo para fazer login no servidor.",
- gPlayerInfo[playerid][gPlayerName],
- SERVER_NAME
- );
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Login", gstring, "Login", "Cancelar");
- return 1;
- }
- function r@Player_Register(playerid)
- {
- mysql_store_result(db);
- gPlayerInfo[playerid][gPlayerID] = mysql_insert_id(db);
- mysql_free_result(db);
- gPlayerInfo[playerid][gPlayerRegistered] = true;
- ClearChat(playerid, 30);
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Parabéns {1E90FF}%s{FFFFFF}, você acaba de se registrar no {1E90FF}%s.", gPlayerInfo[playerid][gPlayerName], SERVER_NAME);
- SendClientMessage (playerid, 0xFFFFFFFF, " ** Aqui vão seus dados pessoais registrados...");
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Sexo: %s.", (gPlayerInfo[playerid][gPlayerGender] == 1) ? ("{32CD32}Masculino") : ("{FF00FF}Feminino"));
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Data de nascimento: {1E90FF}%02i/%02i/%02i{FFFFFF}, Idade: {1E90FF}%i{FFFFFF} anos.", gPlayerInfo[playerid][gPlayerBirth][0], gPlayerInfo[playerid][gPlayerBirth][1], gPlayerInfo[playerid][gPlayerBirth][2], gPlayerInfo[playerid][gPlayerAge]);
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Você acaba de receber seu ID interno: {1E90FF}%i.", gPlayerInfo[playerid][gPlayerID]);
- SendClientMessage (playerid, 0xFFFFFFFF, " ** Você acaba de fazer login automaticamente no servidor pelo seu registro.");
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Aguarde enquanto você é redirecionado ao incrível mundo de {1E90FF}%s{FFFFFF}...", SERVER_NAME);
- Player_Login(playerid, gPlayerInfo[playerid][gPlayerPassword]);
- return 1;
- }
- function Player_Login(playerid, password[])
- {
- mysql_format(db, gstring,
- "SELECT * FROM `player_info` WHERE `name` = '%s' AND `password` = '%s'",
- gPlayerInfo[playerid][gPlayerName],
- password
- );
- mysql_function_query(db, gstring, true, "r@Player_Login", "i", playerid);
- return 1;
- }
- function r@Player_Login(playerid)
- {
- new rows, fields;
- cache_get_data(rows, fields, db);
- if(!rows)
- {
- //Senha incorreta
- gPlayerInfo[playerid][gPlayerLoginTries] ++;
- if(gPlayerInfo[playerid][gPlayerLoginTries] == 5)
- return Kick(playerid);
- format(gstring, sizeof gstring,
- "{FFFFFF}Caro {1E90FF}%s{FFFFFF}\nSenha incorreta.\nDigite sua verdadeira senha para fazer login.\n\nCaso precise de ajuda para recuperar sua senha, podes utilizar os seguintes comandos:\n{E31919}/dicasenha\n/pergunta",
- gPlayerInfo[playerid][gPlayerName]
- );
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Login", gstring, "Login", "Cancelar");
- return 1;
- }
- //Login
- gPlayerInfo[playerid][gPlayerLogged] = true;
- //Carregando dados
- //Registro
- cache_get_field_content(0, "password", gPlayerInfo[playerid][gPlayerPassword], db);
- cache_get_field_content(0, "password_tip", gPlayerInfo[playerid][gPlayerPasswordTip], db);
- cache_get_field_content(0, "secret_ask", gPlayerInfo[playerid][gPlayerSecretAsk], db);
- cache_get_field_content(0, "secret_answer", gPlayerInfo[playerid][gPlayerSecretAnswer], db);
- //Informações pessoais
- cache_get_field_content(0, "gender", gstring, db); gPlayerInfo[playerid][gPlayerGender] = strval(gstring);
- cache_get_field_content(0, "day", gstring, db); gPlayerInfo[playerid][gPlayerBirth][0] = strval(gstring);
- cache_get_field_content(0, "month", gstring, db); gPlayerInfo[playerid][gPlayerBirth][1] = strval(gstring);
- cache_get_field_content(0, "year", gstring, db); gPlayerInfo[playerid][gPlayerBirth][2] = strval(gstring);
- cache_get_field_content(0, "skin", gstring, db); gPlayerInfo[playerid][gPlayerSkin] = strval(gstring);
- //Sistema de nível
- cache_get_field_content(0, "exp", gstring, db); gPlayerInfo[playerid][gPlayerExp] = floatstr(gstring);
- cache_get_field_content(0, "level", gstring, db); gPlayerInfo[playerid][gPlayerLevel] = strval(gstring);
- //Salvar posição após crash
- cache_get_field_content(0, "leave_reason", gstring, db); gPlayerInfo[playerid][gPlayerLeaveReason] = strval(gstring);
- cache_get_field_content(0, "interior", gstring, db); gPlayerInfo[playerid][gPlayerInterior] = strval(gstring);
- cache_get_field_content(0, "world", gstring, db); gPlayerInfo[playerid][gPlayerWorld] = strval(gstring);
- cache_get_field_content(0, "x", gstring, db); gPlayerInfo[playerid][gPlayerPos][0] = floatstr(gstring);
- cache_get_field_content(0, "y", gstring, db); gPlayerInfo[playerid][gPlayerPos][1] = floatstr(gstring);
- cache_get_field_content(0, "z", gstring, db); gPlayerInfo[playerid][gPlayerPos][2] = floatstr(gstring);
- cache_get_field_content(0, "angle", gstring, db); gPlayerInfo[playerid][gPlayerPos][3] = floatstr(gstring);
- cache_get_field_content(0, "health", gstring, db); gPlayerInfo[playerid][gPlayerHealth] = floatstr(gstring);
- cache_get_field_content(0, "armour", gstring, db); gPlayerInfo[playerid][gPlayerArmour] = floatstr(gstring);
- //TextDraws
- Player_TextDrawCreate(playerid);
- TextDrawShowForPlayer(playerid, gPlayerInfo[playerid][gPlayerStatsTD]);
- TextDrawShowForPlayer(playerid, gPlayerInfo[playerid][gPlayerNetStatsTD]);
- TextDrawShowForPlayer(playerid, g_tdMain);
- //Timers
- gPlayerInfo[playerid][gPlayerUpTimer] = SetTimerEx("Player_LevelUp", 60000, 1, "i", playerid);
- //Spawn...
- SetSpawnInfo(playerid, 0, gPlayerInfo[playerid][gPlayerSkin], gDefaultSpawn[0], gDefaultSpawn[1], gDefaultSpawn[2], gDefaultSpawn[3], 0, 0, 0, 0, 0, 0);
- SpawnPlayer(playerid);
- SendClientMessageFormatted(playerid, 0xFFFFFFFF, " ** Bem vindo {1E90FF}%s.", gPlayerInfo[playerid][gPlayerName]);
- return 1;
- }
- function Player_Save(playerid)
- {
- mysql_format(db, gstring,
- "UPDATE `player_info` SET skin = %d, exp = %.1f, level = %d, leave_reason = %d, interior = %d, world = %d, x = %.1f, y = %.1f, z = %.1f, angle = %.1f, health = %.1f, armour = %.1f WHERE `name` = '%s'",
- GetPlayerSkin(playerid), gPlayerInfo[playerid][gPlayerExp], gPlayerInfo[playerid][gPlayerLevel], gPlayerInfo[playerid][gPlayerLeaveReason], gPlayerInfo[playerid][gPlayerInterior], gPlayerInfo[playerid][gPlayerWorld], gPlayerInfo[playerid][gPlayerPos][0], gPlayerInfo[playerid][gPlayerPos][1], gPlayerInfo[playerid][gPlayerPos][2], gPlayerInfo[playerid][gPlayerPos][3], gPlayerInfo[playerid][gPlayerHealth], gPlayerInfo[playerid][gPlayerArmour], gPlayerInfo[playerid][gPlayerName]
- );
- mysql_function_query(db, gstring, false, "r@Player_Save", "i", playerid);
- return 1;
- }
- function r@Player_Save(playerid)
- {
- return printf("\n[REGISTER SYSTEM]: Conta de %s salva.", gPlayerInfo[playerid][gPlayerName]);
- }
- function Player_Spawn(playerid)
- {
- if(gPlayerInfo[playerid][gPlayerLeaveReason] == 0)
- {
- SetPlayerVirtualWorld(playerid, gPlayerInfo[playerid][gPlayerWorld]);
- SetPlayerInterior(playerid, gPlayerInfo[playerid][gPlayerInterior]);
- SetPlayerPos(playerid, gPlayerInfo[playerid][gPlayerPos][0], gPlayerInfo[playerid][gPlayerPos][1], gPlayerInfo[playerid][gPlayerPos][2]);
- SetPlayerFacingAngle(playerid, gPlayerInfo[playerid][gPlayerPos][3]);
- SetPlayerHealth(playerid, gPlayerInfo[playerid][gPlayerHealth]);
- SetPlayerArmour(playerid, gPlayerInfo[playerid][gPlayerArmour]);
- SendClientMessage(playerid, 0xFFFFFFFF, " ** Você retornou ao ponto onde saiu por crash.");
- return 1;
- }
- return 1;
- }
- function Player_TextDrawCreate(playerid)
- {
- //Estatísticas
- gPlayerInfo[playerid][gPlayerStatsTD] = TextDrawCreate(401, 374, "Nome:~n~Experiencia:~n~Nivel:~n~Emprego:~n~Faccao:");
- TextDrawSetOutline(gPlayerInfo[playerid][gPlayerStatsTD], 1);
- TextDrawFont(gPlayerInfo[playerid][gPlayerStatsTD], 2);
- TextDrawLetterSize(gPlayerInfo[playerid][gPlayerStatsTD], 0.48, 1.1);
- TextDrawUseBox(gPlayerInfo[playerid][gPlayerStatsTD], 1);
- TextDrawBoxColor(gPlayerInfo[playerid][gPlayerStatsTD], 80);
- TextDrawTextSize(gPlayerInfo[playerid][gPlayerStatsTD], 637, 0);
- //Ping & FPS
- gPlayerInfo[playerid][gPlayerNetStatsTD] = TextDrawCreate(547, 23, "Ping:~n~FPS:");
- TextDrawSetOutline(gPlayerInfo[playerid][gPlayerNetStatsTD], 1);
- TextDrawFont(gPlayerInfo[playerid][gPlayerNetStatsTD], 2);
- TextDrawLetterSize(gPlayerInfo[playerid][gPlayerNetStatsTD], 0.35, 1.1);
- //Velocímetro
- gPlayerInfo[playerid][gPlayerSpeedoTD] = TextDrawCreate(401, 305, " Painel~n~Veiculo:~n~Motor:~n~Combustivel:~n~Lataria:~n~Velocidade:~n~GPS:");
- TextDrawSetOutline(gPlayerInfo[playerid][gPlayerSpeedoTD], 1);
- TextDrawFont(gPlayerInfo[playerid][gPlayerSpeedoTD], 2);
- TextDrawLetterSize(gPlayerInfo[playerid][gPlayerSpeedoTD], 0.4, 1);
- TextDrawUseBox(gPlayerInfo[playerid][gPlayerSpeedoTD], 1);
- TextDrawBoxColor(gPlayerInfo[playerid][gPlayerSpeedoTD], 80);
- TextDrawTextSize(gPlayerInfo[playerid][gPlayerSpeedoTD], 640, 0);
- return 1;
- }
- function Player_Updates()
- {
- new string[200];
- foreach(Player, i)
- {
- if(gPlayerInfo[i][gPlayerLogged])
- {
- //Ping & FPS
- format(string, sizeof(string),
- "~w~Ping: ~b~%i~n~~w~FPS: ~b~%i",
- GetPlayerPing(i), GetPlayerFPS(i)
- );
- TextDrawSetString(gPlayerInfo[i][gPlayerNetStatsTD], string);
- //Estatísticas
- format(string, sizeof(string),
- "~w~Nome: ~b~%s~n~~w~Experiencia: ~b~%.1f~n~~w~Nivel:~b~ %i~n~~w~Emprego:~b~ %s~n~~w~Faccao:~b~ %s",
- gPlayerInfo[i][gPlayerName], gPlayerInfo[i][gPlayerExp], gPlayerInfo[i][gPlayerLevel], ("Nenhum"), ("Nenhuma")
- );
- TextDrawSetString(gPlayerInfo[i][gPlayerStatsTD], string);
- //Velocímetro
- if(IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER)
- {
- new vehicleid = GetPlayerVehicleID(i);
- new Float: health; GetVehicleHealth(vehicleid, health);
- new zone[28]; GetPlayer2DZone(i, zone, sizeof zone);
- new model = GetVehicleModel(vehicleid);
- new engine, lights, alarm, doors, bonnet, boot, objective;
- GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
- format(string, sizeof string,
- " ~r~Painel~n~~w~Veiculo: ~b~%s~n~~w~Motor: %s~n~~w~Combustivel: ~b~%i ~g~L~n~~w~Lataria: ~b~%i ~g~%%~n~~w~Velocidade: ~b~%i ~g~KM/H~n~~w~GPS: ~b~%s",
- VehiclesName[model - 400],
- engine ? ("~g~Ligado") : ("~r~Desligado"),
- gVehicleGas[vehicleid],
- floatround(health) / 10,
- GetPlayerSpeed(i),
- zone
- );
- TextDrawSetString(gPlayerInfo[i][gPlayerSpeedoTD], string);
- }
- }
- }
- return 1;
- }
- function Player_LevelUp(playerid)
- {
- if(gPlayerInfo[playerid][gPlayerLogged])
- {
- gPlayerInfo[playerid][gPlayerExp] += 0.1;
- if(gPlayerInfo[playerid][gPlayerExp] == 100.0)
- {
- gPlayerInfo[playerid][gPlayerExp] = 0.0;
- gPlayerInfo[playerid][gPlayerLevel]++;
- SetPlayerScore(playerid, gPlayerInfo[playerid][gPlayerLevel]);
- GameTextForPlayer(playerid, "~w~Level ~r~UP", 1000, 1);
- }
- }
- return 1;
- }
- //Mensagens randomicas
- function RandomMessages()
- {
- return SendClientMessageToAll(0x1E90FFFF, random_Messages[random(sizeof random_Messages)]);
- }
- //Relogio
- function UpdateTime()
- {
- new string[128];
- new day, month, year, hour, minute, second;
- gettime(hour, minute, second);
- getdate(year, month, day);
- format(string, sizeof string,
- "Los Santos ~b~RPG ~w~ls-~b~rpg~w~.com ~w~%02i~b~/~w~%02i~b~/~w~%04i ~w~- %02i~b~:~w~%02i~b~:~w~%02i",
- day, month, year, hour, minute, second
- );
- TextDrawSetString(g_tdMain, string);
- SetWorldTime(hour);
- foreach(Player, i)
- {
- if(gPlayerInfo[i][gPlayerLogged])
- {
- SetPlayerTime(i, hour, minute);
- }
- }
- return 1;
- }
- //Useful functions
- ProxDetector(Float:radi, playerid, color, string[])
- {
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid, x, y, z);
- foreach(Player, i)
- {
- if(gPlayerInfo[i][gPlayerLogged])
- {
- if(GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid) && GetPlayerInterior(i) == GetPlayerInterior(playerid))
- {
- if(IsPlayerInRangeOfPoint(i, radi, x, y, z))
- {
- SendClientMessage(i, color, string);
- }
- }
- }
- }
- return 1;
- }
- GetPlayerFPS(playerid)
- {
- SetPVarInt(playerid, "DrunkL", GetPlayerDrunkLevel(playerid));
- if(GetPVarInt(playerid, "DrunkL") < 100)
- {
- SetPlayerDrunkLevel(playerid, 2000);
- }
- else
- {
- if(GetPVarInt(playerid, "LDrunkL") != GetPVarInt(playerid, "DrunkL"))
- {
- SetPVarInt(playerid, "FPS", (GetPVarInt(playerid, "LDrunkL") - GetPVarInt(playerid, "DrunkL")));
- SetPVarInt(playerid, "LDrunkL", GetPVarInt(playerid, "DrunkL"));
- if((GetPVarInt(playerid, "FPS") > 0) && (GetPVarInt(playerid, "FPS") < 256))
- {
- return GetPVarInt(playerid, "FPS") - 1;
- }
- }
- }
- return 0;
- }
- GetPlayerSpeed(playerid)
- {
- new Float:ST[4];
- if(IsPlayerInAnyVehicle(playerid))
- GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
- else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
- ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 100.3;
- return floatround(ST[3]);
- }
- split(const strsrc[], strdest[][], delimiter)
- {
- new i, li;
- new aNum;
- new len;
- while(i <= strlen(strsrc))
- {
- if(strsrc[i] == delimiter || i == strlen(strsrc))
- {
- len = strmid(strdest[aNum], strsrc, li, i, 128);
- strdest[aNum][len] = 0;
- li = i+1;
- aNum++;
- }
- i++;
- }
- return 1;
- }
- ClearChat(playerid, lines)
- {
- for(new i = 0; i != lines; ++i)
- {
- SendClientMessage(playerid, -1, " ");
- }
- return 1;
- }
- SendClientMessageFormatted(playerid, color, fstring[], {Float, _}:...) //Y_Less
- {
- new n = numargs() * 4;
- if (n == 3 * 4)
- {
- return SendClientMessage(playerid, color, fstring);
- }
- else
- {
- new message[128];
- new arg_start;
- new arg_end;
- new i = 0;
- #emit CONST.pri fstring
- #emit ADD.C 0x4
- #emit STOR.S.pri arg_start // first parameters's offset
- #emit LOAD.S.pri n
- #emit ADD.C 0x8
- #emit STOR.S.pri arg_end // last parameters's offset
- // pushing variable arguments
- for (i = arg_end; i >= arg_start; i -= 4)
- {
- #emit LCTRL 5
- #emit LOAD.S.alt i
- #emit ADD
- #emit LOAD.I
- #emit PUSH.pri
- }
- // pushing normal arguments
- #emit PUSH.S fstring // format string
- #emit PUSH.C 128 // sizeof(message)
- #emit PUSH.ADR message // the string which format() will write in
- #emit PUSH.S n // number of arguments * 4, always must be passed for natives
- #emit SYSREQ.C format
- // clearing the stack
- i = n / 4 + 1;
- while (--i >= 0)
- {
- #emit STACK 0x4
- }
- return SendClientMessage(playerid, color, message);
- }
- }
- CMD:crash(playerid) return GameTextForPlayer(playerid, "~k~~INVALID_KEY~", 100, 5);
- CMD:carro(playerid)
- {
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid, x, y, z);
- new v = CreateVehicle(429, x, y, z + 10, 0, 0, 3, -1);
- gVehicleGas[v] = 5;
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement