Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* www.cityofangels-roleplay.com - Pilot System - by Salesman */
- #include <YSI\y_hooks>
- //=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ (define)
- #define MAX_ROUTES (10) // Maximalna mogučnost kreiranja ruta.
- #define JOB_PILOT (17) // Job_ID
- //=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ (enums)
- enum ENUM_ROUTE {
- rID,
- rName[MAX_PLAYER_NAME],
- Float:rPosX,
- Float:rPosY,
- Float:rPosZ,
- rPay
- }
- new rInfo[MAX_ROUTES][ENUM_ROUTE];
- /*enum{ -> prebačeno u coarp.pwn
- DIALOG_JOB_START,
- DIALOG_CREATE_ROUTE,
- DIALOG_ROUTE_NAME,
- DIALOG_ROUTES
- }*/
- enum {
- load_passangers = 997,
- take_pay = 998,
- INVALID_PILOT_CP = 999
- }
- //=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ (vars & iters & rBits)
- new
- plane[1],
- cpstatus[MAX_PLAYERS] = INVALID_PILOT_CP,
- proggres[MAX_PLAYERS] = 0,
- exit_timer[MAX_PLAYERS] = 0,
- Route_number[MAX_PLAYERS] = 0,
- route[MAX_PLAYERS] = -1,
- route_edit[MAX_PLAYERS] = -1,
- Iterator:PILOT<MAX_ROUTES>;
- new
- Bit1: JobStarted <MAX_PLAYERS> = Bit1: false;
- //=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ (functions)
- ControlPlayerJob(job_id = JOB_PILOT, route_id = -1, playerid, bool: work) {
- if(PlayerInfo[playerid][pJob] != job_id)
- return (true);
- if(work == false) {
- Bit1_Set(JobStarted, playerid, false);
- proggres[playerid] = (0);
- route[playerid] = (-1);
- cpstatus[playerid] = INVALID_PILOT_CP;
- DeletePreciseTimer(exit_timer[playerid]);
- SetVehicleToRespawn(plane[0]);
- SetVehicleVirtualWorld(plane[0], 0);
- SetPlayerVirtualWorld(playerid, 0);
- DisablePlayerCheckpoint(playerid);
- }
- else if(work == true) {
- SetPlayerCheckpoint(playerid, rInfo[route_id][rPosX], rInfo[route_id][rPosY],rInfo[route_id][rPosZ], 20.0 );
- SendClientMessage(playerid, -1,"Ruta je oznacena crveno na mapi.");
- }
- return (true);
- }
- CheckPilotRoutes() {
- new winfo[256],
- motd[64];
- format(motd, sizeof(motd), "\n");
- strcat(winfo, motd, sizeof(winfo));
- foreach(new i : PILOT) {
- if( rInfo[ i ][ rPay ] != 0 ) {
- format(motd, sizeof(motd), "{3C95C2}[RUTA %d]:{FFFFFF} %s.\n", rInfo[i][rID], rInfo[ i ][ rName ]);
- strcat(winfo, motd, sizeof(winfo));
- }
- }
- return winfo;
- }
- //=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ (hooks)
- hook OnGameModeInit(){
- msyql_loadroutes();
- CreatePilotVehicles();
- return (true);
- }
- hook OnPlayerStateChange(playerid, newstate, oldstate) {
- if(newstate == PLAYER_STATE_DRIVER) {
- if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 519) {
- if(PlayerInfo[playerid][pJob] != JOB_PILOT)
- return SendErrorMessage(playerid, "Niste zaposleni kao Pilot."), RemovePlayerFromVehicle(playerid);
- if(Bit1_Get(JobStarted, playerid))
- return DeletePreciseTimer(exit_timer[playerid]), SendClientMessage(playerid, COLOR_GREEN,"[INFO]: Dobrodosli nazad u vase vozilo.");
- ShowPlayerDialog(playerid, DIALOG_JOB_START, DIALOG_STYLE_MSGBOX, "Starting job", "Usli ste u poslovno vozilo (pilot)\nDa li zelite da pokrenete posao?\nKo-pilot sjedi do vas cekajuci na znak.", "Prihvati", "Odustani");
- }
- }
- return (true);
- }
- hook OnPlayerExitVehicle(playerid, vehicleid){
- if(vehicleid == plane[0] && Bit1_Get(JobStarted, playerid)) {
- SendClientMessage(playerid, -1, "Napustili ste vozilo. Imate 30 sekundi da se vratite u njega ili ce te prekinuti posao.");
- exit_timer[playerid] = SetPreciseTimer("VehTimer", 30000, false, "d", playerid);
- }
- return (true);
- }
- hook OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
- switch(dialogid){
- case DIALOG_JOB_START:
- {
- if(!response)
- return SendClientMessage(playerid, -1,"Odustali ste od posla."), RemovePlayerFromVehicle(playerid);
- if(response) {
- if(Iter_Count(PILOT) == 0)
- return SendErrorMessage(playerid, "Trenutno nema kreiranih ruta."), RemovePlayerFromVehicle(playerid);
- new virtualworld = random(random(999));
- TogglePlayerControllable(playerid, 0);
- SetVehicleVirtualWorld(plane[0], virtualworld);
- SetPlayerVirtualWorld(playerid, virtualworld);
- Bit1_Set(JobStarted, playerid, true);
- SetPreciseTimer("PaljenjeAviona", 5000, false, "i", playerid);
- GameTextForPlayer(playerid, "Avion se pali", 5000, 5);
- }
- }
- case DIALOG_CREATE_ROUTE:
- {
- if(!response) return (true);
- if(response){
- new Float:x, Float:y, Float:z, pay,
- free_id = Iter_Free(PILOT), DB_Query[256];
- GetPlayerPos(playerid, x, y, z);
- if(sscanf(inputtext, "i", pay)) return ShowPlayerDialog(playerid, DIALOG_CREATE_ROUTE, DIALOG_STYLE_INPUT, "Route pay", "Koliko para zelite da bude plata na ruti?", "Unesi", "Odustani");
- if(pay < 1) return ShowPlayerDialog(playerid, DIALOG_CREATE_ROUTE, DIALOG_STYLE_INPUT, "Route pay", "Koliko para zelite da bude plata na ruti?", "Unesi", "Odustani");
- // Create Route
- route_edit[playerid] = free_id;
- rInfo[free_id][rID] = free_id;
- rInfo[free_id][rPosX] = x;
- rInfo[free_id][rPosY] = y;
- rInfo[free_id][rPosZ] = z;
- rInfo[free_id][rPay] = pay;
- mysql_format(g_SQL, DB_Query, sizeof DB_Query, "INSERT INTO `ROUTES` (`NAME`, `POSX`, `POSY`, `POSZ`, `PAY`) VALUES ('N/A','%f','%f','%f','%d')", x,y,z, pay);
- mysql_tquery(g_SQL, DB_Query, "OnRouteCreated", "ii", playerid, free_id);
- // continue...
- ShowPlayerDialog(playerid, DIALOG_ROUTE_NAME, DIALOG_STYLE_INPUT, "Route name", "Ime rute: ", "Unesi", "Odustani");
- }
- }
- case DIALOG_ROUTE_NAME:
- {
- if(!response) return ShowPlayerDialog(playerid, DIALOG_ROUTE_NAME, DIALOG_STYLE_INPUT, "Route name", "Ime rute: ", "Unesi", "Odustani");
- if(response){
- new name[24], DB_Query[128],
- get_id = route_edit[playerid];
- if(sscanf(inputtext, "s[24]", name)) return ShowPlayerDialog(playerid, DIALOG_ROUTE_NAME, DIALOG_STYLE_INPUT, "Route name", "Ime rute: ", "Unesi", "Odustani");
- SetString(rInfo[get_id][rName], name);
- format(DB_Query, sizeof(DB_Query), "UPDATE `ROUTES` SET `NAME` = '%s' WHERE `rID` = '%d'", rInfo[get_id][rName], rInfo[get_id][rID]);
- mysql_tquery(g_SQL, DB_Query);
- // Return
- va_SendClientMessage(playerid, COLOR_YELLOW, "[INFO]: Uspjesno ste kreirali rutu '%s', plata: %s.", rInfo[get_id][rName], FormatNumber(rInfo[get_id][rPay]));
- route_edit[playerid] = INVALID_PLAYER_ID;
- }
- }
- case DIALOG_ROUTES: {
- if(response){
- new number = listitem += 1;
- for( new route_id; route_id < MAX_ROUTES; route_id ++ ) {
- if( rInfo[ route_id ][ rPay ] != 0 )
- {
- if( Route_number[ route_id ] == number )
- {
- ControlPlayerJob(JOB_PILOT, route_id, playerid, true);
- break;
- }
- }
- }
- }
- }
- }
- return (true);
- }
- hook OnPlayerDeath(playerid) {
- if(Bit1_Get(JobStarted, playerid))
- ControlPlayerJob(JOB_PILOT, -1, playerid, false);
- return (true);
- }
- hook OnPlayerDisconnect(playerid, reason){
- if(Bit1_Get(JobStarted, playerid))
- ControlPlayerJob(JOB_PILOT, -1, playerid, false);
- return (true);
- }
- hook OnPlayerConnect(playerid)
- return ControlPlayerJob(JOB_PILOT, -1, playerid, false);
- hook OnPlayerEnterCheckpoint(playerid){
- if(cpstatus[playerid] == load_passangers){
- TogglePlayerControllable(playerid, 0);
- SetPreciseTimer("UtovarPutnika", 15000, false, "d", playerid);
- GameTextForPlayer(playerid, "Utovar putnika", 15000, 5);
- DisablePlayerCheckpoint(playerid);
- }
- else if(cpstatus[playerid] == take_pay){
- AC_GivePlayerMoney(playerid, rInfo[route[playerid]][rPay]);
- SendClientMessage(playerid, -1, "Zavrsili ste rutu i uzeli odredjenu svotu novca.");
- // reset
- ControlPlayerJob(JOB_PILOT, -1, playerid, false);
- }
- if(route[playerid] != -1){
- TogglePlayerControllable(playerid, 0);
- SetPreciseTimer("IstovarPutnika", 15000, false, "d", playerid);
- GameTextForPlayer(playerid, "Istovar putnika", 15000, 5);
- DisablePlayerCheckpoint(playerid);
- }
- return (true);
- }
- CreatePilotVehicles() { // in-game kreirati ostala vozila (L3o)
- plane[0] = CreateVehicle(519, 1794.8909, -2426.1665, 14.6257, -127.0000, -1, -1, 100);
- VehicleInfo[plane[0]][vHealth] = 1000.0;
- VehicleInfo[plane[0]][vFuel] = 100;
- VehicleInfo[plane[0]][vCanStart] = 1;
- VehicleInfo[plane[0]][vUsage] = VEHICLE_USAGE_NORMAL;
- return (true);
- }
- //=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ (timers)
- Function: PaljenjeAviona(playerid){
- SetPlayerCheckpoint(playerid, 1543.6648, -2448.0859, 14.6257, 3.0); // utovar
- TogglePlayerControllable(playerid, 1); // dajemo kontrolu
- SendClientMessage(playerid, -1, "Idite na oznaceno mjesto na vasem GPS-u, pokupite putnike.");
- cpstatus[playerid] = load_passangers;
- return (true);
- }
- Function: VehTimer(playerid) {
- if(GetPlayerVehicleID(playerid) == INVALID_VEHICLE_ID){
- SendClientMessage(playerid,-1, "Prekinuli ste posao jer se niste vratili u vozilo.");
- ControlPlayerJob(JOB_PILOT, -1, playerid, false);
- }
- return (true);
- }
- Function: UtovarPutnika(playerid) {
- TogglePlayerControllable(playerid, 1);
- proggres[playerid] = 1;
- SendClientMessage(playerid, -1,"Sada koristite komandu /plane takecoords");
- return (true);
- }
- Function: IstovarPutnika(playerid) {
- TogglePlayerControllable(playerid, 1);
- proggres[playerid] = 0;
- SendClientMessage(playerid, -1,"Sada se vratite nazad za platu.");
- SetPlayerCheckpoint( playerid, 1644.0344, -2489.8647, 13.6025, 4.0 );
- cpstatus[playerid] = take_pay;
- route[playerid] = -1;
- return (true);
- }
- //=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ (mysql)
- Function: OnRouteCreated(playerid, free_iter) {
- rInfo[free_iter][rID] = cache_insert_id();
- Iter_Add(PILOT, free_iter);
- return (true);
- }
- msyql_loadroutes() {
- mysql_tquery(g_SQL, "SELECT * FROM `ROUTES`", "OnRouteLoaded", "");
- return (true);
- }
- Function: OnRouteLoaded() {
- new
- rows = cache_num_rows();
- if(rows == 0) return (true);
- for (new i = 0; i < rows; i++) {
- cache_get_value_name_int(i, "rID", rInfo[i][rID]);
- cache_get_value_name_int(i, "NAME", rInfo[i][rName]);
- cache_get_value_name_int(i, "PAY", rInfo[i][rPay]);
- cache_get_value_name_float(i, "POSX", rInfo[i][rPosX]);
- cache_get_value_name_float(i, "POSY", rInfo[i][rPosY]);
- cache_get_value_name_float(i, "POSZ", rInfo[i][rPosZ]);
- Iter_Add(PILOT, i);
- }
- printf("(debug report): Created %d/%d pilot routes.", Iter_Count(PILOT), MAX_ROUTES);
- return (true);
- }
- //=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ (commands)
- CMD:plane(playerid, params[])
- {
- new action[25];
- if(sscanf(params, "s[25] ", action))
- {
- SendClientMessage(playerid, -1, "[INFO]: /plane [option].");
- SendClientMessage(playerid, 0xAFAFAFAA, "(options): takeroute, info, quit.");
- if(PlayerInfo[playerid][pAdmin] != 0)
- SendClientMessage(playerid, 0xAFAFAFAA, "(options): createroute.");
- return (true);
- }
- if(strcmp(action,"takeroute", true) == 0) {
- if(Iter_Count(PILOT) == 0)
- return SendErrorMessage(playerid, "Trenutno nema kreiranih ruta.");
- if(proggres[playerid] != 1)
- return SendClientMessage(playerid, -1, "Niste u mogucnosti da koristite komandu.");
- ShowPlayerDialog( playerid, DIALOG_ROUTES, DIALOG_STYLE_LIST, "Routes", CheckPilotRoutes(), "Odaberi", "(x)" );
- }
- if(strcmp(action,"info", true) == 0) {
- if(proggres[playerid] != 1) return SendClientMessage(playerid, -1, "Niste u mogucnosti da koristite komandu.");
- new Float:x,Float:z,Float:y;
- GetVehiclePos(plane[0], x, y, z);
- va_SendClientMessage(playerid, -1, "Nalazite se %.2f metara u zraku.", z);
- }
- if(strcmp(action,"quit", true) == 0) {
- if(!Bit1_Get(JobStarted, playerid))
- return SendClientMessage(playerid, -1, "Niste zapoceli sa poslom.");
- SendClientMessage(playerid, -1, "Prekinuli ste posao.");
- ControlPlayerJob(JOB_PILOT, -1, playerid, false);
- }
- if(strcmp(action,"createroute", true) == 0) {
- if(PlayerInfo[playerid][pAdmin] < 1337)
- return SendClientMessage(playerid, COLOR_RED, "[GRESKA]: Niste ovlasteni za koristenje ove komande (admin lvl 1337+).");
- ShowPlayerDialog(playerid, DIALOG_CREATE_ROUTE, DIALOG_STYLE_INPUT, "Route pay", "Koliko para zelite da bude plata na ruti?", "Unesi", "(x)");
- }
- return (true);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement