Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //---------------------------/ Includes
- #include <a_samp>
- #include <sqlitei>
- #include <sscanf2>
- #include <YSI\y_races>
- #include <YSI\y_iterate>
- #include <zcmd>
- //---------------------------/ Defines
- //------ Pawn
- #file "Mode"
- //------ Server
- #define MAX_PLAYER 30
- #define MAX_VEHICLE 500
- #define MAX_RACE 100
- //------ Colors
- #define COLOR_RED 0xBB0000FF
- #define COLOR_WHITE 0xFFFFFFFF
- #define COLOR_GOLD 0xFFD700FF
- #define COLOR_BLUE 0x2587CEFF
- #define COLOR_GRAY 0xDDDDDDFF
- #define COLOR_GREEN 0x366718FF
- #define COLOR_RED 0xBB0000FF
- #define COLOR_PURPLE 0x895BD9FF
- #define COLOR_YELLOW 0xFAA505FF
- //------ Dialogs
- #define DIALOG_REGISTER 1
- #define DIALOG_LOGIN 2
- #define DIALOG_ENGINE 3
- #define DIALOG_MODSHOP 4
- #define DIALOG_MODSHOP2 5
- #define DIALOG_MODSHOP3 6
- #define DIALOG_WORKSHOP 200
- #define DIALOG_WORKSHOPH 201
- #define DIALOG_WORKSHOP_COLOR 202
- #define DIALOG_CARS 300
- #define DIALOG_TEXT_NO_EFFECT 400
- #define DIALOG_HELP 7001
- #define DIALOG_COMMANDS 7002
- //------ RGB colors
- #define RGB_COLOR_WHITE "{FFFFFF}"
- #define RGB_COLOR_GOLD "{FFD700}"
- #define BYTES_PER_CELL 4
- //------ SQLite
- #define DATA_BASE_PATH "LSR/LSR.db"
- //---------------------------/ Natives and Foward
- native IsValidVehicle(vehicleid);
- native WP_Hash(buffer[], len, const str[]);
- forward CheckMoney();
- forward LoadRaces();
- forward LoadVehicles();
- forward OnServerUpdate();
- forward LoadTextdraws();
- forward AntiCheat();
- forward StartRace(race);
- main()
- {
- print("\n* Los Santos Racing");
- print("# Iniciado em 2014");
- print("@ Criado por Roger Gomes Costa\n");
- }
- //---------------------------/ Variáveis, arrays, etc...
- static g_szHelpDialog[] = #RGB_COLOR_GOLD"\
- AJUDA\n\n\
- "RGB_COLOR_WHITE"/ajuda - Mostra esta mensagem de ajuda.\n\
- /comandos - Mostra a lista de comandos do servidor.\n\
- /reportar [id/nome] [mensagem] - Reporta um jogador à equipe do servidor.\n\
- /tutorial - Mostra o tutorial do servidor.";
- static g_szCommandsDialog[] = #RGB_COLOR_GOLD"\
- COMANDOS\n\n\
- "RGB_COLOR_WHITE"/races - Lista de corridas disponíveis no servidor\n\
- /openedraces - Lista de corridas abertas no servidor\n\
- /openrace [id] - Abre uma corrida para que você e outros jogadores possam entrar\n\
- /race [slot] - Entra em uma corrida\n";
- static g_szCommandsDialog1[] = "/leave - Sai da corrida atual (se estiver em uma)\n\
- /tuning - Abre menu de tuning (se estiver na oficina)\n\
- /trancar /destrancar - Tranca e destranca veículo\n\
- /motor - Liga/Desliga o veículo\n\
- /lights - Acende/Apaga os faróis do veículo\n\
- /mycars - Localizar determinado veículo\n\
- /skin - Altera a sua skin\n\
- /construtor - Construir sua própria corrida";
- static sz_CmdAdmins[] = RGB_COLOR_GOLD"COMANDOS DE ADMINISTRADORES\n\n\
- "RGB_COLOR_WHITE"/dardinheiro /setardinheiro /expulsar /encerrarcorrida\n\
- /setarcolete /setarvida /forcarcomando";
- //------ Textdraws
- new Text:txtModeName, Text:txtDate, Text:txtVehDistrict;
- new Text:BoasVindas, Text:BoasVindas2;
- new Text:StartRaceTxt;
- new Text:RaceEndInfo, Text:RaceEndInfo2;
- new Text:tBoxLights;
- new Text:tBoxDoors;
- new Text:tBoxTires;
- new Text:tBoxPanels;
- new Text:tPage1;
- new Text:tListDoors;
- new Text:tListTires;
- new Text:tListPanels;
- new Text:tListLights;
- new Text:tPrevPage;
- new Text:tNextPage;
- new Text:tCloseButtom;
- //------ SQLite Database
- new DB:DataBase;
- //------ Players Infos
- enum PLAYER_INFO
- {
- bool:Registered,
- bool:Logged,
- pSkin,
- playermoney,
- pName[24],
- pFile[100],
- Float:pX,
- Float:pY,
- Float:pZ,
- Float:pA,
- pInterior,
- pGPS,
- pDM,
- pRaceID,
- pWeapon[13],
- pAmmo[13],
- pTutorial,
- bool:pVehModded,
- pID,
- }
- new PlayerInfo[MAX_PLAYER][PLAYER_INFO];
- //------ Vehicles Infos
- enum Vehicles
- {
- VehID,
- VehModel,
- VehOwnerID,
- VehOwner[24],
- VehName[50],
- VehKeys[100],
- VehPlate[10],
- VehSpoiler,
- VehHood,
- VehRoof,
- VehSideskirt,
- VehLamps,
- VehNitro,
- VehExhaust,
- VehWheels,
- VehStereo,
- VehHydraulics,
- VehFB,
- VehRB,
- VehVR,
- VehVL,
- Float:VehX,
- Float:VehY,
- Float:VehZ,
- Float:VehA,
- VehColor1,
- VehColor2,
- VehPaintjob,
- Text3D:VehText,
- VehStatus,
- bool:VehLocked,
- VehDoorsArmour,
- VehTiresArmour,
- VehLightsArmour,
- VehPanelsArmour,
- Float:VehHealth
- }
- new ServerVehicles[MAX_VEHICLE][Vehicles];
- new VehCreate[MAX_VEHICLE] = {-1, ...};
- new VehicleNames[212][] = {
- {"Landstalker"}, {"Bravura"}, {"Buffalo"}, {"Linerunner"}, {"Perrenial"}, {"Sentinel"}, {"Dumper"},
- {"Firetruck"}, {"Trashmaster"}, {"Stretch"}, {"Manana"}, {"Infernus"}, {"Voodoo"}, {"Pony"}, {"Mule"},
- {"Cheetah"}, {"Ambulance"}, {"Leviathan"}, {"Moonbeam"}, {"Esperanto"}, {"Taxi"}, {"Washington"},
- {"Bobcat"}, {"Mr Whoopee"}, {"BF Injection"}, {"Hunter"}, {"Premier"}, {"Enforcer"}, {"Securicar"},
- {"Banshee"}, {"Predator"}, {"Bus"}, {"Rhino"}, {"Barracks"}, {"Hotknife"}, {"Trailer 1"}, {"Previon"},
- {"Coach"}, {"Cabbie"}, {"Stallion"}, {"Rumpo"}, {"RC Bandit"}, {"Romero"}, {"Packer"}, {"Monster"},
- {"Admiral"}, {"Squalo"}, {"Seasparrow"}, {"Pizzaboy"}, {"Tram"}, {"Trailer 2"}, {"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"}, {"Police Maverick"}, {"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 LA"}, {"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 Flat"}, {"Streak Carriage"}, {"Kart"}, {"Mower"}, {"Duneride"}, {"Sweeper"},
- {"Broadway"}, {"Tornado"}, {"AT-400"}, {"DFT-30"}, {"Huntley"}, {"Stafford"}, {"BF-400"}, {"Newsvan"},
- {"Tug"}, {"Trailer 3"}, {"Emperor"}, {"Wayfarer"}, {"Euros"}, {"Hotdog"}, {"Club"}, {"Freight Carriage"},
- {"Trailer 3"}, {"Andromada"}, {"Dodo"}, {"RC Cam"}, {"Launch"}, {"Police Car (LSPD)"}, {"Police Car (SFPD)"},
- {"Police Car (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"}
- };
- //------ Races Info
- enum Races
- {
- // Carregar
- RaceName[30],
- RaceStart[100],
- RaceType,
- RacePrice,
- RaceWorld,
- RaceInterior,
- RaceLaps,
- RaceReward,
- // While
- bool:RaceOpen,
- RaceTotal,
- RaceCurrent,
- Race1, Race1Name[20],
- Race2, Race2Name[20],
- Race3, Race3Name[20],
- Race4, Race4Name[20],
- bool:RaceExist
- }
- new RaceCreate[MAX_RACE];
- new RaceCreate1[MAX_RACE];
- new RaceInfo[MAX_RACE][Races];
- new RaceCPPos[MAX_RACE][50][100]; // 100 corridas, 30 cps, 100 tamanho da string
- new RaceSTPos[MAX_RACE][20][100]; // 100 corridas, 30 cps, 100 tamanho da string
- //---------------------------/ Stocks
- stock GetPlayerNameEx(playerid)
- {
- new szName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, szName, MAX_PLAYER_NAME);
- return szName;
- }
- #define GetPlayerName GetPlayerNameEx
- stock LoadWeapons(playerid)
- {
- new DBResult:ResultQuery, szString[128];
- // - Enviamos a instrução para selecionar TODOS os registros da tabela Weapons, onde UID seja igual ao UID do jogador
- format(szString, sizeof szString, "SELECT * FROM Weapons WHERE PlayerID = %d", PlayerInfo[playerid][pID]);
- ResultQuery = db_query(DataBase, szString);
- // - Se a nossa instrução retornar resultados...
- if(db_num_rows(ResultQuery))
- {
- // - ... então nós faremos um loop por estes resultados! :)
- for(new i = 0; i < db_num_rows(ResultQuery); i++)
- {
- new iSlot = GetWeaponSlot(SQLiteGetResultIntAssoc(ResultQuery, "Weapon"));
- PlayerInfo[playerid][pWeapon][iSlot] = SQLiteGetResultIntAssoc(ResultQuery, "Weapon");
- PlayerInfo[playerid][pAmmo][iSlot] = SQLiteGetResultIntAssoc(ResultQuery, "Ammo");
- //GivePlayerWeapon(playerid, PlayerInfo[playerid][player_iWeapon][iSlot], PlayerInfo[playerid][player_iAmmo][iSlot]);
- if(!db_next_row(ResultQuery))
- break;
- }
- // - Pequeno debug
- printf("[!] %d arma(s) carregada(s) para o jogador %s.", db_num_rows(ResultQuery), GetPlayerName(playerid));
- }
- }
- // - Função de salvar as armas do jogador
- stock SaveWeapons(playerid)
- {
- new szString[128], iCount = 0;
- // - Enviamos a instrução para deletar TODOS os registros da tabela Weapons, onde UID seja igual ao UID do jogador
- format(szString, sizeof szString, "DELETE FROM Weapons WHERE PlayerID = %d", PlayerInfo[playerid][pID]);
- db_query(DataBase, szString);
- if(db_changes(DataBase))
- {
- // - Então, iremos inserir os novos dados
- for(new i = 0; i < 13; i++)
- {
- new iWeapon;
- new iAmmo;
- GetPlayerWeaponData(playerid, i, iWeapon, iAmmo);
- if(iWeapon && iAmmo)
- {
- iCount ++;
- // - ... iremos inserir a arma e a munição no banco de dados
- format(szString, sizeof szString, "INSERT INTO Weapons (PlayerID, Weapon, Ammo) VALUES (%d, %d, %d)", PlayerInfo[playerid][pID], iWeapon, iAmmo);
- db_query(DataBase, szString);
- if(!db_changes(DataBase))
- printf("SQLite ERROR! (SaveWeapons) Player: %s não pode ser inserido no banco de dados.", GetPlayerName(playerid));
- }
- }
- }
- else printf("SQLite ERRO! (SaveWeapons) Player: dados de armas do jogador %s não pode ser deletado.", GetPlayerName(playerid));
- // - Pequeno debug
- if(iCount)
- printf("[!] %d arma(s) salva(s) para o jogador %s.", iCount);
- }
- stock GetWeaponSlot(weaponid)
- {
- switch(weaponid)
- {
- case 0, 1:
- return 0;
- case 2 .. 9:
- return 1;
- case 10 .. 15:
- return 10;
- case 16 .. 18, 39:
- return 8;
- case 22 .. 24:
- return 2;
- case 25 .. 27:
- return 3;
- case 28, 29, 32:
- return 4;
- case 30, 31:
- return 5;
- case 33, 34:
- return 6;
- case 35 .. 38:
- return 7;
- case 40:
- return 12;
- case 41 .. 43:
- return 9;
- case 44 .. 46:
- return 11;
- }
- return 0;
- }
- stock LoadStaticVehiclesFromFile(const filename[])
- {
- new File:file_ptr;
- new line[256];
- new var_from_line[64];
- new vehicletype;
- new Float:SpawnX;
- new Float:SpawnY;
- new Float:SpawnZ;
- new Float:SpawnRot;
- new Color1, Color2;
- new index;
- new vehicles_loaded;
- file_ptr = fopen(filename,filemode:io_read);
- if(!file_ptr) return 0;
- vehicles_loaded = 0;
- while(fread(file_ptr,line,256) > 0)
- {
- index = 0;
- // Read type
- index = token_by_delim(line,var_from_line,',',index);
- if(index == (-1)) continue;
- vehicletype = strval(var_from_line);
- if(vehicletype < 400 || vehicletype > 611) continue;
- // Read X, Y, Z, Rotation
- index = token_by_delim(line,var_from_line,',',index+1);
- if(index == (-1)) continue;
- SpawnX = floatstr(var_from_line);
- index = token_by_delim(line,var_from_line,',',index+1);
- if(index == (-1)) continue;
- SpawnY = floatstr(var_from_line);
- index = token_by_delim(line,var_from_line,',',index+1);
- if(index == (-1)) continue;
- SpawnZ = floatstr(var_from_line);
- index = token_by_delim(line,var_from_line,',',index+1);
- if(index == (-1)) continue;
- SpawnRot = floatstr(var_from_line);
- // Read Color1, Color2
- index = token_by_delim(line,var_from_line,',',index+1);
- if(index == (-1)) continue;
- Color1 = strval(var_from_line);
- index = token_by_delim(line,var_from_line,';',index+1);
- Color2 = strval(var_from_line);
- //printf("%d,%.2f,%.2f,%.2f,%.4f,%d,%d",vehicletype,SpawnX,SpawnY,SpawnZ,SpawnRot,Color1,Color2);
- AddStaticVehicleEx(vehicletype,SpawnX,SpawnY,SpawnZ,SpawnRot,Color1,Color2,(30*60)); // respawn 30 minutes
- /*new numplate_test[32+1];
- format(numplate_test,32,"GRLC{44AA33}%d",vid);
- SetVehicleNumberPlate(vid, numplate_test);*/
- vehicles_loaded++;
- }
- fclose(file_ptr);
- printf("Loaded %d vehicles from: %s",vehicles_loaded,filename);
- return vehicles_loaded;
- }
- stock token_by_delim(const string[], return_str[], delim, start_index)
- {
- new x=0;
- while(string[start_index] != EOS && string[start_index] != delim) {
- return_str[x] = string[start_index];
- x++;
- start_index++;
- }
- return_str[x] = EOS;
- if(string[start_index] == EOS) start_index = (-1);
- return start_index;
- }
- stock ToggleVehicleEngine(playerid, vid)
- {
- new engine,lights,alarm,doors,bonnet,boot,objective;
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- if(engine == VEHICLE_PARAMS_UNSET || engine == VEHICLE_PARAMS_OFF)
- {
- SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
- SendClientMessage(playerid, COLOR_GOLD, "Server: veículo ligado!");
- }
- else
- {
- SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
- SendClientMessage(playerid, COLOR_GOLD, "Server: veículo desligado!");
- }
- }
- stock ToggleVehicleLights(playerid, vid)
- {
- new engine,lights,alarm,doors,bonnet,boot,objective;
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- if(lights == VEHICLE_PARAMS_UNSET || lights == VEHICLE_PARAMS_OFF)
- {
- SendClientMessage(playerid, COLOR_GOLD, "Server: faróis acesos!");
- SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
- }
- else
- {
- SendClientMessage(playerid, COLOR_GOLD, "Server: faróis apagados!");
- SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
- }
- }
- stock ToggleVehicleDoorsLocked(vid)
- {
- new engine,lights,alarm,doors,bonnet,boot,objective;
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- if(doors == VEHICLE_PARAMS_UNSET || doors == VEHICLE_PARAMS_OFF) SetVehicleParamsEx(vid,engine,lights,alarm,VEHICLE_PARAMS_ON,bonnet,boot,objective);
- else SetVehicleParamsEx(vid,engine,lights,alarm,VEHICLE_PARAMS_OFF,bonnet,boot,objective);
- }
- stock ToggleVehicleHood(vid)
- {
- new engine,lights,alarm,doors,bonnet,boot,objective;
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- if(bonnet == VEHICLE_PARAMS_UNSET || bonnet == VEHICLE_PARAMS_OFF) SetVehicleParamsEx(vid,engine,lights,alarm,doors,VEHICLE_PARAMS_ON,boot,objective);
- else SetVehicleParamsEx(vid,engine,lights,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
- }
- stock ToggleVehicleTrunk(vid)
- {
- new engine,lights,alarm,doors,bonnet,boot,objective;
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- if(boot == VEHICLE_PARAMS_UNSET || boot == VEHICLE_PARAMS_OFF) SetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,VEHICLE_PARAMS_ON,objective);
- else SetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,VEHICLE_PARAMS_OFF,objective);
- }
- // VehicleParamsEx state setter helpers
- stock SetVehicleEngineState(vid, setstate)
- {
- new engine,lights,alarm,doors,bonnet,boot,objective;
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- if(setstate) SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
- else SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
- }
- stock SetVehicleLightsState(vid, setstate)
- {
- new engine,lights,alarm,doors,bonnet,boot,objective;
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- if(setstate) SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
- else SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
- }
- stock SetVehicleDoorsLockedState(vid, setstate)
- {
- new engine,lights,alarm,doors,bonnet,boot,objective;
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- if(setstate) SetVehicleParamsEx(vid,engine,lights,alarm,VEHICLE_PARAMS_ON,bonnet,boot,objective);
- else SetVehicleParamsEx(vid,engine,lights,alarm,VEHICLE_PARAMS_OFF,bonnet,boot,objective);
- }
- stock SetVehicleHoodState(vid, setstate)
- {
- new engine,lights,alarm,doors,bonnet,boot,objective;
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- if(setstate) SetVehicleParamsEx(vid,engine,lights,alarm,doors,VEHICLE_PARAMS_ON,boot,objective);
- else SetVehicleParamsEx(vid,engine,lights,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
- }
- stock SetVehicleTrunkState(vid, setstate)
- {
- new engine,lights,alarm,doors,bonnet,boot,objective;
- GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
- if(setstate) SetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,VEHICLE_PARAMS_ON,objective);
- else SetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,VEHICLE_PARAMS_OFF,objective);
- }
- stock GetPlayerMoneyEx(playerid)
- return PlayerInfo[playerid][playermoney];
- stock GivePlayerMoneyEx(playerid, amount)
- {
- PlayerInfo[playerid][playermoney] = PlayerInfo[playerid][playermoney] + amount;
- GivePlayerMoney(playerid, amount);
- }
- stock ResetPlayerMoneyEx(playerid)
- {
- PlayerInfo[playerid][playermoney] = 0;
- ResetPlayerMoney(playerid);
- }
- stock SetPlayerMoney(playerid, amount)
- {
- PlayerInfo[playerid][playermoney] = amount;
- ResetPlayerMoney(playerid);
- GivePlayerMoney(playerid, amount);
- }
- #define GetPlayerMoney GetPlayerMoneyEx
- #define GivePlayerMoney GivePlayerMoneyEx
- #define ResetPlayerMoney ResetPlayerMoneyEx
- stock Float: GetDistanceBetweenPoints(Float: x1, Float: y1, Float: z1, Float: x2, Float: y2, Float: z2)
- return VectorSize(x1 - x2, y1 - y2, z1 - z2);
- stock Float: SQLiteGetResultFloatAssoc(DBResult: dbresult, field[])
- {
- new szResult[16];
- db_get_field_assoc(dbresult, field, szResult, sizeof(szResult));
- return floatstr(szResult);
- }
- stock SQLiteGetResultIntAssoc(DBResult: dbresult, field[])
- {
- new szResult[16];
- db_get_field_assoc(dbresult, field, szResult, sizeof(szResult));
- return strval(szResult);
- }
- stock PlayAudioForAll(audioid)
- {
- foreach(Player, i)
- {
- PlayerPlaySound(i, audioid, 0.0, 0.0, 0.0);
- }
- return true;
- }
- stock SendClientMessageEx(playerid, color, fstring[], {Float, _}:...)
- {
- static const STATIC_ARGS = 3;
- new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
- if(n)
- {
- new message[144], arg_start, arg_end;
- #emit CONST.alt fstring
- #emit LCTRL 5
- #emit ADD
- #emit STOR.S.pri arg_start
- #emit LOAD.S.alt n
- #emit ADD
- #emit STOR.S.pri arg_end
- do
- {
- #emit LOAD.I
- #emit PUSH.pri
- arg_end -= BYTES_PER_CELL;
- #emit LOAD.S.pri arg_end
- }
- while(arg_end > arg_start);
- #emit PUSH.S fstring
- #emit PUSH.C 144
- #emit PUSH.ADR message
- n += BYTES_PER_CELL * 3;
- #emit PUSH.S n
- #emit SYSREQ.C format
- n += BYTES_PER_CELL;
- #emit LCTRL 4
- #emit LOAD.S.alt n
- #emit ADD
- #emit SCTRL 4
- return SendClientMessage(playerid, color, message);
- } else
- return SendClientMessage(playerid, color, fstring);
- }
- stock SendClientMessageToAllEx(color, fstring[], {Float, _}:...)
- {
- #if defined DEBUG_MODE
- #if !defined DEBUG_NO_FUNCTIONS
- printf("[DEBUG] stock SendClientMessageToAllEx(color #%x, fstring '%s')", color, fstring);
- #endif
- #endif
- static const STATIC_ARGS = 2;
- new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
- if(n)
- {
- new message[144], arg_start, arg_end;
- #emit CONST.alt fstring
- #emit LCTRL 5
- #emit ADD
- #emit STOR.S.pri arg_start
- #emit LOAD.S.alt n
- #emit ADD
- #emit STOR.S.pri arg_end
- do
- {
- #emit LOAD.I
- #emit PUSH.pri
- arg_end -= BYTES_PER_CELL;
- #emit LOAD.S.pri arg_end
- }
- while(arg_end > arg_start);
- #emit PUSH.S fstring
- #emit PUSH.C 144
- #emit PUSH.ADR message
- n += BYTES_PER_CELL * 3;
- #emit PUSH.S n
- #emit SYSREQ.C format
- n += BYTES_PER_CELL;
- #emit LCTRL 4
- #emit LOAD.S.alt n
- #emit ADD
- #emit SCTRL 4
- return SendClientMessageToAll(color, message);
- } else
- return SendClientMessageToAll(color, fstring);
- }
- #define SendClientMessage SendClientMessageEx
- #define SendClientMessageToAll SendClientMessageToAllEx
- stock SetPlayerPosEx(playerid, Float: x, Float: y, Float: z, Float: a, interior, virtualworld, bool: bTeleportVehicle = true)
- {
- if(!IsPlayerConnected(playerid))
- return false;
- new iVehicleID = GetPlayerVehicleID(playerid);
- new iPlayerSeat = GetPlayerVehicleSeat(playerid);
- if(bTeleportVehicle && IsPlayerInAnyVehicle(playerid))
- {
- SetVehiclePos(iVehicleID, x, y, z);
- SetVehicleZAngle(iVehicleID, a);
- SetVehicleVirtualWorld(iVehicleID, virtualworld);
- LinkVehicleToInterior(iVehicleID, interior);
- }
- SetPlayerPosFindZ(playerid, x, y, z);
- SetPlayerFacingAngle(playerid, a);
- SetPlayerInterior(playerid, interior);
- SetPlayerVirtualWorld(playerid, virtualworld);
- if(bTeleportVehicle)
- PutPlayerInVehicle(playerid, iVehicleID, iPlayerSeat);
- return true;
- }
- stock TimestampToDate(timestamp)
- {
- new year = 1970, day = 0, month = 0, hour = UTC_TIMEZONE, mins = 0, sec = 0;
- new days_of_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
- new returnstring[32];
- while(timestamp > 31622400)
- {
- timestamp -= 31536000;
- if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) timestamp -= 86400;
- year++;
- }
- if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) )
- days_of_month[1] = 29;
- else
- days_of_month[1] = 28;
- while(timestamp > 86400)
- {
- timestamp -= 86400, day++;
- if(day==days_of_month[month]) day = 0, month++;
- }
- while(timestamp > 60)
- {
- timestamp -= 60, mins++;
- if( mins == 60) mins=0, hour++;
- }
- sec = timestamp;
- format(returnstring, 31, "%02d/%02d/%d %02d:%02d:%02d", day+1, month+1, year, hour, mins, sec);
- return returnstring;
- }
- //---------------------------/ Callbacks, publics...
- public OnGameModeInit()
- {
- if(fexist(DATA_BASE_PATH))
- {
- DataBase = db_open(DATA_BASE_PATH);
- print("SQLite OK! banco de dados carregado com sucesso!");
- }
- else
- {
- print("SQLite ERRO! bando de dados do servidor não foi encontrado. Fechando...");
- SendRconCommand("Exit");
- }
- SetTimer("OnServerUpdate", 1000, true);
- Langs_AddLanguage("PT", "Brasil");
- SetGameModeText("LS Racing");
- //DisableInteriorEnterExits();
- DisableNameTagLOS();
- ManualVehicleEngineAndLights();
- //UsePlayerPedAnims();
- AddPlayerClass(0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
- LoadTextdraws();
- LoadVehicles();
- LoadRaces();
- return true;
- }
- public OnGameModeExit()
- {
- db_close(DataBase);
- return true;
- }
- //------ Carrega todas as corridas existentes no banco de dados
- public LoadRaces()
- {
- new szString[100],
- DBResult:ResultQuery,
- bool:races,
- bool:cps;
- format(szString, sizeof szString, "SELECT * FROM Races");
- ResultQuery = db_query(DataBase, szString);
- if(db_num_rows(ResultQuery))
- {
- races = true;
- for(new i = 0; i < db_num_rows(ResultQuery); i++)
- {
- new raceid = SQLiteGetResultIntAssoc(ResultQuery, "ID");
- db_get_field_assoc(ResultQuery, "Name", RaceInfo[raceid][RaceName], 50);
- RaceInfo[raceid][RaceType] = SQLiteGetResultIntAssoc(ResultQuery, "Type");
- RaceInfo[raceid][RaceReward] = SQLiteGetResultIntAssoc(ResultQuery, "Reward");
- RaceInfo[raceid][RaceExist] = true;
- RaceInfo[raceid][RaceOpen] = false;
- if(!db_next_row(ResultQuery))
- break;
- }
- }
- else print("SQLite INFO! (LoadRaces: Races) não há veículos inseridos no banco de dados.");
- format(szString, sizeof szString, "SELECT * FROM CheckPoints");
- ResultQuery = db_query(DataBase, szString);
- if(db_num_rows(ResultQuery))
- {
- cps = true;
- for(new i = 0; i < db_num_rows(ResultQuery); i++)
- {
- new raceid, count;
- raceid = SQLiteGetResultIntAssoc(ResultQuery, "ID");
- count = SQLiteGetResultIntAssoc(ResultQuery, "Count");
- db_get_field_assoc(ResultQuery, "CPs", RaceCPPos[raceid][count], 100);
- db_get_field_assoc(ResultQuery, "STs", RaceSTPos[raceid][count], 100);
- if(!db_next_row(ResultQuery))
- break;
- }
- }
- else print("SQLite INFO! (LoadRaces: CheckPoints) não há veículos inseridos no banco de dados.");
- if(races && !cps)
- print("SQLite WARNING! (LoadRaces) há corridas inseridas na tabela Races, mas não há checkpoins na tabela Checkpoints.");
- else if(!races && cps)
- print("SQLite WARNING! (LoadRaces) não há corridas inseridas na tabela Races, mas há checkpoins na tabela Checkpoints.");
- }
- //------ Cria todos os textdraws do gamemode
- public LoadTextdraws()
- {
- tBoxLights = TextDrawCreate(118.000000, 151.000000, "BOX 1");
- TextDrawAlignment(tBoxLights, 2);
- TextDrawBackgroundColor(tBoxLights, 153);
- TextDrawFont(tBoxLights, 5);
- TextDrawLetterSize(tBoxLights, 0.000000, 9.299999);
- TextDrawColor(tBoxLights, -1);
- TextDrawSetOutline(tBoxLights, 1);
- TextDrawSetProportional(tBoxLights, 1);
- TextDrawUseBox(tBoxLights, 1);
- TextDrawBoxColor(tBoxLights, 255);
- TextDrawTextSize(tBoxLights, 97.000000, 90.000000);
- TextDrawSetPreviewModel(tBoxLights, 475);
- TextDrawSetPreviewRot(tBoxLights, 5.000000, 1.000000, 18.000000, 0.449999);
- TextDrawSetSelectable(tBoxLights, 1);
- TextDrawSetPreviewVehCol(tBoxLights, 166, 166);
- tBoxDoors = TextDrawCreate(221.000000, 151.000000, "BOX 2");
- TextDrawAlignment(tBoxDoors, 2);
- TextDrawBackgroundColor(tBoxDoors, 152);
- TextDrawFont(tBoxDoors, 5);
- TextDrawLetterSize(tBoxDoors, 0.000000, 9.299999);
- TextDrawColor(tBoxDoors, -1);
- TextDrawSetOutline(tBoxDoors, 1);
- TextDrawSetProportional(tBoxDoors, 1);
- TextDrawUseBox(tBoxDoors, 1);
- TextDrawBoxColor(tBoxDoors, 255);
- TextDrawTextSize(tBoxDoors, 97.000000, 90.000000);
- TextDrawSetPreviewModel(tBoxDoors, 475);
- TextDrawSetPreviewRot(tBoxDoors, 0.000000, 0.000000, 95.000000, 0.400000);
- TextDrawSetSelectable(tBoxDoors, 1);
- TextDrawSetPreviewVehCol(tBoxDoors, 166, 166);
- tBoxTires = TextDrawCreate(331.000000, 151.000000, "BOX 3");
- TextDrawAlignment(tBoxTires, 2);
- TextDrawBackgroundColor(tBoxTires, 153);
- TextDrawFont(tBoxTires, 5);
- TextDrawLetterSize(tBoxTires, 0.000000, 9.299999);
- TextDrawColor(tBoxTires, -1);
- TextDrawSetOutline(tBoxTires, 1);
- TextDrawSetProportional(tBoxTires, 1);
- TextDrawUseBox(tBoxTires, 1);
- TextDrawBoxColor(tBoxTires, 255);
- TextDrawTextSize(tBoxTires, 97.000000, 90.000000);
- TextDrawSetPreviewModel(tBoxTires, 483);
- TextDrawSetPreviewRot(tBoxTires, 21.000000, 1.000000, 28.000000, 0.349999);
- TextDrawSetSelectable(tBoxTires, 1);
- TextDrawSetPreviewVehCol(tBoxTires, 166, 166);
- tBoxPanels = TextDrawCreate(434.000000, 151.000000, "BOX 4");
- TextDrawAlignment(tBoxPanels, 2);
- TextDrawBackgroundColor(tBoxPanels, 153);
- TextDrawFont(tBoxPanels, 5);
- TextDrawLetterSize(tBoxPanels, 0.000000, 9.299999);
- TextDrawColor(tBoxPanels, -1);
- TextDrawSetOutline(tBoxPanels, 1);
- TextDrawSetProportional(tBoxPanels, 1);
- TextDrawUseBox(tBoxPanels, 1);
- TextDrawBoxColor(tBoxPanels, 255);
- TextDrawTextSize(tBoxPanels, 97.000000, 90.000000);
- TextDrawSetPreviewModel(tBoxPanels, 475);
- TextDrawSetPreviewRot(tBoxPanels, -16.000000, 0.000000, 0.000000, 0.500000);
- TextDrawSetSelectable(tBoxPanels, 1);
- TextDrawSetPreviewVehCol(tBoxPanels, 166, 166);
- tPage1 = TextDrawCreate(118.000000, 135.000000, "1) BLINDAGENS");
- TextDrawBackgroundColor(tPage1, 255);
- TextDrawFont(tPage1, 2);
- TextDrawLetterSize(tPage1, 0.270000, 1.299999);
- TextDrawColor(tPage1, -1);
- TextDrawSetOutline(tPage1, 0);
- TextDrawSetProportional(tPage1, 1);
- TextDrawSetShadow(tPage1, 1);
- TextDrawSetSelectable(tPage1, 0);
- tListLights = TextDrawCreate(166.000000, 244.000000, "FAROIS");
- TextDrawAlignment(tListLights, 2);
- TextDrawBackgroundColor(tListLights, 255);
- TextDrawFont(tListLights, 2);
- TextDrawLetterSize(tListLights, 0.189999, 1.000000);
- TextDrawColor(tListLights, -1);
- TextDrawSetOutline(tListLights, 0);
- TextDrawSetProportional(tListLights, 1);
- TextDrawSetShadow(tListLights, 1);
- TextDrawSetSelectable(tListLights, 0);
- tListDoors = TextDrawCreate(267.000000, 244.000000, "PORTAS");
- TextDrawAlignment(tListDoors, 2);
- TextDrawBackgroundColor(tListDoors, 255);
- TextDrawFont(tListDoors, 2);
- TextDrawLetterSize(tListDoors, 0.189999, 1.000000);
- TextDrawColor(tListDoors, -1);
- TextDrawSetOutline(tListDoors, 0);
- TextDrawSetProportional(tListDoors, 1);
- TextDrawSetShadow(tListDoors, 1);
- TextDrawSetSelectable(tListDoors, 0);
- tListTires = TextDrawCreate(381.000000, 244.000000, "RODAS");
- TextDrawAlignment(tListTires, 2);
- TextDrawBackgroundColor(tListTires, 255);
- TextDrawFont(tListTires, 2);
- TextDrawLetterSize(tListTires, 0.189999, 1.000000);
- TextDrawColor(tListTires, -1);
- TextDrawSetOutline(tListTires, 0);
- TextDrawSetProportional(tListTires, 1);
- TextDrawSetShadow(tListTires, 1);
- TextDrawSetSelectable(tListTires, 0);
- tListPanels = TextDrawCreate(483.000000, 244.000000, "PAINEL");
- TextDrawAlignment(tListPanels, 2);
- TextDrawBackgroundColor(tListPanels, 255);
- TextDrawFont(tListPanels, 2);
- TextDrawLetterSize(tListPanels, 0.189999, 1.000000);
- TextDrawColor(tListPanels, -1);
- TextDrawSetOutline(tListPanels, 0);
- TextDrawSetProportional(tListPanels, 1);
- TextDrawSetShadow(tListPanels, 1);
- TextDrawSetSelectable(tListPanels, 0);
- tPrevPage = TextDrawCreate(486.000000, 138.000000, "<<");
- TextDrawAlignment(tPrevPage, 2);
- TextDrawBackgroundColor(tPrevPage, 255);
- TextDrawFont(tPrevPage, 2);
- TextDrawLetterSize(tPrevPage, 0.189999, 1.000000);
- TextDrawColor(tPrevPage, -1);
- TextDrawSetOutline(tPrevPage, 0);
- TextDrawSetProportional(tPrevPage, 1);
- TextDrawSetShadow(tPrevPage, 1);
- TextDrawUseBox(tPrevPage, 1);
- TextDrawBoxColor(tPrevPage, 255);
- TextDrawTextSize(tPrevPage, 0.000000, 10.000000);
- TextDrawSetSelectable(tPrevPage, 0);
- tNextPage = TextDrawCreate(502.000000, 138.000000, ">>");
- TextDrawAlignment(tNextPage, 2);
- TextDrawBackgroundColor(tNextPage, 255);
- TextDrawFont(tNextPage, 2);
- TextDrawLetterSize(tNextPage, 0.189999, 1.000000);
- TextDrawColor(tNextPage, -1);
- TextDrawSetOutline(tNextPage, 0);
- TextDrawSetProportional(tNextPage, 1);
- TextDrawSetShadow(tNextPage, 1);
- TextDrawUseBox(tNextPage, 1);
- TextDrawBoxColor(tNextPage, 255);
- TextDrawTextSize(tNextPage, 0.000000, 10.000000);
- TextDrawSetSelectable(tNextPage, 0);
- tCloseButtom = TextDrawCreate(522.000000, 138.000000, "X");
- TextDrawAlignment(tCloseButtom, 2);
- TextDrawBackgroundColor(tCloseButtom, 255);
- TextDrawFont(tCloseButtom, 2);
- TextDrawLetterSize(tCloseButtom, 0.189999, 1.000000);
- TextDrawColor(tCloseButtom, -16776961);
- TextDrawSetOutline(tCloseButtom, 0);
- TextDrawSetProportional(tCloseButtom, 1);
- TextDrawSetShadow(tCloseButtom, 1);
- TextDrawUseBox(tCloseButtom, 1);
- TextDrawBoxColor(tCloseButtom, 144);
- TextDrawTextSize(tCloseButtom, 0.000000, 13.000000);
- TextDrawSetSelectable(tCloseButtom, 0);
- txtModeName = TextDrawCreate(582.000000, 425.000000, "SA Tuning");
- TextDrawAlignment(txtModeName, 2);
- TextDrawBackgroundColor(txtModeName, 255);
- TextDrawFont(txtModeName, 0);
- TextDrawLetterSize(txtModeName, 0.230000, 1.100000);
- TextDrawColor(txtModeName, 255);
- TextDrawSetOutline(txtModeName, 0);
- TextDrawSetProportional(txtModeName, 1);
- TextDrawSetShadow(txtModeName, 40);
- TextDrawSetSelectable(txtModeName, 0);
- //
- txtDate = TextDrawCreate(582.000000, 436.000000, "18/09/2013 - 14:30");
- TextDrawAlignment(txtDate, 2);
- TextDrawBackgroundColor(txtDate, 255);
- TextDrawFont(txtDate, 1);
- TextDrawLetterSize(txtDate, 0.230000, 1.100000);
- TextDrawColor(txtDate, -1);
- TextDrawSetOutline(txtDate, 0);
- TextDrawSetProportional(txtDate, 1);
- TextDrawSetShadow(txtDate, 40);
- TextDrawSetSelectable(txtDate, 0);
- //
- txtVehDistrict = TextDrawCreate(581.000000, 404.000000, "Turismo");
- TextDrawAlignment(txtVehDistrict, 2);
- TextDrawBackgroundColor(txtVehDistrict, 255);
- TextDrawFont(txtVehDistrict, 1);
- TextDrawLetterSize(txtVehDistrict, 0.219999, 1.200000);
- TextDrawColor(txtVehDistrict, -1);
- TextDrawSetOutline(txtVehDistrict, 0);
- TextDrawSetProportional(txtVehDistrict, 1);
- TextDrawSetShadow(txtVehDistrict, 100);
- TextDrawSetSelectable(txtVehDistrict, 0);
- BoasVindas = TextDrawCreate(320.000000, 123.000000, "San Andreas Street Racing");
- TextDrawAlignment(BoasVindas, 2);
- TextDrawBackgroundColor(BoasVindas, 255);
- TextDrawFont(BoasVindas, 0);
- TextDrawLetterSize(BoasVindas, 0.749998, 2.499999);
- TextDrawColor(BoasVindas, 128);
- TextDrawSetOutline(BoasVindas, 0);
- TextDrawSetProportional(BoasVindas, 1);
- TextDrawSetShadow(BoasVindas, 2);
- TextDrawSetSelectable(BoasVindas, 0);
- BoasVindas2 = TextDrawCreate(325.000000, 146.000000, "TENHA UM BOM JOGO!");
- TextDrawAlignment(BoasVindas2, 2);
- TextDrawBackgroundColor(BoasVindas2, -65281);
- TextDrawFont(BoasVindas2, 0);
- TextDrawLetterSize(BoasVindas2, 0.360000, 1.299998);
- TextDrawColor(BoasVindas2, 255);
- TextDrawSetOutline(BoasVindas2, 0);
- TextDrawSetProportional(BoasVindas2, 1);
- TextDrawSetShadow(BoasVindas2, 0);
- TextDrawSetSelectable(BoasVindas2, 0);
- StartRaceTxt = TextDrawCreate(320.000000, 397.000000, " ");
- TextDrawAlignment(StartRaceTxt, 2);
- TextDrawBackgroundColor(StartRaceTxt, 255);
- TextDrawFont(StartRaceTxt, 2);
- TextDrawLetterSize(StartRaceTxt, 0.199998, 1.399998);
- TextDrawColor(StartRaceTxt, -16776961);
- TextDrawSetOutline(StartRaceTxt, 1);
- TextDrawSetProportional(StartRaceTxt, 1);
- TextDrawSetSelectable(StartRaceTxt, 0);
- RaceEndInfo = TextDrawCreate(12.000000, 431.000000, "INFO");
- TextDrawBackgroundColor(RaceEndInfo, 255);
- TextDrawFont(RaceEndInfo, 1);
- TextDrawLetterSize(RaceEndInfo, 0.330000, 1.600000);
- TextDrawColor(RaceEndInfo, -65281);
- TextDrawSetOutline(RaceEndInfo, 0);
- TextDrawSetProportional(RaceEndInfo, 1);
- TextDrawSetShadow(RaceEndInfo, 50);
- TextDrawSetSelectable(RaceEndInfo, 0);
- RaceEndInfo2 = TextDrawCreate(48.000000, 432.000000, " ");
- TextDrawBackgroundColor(RaceEndInfo2, 255);
- TextDrawFont(RaceEndInfo2, 2);
- TextDrawLetterSize(RaceEndInfo2, 0.210000, 1.399999);
- TextDrawColor(RaceEndInfo2, -1);
- TextDrawSetOutline(RaceEndInfo2, 1);
- TextDrawSetProportional(RaceEndInfo2, 1);
- TextDrawSetSelectable(RaceEndInfo2, 0);
- }
- //------ Cria todos os veículos presentes no banco de dados
- public LoadVehicles()
- {
- // Veiculos públicos
- LoadStaticVehiclesFromFile("vehicles/ls_law.txt");
- LoadStaticVehiclesFromFile("vehicles/ls_airport.txt");
- LoadStaticVehiclesFromFile("vehicles/ls_gen_inner.txt");
- LoadStaticVehiclesFromFile("vehicles/ls_gen_outer.txt");
- new szString[100],
- DBResult:ResultQuery;
- format(szString, sizeof szString, "SELECT * FROM Vehicles");
- ResultQuery = db_query(DataBase, szString);
- if(db_num_rows(ResultQuery))
- {
- for(new i = 0; i < db_num_rows(ResultQuery); i++)
- {
- new vehid;
- vehid = SQLiteGetResultIntAssoc(ResultQuery, "ID");
- db_get_field_assoc(ResultQuery, "Owner", ServerVehicles[vehid][VehOwner], 24);
- db_get_field_assoc(ResultQuery, "Plate", ServerVehicles[vehid][VehPlate], 10);
- ServerVehicles[vehid][VehOwnerID] = SQLiteGetResultIntAssoc(ResultQuery, "OID");
- ServerVehicles[vehid][VehModel] = SQLiteGetResultIntAssoc(ResultQuery, "Model");
- ServerVehicles[vehid][VehSpoiler] = SQLiteGetResultIntAssoc(ResultQuery, "Spoiler");
- ServerVehicles[vehid][VehHood] = SQLiteGetResultIntAssoc(ResultQuery, "Hood");
- ServerVehicles[vehid][VehRoof] = SQLiteGetResultIntAssoc(ResultQuery, "Roof");
- ServerVehicles[vehid][VehSideskirt] = SQLiteGetResultIntAssoc(ResultQuery, "Sideskirt");
- ServerVehicles[vehid][VehLamps] = SQLiteGetResultIntAssoc(ResultQuery, "Lamps");
- ServerVehicles[vehid][VehNitro] = SQLiteGetResultIntAssoc(ResultQuery, "Nitro");
- ServerVehicles[vehid][VehExhaust] = SQLiteGetResultIntAssoc(ResultQuery, "Exhaust");
- ServerVehicles[vehid][VehWheels] = SQLiteGetResultIntAssoc(ResultQuery, "Wheels");
- ServerVehicles[vehid][VehStereo] = SQLiteGetResultIntAssoc(ResultQuery, "Stereo");
- ServerVehicles[vehid][VehHydraulics] = SQLiteGetResultIntAssoc(ResultQuery, "Hydraulics");
- ServerVehicles[vehid][VehFB] = SQLiteGetResultIntAssoc(ResultQuery, "FB");
- ServerVehicles[vehid][VehRB] = SQLiteGetResultIntAssoc(ResultQuery, "RB");
- ServerVehicles[vehid][VehVR] = SQLiteGetResultIntAssoc(ResultQuery, "VR");
- ServerVehicles[vehid][VehVL] = SQLiteGetResultIntAssoc(ResultQuery, "VL");
- ServerVehicles[vehid][VehX] = SQLiteGetResultIntAssoc(ResultQuery, "PosX");
- ServerVehicles[vehid][VehY] = SQLiteGetResultIntAssoc(ResultQuery, "PosY");
- ServerVehicles[vehid][VehZ] = SQLiteGetResultIntAssoc(ResultQuery, "PosZ");
- ServerVehicles[vehid][VehA] = SQLiteGetResultIntAssoc(ResultQuery, "PosA");
- ServerVehicles[vehid][VehPaintjob] = SQLiteGetResultIntAssoc(ResultQuery, "Paintjob");
- ServerVehicles[vehid][VehColor1] = SQLiteGetResultIntAssoc(ResultQuery, "Color1");
- ServerVehicles[vehid][VehColor2] = SQLiteGetResultIntAssoc(ResultQuery, "Color2");
- ServerVehicles[vehid][VehTiresArmour] = SQLiteGetResultIntAssoc(ResultQuery, "TiresArmour");
- ServerVehicles[vehid][VehDoorsArmour] = SQLiteGetResultIntAssoc(ResultQuery, "DoorsArmour");
- ServerVehicles[vehid][VehPanelsArmour] = SQLiteGetResultIntAssoc(ResultQuery, "PanelsArmour");
- ServerVehicles[vehid][VehLightsArmour] = SQLiteGetResultIntAssoc(ResultQuery, "LightsArmour");
- ServerVehicles[vehid][VehHealth] = SQLiteGetResultFloatAssoc(ResultQuery, "Health");
- VehCreate[vehid] = CreateVehicle(ServerVehicles[vehid][VehModel], ServerVehicles[vehid][VehX], ServerVehicles[vehid][VehY], ServerVehicles[vehid][VehZ], ServerVehicles[vehid][VehA], ServerVehicles[vehid][VehColor1], ServerVehicles[vehid][VehColor2], -1);
- if(ServerVehicles[vehid][VehPaintjob] != -1) ChangeVehiclePaintjob(VehCreate[vehid], ServerVehicles[vehid][VehPaintjob]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehSpoiler]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehHood]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehRoof]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehSideskirt]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehLamps]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehNitro]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehExhaust]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehWheels]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehStereo]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehHydraulics]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehFB]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehRB]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehVR]);
- AddVehicleComponent(VehCreate[vehid], ServerVehicles[vehid][VehVL]);
- ServerVehicles[vehid][VehLocked] = true;
- SetVehicleHealth(VehCreate[vehid], ServerVehicles[vehid][VehHealth]);
- SetVehicleNumberPlate(VehCreate[vehid], ServerVehicles[vehid][VehOwner]);
- SetVehicleParamsForPlayer(VehCreate[vehid], i, 0, 0);
- SetVehicleParamsEx(VehCreate[vehid], 0, 0, 0, 0, 0, 0, 0);
- ServerVehicles[vehid][VehStatus] = 0;
- if(!db_next_row(ResultQuery))
- break;
- //SetVehicleToRespawn(i);
- }
- }
- else print("SQLite INFO! (LoadVehicles) não há veículos inseridos no banco de dados.");
- }
- public OnPlayerUpdate(playerid)
- {
- // Se eu estiver em uma corrida...
- if(PlayerInfo[playerid][pRaceID] > -1)
- {
- foreach(Player, i)
- {
- // Jogadores que estiverem na mesma corrida que eu...
- if(PlayerInfo[i][pRaceID] == PlayerInfo[playerid][pRaceID])
- {
- SetPlayerMarkerForPlayer(playerid, i, 0xFFFFFF);
- }
- // Jogadores que estiverem em corrida, mas não a mesma que eu...
- if(PlayerInfo[i][pRaceID] != -1 && PlayerInfo[i][pRaceID] != PlayerInfo[playerid][pRaceID])
- {
- new Float:ppos[3];
- GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);
- // Se tiver próximo...
- if(IsPlayerInRangeOfPoint(i, 50.0, ppos[0], ppos[1], ppos[2]))
- SetPlayerMarkerForPlayer(playerid, i, 0x999999FF);
- }
- // Jogadores que não estiverem em corridas...
- if(PlayerInfo[i][pRaceID] == -1)
- {
- new Float:ppos[3];
- GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);
- // Se tiver próximo...
- if(IsPlayerInRangeOfPoint(i, 50.0, ppos[0], ppos[1], ppos[2]))
- SetPlayerMarkerForPlayer(playerid, i, 0x666666FF);
- else
- SetPlayerMarkerForPlayer(playerid, i, GetPlayerColor(i) & 0xFFFFFF00);
- }
- }
- }
- else if(PlayerInfo[playerid][pRaceID] == -1)
- {
- foreach(Player, i)
- {
- if(PlayerInfo[i][pRaceID] > -1)
- SetPlayerMarkerForPlayer(playerid, i, 0x6E8B3FF);
- else
- SetPlayerMarkerForPlayer(playerid, i, 0x666666FF);
- }
- }
- return true;
- }
- public OnServerUpdate()
- {
- new year, month, day, hour, minute, second, str[50];
- getdate(year, month, day);
- gettime(hour, minute, second);
- format(str, sizeof str, "%02d/%02d/%d %02d:%02d", day, month, year, hour, minute);
- TextDrawSetString(txtDate, str);
- }
- public OnVehicleMod(playerid,vehicleid,componentid)
- {
- if(GetPlayerInterior(playerid) == 0)
- {
- SendClientMessageToAll(COLOR_RED, "AntiCheater: veículo %d equipado com componente %d pelo jogador %s fora da garagem de tuning!", vehicleid, componentid, GetPlayerName(playerid));
- }
- else
- {
- SendClientMessage(playerid, COLOR_GREEN, "Server: veículo %d equipado.", vehicleid);
- PlayerInfo[playerid][pVehModded] = true; // Confirmar que o jogador tunou o veículo
- }
- return 1;
- }
- public OnEnterExitModShop(playerid, enterexit, interiorid)
- {
- if(enterexit == 1)
- printf("<Log> %s entrou em uma garagem de tuning!", GetPlayerName(playerid));
- else if(enterexit == 0)
- {
- printf("<Log> %s saiu de uma garagem de tuning!", GetPlayerName(playerid));
- // Confirmar se o jogador tunou mesmo o carro. Caso use cheater de tunar carro, ele não salva os componentes...
- // A variável pVehModded fica false...
- if(PlayerInfo[playerid][pVehModded])
- {
- printf("<Log> %s saiu de uma garagem de tuning e tunou seu carro!", GetPlayerName(playerid));
- if(IsPlayerInAnyVehicle(playerid))
- {
- new VehicleID = GetPlayerVehicleID(playerid),
- szString[200];
- ServerVehicles[VehicleID][VehSpoiler] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_SPOILER);
- ServerVehicles[VehicleID][VehHood] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_HOOD);
- ServerVehicles[VehicleID][VehRoof] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_ROOF);
- ServerVehicles[VehicleID][VehSideskirt] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_SIDESKIRT);
- ServerVehicles[VehicleID][VehLamps] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_LAMPS);
- ServerVehicles[VehicleID][VehNitro] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_NITRO);
- ServerVehicles[VehicleID][VehExhaust] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_EXHAUST);
- ServerVehicles[VehicleID][VehWheels] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_WHEELS);
- ServerVehicles[VehicleID][VehStereo] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_STEREO);
- ServerVehicles[VehicleID][VehHydraulics] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_HYDRAULICS);
- ServerVehicles[VehicleID][VehFB] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_FRONT_BUMPER);
- ServerVehicles[VehicleID][VehRB] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_REAR_BUMPER);
- ServerVehicles[VehicleID][VehVR] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_VENT_RIGHT);
- ServerVehicles[VehicleID][VehVL] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_VENT_LEFT);
- // Só salva os componentes de tuning...
- format(szString, sizeof szString, "UPDATE Vehicles SET Spoiler = %d, Hood = %d, Roof = %d, Sideskirt = %d WHERE ID = %d",
- ServerVehicles[VehicleID][VehSpoiler],
- ServerVehicles[VehicleID][VehHood],
- ServerVehicles[VehicleID][VehRoof],
- ServerVehicles[VehicleID][VehSideskirt],
- ServerVehicles[VehicleID][VehID]);
- db_query(DataBase, szString);
- if(!db_changes(DataBase))
- print("SQLite ERROR! (OnEnterExitModShop) 1 query: update não pode ser feito.");
- format(szString, sizeof szString, "UPDATE Vehicles SET \
- Lamps = %d, \
- Nitro = %d, \
- Exhaust = %d, \
- Wheels = %d \
- WHERE ID = %d",
- ServerVehicles[VehicleID][VehLamps],
- ServerVehicles[VehicleID][VehNitro],
- ServerVehicles[VehicleID][VehExhaust],
- ServerVehicles[VehicleID][VehWheels],
- ServerVehicles[VehicleID][VehID]);
- db_query(DataBase, szString);
- if(!db_changes(DataBase))
- print("SQLite ERROR! (OnEnterExitModShop) 2 query: update não pode ser feito.");
- format(szString, sizeof szString, "UPDATE Vehicles SET \
- Stereo = %d, \
- Hydraulics = %d, \
- FB = %d, \
- RB = %d \
- WHERE ID = %d",
- ServerVehicles[VehicleID][VehStereo],
- ServerVehicles[VehicleID][VehHydraulics],
- ServerVehicles[VehicleID][VehFB],
- ServerVehicles[VehicleID][VehRB],
- ServerVehicles[VehicleID][VehID]);
- db_query(DataBase, szString);
- if(!db_changes(DataBase))
- print("SQLite ERROR! (OnEnterExitModShop) 3 query: update não pode ser feito.");
- format(szString, sizeof szString, "UPDATE Vehicles SET \
- VR = %d, \
- VL = %d, \
- WHERE ID = %d",
- ServerVehicles[VehicleID][VehVR],
- ServerVehicles[VehicleID][VehVL],
- ServerVehicles[VehicleID][VehID]);
- db_query(DataBase, szString);
- if(!db_changes(DataBase))
- print("SQLite ERROR! (OnEnterExitModShop) 4 query: update não pode ser feito.");
- format(szString, sizeof szString, "UPDATE Vehicles SET \
- VehColor1 = %d, \
- VehColor2 = %d, \
- VehPaintjob = %d, \
- WHERE ID = %d",
- ServerVehicles[VehicleID][VehColor1],
- ServerVehicles[VehicleID][VehColor2],
- ServerVehicles[VehicleID][VehPaintjob],
- ServerVehicles[VehicleID][VehID]);
- db_query(DataBase, szString);
- if(!db_changes(DataBase))
- print("SQLite ERROR! (OnEnterExitModShop) 5 query: update não pode ser feito.");
- }
- }
- }
- return true;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- /*
- SQLite VEHICLES
- Posição do veículo
- */
- if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT)
- {
- new VehicleID = GetPlayerVehicleID(playerid), szString[200];
- format(szString, sizeof szString, "UPDATE Vehicles SET PosX = %f, PosY = %f, PosZ = %f, posA = %f WHERE ID = %d", ServerVehicles[VehicleID][VehX], ServerVehicles[VehicleID][VehY], ServerVehicles[VehicleID][VehZ], ServerVehicles[VehicleID][VehA], ServerVehicles[VehicleID][VehID]);
- db_query(DataBase, szString);
- if(!db_changes(DataBase))
- {
- SendClientMessage(playerid, COLOR_RED, "Erro no banco de dados (parte: StateChange). Contate um administrador.");
- printf("SQLite ERROR! (OnPlayerStateChange) Posição do veículo: %d (db-id:%d) não pode ser salvo", VehicleID, ServerVehicles[VehicleID][VehID]);
- }
- }
- else if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
- {
- new i = GetPlayerVehicleID(playerid),
- engine, lights, alarm, doors, bonnet, boot, obj;
- GetVehicleParamsEx(i, engine, lights, alarm, doors, bonnet, boot, obj);
- if(engine == 0) ShowPlayerDialog(playerid, DIALOG_ENGINE, 0, RGB_COLOR_GOLD"VEÍCULO", RGB_COLOR_WHITE"Deseja ligar o veículo?\nUse também o comando /motor para ligar/desligar.", "Ligar", "Não");
- }
- return 1;
- }
- public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
- {
- if(hittype != -1 && hittype == BULLET_HIT_TYPE_VEHICLE)
- {
- new Float:ModelPos[3];
- GetVehicleModelInfo(GetVehicleModel(hitid), VEHICLE_MODEL_INFO_PETROLCAP, ModelPos[0], ModelPos[1], ModelPos[2]);
- if(GetDistanceBetweenPoints(fX, fY, fZ, ModelPos[0], ModelPos[1], ModelPos[2]) < 0.1)
- {
- CreateExplosion(ModelPos[0], ModelPos[1], ModelPos[2], 7, 4.0);
- }
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- SendDeathMessage(INVALID_PLAYER_ID, playerid, 200);
- SetPlayerColor(playerid, 0xFFFFFFFF);
- PlayerInfo[playerid][pGPS] = -1;
- PlayerInfo[playerid][Registered] = false;
- PlayerInfo[playerid][Logged] = false;
- // Funções SQLite
- new szString[100],
- DBResult:QueryResult;
- format(szString, 128, "SELECT * FROM Users WHERE Nick = '%s'", GetPlayerName(playerid));
- QueryResult = db_query(DataBase, szString);
- if(db_num_rows(QueryResult))
- {
- PlayerInfo[playerid][Registered] = true;
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFD700}CONTA CADASTRADA", "{FFFFFF}Informe a senha dessa conta:", "Logar", "Sair");
- }
- else
- {
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFD700}CONTA NÃO CADASTRADA", "{FFFFFF}Digite uma nova senha para está conta:", "Cadastrar", "Sair");
- }
- PlayerInfo[playerid][pRaceID] = -1;
- ResetPlayerMoney(playerid);
- TextDrawShowForPlayer(playerid, BoasVindas);
- TextDrawShowForPlayer(playerid, BoasVindas2);
- return true;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- new posStr[100],
- szString[300];
- SendDeathMessage(INVALID_PLAYER_ID, playerid, 201);
- GetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
- GetPlayerFacingAngle(playerid, PlayerInfo[playerid][pA]);
- format(posStr, sizeof posStr, "%f %f %f %f", PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ], PlayerInfo[playerid][pA]);
- format(szString, sizeof szString, "UPDATE Users SET Money = '%d', Position = '%s', Skin = %d, Interior = %d WHERE ID = %d", PlayerInfo[playerid][playermoney], posStr, PlayerInfo[playerid][pSkin], GetPlayerInterior(playerid), PlayerInfo[playerid][pID]);
- db_query(DataBase, szString);
- if(!db_changes(DataBase))
- printf("SQLite ERRO! (OnPlayerDisconnect) 'update' nos dados do jogador '%s' não pode ser feito", GetPlayerName(playerid));
- SaveWeapons(playerid);
- return true;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- if(PlayerInfo[playerid][Logged] == false && PlayerInfo[playerid][Registered] == true) ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFD700}CONTA CADASTRADA", "{FFFFFF}Informe a senha dessa conta:", "Logar", "Sair");
- //else if(PlayerInfo[playerid][Registered] == 0) ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFD700}CONTA NÃO CADASTRADA", "{FFFFFF}Digite uma nova senha para está conta:", "Cadastrar", "Sair");
- SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
- SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]);
- SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
- SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pA]);
- SetPlayerCameraPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY]+3.5, PlayerInfo[playerid][pZ]+10.0);
- SetPlayerCameraLookAt(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
- TogglePlayerControllable(playerid, 0);
- return true;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_TEXT_NO_EFFECT:
- {
- if(response)
- {
- if(PlayerInfo[playerid][pTutorial] == 1) // Carros
- {
- // Próximo dialogo: carros
- new sz_Dialog1[] = RGB_COLOR_GOLD"VEÍCULOS\n\n"RGB_COLOR_WHITE"Cada jogador ao se registrar, pode escolher 1 veículo dentre 3 pré-definidos: Clover, Blista ou Sunrise.\n\
- Esse será seu veículo de início. Com ele você poderá entrar em corridas para ganhar dinheiro, tunar em uma das garagens de tuning, e participar de eventos.\n";
- new sz_Dialog2[] = "É importante que você cuide do seu veículo; Não o deixe destrancado, e nem deixe estacionado pelas ruas.\n\
- Seu veículo fica salvo no local onde você o deixou, e seus tunings também ficam salvos.";
- new sz_Dialog[1000];
- strcat(sz_Dialog, sz_Dialog1);
- strcat(sz_Dialog, sz_Dialog2);
- PlayerInfo[playerid][pTutorial] = 2;
- ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"TUTORIAL", sz_Dialog, "P. PÁGINA", "");
- }
- else if(PlayerInfo[playerid][pTutorial] == 2) // Armas
- {
- new sz_Dialog[] = RGB_COLOR_GOLD"ARMAS\n\n\
- "RGB_COLOR_WHITE"Você pode comprar as suas armas normalmente nas Ammunations, e elas ficarão salvas caso você saia\
- do servidor.\n Armas especiais como: sniper, granada, etc.. só poderão ser compradas pelo mercado negro.";
- PlayerInfo[playerid][pTutorial] = 0;
- ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"TUTORIAL", sz_Dialog, "P. PÁGINA", "");
- }
- }
- }
- case DIALOG_REGISTER:
- {
- if(!response) Kick(playerid);
- else
- {
- new //DBResult:ResultQuery,
- Password[130],
- szString[256];
- WP_Hash(Password, sizeof(Password), inputtext); // Codificar string
- format(szString, sizeof szString, "INSERT INTO Users(Nick, Password) VALUES('%s', '%s')", GetPlayerName(playerid), Password);
- db_query(DataBase, szString);
- if(!db_changes(DataBase))
- {
- printf("SQLite !ERROR: Não foi possível criar a conta do jogador %s no bando de dados.", GetPlayerName(playerid));
- SendClientMessage(playerid, COLOR_RED, "Erro no banco de dados (parte: DIALOG_REGISTER). Contate um administrador.");
- Kick(playerid);
- return true;
- }
- PlayerInfo[playerid][Logged] = true;
- TextDrawHideForPlayer(playerid, BoasVindas);
- TextDrawHideForPlayer(playerid, BoasVindas2);
- SendClientMessage(playerid, COLOR_WHITE, "Server: conta %s cadastrada com a senha '%s', bom jogo!", GetPlayerName(playerid), inputtext);
- PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
- PlayerInfo[playerid][pX] = 1722.7843;
- PlayerInfo[playerid][pY] = -1713.9490;
- PlayerInfo[playerid][pZ] = 13.5114;
- PlayerInfo[playerid][pA] = 181.5285;
- PlayerInfo[playerid][pInterior] = 0;
- PlayerInfo[playerid][pSkin] = 0;
- for(new i = 0; i < 13; i++)
- {
- PlayerInfo[playerid][pWeapon][i] = 0;
- PlayerInfo[playerid][pAmmo][i] = 0;
- }
- new sz_Dialog[] = #RGB_COLOR_GOLD"REGRAS DO SERVIDOR\n\n\
- "RGB_COLOR_WHITE"1. Proibido o uso de qualquer tipo de cheater;\n\
- 2. Proibido se aproveitar de qualquer bug do gamemode;\n\
- 3. Proibido ofensas a outros jogadores;\n\
- 4. Ao sair do servidor, deixa seu veículo estacionado em garagens, car parking, etc;\n\
- 5. ...";
- PlayerInfo[playerid][pTutorial] = 1;
- ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"TUTORIAL", sz_Dialog, "P. PÁGINA", "");
- }
- }
- case DIALOG_LOGIN:
- {
- if(!response) Kick(playerid);
- else
- {
- new szString[250],
- DBResult:ResultQuery,
- EnPassword[130];
- WP_Hash(EnPassword, sizeof(EnPassword), inputtext);
- // SQLite tabela Users
- format(szString, sizeof szString, "SELECT * FROM Users WHERE Nick = '%s' AND Password = '%s'", GetPlayerName(playerid), EnPassword);
- ResultQuery = db_query(DataBase, szString);
- if(db_num_rows(ResultQuery)) // Se existe o nickname e a Senha conferir...
- {
- new szPos[16];
- PlayerInfo[playerid][pSkin] = SQLiteGetResultIntAssoc(ResultQuery, "Skin");
- PlayerInfo[playerid][playermoney] = SQLiteGetResultIntAssoc(ResultQuery, "Money");
- PlayerInfo[playerid][pInterior] = SQLiteGetResultIntAssoc(ResultQuery, "Interior");
- PlayerInfo[playerid][pID] = SQLiteGetResultIntAssoc(ResultQuery, "ID");
- db_get_field_assoc(ResultQuery, "Position", szPos, sizeof(szPos));
- LoadWeapons(playerid);
- GivePlayerMoney(playerid, PlayerInfo[playerid][playermoney]);
- TextDrawHideForPlayer(playerid, BoasVindas);
- TextDrawHideForPlayer(playerid, BoasVindas2);
- SendClientMessage(playerid, COLOR_WHITE, "Server: seja bem vindo, %s, tenha um bom jogo!", GetPlayerName(playerid));
- PlayerInfo[playerid][Registered] = true;
- PlayerInfo[playerid][Logged] = true;
- sscanf(szPos, "ffff", PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ], PlayerInfo[playerid][pA]);
- //SetSpawnInfo(playerid, NO_TEAM, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ], PlayerInfo[playerid][pA], 24, 100, 0, 0, 0, 0);
- }
- else ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, RGB_COLOR_GOLD"CONTA CADASTRADA", RGB_COLOR_WHITE"Digite a senha dessa conta:", "Logar", "Sair");
- }
- }
- case DIALOG_ENGINE:
- {
- if(response)
- {
- ToggleVehicleEngine(playerid, GetPlayerVehicleID(playerid));
- }
- }
- case DIALOG_WORKSHOP:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0: ShowPlayerDialog(playerid, DIALOG_WORKSHOPH, DIALOG_STYLE_LIST, RGB_COLOR_GOLD"OFICINA DE TUNING", "+500 Resistência (R$1500)\n+1000 Resistência (R$2500)\n+2000 Resistência (R$5000)", "Comprar", "Voltar");
- case 1:
- {
- if(GetPlayerMoney(playerid) > 3000)
- {
- new szString[100];
- // SQLite Vehicles
- format(szString, sizeof szString, "UPDATE Vehicles SET DoorsArmour = %d WHERE ID = %d", ServerVehicles[GetPlayerVehicleID(playerid)][VehDoorsArmour], ServerVehicles[GetPlayerVehicleID(playerid)][VehID]);
- db_query(DataBase, szString);
- if(db_changes(DataBase))
- {
- ServerVehicles[GetPlayerVehicleID(playerid)][VehDoorsArmour] = 1;
- SendClientMessage(playerid, COLOR_GOLD, "Server: você blindou as portas do seu %s(%d)", VehicleNames[ServerVehicles[GetPlayerVehicleID(playerid)][VehModel] - 400], GetPlayerVehicleID(playerid));
- GivePlayerMoney(playerid, -3000);
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro no banco de dados do servidor. Contate um administrador.");
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro: você precisa de $3000.");
- }
- case 2:
- {
- if(GetPlayerMoney(playerid) > 4000)
- {
- new szString[100];
- format(szString, sizeof szString, "UPDATE Vehicles SET PanelsArmour = %d WHERE ID = %d", ServerVehicles[GetPlayerVehicleID(playerid)][VehPanelsArmour], ServerVehicles[GetPlayerVehicleID(playerid)][VehID]);
- db_query(DataBase, szString);
- if(db_changes(DataBase))
- {
- ServerVehicles[GetPlayerVehicleID(playerid)][VehPanelsArmour] = 1;
- SendClientMessage(playerid, COLOR_GOLD, "Server: você blindou os painéis do seu %s(%d)", VehicleNames[ServerVehicles[GetPlayerVehicleID(playerid)][VehModel] - 400], GetPlayerVehicleID(playerid));
- GivePlayerMoney(playerid, -4000);
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro no banco de dados do servidor. Contate um administrador.");
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro: você precisa de $4000.");
- }
- case 3:
- {
- if(GetPlayerMoney(playerid) > 5000)
- {
- new szString[100];
- // SQLite Vehicles
- format(szString, sizeof szString, "UPDATE Vehicles SET TiresArmour = %d WHERE ID = %d", ServerVehicles[GetPlayerVehicleID(playerid)][VehTiresArmour], ServerVehicles[GetPlayerVehicleID(playerid)][VehID]);
- db_query(DataBase, szString);
- if(db_changes(DataBase))
- {
- ServerVehicles[GetPlayerVehicleID(playerid)][VehTiresArmour] = 1;
- SendClientMessage(playerid, COLOR_GOLD, "Server: você blindou as rodas do seu %s(%d)", VehicleNames[ServerVehicles[GetPlayerVehicleID(playerid)][VehModel] - 400], GetPlayerVehicleID(playerid));
- GivePlayerMoney(playerid, -5000);
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro no banco de dados do servidor. Contate um administrador.");
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro: você precisa de $5000.");
- }
- case 4:
- {
- if(GetPlayerMoney(playerid) > 3000)
- {
- new szString[100];
- // SQLite Vehicles
- format(szString, sizeof szString, "UPDATE Vehicles SET LightsArmour = %d WHERE ID = %d", ServerVehicles[GetPlayerVehicleID(playerid)][VehLightsArmour], ServerVehicles[GetPlayerVehicleID(playerid)][VehID]);
- db_query(DataBase, szString);
- if(db_changes(DataBase))
- {
- ServerVehicles[GetPlayerVehicleID(playerid)][VehLightsArmour] = 1;
- SendClientMessage(playerid, COLOR_GOLD, "Server: você blindou os faróis do seu %s(%d)", VehicleNames[ServerVehicles[GetPlayerVehicleID(playerid)][VehModel] - 400], GetPlayerVehicleID(playerid));
- GivePlayerMoney(playerid, -3000);
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro no banco de dados do servidor. Contate um administrador.");
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro: você precisa de $3000.");
- }
- case 5:
- {
- if(GetPlayerMoney(playerid) > 2500)
- ShowPlayerDialog(playerid, DIALOG_WORKSHOP_COLOR, DIALOG_STYLE_INPUT, RGB_COLOR_GOLD"OFICINA DE TUNING", RGB_COLOR_WHITE"Selecione o ID das cores (128 a 255).\nVocê pode conferir todas as cores no link abaixo:\nhttp://wiki.sa-mp.com/wiki/Vehicle_Color_IDs\nExemplo: 222 1", "Pintar", "Voltar");
- else
- SendClientMessage(playerid, COLOR_RED, "Erro: você precisa de $2500.");
- }
- case 6:
- {
- if(GetPlayerMoney(playerid) > 100)
- {
- new szString[100];
- // SQLite Vehicles
- format(szString, sizeof szString, "UPDATE Vehicles SET Health = %d WHERE ID = %f", ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth], ServerVehicles[GetPlayerVehicleID(playerid)][VehID]);
- db_query(DataBase, szString);
- if(db_changes(DataBase))
- {
- RepairVehicle(GetPlayerVehicleID(playerid));
- SetVehicleHealth(GetPlayerVehicleID(playerid), ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth]);
- GivePlayerMoney(playerid, -100);
- SendClientMessage(playerid, COLOR_GOLD, "Server: veículo %s(%d) reparado.", VehicleNames[ServerVehicles[GetPlayerVehicleID(playerid)][VehModel] - 400], GetPlayerVehicleID(playerid));
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro no banco de dados do servidor. Contate um administrador.");
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro: você precisa de $100.");
- }
- }
- }
- }
- case DIALOG_WORKSHOPH:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:
- {
- if(ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] < 1500.0)
- {
- if(GetPlayerMoney(playerid) > 1500)
- {
- new szString[100];
- // SQLite Vehicles
- format(szString, sizeof szString, "UPDATE Vehicles SET Health = %f WHERE ID = %d", ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth], ServerVehicles[GetPlayerVehicleID(playerid)][VehID]);
- db_query(DataBase, szString);
- if(db_changes(DataBase))
- {
- SendClientMessage(playerid, COLOR_GOLD, "Server: você fez um upgrade na resistência do seu %s(%d) para 1500(car health).", VehicleNames[ServerVehicles[GetPlayerVehicleID(playerid)][VehModel] - 400], GetPlayerVehicleID(playerid));
- RepairVehicle(GetPlayerVehicleID(playerid));
- ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] = 1500.0;
- SetVehicleHealth(GetPlayerVehicleID(playerid), 1500.0);
- GivePlayerMoney(playerid, -1500);
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro no banco de dados do servidor. Contate um administrador.");
- }
- else SendClientMessage(playerid, COLOR_RED, "Server: você precisa de $1500.");
- }
- else SendClientMessage(playerid, COLOR_RED, "Server: a resistência desse veículo já é maior que 1500.");
- }
- case 1:
- {
- if(ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] < 2000.0)
- {
- if(GetPlayerMoney(playerid) > 2500)
- {
- new szString[100];
- // SQLite Vehicles
- format(szString, sizeof szString, "UPDATE Vehicles SET Health = %f WHERE ID = %d", ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth], ServerVehicles[GetPlayerVehicleID(playerid)][VehID]);
- db_query(DataBase, szString);
- if(db_changes(DataBase))
- {
- SendClientMessage(playerid, COLOR_GOLD, "Server: você fez um upgrade na resistência do seu %s(%d) para 2000(car health).", VehicleNames[ServerVehicles[GetPlayerVehicleID(playerid)][VehModel] - 400], GetPlayerVehicleID(playerid));
- RepairVehicle(GetPlayerVehicleID(playerid));
- ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] = 2000.0;
- SetVehicleHealth(GetPlayerVehicleID(playerid), 2000.0);
- GivePlayerMoney(playerid, -2500);
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro no banco de dados do servidor. Contate um administrador.");
- }
- else SendClientMessage(playerid, COLOR_RED, "Server: você precisa de $2500.");
- }
- else SendClientMessage(playerid, COLOR_RED, "Server: a resistência desse veículo já é maior que 2000.");
- }
- case 2:
- {
- if(ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] < 3000.0)
- {
- if(GetPlayerMoney(playerid) > 5000)
- {
- new szString[100];
- // SQLite Vehicles
- format(szString, sizeof szString, "UPDATE Vehicles SET Health = %f WHERE ID = %d", ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth], ServerVehicles[GetPlayerVehicleID(playerid)][VehID]);
- db_query(DataBase, szString);
- if(db_changes(DataBase))
- {
- SendClientMessage(playerid, COLOR_GOLD, "Server: você fez um upgrade na resistência do seu %s(%d) para 3000(car health).", VehicleNames[ServerVehicles[GetPlayerVehicleID(playerid)][VehModel] - 400], GetPlayerVehicleID(playerid));
- RepairVehicle(GetPlayerVehicleID(playerid));
- ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] = 3000.0;
- SetVehicleHealth(GetPlayerVehicleID(playerid), 3000.0);
- GivePlayerMoney(playerid, -5000);
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro no banco de dados do servidor. Contate um administrador.");
- }
- else SendClientMessage(playerid, COLOR_RED, "Server: você precisa de $5000.");
- }
- else SendClientMessage(playerid, COLOR_RED, "Server: a resistência desse veículo já é igual a 3000.");
- }
- }
- } else ShowPlayerDialog(playerid, DIALOG_WORKSHOP, DIALOG_STYLE_LIST, RGB_COLOR_GOLD"OFICINA DE TUNING", RGB_COLOR_WHITE"Aumentar Resistência\nBlindar Portas\t\t\tR$3000\nBlindar Paineis\t\t\tR$3000\nBlindar Rodas\t\t\tR$3000\nBlindar Luzes\t\t\tR$3000\nPintura\t\t\tR$2500\nReparar Veículo\t\t\tR$100", "Escolher", "Sair");
- }
- case DIALOG_WORKSHOP_COLOR:
- {
- if(response)
- {
- new cID, cID2;
- if(sscanf(inputtext, "dd", cID,cID2)) SendClientMessage(playerid, COLOR_RED, "Erro: digite os id da cor1 e cor2.");
- else
- {
- new szString[100];
- // SQLite Vehicles
- format(szString, sizeof szString, "UPDATE Vehicles SET Color1 = %d, Color2 = %d WHERE ID = %d", ServerVehicles[GetPlayerVehicleID(playerid)][VehColor1], ServerVehicles[GetPlayerVehicleID(playerid)][VehColor2], ServerVehicles[GetPlayerVehicleID(playerid)][VehID]);
- db_query(DataBase, szString);
- if(db_changes(DataBase))
- {
- GivePlayerMoney(playerid, -2500);
- ChangeVehicleColor(GetPlayerVehicleID(playerid), cID, cID2);
- ServerVehicles[GetPlayerVehicleID(playerid)][VehColor1] = cID;
- ServerVehicles[GetPlayerVehicleID(playerid)][VehColor2] = cID2;
- SendClientMessage(playerid, COLOR_GOLD, "Server: você mudou a cor do seu %s(%d).", VehicleNames[ServerVehicles[GetPlayerVehicleID(playerid)][VehModel] - 400], GetPlayerVehicleID(playerid));
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro no banco de dados do servidor. Contate um administrador.");
- }
- }
- else ShowPlayerDialog(playerid, DIALOG_WORKSHOP, DIALOG_STYLE_LIST, RGB_COLOR_GOLD"OFICINA DE TUNING", RGB_COLOR_WHITE"Aumentar Resistência\t\t\t\t\t\t\t\nBlindar Portas\t\t\t\t\t\t\tR$3000\nBlindar Paineis\t\t\t\t\t\t\tR$3000\nBlindar Rodas\t\t\t\t\t\t\tR$3000\nBlindar Luzes\t\t\t\t\t\t\tR$3000\nPintura\t\t\t\t\t\t\tR$2500\nReparar Veículo\t\t\t\t\t\t\tR$100", "Escolher", "Sair");
- }
- case DIALOG_CARS:
- {
- if(response)
- {
- new id;
- if(sscanf(inputtext, "d", id)) SendClientMessage(playerid, COLOR_RED, "Erro: digite o id do seu veículo.");
- else
- {
- if(strcmp(GetPlayerName(playerid), ServerVehicles[id][VehOwner], false) == 0)
- {
- new Float:vPos[3];
- GetVehiclePos(id, vPos[0], vPos[1], vPos[2]);
- SetPlayerMapIcon(playerid, 99, vPos[0], vPos[1], vPos[2], 55, 0xFFFFFFFF, 1);
- PlayerInfo[playerid][pGPS] = id;
- SendClientMessage(playerid, COLOR_GOLD, "Server: seu veículo %s(%d) está localizado no mapa.", VehicleNames[ServerVehicles[id][VehModel] - 400], id);
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro: digite o id do seu veículo.");
- }
- }
- }
- }
- return true;
- }
- // public OnPlayerRequestSpawn(playerid) - Jogador solicita spawn na seleção de classes
- public OnPlayerRequestSpawn(playerid)
- {
- if(!PlayerInfo[playerid][Logged] || PlayerInfo[playerid][pTutorial] > 0)
- return false;
- else
- {
- TextDrawShowForPlayer(playerid, txtDate);
- TextDrawShowForPlayer(playerid, txtModeName);
- if(PlayerInfo[playerid][Registered] == false)
- {
- SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]);
- SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
- SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]+3.5);
- TogglePlayerControllable(playerid, true);
- }
- else
- {
- SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]);
- SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
- TogglePlayerControllable(playerid, 1);
- SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]+2.5);
- }
- }
- return true;
- }
- public OnPlayerClickTextDraw(playerid, Text:clickedid)
- {
- new Float:ppos[4];
- GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);
- GetPlayerFacingAngle(playerid, ppos[3]);
- return 1;
- }
- public OnVehicleDamageStatusUpdate(vehicleid, playerid)
- {
- #pragma unused playerid
- new panels, doors, lights, tires, szString[200];
- GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
- if(ServerVehicles[vehicleid][VehDoorsArmour] == 1) doors = encode_doors(0, 0, 0, 0, 0, 0); // fix all doors //fell off - (4, 4, 4, 4, 0, 0)
- if(ServerVehicles[vehicleid][VehPanelsArmour] == 1) panels = encode_panels(0, 0, 0, 0, 0, 0, 0); // fix all panels //fell off - (3, 3, 3, 3, 3, 3, 3)
- if(ServerVehicles[vehicleid][VehTiresArmour] == 1) tires = encode_tires(0, 0, 0, 0); // fix all tires
- if(ServerVehicles[vehicleid][VehLightsArmour] == 1) lights = encode_lights(0, 0, 0, 0); // fix all lights
- UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
- /*
- SQLite VEHICLES
- Health, DoorsArmour, TiresArmour, BonnetArmour e LightsArmour
- */
- GetVehicleHealth(vehicleid, ServerVehicles[vehicleid][VehHealth]);
- format(szString, sizeof szString, "UPDATE Vehicles SET DoorsArmour = %d, LightsArmour = %f, PanelsArmour = %f, TiresArmour = %f, Health = %f WHERE ID = %d", ServerVehicles[vehicleid][VehDoorsArmour], ServerVehicles[vehicleid][VehLightsArmour], ServerVehicles[vehicleid][VehPanelsArmour], ServerVehicles[vehicleid][VehTiresArmour], ServerVehicles[vehicleid][VehHealth], ServerVehicles[vehicleid][VehID]);
- db_query(DataBase, szString);
- if(!db_changes(DataBase))
- printf("SQLite ERROR! (OnVehicleDamageStatusUpdate) Vehicleid: %d, Player: %s", vehicleid, GetPlayerName(playerid));
- return 1;
- }
- encode_tires(tire1, tire2, tire3, tire4) return tire1 | (tire2 << 1) | (tire3 << 2) | (tire4 << 3);
- encode_panels(flp, frp, rlp, rrp, windshield, front_bumper, rear_bumper)
- {
- return flp | (frp << 4) | (rlp << 8) | (rrp << 12) | (windshield << 16) | (front_bumper << 20) | (rear_bumper << 24);
- }
- encode_doors(bonnet, boot, driver_door, passenger_door, behind_driver_door, behind_passenger_door)
- {
- #pragma unused behind_driver_door
- #pragma unused behind_passenger_door
- return bonnet | (boot << 8) | (driver_door << 16) | (passenger_door << 24);
- }
- encode_lights(light1, light2, light3, light4)
- {
- return light1 | (light2 << 1) | (light3 << 2) | (light4 << 3);
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- GetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
- GetPlayerFacingAngle(playerid, PlayerInfo[playerid][pA]);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]+2.5);
- SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pA]);
- TogglePlayerControllable(playerid, 1);
- for(new i = 0; i < 13; i++) GivePlayerWeapon(playerid, PlayerInfo[playerid][pWeapon][i], PlayerInfo[playerid][pAmmo][i]);
- return true;
- }
- public OnVehicleRespray(playerid, vehicleid, color1, color2)
- {
- ServerVehicles[vehicleid][VehColor1] = color1;
- ServerVehicles[vehicleid][VehColor2] = color2;
- return true;
- }
- public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
- {
- ServerVehicles[vehicleid][VehPaintjob] = paintjobid;
- return true;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- ServerVehicles[vehicleid][VehStatus] = 1;
- return true;
- }
- public OnVehicleSpawn(vehicleid)
- {
- SetVehiclePos(vehicleid, ServerVehicles[vehicleid][VehX], ServerVehicles[vehicleid][VehY], ServerVehicles[vehicleid][VehZ]);
- SetVehicleZAngle(vehicleid, ServerVehicles[vehicleid][VehA]);
- ChangeVehicleColor(vehicleid, ServerVehicles[vehicleid][VehColor1], ServerVehicles[vehicleid][VehColor2]);
- ChangeVehiclePaintjob(vehicleid, ServerVehicles[vehicleid][VehPaintjob]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehSpoiler]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehHood]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehRoof]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehSideskirt]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehLamps]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehNitro]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehExhaust]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehWheels]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehStereo]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehHydraulics]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehFB]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehRB]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehVR]);
- AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehVL]);
- //SetVehicleNumberPlate(vehicleid, ServerVehicles[vehicleid][VehPlate]);
- ServerVehicles[vehicleid][VehStatus] = 0;
- SetVehicleParamsEx(vehicleid, 0, 0, 0, 1, 0, 0, 0);
- return true;
- }
- //-----------------------------------/ Y_Race Sistem
- public OnPlayerFinishRace(playerid, race, position, prize, time)
- {
- new raceid = RaceCreate1[race];
- if(position == 1)
- {
- format(RaceInfo[raceid][Race1Name], 20, "%s", GetPlayerName(playerid));
- GivePlayerMoney(playerid, RaceInfo[raceid][RaceReward]);
- SendClientMessageToAll(COLOR_WHITE, "Race: %s terminou a corrida '%s' em 1st e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], RaceInfo[raceid][RaceReward]);
- }
- else if(position == 2)
- {
- format(RaceInfo[raceid][Race2Name], 20, "%s", GetPlayerName(playerid));
- GivePlayerMoney(playerid, floatround(RaceInfo[raceid][RaceReward]/2));
- SendClientMessageToAll(COLOR_WHITE, "Race: %s terminou a corrida '%s' em 2nd e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], floatround(RaceInfo[raceid][RaceReward]/2));
- }
- else if(position == 3)
- {
- format(RaceInfo[raceid][Race3Name], 20, "%s", GetPlayerName(playerid));
- GivePlayerMoney(playerid, floatround(RaceInfo[raceid][RaceReward]/3));
- SendClientMessageToAll(COLOR_WHITE, "Race: %s terminou a corrida '%s' em 3st e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], floatround(RaceInfo[raceid][RaceReward]/3));
- }
- else if(position >= 4 || position <= 8)
- {
- GivePlayerMoney(playerid, floatround(RaceInfo[raceid][RaceReward]/6));
- SendClientMessageToAll(COLOR_WHITE, "Race: %s terminou a corrida '%s' em %d colocado e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], position, floatround(RaceInfo[raceid][RaceReward]/6));
- }
- else if(position >= 9)
- {
- GivePlayerMoney(playerid, floatround(RaceInfo[raceid][RaceReward]/9));
- SendClientMessageToAll(COLOR_WHITE, "Race: %s terminou a corrida '%s' em %d colocado e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], position, floatround(RaceInfo[raceid][RaceReward]/9));
- }
- return true;
- }
- public OnPlayerExitRace(playerid, race)
- {
- new raceid = RaceCreate1[RaceCreate[PlayerInfo[playerid][pRaceID]]];
- RaceInfo[raceid][RaceCurrent]--;
- PlayerInfo[playerid][pRaceID] = -1;
- SendClientMessageToAll(COLOR_WHITE, "Race: %s saiu da corrida '%s'", GetPlayerName(playerid), RaceInfo[raceid][RaceName]);
- return true;
- }
- /*
- public OnPlayerExitRace(playerid, race)
- {
- //SetVehicleToRespawn(GetPlayerVehicleID(playerid));
- for(new i = 0; i < 100; i++)
- {
- if(race == RaceCreate[i])
- {
- new raceid = RaceCreate1[RaceCreate[i]];
- RaceInfo[raceid][RaceCurrent]--;
- PlayerInfo[playerid][pRaceID] = -1;
- SendClientMessageToAll(COLOR_WHITE, "Race: %s saiu da corrida '%s'", GetPlayerName(playerid), RaceInfo[raceid][RaceName]);
- break;
- }
- }
- return true;
- }
- */
- public OnRaceEnd(race)
- {
- new raceid = RaceCreate1[race], str[128];
- SendClientMessageToAll(COLOR_GOLD, "Race: a corrida '%s' terminou.", RaceInfo[raceid][RaceName]);
- foreach(Player, i)
- {
- if(PlayerInfo[i][pRaceID] == raceid)
- {
- PlayerInfo[i][pRaceID] = -1;
- }
- }
- format(str, sizeof str, "Corrida: %s 1st: %s 2nd: %s 3rd: %s", RaceInfo[raceid][RaceName], RaceInfo[raceid][Race1Name], RaceInfo[raceid][Race2Name], RaceInfo[raceid][Race3Name]);
- TextDrawSetString(RaceEndInfo2, str);
- TextDrawShowForAll(RaceEndInfo);
- TextDrawShowForAll(RaceEndInfo2);
- format(RaceInfo[raceid][Race1Name], 20, "None");
- format(RaceInfo[raceid][Race2Name], 20, "None");
- format(RaceInfo[raceid][Race3Name], 20, "None");
- RaceInfo[raceid][RaceOpen] = false;
- SetTimerEx("HideTextDraw", 6000, false, "d", 0);
- return true;
- }
- /*
- public OnRaceEnd(race)
- {
- new raceid, str[128];
- for(new k = 0; k < 100; k++)
- {
- if(race == RaceCreate[k])
- {
- raceid = RaceCreate1[RaceCreate[k]];
- SendClientMessageToAll(COLOR_GOLD, "Race: a corrida '%s' terminou.", RaceInfo[raceid][RaceName]);
- foreach(Player, i)
- {
- if(PlayerInfo[i][pRaceID] == raceid)
- {
- PlayerInfo[i][pRaceID] = -1;
- }
- }
- break;
- }
- }
- format(str, sizeof str, "Corrida: %s 1st: %s 2nd: %s 3rd: %s", RaceInfo[raceid][RaceName], RaceInfo[raceid][Race1Name], RaceInfo[raceid][Race2Name], RaceInfo[raceid][Race3Name]);
- TextDrawSetString(RaceEndInfo2, str);
- TextDrawShowForAll(RaceEndInfo);
- TextDrawShowForAll(RaceEndInfo2);
- format(RaceInfo[raceid][Race1Name], 20, "None");
- format(RaceInfo[raceid][Race2Name], 20, "None");
- format(RaceInfo[raceid][Race3Name], 20, "None");
- RaceInfo[raceid][RaceOpen] = false;
- SetTimerEx("HideTextDraw", 6000, false, "d", 0);
- return true;
- }
- */
- public StartRace(race)
- {
- new raceid = RaceCreate1[race];
- if(RaceInfo[raceid][RaceCurrent] >= 1)
- {
- SendClientMessageToAll(COLOR_GOLD, "Race: a corrida '%s' vai começar. Preparados?", RaceInfo[raceid][RaceName]);
- Race_Start(RaceCreate[race]);
- RaceInfo[raceid][RaceOpen] = true;
- }
- else
- {
- RaceInfo[raceid][RaceOpen] = false;
- RaceInfo[raceid][RaceCurrent] = 0;
- RaceInfo[raceid][RaceTotal] = 0;
- foreach(Player, i)
- {
- if(PlayerInfo[i][pRaceID] == raceid)
- {
- PlayerInfo[i][pRaceID] = -1;
- Race_SetPlayer(race, i, false);
- }
- }
- }
- }
- /*
- public StartRace(race)
- {
- for(new k = 0; k < 100; k++)
- {
- if(race == RaceCreate[k])
- {
- new raceid = RaceCreate1[RaceCreate[k]];
- if(RaceInfo[raceid][RaceCurrent] >= 1)
- {
- SendClientMessageToAll(COLOR_GOLD, "Race: a corrida '%s' vai começar. Preparados?", RaceInfo[raceid][RaceName]);
- Race_Start(RaceCreate[k]);
- }
- else
- {
- RaceInfo[race][RaceOpen] = false;
- RaceInfo[race][RaceCurrent] = 0;
- RaceInfo[race][RaceTotal] = 0;
- foreach(Player, i)
- {
- if(PlayerInfo[i][pRaceID] == race)
- {
- PlayerInfo[i][pRaceID] = -1;
- Race_SetPlayer(race, i, false);
- }
- }
- }
- break;
- }
- }
- return true;
- }
- */
- public OnVehicleStreamIn(vehicleid, forplayerid)
- {
- if(strcmp(ServerVehicles[vehicleid][VehOwner], GetPlayerName(forplayerid), false) == 0)
- {
- SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0);
- }
- else
- {
- if(ServerVehicles[vehicleid][VehLocked] == true) SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
- else if(ServerVehicles[vehicleid][VehLocked] == false) SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0);
- }
- return true;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- return true;
- }
- forward HideTextDraw(textid);
- public HideTextDraw(textid)
- {
- if(textid == 1)
- {
- TextDrawHideForAll(StartRaceTxt);
- }
- else if(textid == 0)
- {
- TextDrawHideForAll(RaceEndInfo);
- TextDrawHideForAll(RaceEndInfo2);
- }
- }
- //-----------------------------------/ Comandos
- /*
- zcmd:createrace(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid)) SendClientMessage(playerid, COLOR_RED, "* Você precisa ser administrador ou ter autorização.");
- else if(PlayerInfo[playerid][CRaceStatus] > 0) SendClientMessage(playerid, COLOR_RED, "* Você já está criando uma corrida.");
- else
- {
- PlayerInfo[playerid][CRaceStatus] = 1;
- ShowPlayerDialog(playerid, DialogRaceType, 2, "<SA Race> Qual o tipo de corrida?", "Ponto a Ponto\nConvencional", "Avançar", "Cancelar");
- }
- return true;
- }
- */
- zcmd:admcmds(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- return false;
- ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"COMANDOS", sz_CmdAdmins, "OK", "");
- return true;
- }
- zcmd:tutorial(playerid, params[])
- {
- new sz_Dialog[] = #RGB_COLOR_GOLD"REGRAS DO SERVIDOR\n\n\
- "RGB_COLOR_WHITE"1. Proibido o uso de qualquer tipo de cheater;\n\
- 2. Proibido se aproveitar de qualquer bug do gamemode;\n\
- 3. Proibido ofensas a outros jogadores;\n\
- 4. Proibido deixar veículos no meio da rua;\n\
- 5. ...";
- PlayerInfo[playerid][pTutorial] = 1;
- ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"TUTORIAL", sz_Dialog, "PROX. PÁG", "");
- return true;
- }
- zcmd:creditos(playerid, params[])
- {
- new sz_Dialog[] = RGB_COLOR_GOLD"\t\t\tCRÉDITOS DO GAMEMODE\n\n\
- "RGB_COLOR_WHITE"Roger Costa - Programador e Proprietário\n\
- Paulo Mu - Programador e Proprietário\n\
- Felipe (Play 4 Life RPG) - Garoto que testa o mode com a gente -q\n\
- Wagner Bender - Emo que testa o mode com a gente também -q";
- ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"CRÉDITOS", sz_Dialog, "OK", "");
- return true;
- }
- zcmd:reportar(playerid, params[])
- {
- new report[50], admins;
- if(sscanf(params, "s[50]", report)) SendClientMessage(playerid, COLOR_RED, "Erro: use '/reportar [mensagem]'");
- else
- {
- foreach(Player, i)
- {
- if(IsPlayerAdmin(i))
- {
- admins++;
- GameTextForPlayer(i, "~w~~h~~h~NOVO REPORT~w~OLHE O CHAT", 3000, 3);
- PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
- SendClientMessageEx(i, -1, "[REPORT] %s(id%d): %s", GetPlayerNameEx(playerid), playerid, report);
- }
- }
- if(admins == 0) SendClientMessage(playerid, COLOR_RED, "Erro: não há nenhum administrador online.");
- else SendClientMessage(playerid, COLOR_GREEN, "Server: seu report foi enviado com sucesso!");
- }
- return true;
- }
- // zcmd:ajuda(playerid, params[]) - Mostra um índice de ajuda para o jogador
- zcmd:ajuda(playerid, params[])
- {
- return ShowPlayerDialog(playerid, DIALOG_HELP, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"AJUDA", g_szHelpDialog, "FECHAR", ""), true;
- }
- // zcmd:comandos(playerid, params[]) - Mostra a lista de comandos do servidor
- zcmd:comandos(playerid, params[])
- {
- strcat(g_szCommandsDialog, g_szCommandsDialog1);
- return ShowPlayerDialog(playerid, DIALOG_COMMANDS, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"COMANDOS", g_szCommandsDialog, "FECHAR", ""), true;
- }
- // zcmd:comandos(playerid, params[]) - Comete suicídio
- zcmd:kill(playerid, params[])
- {
- SendClientMessageToAll(COLOR_GRAY, "Jogador: %s se suicidou. (/kill)", GetPlayerName(playerid));
- SetPlayerHealth(playerid, 0.0);
- return true;
- }
- zcmd:race(playerid, params[])
- {
- new raceid;
- if(PlayerInfo[playerid][pRaceID] > -1) SendClientMessage(playerid, COLOR_RED, "Erro: você já está em uma corrida.");
- else if(sscanf(params, "d", raceid)) SendClientMessage(playerid, COLOR_RED, "Erro: use '/race id'");
- else if(!RaceInfo[raceid][RaceOpen]) SendClientMessage(playerid, COLOR_RED, "Erro: essa corrida não está aberta.");
- else if(RaceInfo[raceid][RaceCurrent] >= 20) SendClientMessage(playerid, COLOR_RED, "Erro: essa corrida já está cheia.");
- else if(PlayerInfo[playerid][pDM] > 0) SendClientMessage(playerid, COLOR_RED, "Erro: você está em um deathmatch.");
- else
- {
- RaceInfo[raceid][RaceTotal]++;
- RaceInfo[raceid][RaceCurrent]++;
- PlayerInfo[playerid][pRaceID] = raceid;
- Race_SetPlayer(RaceCreate[raceid], playerid, true);
- SendClientMessageToAll(COLOR_GOLD, "Race: %s entrou na corrida '%s'. Para entrar, digite /race %d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], raceid);
- }
- return true;
- }
- zcmd:exit(playerid, params[])
- {
- if(!Race_GetPlayerRace(playerid)) SendClientMessage(playerid, COLOR_RED, "Erro: você não está em uma corrida.");
- else
- {
- Race_SetPlayer(Race_GetPlayerRace(playerid), playerid, false);
- }
- return true;
- }
- zcmd:openrace(playerid, params[])
- {
- new raceid;
- if(PlayerInfo[playerid][pRaceID] > -1) SendClientMessage(playerid, COLOR_RED, "Erro: você já está em uma corrida.");
- else if(sscanf(params, "d", raceid)) SendClientMessage(playerid, COLOR_RED, "Erro: use 'openrace id'");
- else if(RaceInfo[raceid][RaceOpen]) SendClientMessage(playerid, COLOR_RED, "Erro: essa corrida já está aberta.");
- else
- {
- new str[128];
- RaceInfo[raceid][RaceOpen] = true;
- SendClientMessageToAll(COLOR_GOLD, "Race: %s abriu a corrida '%s'. Para entrar, digite /race %d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], raceid);
- SendClientMessageToAll(COLOR_GOLD, "Race: a corrida se inicia em 1 minuto!");
- PlayAudioForAll(1057);
- //---- CreateRace
- RaceCreate[raceid] = Race_Create();
- RaceCreate1[RaceCreate[raceid]] = raceid;
- //---- Laps
- Race_SetLaps(RaceCreate[raceid], RaceInfo[raceid][RaceLaps]);
- //---- Price
- Race_SetEntry(RaceCreate[raceid], 0);
- //---- Checkpoints
- for(new j = 0; j < 50; j++)
- {
- if(strlen(RaceCPPos[raceid][j]) > 0)
- {
- new Float:r_pos[3];
- sscanf(RaceCPPos[raceid][j], "fff", r_pos[0], r_pos[1], r_pos[2]);
- Race_AddCheckpoint(RaceCreate[raceid], r_pos[0], r_pos[1], r_pos[2]);
- }
- }
- //---- Grid
- for(new j = 0; j < 20; j++)
- {
- if(strlen(RaceSTPos[raceid][j]) > 0)
- {
- new Float:r_pos[4];
- sscanf(RaceSTPos[raceid][j], "ffff", r_pos[0], r_pos[1], r_pos[2], r_pos[3]);
- Race_AddStart(RaceCreate[raceid], r_pos[0], r_pos[1], r_pos[2], r_pos[3]);
- }
- }
- TextDrawShowForAll(StartRaceTxt);
- format(str, sizeof str, "~g~A corrida ~w~%s ~g~foi aberta~n~Digite ~w~/race %d ~g~para entrar!", RaceInfo[raceid][RaceName], raceid);
- TextDrawSetString(StartRaceTxt, str);
- SetTimerEx("HideTextDraw", 6000, false, "d", 1);
- SetTimerEx("StartRace", 1000*20, false, "d", RaceCreate[raceid]);
- PlayAudioForAll(1057);
- }
- return true;
- }
- // zcmd:dardinheiro(playerid, params[]) - Dá a quantia de dinheiro para o jogador
- zcmd:dardinheiro(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- return false;
- new iPlayerID;
- new iAmount;
- if(sscanf(params, "ui", iPlayerID, iAmount))
- return SendClientMessage(playerid, COLOR_PURPLE, "Erro: use '/dardinheiro [id/jogador] [quantidade]'.");
- if(!IsPlayerConnected(iPlayerID))
- return SendClientMessage(playerid, COLOR_RED, "Erro: jogador desconectado/inválido.");
- SendClientMessageToAll(COLOR_BLUE, "Admin: %s deu $%d à %s.", GetPlayerName(playerid), iAmount, GetPlayerName(iPlayerID));
- GivePlayerMoney(iPlayerID, iAmount);
- return true;
- }
- // zcmd:setardinheiro(playerid, params[]) - Seta o dinheiro de um jogador para o valor especificado
- zcmd:setardinheiro(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- return false;
- new iPlayerID;
- new iAmount;
- if(sscanf(params, "ui", iPlayerID, iAmount))
- return SendClientMessage(playerid, COLOR_PURPLE, "Erro: use '/setardinheiro [id/jogador] [quantia]'.");
- if(!IsPlayerConnected(iPlayerID))
- return SendClientMessage(playerid, COLOR_RED, "Erro: jogador desconectado/inválido.");
- SendClientMessageToAll(COLOR_BLUE, "Admin: %s setou o dinheiro de %s para $%d.", GetPlayerName(playerid), GetPlayerName(iPlayerID), iAmount);
- SetPlayerMoney(iPlayerID, iAmount);
- return true;
- }
- // zcmd:setarcolete(playerid, params[]) - Seta o colete de um jogador para o valor especificado
- zcmd:setarcolete(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- return false;
- new iPlayerID;
- new Float:fArmour;
- if(sscanf(params, "uf", iPlayerID, fArmour))
- return SendClientMessage(playerid, COLOR_PURPLE, "Erro: use '/setarcolete [id/jogador] [colete (0-100)]'.");
- if(!IsPlayerConnected(iPlayerID))
- return SendClientMessage(playerid, COLOR_RED, "Erro: jogador desconectado/inválido.");
- if(fArmour < 0.0 || fArmour > 100.0)
- return SendClientMessage(playerid, COLOR_RED, "Erro: digite um valor de 0 a 100.");
- SetPlayerArmour(iPlayerID, fArmour);
- SendClientMessageToAll(COLOR_BLUE, "Admin: %s setou o colete de %s para %.1f.", GetPlayerName(playerid), GetPlayerName(iPlayerID), fArmour);
- return true;
- }
- // zcmd:setarvida(playerid, params[]) - Seta a vida de um jogador para o valor especificado
- zcmd:setarvida(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- return false;
- new iPlayerID;
- new Float:fHealth;
- if(sscanf(params, "uf", iPlayerID, fHealth))
- return SendClientMessage(playerid, COLOR_PURPLE, "Erro: use '/setarvida [id/jogador] [vida (0-100)]'.");
- if(!IsPlayerConnected(iPlayerID))
- return SendClientMessage(playerid, COLOR_RED, "Erro: jogador desconectado/inválido.");
- if(fHealth < 0.0 || fHealth > 100.0)
- return SendClientMessage(playerid, COLOR_RED, "Erro: digite um valor de 0 a 100.");
- SetPlayerHealth(iPlayerID, fHealth);
- SendClientMessageToAll(COLOR_BLUE, "Admin: %s setou a vida do(a) %s para %.1f.", GetPlayerName(playerid), GetPlayerName(iPlayerID), fHealth);
- return true;
- }
- zcmd:motor(playerid, params[])
- {
- if(IsPlayerInAnyVehicle(playerid) && GetPlayerVehicleSeat(playerid) == 0)
- ToggleVehicleEngine(playerid, GetPlayerVehicleID(playerid));
- else SendClientMessage(playerid, COLOR_RED, "Erro: você precisa estar de motorista pra ligar o veículo.");
- return true;
- }
- zcmd:lights(playerid, params[])
- {
- if(IsPlayerInAnyVehicle(playerid) && GetPlayerVehicleSeat(playerid) == 0)
- ToggleVehicleLights(playerid, GetPlayerVehicleID(playerid));
- else SendClientMessage(playerid, COLOR_RED, "Erro: você precisa estar de motorista pra acender os faróis o veículo.");
- return true;
- }
- /*zcmd:plate(playerid, params[])
- {
- new pstr[10];
- if(!IsPlayerInAnyVehicle(playerid) || GetPlayerVehicleSeat(playerid) != 0) SendClientMessage(playerid, COLOR_RED, "* Modafoca, use /plate <texto>");
- else if(sscanf(params, "s[10]", pstr)) SendClientMessage(playerid, COLOR_RED, "* Modafoca, use /plate <texto>");
- else if(strlen(pstr) < 1 || strlen(pstr) > 8) SendClientMessage(playerid, COLOR_RED, "* No máximo 8 digitos.");
- else
- {
- new vehID = GetPlayerVehicleID(playerid), str[100];
- SetVehicleNumberPlate(vehID, pstr);
- format(ServerVehicles[vehID][VehPlate], 10, pstr);
- format(str, sizeof str, "* Placa alterada (%s)", ServerVehicles[vehID][VehPlate]);
- SendClientMessage(playerid, COLOR_GOLD, str);
- ServerVehicles[vehID][VehStatus] = 1;
- GetVehiclePos(vehID, ServerVehicles[vehID][VehX], ServerVehicles[vehID][VehY], ServerVehicles[vehID][VehZ]);
- GetVehicleZAngle(vehID, ServerVehicles[vehID][VehA]);
- //GetVehicleParamsEx(vehID, ServerVehicles[vehID][VehEngine], ServerVehicles[vehID][VehLights], ServerVehicles[vehID][VehAlarm], ServerVehicles[vehID][VehDoors], ServerVehicles[vehID][VehBonnet], ServerVehicles[vehID][VehBoot], ServerVehicles[vehID][VehObjective]);
- SetVehicleToRespawn(vehID);
- }
- return true;
- }
- */
- zcmd:destrancar(playerid, params[])
- {
- if(!IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "Erro: você precisa estar em um veículo!");
- else if(ServerVehicles[GetPlayerVehicleID(playerid)][VehOwnerID] != PlayerInfo[playerid][pID]) SendClientMessage(playerid, COLOR_RED, "Erro: esse carro não é seu para destrancá-lo!");
- {
- SendClientMessage(playerid, COLOR_GOLD, "Server: veículo destrancado!");
- ServerVehicles[GetPlayerVehicleID(playerid)][VehLocked] = false;
- foreach(new i : Player)
- {
- if(i != playerid)
- {
- SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid), i, 0, 0);
- }
- }
- }
- return true;
- }
- zcmd:trancar(playerid, params[])
- {
- if(!IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "Erro: você precisa estar em um veículo!");
- else if(ServerVehicles[GetPlayerVehicleID(playerid)][VehOwnerID] != PlayerInfo[playerid][pID]) SendClientMessage(playerid, COLOR_RED, "Erro: esse carro não é seu para trancá-lo!");
- {
- SendClientMessage(playerid, COLOR_GOLD, "Server: veículo trancado!");
- ServerVehicles[GetPlayerVehicleID(playerid)][VehLocked] = true;
- foreach(new i : Player)
- {
- if(i != playerid)
- {
- SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid), i, 0, 1);
- }
- }
- }
- return true;
- }
- zcmd:mycars(playerid, params[])
- {
- new str[500];
- if(PlayerInfo[playerid][pGPS] != -1)
- {
- PlayerInfo[playerid][pGPS] = -1;
- RemovePlayerMapIcon(playerid, 99);
- return true;
- }
- for(new i = 1; i < 500; i++)
- {
- if(VehCreate[i] != -1)
- {
- if(ServerVehicles[i][VehOwnerID] == PlayerInfo[playerid][pID])
- {
- new str2[128];
- format(str2, sizeof str2, "{FFFFFF}%s (ID: %d)\n", VehicleNames[ServerVehicles[i][VehModel] - 400], i);
- strcat(str, str2);
- }
- }
- }
- if(strlen(str))
- {
- strcat(str, "{333333}Selecione o ID do seu carro para localizar:");
- ShowPlayerDialog(playerid, DIALOG_CARS, DIALOG_STYLE_INPUT, RGB_COLOR_GOLD"SEUS VEÍCULOS", str, "Localizar", "");
- }
- else SendClientMessage(playerid, COLOR_RED, "Erro: você não tem nenhum carro pra localizar, pobre!");
- return true;
- }
- zcmd:skin(playerid, params[])
- {
- if(sscanf(params, "d", PlayerInfo[playerid][pSkin])) SendClientMessage(playerid, COLOR_PURPLE, "Erro: use '/skin [id]'");
- else
- {
- SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
- SendClientMessage(playerid, COLOR_GOLD, "Server: sua skin foi alterada.");
- }
- return true;
- }
- zcmd:tuning(playerid, params[])
- {
- if(!IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "Erro: você não está em um veículo!");
- else if(strcmp(ServerVehicles[GetPlayerVehicleID(playerid)][VehOwner], GetPlayerName(playerid), false) != 0) SendClientMessage(playerid, COLOR_RED, "Erro: esse carro não é seu para tuná-lo.");
- else if(!IsPlayerInRangeOfPoint(playerid, 10.0, 1523.7592,-1470.9032,9.5000)) SendClientMessage(playerid, COLOR_RED, "Erro: você não está na garagem de tuning!");
- else
- {
- ShowPlayerDialog(playerid, DIALOG_WORKSHOP, DIALOG_STYLE_LIST, RGB_COLOR_GOLD"OFICINA DE TUNING", RGB_COLOR_WHITE"Aumentar Resistência\nBlindar Portas\t\t\tR$3000\nBlindar Paineis\t\t\tR$3000\nBlindar Rodas\t\t\tR$3000\nBlindar Luzes\t\t\tR$3000\nPintura\t\t\tR$2500\nReparar Veículo\t\t\tR$100", "Escolher", "Sair");
- }
- return true;
- }
- zcmd:money(playerid, params[])
- {
- GivePlayerMoney(playerid, 500000);
- return true;
- }
- public AntiCheat()
- {
- foreach(new i : Player)
- {
- //SendClientMessage(i, -1, "[DEBUG] GetPlayerMoney(%d) = $%d | PlayerInfo[%d][playerMoney] = $%d", i, GetPlayerMoney(i), i, PlayerInfo[i][playerMoney]);
- if(GetPlayerMoney(i) > PlayerInfo[i][playermoney])
- {
- SendClientMessageToAll(COLOR_RED, "AntiCheater: %s usou money hack!", GetPlayerName(i));
- // BAN
- ResetPlayerMoney(i);
- GivePlayerMoney(i, PlayerInfo[i][playermoney]);
- }
- else
- PlayerInfo[i][playermoney] = GetPlayerMoney(i);
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement