new mode_name[] = "Protect the Prime Minister 8.0"; #include #include #define log_printf(%1) do { \ new _dy, _mn, _yr; \ new _h, _m, _s; \ getdate(_yr,_mn,_dy); \ gettime(_h,_m,_s); \ new _text[256]; \ format(_text,sizeof _text,"activity_log_%%002d%%002d%%002d.txt",_yr,_mn,_dy); \ new File:_f = fopen(_text,io_append); \ if (_f) { \ format (_text,sizeof _text,"%%002d%%002d%%002d ",_h,_m,_s); \ fwrite(_f,_text); \ format (_text,sizeof _text,%1); \ fwrite(_f,_text); \ fwrite(_f,"\n"); \ fclose(_f); \ } \ } while (zero()) // do while requires so we can do if (...) log_printf(...); else ... //ID(d) { return d; } //#define CHKR(%1[%2]) ( ID(%2)>=0 && ID(%2)=0 && ID(%2)=50) { printf("Unfortunately, the SA:MP developers are completely incompetent strval(\"%s\")",str); return 0; } return strval(str); } public Float:DistanceFromPlayerToPlayer(id1, id2) { new Float:px, Float:py, Float:pz; GetPlayerPos(id1,px,py,pz); new Float:mx, Float:my, Float:mz; GetPlayerPos(id2,mx,my,mz); return floatsqroot(floatpower(px-mx,2)+floatpower(py-my,2)+floatpower(pz-mz,2)); } Float:atan(Float:y) { for (new Float:a = 0 ; a<=90 ; a++) if (floattan(a,degrees)>=y) return a; return 90.0; } // needed to trick pawncc zero() { return 0; } main() { } CarCol() { return random(126); } new pickup_counter = 0; new pickup_id[NUM_PICKUPS]; new pickup_weaponid[NUM_PICKUPS]; new pickup_ammo[NUM_PICKUPS]; new Float: pickup_x[NUM_PICKUPS]; new Float: pickup_y[NUM_PICKUPS]; new Float: pickup_z[NUM_PICKUPS]; new pickup_respawn_time[NUM_PICKUPS]; new pickup_synced[NUM_PICKUPS]; new pickup_last_used_by[NUM_PICKUPS]; #define WP_NO_RESPAWN 0 #define WP_UNSYNCED 0 #define WP_SYNCED 1 AddWeaponPickup(pickupid, weaponid, ammo, Float:x, Float:y, Float:z, respawn_time=30, synced=WP_UNSYNCED) { if (pickup_counter>=NUM_PICKUPS) { printf("Too many weapon pickups, pickup ignored %d,%d,%d,%f,%f,%f!",pickupid,weaponid,ammo,x,y,z); return 0; } pickup_id[pickup_counter] = pickupid; pickup_weaponid[pickup_counter] = weaponid; pickup_ammo[pickup_counter] = ammo; pickup_x[pickup_counter] = x; pickup_y[pickup_counter] = y; pickup_z[pickup_counter] = z; pickup_respawn_time[pickup_counter] = respawn_time; pickup_synced[pickup_counter] = synced; pickup_last_used_by[pickup_counter] = INVALID_PLAYER_ID; new pickuptype = 1; //respawn_time ? 1 : 19; // unfortunately pickuptype 19 doesnt respawn properly when you die, so we cant use it AddStaticPickup(pickupid, pickuptype, x, y, z); // return pickup_counter++ doesn't work -- suspect compiler bug new retval = pickup_counter++; return retval; } new vehicle_counter = 1; new vehicle_modelid[MAX_VEHICLES]; new Float: vehicle_spawn_x[MAX_VEHICLES]; new Float: vehicle_spawn_y[MAX_VEHICLES]; new Float: vehicle_spawn_z[MAX_VEHICLES]; new Float: vehicle_z_angle[MAX_VEHICLES]; new vehicle_colour1[MAX_VEHICLES]; new vehicle_colour2[MAX_VEHICLES]; new vehicle_safehouse_excluded[MAX_VEHICLES]; AddStaticVehicle2(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2, safehouse_excluded = 0) { if (vehicle_counter>MAX_VEHICLES) { printf("Too many vehicle spawns, ignoring vehicle %d,%f,%f,%f,%f,%d,%d!",modelid,spawn_x,spawn_y,spawn_z,z_angle,color1,color2); return 0; } vehicle_modelid[vehicle_counter] = modelid; vehicle_spawn_x[vehicle_counter] = spawn_x; vehicle_spawn_y[vehicle_counter] = spawn_y; vehicle_spawn_z[vehicle_counter] = spawn_z; vehicle_z_angle[vehicle_counter] = z_angle; vehicle_colour1[vehicle_counter] = color1; vehicle_colour2[vehicle_counter] = color2; vehicle_safehouse_excluded[vehicle_counter] = safehouse_excluded; AddStaticVehicle(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2); // return vehicle_counter++ doesn't work -- suspect compiler bug new retval = vehicle_counter++; return retval; } new obj_counter = 0; new Float:obj_x[NUM_OBJS]; new Float:obj_y[NUM_OBJS]; new Float:obj_z[NUM_OBJS]; new Float:obj_size[NUM_OBJS]; new obj_time[NUM_OBJS]; new obj_desc[NUM_OBJS][256]; // objectives as invented by spark for LV AddObjective(Float:x, Float:y, Float:z, desc[], Float:size, time = 30) { if (obj_counter>=NUM_OBJS) { printf("Too many objectives! Ignoring (%f,%f,%f) %f %d.",x,y,z,size,time); return 0; } obj_x[obj_counter] = x; obj_y[obj_counter] = y; obj_z[obj_counter] = z; obj_size[obj_counter] = size; obj_time[obj_counter] = time; //printf("Objective[%d] at (%f,%f,%f) (%f) %d",obj_counter,obj_x[obj_counter],obj_y[obj_counter],obj_z[obj_counter],obj_size[obj_counter],obj_time[obj_counter]); format(obj_desc[obj_counter],sizeof obj_desc[],"%s",desc); new retval = obj_counter++; return retval; } #define NUM_TASKS 10 #define TASK_HP_PENALTY 0 #define TASK_WEAPONS 1 #define TASK_RADAR 2 #define TASK_KEYS 3 #define TASK_ACCELERATE_TIME 4 #define TASK_MINI 5 #define TASK_MEDIC 6 #define TASK_SAFEHOUSE 7 #define TASK_HP_BONUS 8 new task_counter = 0; new Float:task_x[NUM_TASKS]; new Float:task_y[NUM_TASKS]; new Float:task_z[NUM_TASKS]; new Float:task_size[NUM_TASKS]; new task_type[NUM_TASKS]; new task_time[NUM_TASKS]; // tasks as invented by r3mp for countryside AddTask(Float:x, Float:y, Float:z, Float:size, type, time) { if (task_counter>=NUM_TASKS) { printf("Too many tasks! Ignoring (%f,%f,%f) %f %d %d.",x,y,z,size,type,time); return 0; } task_x[task_counter] = x; task_y[task_counter] = y; task_z[task_counter] = z; task_size[task_counter] = size; task_type[task_counter] = type; task_time[task_counter] = time; new retval = task_counter++; return retval; } #define NUM_BANNED 21 new banned_cuboid_counter = 0; new Float:banned_cuboid_max_x[NUM_BANNED]; new Float:banned_cuboid_min_x[NUM_BANNED]; new Float:banned_cuboid_max_y[NUM_BANNED]; new Float:banned_cuboid_min_y[NUM_BANNED]; new Float:banned_cuboid_max_z[NUM_BANNED]; new Float:banned_cuboid_min_z[NUM_BANNED]; new Float:banned_cuboid_tele_x[NUM_BANNED]; new Float:banned_cuboid_tele_y[NUM_BANNED]; new Float:banned_cuboid_tele_z[NUM_BANNED]; new Float:banned_cuboid_tele_a[NUM_BANNED]; new banned_cuboid_message[NUM_BANNED][256]; AddBannedCuboid(Float:max_x, Float:min_x, Float:max_y, Float:min_y, Float:max_z, Float:min_z, message[], Float:tele_x, Float:tele_y, Float:tele_z, Float:tele_a) { if (banned_cuboid_counter>=NUM_BANNED) { printf("Too many banned cuboids! Ignoring (%f,%f,%f,%f,%f,%f)",max_x,min_x,max_y,min_y,max_z,min_z); return 0; } banned_cuboid_max_x[banned_cuboid_counter] = max_x; banned_cuboid_min_x[banned_cuboid_counter] = min_x; banned_cuboid_max_y[banned_cuboid_counter] = max_y; banned_cuboid_min_y[banned_cuboid_counter] = min_y; banned_cuboid_max_z[banned_cuboid_counter] = max_z; banned_cuboid_min_z[banned_cuboid_counter] = min_z; banned_cuboid_tele_x[banned_cuboid_counter] = tele_x; banned_cuboid_tele_y[banned_cuboid_counter] = tele_y; banned_cuboid_tele_z[banned_cuboid_counter] = tele_z; banned_cuboid_tele_a[banned_cuboid_counter] = tele_a; format(banned_cuboid_message[banned_cuboid_counter],sizeof banned_cuboid_message[],"%s",message); new retval = banned_cuboid_counter++; return retval; } #define NUM_CAMERA 256 new camera_view_counter = 0; new player_cam_active[MAX_PLAYERS] = 0; new Float:pcp_x; new Float:pcp_y; new Float:pcp_z; new Float:player_cam_pos_x[NUM_CAMERA]; new Float:player_cam_pos_y[NUM_CAMERA]; new Float:player_cam_pos_z[NUM_CAMERA]; new Float:cam_area_max_x[NUM_CAMERA]; new Float:cam_area_min_x[NUM_CAMERA]; new Float:cam_area_max_y[NUM_CAMERA]; new Float:cam_area_min_y[NUM_CAMERA]; new Float:cam_area_max_z[NUM_CAMERA]; new Float:cam_area_min_z[NUM_CAMERA]; new Float:cam_pos_x[NUM_CAMERA]; new Float:cam_pos_y[NUM_CAMERA]; new Float:cam_pos_z[NUM_CAMERA]; new Float:cam_look_x[NUM_CAMERA]; new Float:cam_look_y[NUM_CAMERA]; new Float:cam_look_z[NUM_CAMERA]; new cam_view_message[NUM_CAMERA][256]; AddCameraView(Float:max_x, Float:min_x, Float:max_y, Float:min_y, Float:max_z, Float:min_z, message[], Float:cp_x, Float:cp_y, Float:cp_z, Float:cl_x, Float:cl_y, Float:cl_z, Float:ppos_x, Float:ppos_y, Float:ppos_z) { if (camera_view_counter>=NUM_CAMERA) { printf("Too many Camera views! Ignoring (%f,%f,%f,%f,%f,%f)",max_x,min_x,max_y,min_y,max_z,min_z); return 0; } player_cam_pos_x[camera_view_counter] = ppos_x; player_cam_pos_y[camera_view_counter] = ppos_y; player_cam_pos_z[camera_view_counter] = ppos_z; cam_area_max_x[camera_view_counter] = max_x; cam_area_min_x[camera_view_counter] = min_x; cam_area_max_y[camera_view_counter] = max_y; cam_area_min_y[camera_view_counter] = min_y; cam_area_max_z[camera_view_counter] = max_z; cam_area_min_z[camera_view_counter] = min_z; cam_pos_x[camera_view_counter] = cp_x; cam_pos_y[camera_view_counter] = cp_y; cam_pos_z[camera_view_counter] = cp_z; cam_look_x[camera_view_counter] = cl_x; cam_look_y[camera_view_counter] = cl_y; cam_look_z[camera_view_counter] = cl_z; format(cam_view_message[camera_view_counter],sizeof cam_view_message[],"%s",message); new retval = camera_view_counter++; return retval; } new team_spawn_counter[NUM_TEAMS]; new Float:team_spawn_x[NUM_TEAMS][NUM_SPAWNS]; new Float:team_spawn_y[NUM_TEAMS][NUM_SPAWNS]; new Float:team_spawn_z[NUM_TEAMS][NUM_SPAWNS]; new Float:team_spawn_a[NUM_TEAMS][NUM_SPAWNS]; new team_spawn_interior[NUM_TEAMS][NUM_SPAWNS]; AddTeamSpawn(team, Float:x, Float:y, Float:z, Float:a, interior=0) { if (team_spawn_counter[team]>=NUM_SPAWNS) { printf("Too many player spawns (team %d)!",team); return 0; } //printf("Spawn (team %d) at (%f,%f,%f) (%f)",team,x,y,z,a); team_spawn_x[team][team_spawn_counter[team]] = x; team_spawn_y[team][team_spawn_counter[team]] = y; team_spawn_z[team][team_spawn_counter[team]] = z; team_spawn_a[team][team_spawn_counter[team]] = a; team_spawn_interior[team][team_spawn_counter[team]] = interior; new retval = team_spawn_counter[team]++; return retval; } AddTeamLineSpawn(team, Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float: z2, Float:separation = 1.0, interior=0) { new Float:length = floatsqroot(floatpower(x2-x1,2)+floatpower(y2-y1,2)+floatpower(z2-z1,2)); if (length<1.0) { printf("AddTeamLineSpawn: This line is too short (%f,%f,%f) -> (%f,%f,%f)",x1,y1,z1,x2,y2,z2); return; } new Float:xv = (x2-x1)/length; new Float:yv = (y2-y1)/length; new Float:zv = (z2-z1)/length; new Float: face_angle; new Float: grad = floatabs(yv/xv); if (xv>=0 && yv>=0) { face_angle = 90-atan(grad); } else if (xv>=0 && yv<0) { face_angle = 90+atan(grad); } else if (xv<0 && yv<0) { face_angle = 270-atan(grad); } else if (xv<0 && yv>=0) { face_angle = 270+atan(grad); } face_angle = face_angle + 90.0; if (face_angle >= 360.0) face_angle -= 360.0; for (new Float:i=0 ; i <= length ; i+=separation) { AddTeamSpawn(team, x1+i*xv, y1+i*yv, z1+i*zv,360-face_angle, interior); } } new class_counter = 0; new class_modelid[MAX_PLAYERS]; new class_weapon1[MAX_PLAYERS]; new class_weapon1_ammo[MAX_PLAYERS]; new class_weapon2[MAX_PLAYERS]; new class_weapon2_ammo[MAX_PLAYERS]; new class_weapon3[MAX_PLAYERS]; new class_weapon3_ammo[MAX_PLAYERS]; new class_initial_hp[MAX_PLAYERS]; AddPlayerClass2(modelid, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo, initial_hp = 100) { class_modelid[class_counter] = modelid; class_weapon1[class_counter] = weapon1; class_weapon1_ammo[class_counter] = weapon1_ammo; class_weapon2[class_counter] = weapon2; class_weapon2_ammo[class_counter] = weapon2_ammo; class_weapon3[class_counter] = weapon3; class_weapon3_ammo[class_counter] = weapon3_ammo; class_initial_hp[class_counter] = initial_hp; AddPlayerClass(modelid, game_boundary_min_x+(game_boundary_max_x-game_boundary_min_x)/2,game_boundary_min_y+(game_boundary_max_y-game_boundary_min_y)/2,0,0, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo); new retval = class_counter++; return retval; } #define NUM_MAPS 11 public PlayerMapVote(playerid, map[]) { if (streq(map,"ls_hydra")) { player_map[playerid] = 0; } else if (streq(map,"sf")) { player_map[playerid] = 1; } else if (streq(map,"desert") || streq(map,"d")) { player_map[playerid] = 2; } else if (streq(map,"area51") || streq(map,"a51")) { player_map[playerid] = 3; } else if (streq(map,"lv_obj")) { player_map[playerid] = 4; } else if (streq(map,"air")) { player_map[playerid] = 5; } else if (streq(map,"chiliad") || streq(map,"chilliad") || streq(map,"chill") || streq(map,"chil")) { player_map[playerid] = 6; } else if (streq(map,"country") || streq(map,"cs")) { player_map[playerid] = 7; } else if (streq(map,"ls")) { player_map[playerid] = 8; } else if (streq(map,"lv")) { player_map[playerid] = 9; } else if (streq(map,"factory") || streq(map,"fac")) { player_map[playerid] = 10; } else PlayerMapVoteHelp(playerid); PlayerMapVoteStatus(playerid); } public PlayerMapVoteHelp(playerid) { SendClientMessage(playerid,COLOUR_PERSONAL,"Usage: /mapvote ls_hydra|sf|desert|a51|lv_obj|air|chiliad|country|ls|lv|fac"); } public PlayerMapVoteStatus(playerid) { new score[NUM_MAPS]; for (new i=0 ; imax_score) max_score = score[i]; } new map = INVALID_MAP; while (map==INVALID_MAP) { new proposal = random(sizeof score); if (score[proposal] == max_score) map = proposal; //printf("score={%d,%d,%d} max_score=%d map=%d proposal=%d",score[0],score[1],score[2],max_score,map,proposal); } if (max_score>0) { log_printf("Mapvote: %d",map); } return map; } public MapVoteStore() { new filename[256] = "mapvote.txt"; new File:mapvotefile = fopen(filename, io_write); if (!mapvotefile) { printf("ERROR: writing to mapvote file"); return; } new line[256]; format(line,sizeof line,"%d",MapVoteWinner()); fwrite(mapvotefile, line); fclose(mapvotefile); } public MapVoteGetVotedMap() { new filename[256] = "mapvote.txt"; new File:mapvotefile = fopen(filename, io_read); if (!mapvotefile) { printf("ERROR: reading from mapvote file"); return MapVoteWinner(); // a random map since no votes are present when the map starts } new line[256]; fread(mapvotefile, line); fclose(mapvotefile); return strvalfixed(line); } GetTextFromTeam(str[80], team) { switch(team) { case TEAM_PSYCHO: str = "a psychopath"; case TEAM_TERRORIST: str = "a terrorist"; case TEAM_PRIMEMINISTER: str = "the Prime Minister"; case TEAM_BODYGUARD: str = "a bodyguard"; case TEAM_COP:str = "a cop"; } return 1; } TeamColour(team) { switch(team) { case TEAM_PSYCHO: return 0xFF7F0050; case TEAM_TERRORIST: return 0xFF00AF60; case TEAM_PRIMEMINISTER: return 0xFFFF40FF & (pm_radar_time>0 ? 0xFFFFFF00 : 0xFFFFFFFF); case TEAM_BODYGUARD: return 0x00800048; case TEAM_COP: return 0x5050CF50; } return 1; } ClassColour(class) { if (class==INVALID_CLASS) return 0x00000000; if (class==class_terrorist_medic) { return 0xFF40CF60; } else if (class==class_bodyguard_medic) { return 0x50B05048; } else if (class==class_cop_medic) { return 0x8080EF50; } else { return TeamColour(class_team[class]); } return 0x00000000; } ExplainRole(playerid) { if (player_class[playerid]==INVALID_CLASS) return; new team = class_team[player_class[playerid]]; switch(team) { case TEAM_PSYCHO: { SendClientMessage(playerid,COLOUR_PERSONAL,"Nobody wants to be your friend. So trust noone. Kill them all."); } case TEAM_TERRORIST: { SendClientMessage(playerid,COLOUR_PERSONAL,"Your role is to try and kill the Prime Minister(yellow) before the timer runs out."); SendClientMessage(playerid,COLOUR_PERSONAL,"You must work with the other terrorists(pink) as a team. You must avoid the cops(blue)"); SendClientMessage(playerid,COLOUR_PERSONAL,"as they will hunt you. Beware of psychopaths(orange), they will kill anyone."); if (obj_counter>0) { SendClientMessage(playerid,COLOUR_PERSONAL,"The Prime Minister and his bodyguards will be visiting areas of the city. These"); SendClientMessage(playerid,COLOUR_PERSONAL,"are red on the radar. You should try and ambush him on his way there, siege him"); SendClientMessage(playerid,COLOUR_PERSONAL,"when he is there, and drive him away. If the Prime Minister achieves his objectives"); SendClientMessage(playerid,COLOUR_PERSONAL,"then you lose the game."); } } case TEAM_PRIMEMINISTER: { if (obj_counter==0) { SendClientMessage(playerid,COLOUR_PERSONAL,"Your role is to avoid being killed by terrorists(pink) or psychopaths(orange)"); SendClientMessage(playerid,COLOUR_PERSONAL,"until the timer runs out. Use /time to find out how long there is left."); } else { SendClientMessage(playerid,COLOUR_PERSONAL,"Your role is to visit and each of the objectives in order. You must defend the objective"); SendClientMessage(playerid,COLOUR_PERSONAL,"for the specified time before the next objective will be revealed. Terrorists(pink) and"); SendClientMessage(playerid,COLOUR_PERSONAL,"psychopaths(orange) will try to kill you. If you die, the terrorists win."); SendClientMessage(playerid,COLOUR_PERSONAL,"THERE IS NO TIME LIMIT FOR THIS GAME!"); } SendClientMessage(playerid,COLOUR_PERSONAL,"You must work with your loyal bodyguards(green), they will protect you."); SendClientMessage(playerid,COLOUR_PERSONAL,"You are to co-operate with the local police(blue), who will hunt the terrorists."); } case TEAM_BODYGUARD: { SendClientMessage(playerid,COLOUR_PERSONAL,"Your duty is to stay with the Prime Minister(yellow) and protect him from harm."); SendClientMessage(playerid,COLOUR_PERSONAL,"Terrorists(pink) will soon try and murder him. Also beware of psychopaths(orange)."); SendClientMessage(playerid,COLOUR_PERSONAL,"You are to co-operate with the local police(blue), who will hunt the terrorists."); if (obj_counter>0) { SendClientMessage(playerid,COLOUR_PERSONAL,"The Prime Minister will be visiting areas of the city. These are red on the radar."); SendClientMessage(playerid,COLOUR_PERSONAL,"The terrorists know where he needs to go, so you must prevent them from ambusing or"); SendClientMessage(playerid,COLOUR_PERSONAL,"successfully sieging the Prime Minister. If he is killed, you lose the game."); } } case TEAM_COP: { SendClientMessage(playerid,COLOUR_PERSONAL,"Your orders are to kill the terrorists(pink) without harming the bodyguards(green) or"); SendClientMessage(playerid,COLOUR_PERSONAL,"the Prime Minister(yellow). Also beware of psychopaths(orange). Protect the Prime Minister!"); if (obj_counter>0) { SendClientMessage(playerid,COLOUR_PERSONAL,"The Prime Minister and his bodyguards will be visiting areas of the city. These"); SendClientMessage(playerid,COLOUR_PERSONAL,"are red on the radar. You should focus your efforts there, clean out the terrorists"); SendClientMessage(playerid,COLOUR_PERSONAL,"so that the prime minister can go in. Then defend the area until he is done."); } } } if (player_class[playerid]==class_terrorist_medic || player_class[playerid]==class_bodyguard_medic || player_class[playerid]==class_cop_medic) { SendClientMessage(playerid,COLOUR_PERSONAL,"You are a medic, you can heal people with /heal!"); } if (safehouse_exists) { SendClientMessage(playerid,COLOUR_PERSONAL,"Only terrorists and bodyguards may fly the hydra or seasparrow."); SendClientMessage(playerid,COLOUR_PERSONAL,"The Prime Minister's safehouse (red) is a hydra/seasparrow free zone."); } } LosSantosVehicles() { AddStaticVehicle2(V_STRETCH,1272.0273,-2052.5105,58.9108,268.6577,1,1); // pm limo AddStaticVehicle2(V_ENFORCER,1248.0804,-2041.6018,59.8980,269.1785,0,1); // pm swat van south AddStaticVehicle2(V_ENFORCER,1248.4545,-2029.4104,59.8854,269.3774,0,1); // pm swat van middle AddStaticVehicle2(V_ENFORCER,1247.5862,-2016.4684,59.9106,270.2272,0,1); // pm swat van north AddStaticVehicle2(V_COPCARLA,1258.5917,-2052.1367,59.2043,267.4406,0,1); // pm police car behind limo AddStaticVehicle2(V_COPCARLA,1283.4066,-2052.5417,58.5057,267.8666,0,1); // pm police car infront of limo AddStaticVehicle2(V_NEWSVAN,1307.8915,-2061.7043,58.2399,269.3047,CarCol(),CarCol()); // pm news van AddStaticVehicle2(V_NEWSVAN,1323.5018,-2061.6367,57.7726,270.4650,CarCol(),CarCol()); // pm news van AddStaticVehicle2(V_NEWSVAN,1275,-2013,59.1134,89.3634,CarCol(),CarCol()); // pm newsvan AddStaticVehicle2(V_FBIRANCH,1275,-2023,59.1450,88.3334,0,0); // pm fbiranch north AddStaticVehicle2(V_FBIRANCH,1275,-2028,59.1616,88.3310,0,0); // pm fbiranch south AddStaticVehicle2(V_STRETCH,1330.2595,-626.7542,108.9349,289.3475,0,0); // safe house limo AddStaticVehicle2(V_FBIRANCH,1339.3717,-623.1824,109.2619,289.7454,0,0); // safe house escort before limo AddStaticVehicle2(V_FBIRANCH,1320.3932,-630.0724,109.2656,286.9799,0,0); // safe house escort behind limo AddStaticVehicle2(V_COPCARLA,1356.0096,-610.3824,108.8543,105.9892,0,1); // safe house cop car north AddStaticVehicle2(V_COPCARLA,1357.4025,-614.4976,108.9018,106.5213,0,1); // safe house cop car middle AddStaticVehicle2(V_COPCARLA,1358.7394,-618.5698,108.9018,105.6476,0,1); // safe house cop car south AddStaticVehicle2(V_COPBIKE,1360.5815,-622.1605,108.7038,106.0725,0,0); // safe house cop bike next to cop cars AddStaticVehicle2(V_COPBIKE,1555,-1609,12.9486,180,0,0); // police station bike 1 (north) AddStaticVehicle2(V_COPBIKE,1560,-1609,12.9486,180,0,0); // police station bike 2 AddStaticVehicle2(V_COPBIKE,1565,-1609,12.9474,180,0,0); // police station bike 3 AddStaticVehicle2(V_COPBIKE,1570,-1609,12.9557,180,0,0); // police station bike 4 AddStaticVehicle2(V_COPBIKE,1575,-1609,12.9540,180,0,0); // police station bike 5 (south) AddStaticVehicle2(V_ENFORCER,1601.7515,-1623.7999,13.6164,91.0440,0,1); // police station swat van 2 AddStaticVehicle2(V_ENFORCER,1601.8759,-1629.7356,13.6197,88.7999,0,1); // police station swat van 1 AddStaticVehicle2(V_SWATVAN,1534.5927,-1645.1713,5.6494,179.6766,1,1); // police station swat tank 1 (corner) AddStaticVehicle2(V_SWATVAN,1545.3734,-1655.2261,5.6494,270.4727,1,1); // police station swat tank 2 AddStaticVehicle2(V_COPCARLA,1544.4673,-1667.9943,5.6599,269.0485,0,1); // police station cop car indoors AddStaticVehicle2(V_COPCARLA,1529.6506,-1683.7926,5.6578,91.2372,0,1); // police station cop car indoors AddStaticVehicle2(V_COPCARLA,1544.2897,-1684.2386,5.6589,90.3812,0,1); // police station cop car indoors AddStaticVehicle2(V_COPCARLA,1558.9119,-1709.6991,5.6586,181.0041,0,1); // police station cop car indoors AddStaticVehicle2(V_COPCARLA,1591.4161,-1711.0702,5.6598,0.3255,0,1); // police station cop car indoors AddStaticVehicle2(V_COPCARLA,1601.5614,-1700.2463,5.6598,89.8913,0,1); // police station cop car indoors AddStaticVehicle2(V_COPCARRU,1585.3955,-1671.6195,6.0846,269.2602,0,1); // police station ranger AddStaticVehicle2(V_COPCARRU,1584.6819,-1667.6851,6.0791,269.2272,0,1); // police station ranger AddStaticVehicle2(V_COPCARRU,1601.9421,-1684.0054,6.0797,89.9971,0,1); // police station ranger AddStaticVehicle2(V_COPCARRU,1602.3267,-1691.9391,6.1032,91.0921,0,1); // police station ranger AddStaticVehicle2(V_COPCARRU,1603.4213,-1614.9706,13.6899,86.7397,0,1); // police station ranger outdoors AddStaticVehicle2(V_COPCARRU,1603.1095,-1604.8138,13.6777,89.8504,0,1); // police station ranger outdoors AddStaticVehicle2(V_PCJ600,1767.4407,-1689.3885,12.9402,180.4357,CarCol(),CarCol()); // terrorist bike 1 AddStaticVehicle2(V_PCJ600,1771.0730,-1688.7708,13.0141,181.8331,CarCol(),CarCol()); // terrorists bike 2 AddStaticVehicle2(V_HUNTLEY,1808.7601,-1715.5109,13.4829,180.1130,CarCol(),CarCol()); // terrorists huntley AddStaticVehicle2(V_HUNTLEY,1808.7458,-1707.0656,13.4865,180.0818,CarCol(),CarCol()); // terrorists huntley north AddStaticVehicle2(V_WAYFARER,1774.7974,-1688.7113,12.9956,176.7240,CarCol(),CarCol()); // terrorists bike 3 AddStaticVehicle2(V_WAYFARER,1778.2140,-1688.9255,12.9975,181.9484,CarCol(),CarCol()); // terrorists bike 4 AddStaticVehicle2(V_BENSON,1795.7860,-1691.3322,13.4844,181.4520,CarCol(),CarCol()); // terrorists van AddStaticVehicle2(V_BENSON,1805.5522,-1690.5121,13.5993,152.4614,CarCol(),CarCol()); // terrorists van corner AddStaticVehicle2(V_RANCHER,1766.9115,-1695.8004,13.5906,91.9755,CarCol(),CarCol()); // terrorists 4x4 AddStaticVehicle2(V_BURRITO,1767.4751,-1704.2063,13.6066,91.5783,CarCol(),CarCol()); // terrorists small van AddStaticVehicle2(V_GLENSHIT,1786.7887,-1689.5065,13.1861,89.9475,CarCol(),CarCol()); // terrorists old car AddStaticVehicle2(V_HUNTLEY,1808.7384,-1698.5176,13.4862,180.0169,-1,-1); // AddStaticVehicle2(V_HUNTLEY,1800.0474,-1690.5969,13.4410,178.3961,-1,-1); // AddStaticVehicle2(V_HUNTLEY,1787.1389,-1692.7755,13.3976,89.3455,-1,-1); // AddStaticVehicle2(V_PCJ600,1769.4333,-1688.9299,13.0055,184.8206,-1,-1); // AddStaticVehicle2(V_PCJ600,1773.4126,-1689.1147,13.0097,179.5487,-1,-1); // AddStaticVehicle2(V_WAYFARER,1776.5952,-1689.1486,12.9473,174.5531,-1,-1); // AddStaticVehicle2(V_WAYFARER,1779.6062,-1689.1764,12.9508,180.7781,-1,-1); // AddStaticVehicle2(V_WAYFARER,1781.3486,-1689.3826,12.9524,171.4159,-1,-1); // AddStaticVehicle2(V_BURRITO,1754.5945,-1712.3647,13.5771,180.9772,-1,-1); // AddStaticVehicle2(V_BURRITO,1735.4823,-1683.4484,13.6649,89.8953,-1,-1); // AddStaticVehicle2(V_ZR350,1465.7742,-899.0321,54.8603,3.2162,CarCol(),CarCol()); // posh house 1 AddStaticVehicle2(V_CHEETAH,1527.2067,-886.2890,61.1146,254.2985,CarCol(),CarCol()); // roof top AddStaticVehicle2(V_BULLET,1535.1796,-841.1790,64.8940,94.3109,CarCol(),CarCol()); // posh 3 AddStaticVehicle2(V_SUPERGT,1528.4613,-811.7554,71.8663,89.1012,CarCol(),CarCol()); // posh 4 AddStaticVehicle2(V_CHEETAH,1025.5624,-800.0936,101.8734,20.1116,CarCol(),CarCol()); // posh AddStaticVehicle2(V_ZR350,920.5785,-786.9205,114.3464,68.2807,CarCol(),CarCol()); // posh AddStaticVehicle2(V_BULLET,855.9669,-815.3113,87.7593,19.6388,CarCol(),CarCol()); // posh AddStaticVehicle2(V_BULLET,684.5640,-1074.3420,49.5645,60.4335,CarCol(),CarCol()); // posh AddStaticVehicle2(V_CHEETAH,404.5968,-1155.5228,77.6275,143.8123,CarCol(),CarCol()); // posh AddStaticVehicle2(V_BULLET,289.7317,-1167.9216,80.9028,220.8520,CarCol(),CarCol()); // very posh AddStaticVehicle2(V_BULLET,292.9161,-1162.0803,80.9022,220.1603,CarCol(),CarCol()); // very posh AddStaticVehicle2(V_SUPERGT,288.0584,-1327.9247,53.5295,218.3855,CarCol(),CarCol()); // posh AddStaticVehicle2(V_BULLET,1241.8268,-749.5003,94.2435,18.4917,CarCol(),CarCol()); // AddStaticVehicle2(V_CHEETAH,872.4854,-872.3334,77.2855,200.1391,CarCol(),CarCol()); // posh AddStaticVehicle2(V_ZR350,833.5978,-926.3884,54.9567,246.7931,CarCol(),CarCol()); // posh AddStaticVehicle2(V_ZR350,842.0680,-896.1290,68.4778,232.5096,CarCol(),CarCol()); // posh AddStaticVehicle2(V_SUPERGT,1086.8040,-637.7476,112.9547,5.5657,CarCol(),CarCol()); // posh AddStaticVehicle2(V_HUNTLEY,1528.2061,-800.0825,73.0617,90.4437,CarCol(),CarCol()); // posh 4b (V_RANCHER) AddStaticVehicle2(V_NRG500,1018.2570,-777.7994,102.6511,90.7938,CarCol(),CarCol()); // posh bike AddStaticVehicle2(V_HUNTLEY,848.0241,-818.4172,87.0807,22.0264,CarCol(),CarCol()); // posh rancher AddStaticVehicle2(V_NRG500,718.9101,-1001.8113,52.4130,148.8447,CarCol(),CarCol()); // posh bike AddStaticVehicle2(V_NRG500,278.7959,-1257.6844,73.9157,215.0338,CarCol(),CarCol()); // posh bike AddStaticVehicle2(V_PCJ600,337.6167,-1308.5352,54.2161,209.8673,CarCol(),CarCol()); // sanchez AddStaticVehicle2(V_PCJ600,346.4070,-1300.6411,54.2168,206.8296,CarCol(),CarCol()); // sanchez AddStaticVehicle2(V_PATRIOT,914.0649,-665.7319,116.7606,241.1865,CarCol(),CarCol()); // patriot AddStaticVehicle2(V_MONSTERA,946.1701,-705.2098,121.9152,29.1216,CarCol(),CarCol()); // bandito AddStaticVehicle2(V_HUNTLEY,940.8948,-695.8306,121.1879,29.9158,CarCol(),CarCol()); // sand king AddStaticVehicle2(V_HUNTLEY,1097.4353,-642.2601,112.5732,267.1823,CarCol(),CarCol()); // huntley AddStaticVehicle2(V_RANCHER,1413.9097,-481.3066,42.9720,297.0425,CarCol(),CarCol()); // rancher AddStaticVehicle2(V_COMET,1659.2822,-1426.8878,13.3985,88.7621,CarCol(),CarCol()); // com AddStaticVehicle2(V_BANSHEE,1590.5114,-1317.7780,17.2589,49.2585,CarCol(),CarCol()); // com AddStaticVehicle2(V_STALLION,1809.2898,-1430.6573,13.1695,184.9688,CarCol(),CarCol()); // com AddStaticVehicle2(V_WINDSOR,1725.2581,-1217.3599,19.0807,2.3763,CarCol(),CarCol()); // com AddStaticVehicle2(V_COMET,1531.0547,-1066.9626,24.7978,90.4579,CarCol(),CarCol()); // com AddStaticVehicle2(V_ZR350,1451.6792,-1146.7477,23.7968,133.4617,CarCol(),CarCol()); // com AddStaticVehicle2(V_STALLION,1328.1886,-1188.7338,23.3185,176.1219,CarCol(),CarCol()); // com AddStaticVehicle2(V_WINDSOR,1252.2759,-1430.6191,13.2775,183.7629,CarCol(),CarCol()); // com AddStaticVehicle2(V_COMET,1357.4553,-1570.0588,13.2831,163.9771,CarCol(),CarCol()); // com AddStaticVehicle2(V_BANSHEE,1677.5549,-1680.1785,13.2813,182.6165,CarCol(),CarCol()); // com AddStaticVehicle2(V_STALLION,1462.1278,-1356.1224,13.6903,0.6286,CarCol(),CarCol()); // com AddStaticVehicle2(V_CHEETAH,1294.6667,-984.6381,32.8379,180.0905,CarCol(),CarCol()); // cheetah AddStaticVehicle2(V_STRATUM,1205.1552,-1070.0197,29.3908,178.9626,CarCol(),CarCol()); // res AddStaticVehicle2(V_CEMENT,1256.7892,-1261.7640,13.3957,272.3957,CarCol(),CarCol()); // ind AddStaticVehicle2(V_STALLION,1429.0876,-1408.5740,13.7150,179.6099,CarCol(),CarCol()); // com AddStaticVehicle2(V_STALLION,1479.4669,-1415.0720,12.0265,125.8019,CarCol(),CarCol()); // com AddStaticVehicle2(V_BLADE,1947.7089,-1055.4075,24.3895,261.2244,CarCol(),CarCol()); // low AddStaticVehicle2(V_WASHING,2149.6853,-1137.7899,25.6585,90.4148,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_ELEGY,2160.4878,-1192.2114,23.9636,272.4233,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_MERIT,2241.3850,-1317.9384,24.1282,269.8383,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_WASHING,2347.2151,-1274.0010,22.6479,272.8961,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_SAVANNA,2427.8301,-1241.7535,24.4136,273.2498,CarCol(),CarCol()); // lowrider AddStaticVehicle2(V_VOODOO,2413.4661,-1229.0675,24.5211,182.1959,CarCol(),CarCol()); // lowrider AddStaticVehicle2(V_PCJ600,2463.7815,-1424.0723,23.8932,83.3706,CarCol(),CarCol()); // slow bike AddStaticVehicle2(V_WASHING,2460.6946,-1551.0662,24.1444,273.1476,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_SAVANNA,2479.3372,-1748.7130,13.6900,180.5300,CarCol(),CarCol()); // lowrider AddStaticVehicle2(V_GLENSHIT,2393.3811,-1927.7556,13.5243,0.1380,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_BLADE,2390.0774,-1884.8796,13.6899,265.9858,CarCol(),CarCol()); // lowrider AddStaticVehicle2(V_GLENSHIT,2728.9060,-1970.3724,13.6880,269.7400,CarCol(),CarCol()); // saloon cheap AddStaticVehicle2(V_REGINA,976.4387,-1230.6876,17.0708,88.5852,41,41); // suv AddStaticVehicle2(V_FLATBED,834.1715,-1216.6764,17.0872,84.6204,41,41); // ind AddStaticVehicle2(V_TOWTRUCK,860.5280,-1285.6953,14.0937,182.9245,41,41); // ind AddStaticVehicle2(V_MERIT,920.2068,-1292.6371,13.8247,270.7137,41,41); // saloon AddStaticVehicle2(V_SOLAIR,1012.5267,-1346.8806,13.4797,267.5486,41,41); // suv AddStaticVehicle2(V_REGINA,1117.3052,-1378.9901,14.4011,89.1945,41,41); // suv AddStaticVehicle2(V_NRG500,1132.5653,-1614.6372,13.9194,85.6389,41,41); // fast bike in shopping centre AddStaticVehicle2(V_WINDSOR,1160.2629,-1770.1327,16.7116,359.6430,41,41); // com AddStaticVehicle2(V_BANSHEE,1284.9130,-1732.6017,13.6673,0.8082,41,41); // com AddStaticVehicle2(V_REGINA,974.6439,-1089.6545,24.2836,177.6930,CarCol(),CarCol()); // suv AddStaticVehicle2(V_ELEGY,785.2358,-1064.5126,24.9404,49.4555,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_COMET,922.8809,-996.1521,38.3117,97.5416,CarCol(),CarCol()); // com AddStaticVehicle2(V_STRATUM,1140.2466,-927.7980,43.3007,271.3280,CarCol(),CarCol()); // suv AddStaticVehicle2(V_GLENSHIT,1337.9901,-901.7728,36.4426,180.8606,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_SWEEPER,1646.3864,-1062.6378,24.0274,155.3884,CarCol(),CarCol()); // sweeper AddStaticVehicle2(V_BENSON,1649.0890,-1111.7745,24.0429,267.8602,CarCol(),CarCol()); // van AddStaticVehicle2(V_BURRITO,1657.3999,-1134.4487,24.0332,180.5504,CarCol(),CarCol()); // smallvan AddStaticVehicle2(V_FLATBED,1564.0852,-1019.3521,24.0372,81.4864,CarCol(),CarCol()); // flatbed AddStaticVehicle2(V_NRG500,1518.3389,-1257.1481,14.6713,180.1029,CarCol(),CarCol()); // fastbike AddStaticVehicle2(V_MERIT,1999.5741,-1445.1320,13.6917,217.9478,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_BLADE,2086.8411,-1327.5076,24.1078,0.7111,CarCol(),CarCol()); // low AddStaticVehicle2(V_WASHING,1993.6346,-1276.0702,23.9460,357.9409,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_SWEEPER,1816.7452,-1133.7300,24.2091,273.6008,CarCol(),CarCol()); // sweeper AddStaticVehicle2(V_COACH,1775.9677,-1022.6566,24.0901,333.2864,CarCol(),CarCol()); // coach AddStaticVehicle2(V_ELEGY,2051.7642,-1121.0273,24.7394,176.2412,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_SAVANNA,2080.0862,-1284.8212,24.0993,178.8542,CarCol(),CarCol()); // lowrider AddStaticVehicle2(V_VOODOO,2143.8416,-1422.6912,25.2155,89.4439,CarCol(),CarCol()); // low AddStaticVehicle2(V_PCJ600,2199.1309,-1497.6111,24.1060,275.7724,CarCol(),CarCol()); // slowbike AddStaticVehicle2(V_SOLAIR,2200.7722,-1660.7334,15.1396,164.7502,CarCol(),CarCol()); // sub AddStaticVehicle2(V_WAYFARER,2321.2974,-1756.2679,13.6757,273.8248,CarCol(),CarCol()); // V_WAYFARER AddStaticVehicle2(V_STRETCH,1460.0215,-1025.5533,23.5681,90.6347,22,1); // limo bingo AddStaticVehicle2(V_STRETCH,1439.1008,-1025.7854,23.5682,90.6346,22,1); // limo bingo AddStaticVehicle2(V_COACH,1567.8092,-1891.4109,13.7520,356.6625,CarCol(),CarCol()); // coach AddStaticVehicle2(V_STRATUM,1370.2388,-1889.9265,13.7022,359.3041,CarCol(),CarCol()); // suv AddStaticVehicle2(V_GLENSHIT,1206.1053,-1829.6782,13.5963,92.9658,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_BANSHEE,1022.5290,-1832.1632,13.8703,62.2289,CarCol(),CarCol()); // com AddStaticVehicle2(V_WINDSOR,860.6016,-1756.1599,13.7098,17.1219,CarCol(),CarCol()); // com AddStaticVehicle2(V_CHEETAH,721.0599,-1809.3398,12.5489,71.5726,CarCol(),CarCol()); // posh AddStaticVehicle2(V_SOLAIR,479.5703,-1765.3434,5.7271,87.6614,CarCol(),CarCol()); // suv AddStaticVehicle2(V_REGINA,266.6155,-1746.7922,4.5722,91.5479,CarCol(),CarCol()); // suv AddStaticVehicle2(V_COMET,276.7425,-1594.9742,33.2880,348.6675,CarCol(),CarCol()); // com AddStaticVehicle2(V_STALLION,425.1006,-1440.8821,31.4193,36.4924,CarCol(),CarCol()); // com AddStaticVehicle2(V_STRATUM,551.6909,-1505.2357,14.7316,182.8906,CarCol(),CarCol()); // suv AddStaticVehicle2(V_MERIT,649.7829,-1620.6465,15.2105,112.6496,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_NRG500,682.0504,-1259.6924,13.7628,106.4779,CarCol(),CarCol()); // bikefast AddStaticVehicle2(V_WAYFARER,2175.6335,-993.5605,63.1809,169.8002,CarCol(),CarCol()); // V_WAYFARER AddStaticVehicle2(V_RANCHER,2453.6128,-1016.0901,59.8982,177.5543,CarCol(),CarCol()); // rancher AddStaticVehicle2(V_WASHING,2536.1904,-1104.8235,59.8875,180.5492,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_BLADE,2328.6465,-1407.3834,24.1766,178.8325,CarCol(),CarCol()); // low AddStaticVehicle2(V_MONSTERA,2492.1194,-1663.3529,13.5302,82.4906,CarCol(),CarCol()); // monster AddStaticVehicle2(V_GLENSHIT,2066.3311,-1694.5254,13.7310,268.5239,CarCol(),CarCol()); // V_GLENSHIT AddStaticVehicle2(V_CEMENT,2054.1970,-1767.7522,13.7393,181.0835,CarCol(),CarCol()); // cement AddStaticVehicle2(V_FLATBED,1939.3959,-1815.7340,13.7385,77.9876,CarCol(),CarCol()); // flatbed AddStaticVehicle2(V_TOWTRUCK,1937.9028,-1939.7325,13.7375,89.1628,CarCol(),CarCol()); // towtruck AddStaticVehicle2(V_PCJ600,1941.1481,-2140.8420,13.7440,175.4044,CarCol(),CarCol()); // V_PCJ600 AddStaticVehicle2(V_SWEEPER,2125.8816,-2165.4050,13.7341,320.7342,CarCol(),CarCol()); // sweeper AddStaticVehicle2(V_PATRIOT,2076.9661,-1994.8885,13.7389,41.9139,CarCol(),CarCol()); // patriot AddStaticVehicle2(V_GLENSHIT,1502.1649,-2212.7788,13.3136,359.6183,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_STRATUM,1407.0730,-2261.8484,13.3164,180.3750,CarCol(),CarCol()); // suv AddStaticVehicle2(V_BANSHEE,1365.5696,-2365.7705,13.3159,90.6723,CarCol(),CarCol()); // com AddStaticVehicle2(V_BENSON,1789.8521,-2180.6389,13.3187,270.2510,CarCol(),CarCol()); // van AddStaticVehicle2(V_WASHING,1922.5924,-1605.3048,13.1082,269.9615,118,118); // saloon AddStaticVehicle2(V_WAYFARER,2070.1260,-1591.6121,13.0664,182.2131,118,118); // V_WAYFARER AddStaticVehicle2(V_MERIT,2705.9854,-1844.6924,9.8701,340.3920,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_SOLAIR,2813.2185,-1671.5564,10.3166,2.8114,CarCol(),CarCol()); // suv AddStaticVehicle2(V_SAVANNA,2644.6707,-2023.4589,13.9219,1.6210,CarCol(),CarCol()); // low AddStaticVehicle2(V_CEMENT,2743.6338,-2138.0737,11.5750,94.0439,CarCol(),CarCol()); // cement AddStaticVehicle2(V_FLATBED,2300.8748,-2043.2729,13.9219,93.1316,CarCol(),CarCol()); // flatbed AddStaticVehicle2(V_ELEGY,2241.5413,-2111.0176,13.9195,134.0082,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_NRG500,2228.4226,-1811.8547,13.8943,269.9799,CarCol(),CarCol()); // V_NRG500 AddStaticVehicle2(V_BLADE,2505.4697,-1235.4440,37.6099,356.9889,CarCol(),CarCol()); // lowr AddStaticVehicle2(V_BURRITO,2587.6326,-1322.8219,40.4727,91.7934,CarCol(),CarCol()); // smallvan AddStaticVehicle2(V_PCJ600,2527.5496,-1465.3361,24.3251,86.3631,CarCol(),CarCol()); // slowbike AddStaticVehicle2(V_MERIT,2698.6609,-1191.8911,69.7986,270.9197,CarCol(),CarCol()); // saloon AddStaticVehicle2(V_RANCHER,2706.4719,-1274.8931,58.4590,135.3378,CarCol(),CarCol()); // rancher AddStaticVehicle2(V_BANSHEE,894.8080,-1518.4893,12.8387,9.3645,CarCol(),CarCol()); // com AddStaticVehicle2(V_RANCHER,1725.1200,-405.3828,45.0947,196.5883,CarCol(),CarCol()); // offroad AddStaticVehicle2(V_RANCHER,1970.6564,-813.4561,129.1876,281.6888,CarCol(),CarCol()); // rancher AddStaticVehicle2(V_RANCHER,2431.9832,-773.8238,113.2601,296.2740,CarCol(),CarCol()); // rancher AddStaticVehicle2(V_RANCHER,2662.3218,-438.5351,59.7808,318.4588,CarCol(),CarCol()); // rancher } LasVenturasVehicles() { AddStaticVehicle2(V_TURISMO, 2040.0520,1319.2799,10.3779,183.2439, -1,-1); AddStaticVehicle2(V_BANSHEE, 2040.5247,1359.2783,10.3516,177.1306, -1,-1); AddStaticVehicle2(V_WASHING, 2110.4102,1398.3672,10.7552,359.5964, -1,-1); AddStaticVehicle2(V_INFERNUS, 2074.9624,1479.2120,10.3990,359.6861, -1,-1); AddStaticVehicle2(V_ZR350, 2075.6038,1666.9750,10.4252,359.7507, -1,-1); AddStaticVehicle2(V_BULLET, 2119.5845,1938.5969,10.2967,181.9064, -1,-1); AddStaticVehicle2(V_BULLET, 1843.7881,1216.0122,10.4556,270.8793, -1,-1); AddStaticVehicle2(V_BUFFALO, 1944.1003,1344.7717,8.9411,0.8168, -1,-1); AddStaticVehicle2(V_BUFFALO, 1679.2278,1316.6287,10.6520,180.4150, -1,-1); AddStaticVehicle2(V_CHEETAH, 1685.4872,1751.9667,10.5990,268.1183, -1,-1); AddStaticVehicle2(V_INFERNUS, 2034.5016,1912.5874,11.9048,0.2909, -1,-1); AddStaticVehicle2(V_INFERNUS, 2172.1682,1988.8643,10.5474,89.9151, -1,-1); AddStaticVehicle2(V_BANSHEE, 2245.5759,2042.4166,10.5000,270.7350, -1,-1); AddStaticVehicle2(V_ZR350, 2361.1538,1993.9761,10.4260,178.3929, -1,-1); AddStaticVehicle2(V_SUNRISE, 2221.9946,1998.7787,9.6815,92.6188, -1,-1); AddStaticVehicle2(V_URANUS, 2243.3833,1952.4221,14.9761,359.4796, -1,-1); AddStaticVehicle2(V_EUROS, 2276.7085,1938.7263,31.5046,359.2321, -1,-1); AddStaticVehicle2(V_EUROS, 2602.7769,1853.0667,10.5468,91.4813, -1,-1); AddStaticVehicle2(V_PHOENIX, 2610.7600,1694.2588,10.6585,89.3303, -1,-1); AddStaticVehicle2(V_EUROS, 2635.2419,1075.7726,10.5472,89.9571, -1,-1); AddStaticVehicle2(V_ELEGY, 2577.2354,1038.8063,10.4777,181.7069, -1,-1); AddStaticVehicle2(V_ELEGY, 2394.1021,989.4888,10.4806,89.5080, -1,-1); AddStaticVehicle2(V_ELEGY, 1881.0510,957.2120,10.4789,270.4388, -1,-1); AddStaticVehicle2(V_SLAMVAN, 2039.1257,1545.0879,10.3481,359.6690, -1,-1); AddStaticVehicle2(V_SLAMVAN, 2009.8782,2411.7524,10.5828,178.9618, -1,-1); AddStaticVehicle2(V_BANSHEE, 2010.0841,2489.5510,10.5003,268.7720, -1,-1); AddStaticVehicle2(V_CHEETAH, 2076.4033,2468.7947,10.5923,359.9186, -1,-1); // AddStaticVehicle2(V_MAVERICK, 2093.2754,2414.9421,74.7556,89.0247, -1,-1); AddStaticVehicle2(V_SUPERGT, 2352.9026,2577.9768,10.5201,0.4091, -1,-1); AddStaticVehicle2(V_SUPERGT, 2166.6963,2741.0413,10.5245,89.7816, -1,-1); AddStaticVehicle2(V_INFERNUS, 1960.9989,2754.9072,10.5473,200.4316, -1,-1); AddStaticVehicle2(V_BANSHEE, 1919.5863,2760.7595,10.5079,100.0753, -1,-1); AddStaticVehicle2(V_CHEETAH, 1673.8038,2693.8044,10.5912,359.7903, -1,-1); AddStaticVehicle2(V_BUFFALO, 1591.0482,2746.3982,10.6519,172.5125, -1,-1); AddStaticVehicle2(V_PHOENIX, 1580.4537,2838.2886,10.6614,181.4573, -1,-1); AddStaticVehicle2(V_SUNRISE, 1555.2734,2750.5261,10.6388,91.7773, -1,-1); AddStaticVehicle2(V_SLAMVAN, 1455.9305,2878.5288,10.5837,181.0987, -1,-1); AddStaticVehicle2(V_ZR350, 1537.8425,2578.0525,10.5662,0.0650, -1,-1); AddStaticVehicle2(V_TURISMO, 1433.1594,2607.3762,10.3781,88.0013, -1,-1); AddStaticVehicle2(V_PHOENIX, 2223.5898,1288.1464,10.5104,182.0297, -1,-1); AddStaticVehicle2(V_URANUS, 2451.6707,1207.1179,10.4510,179.8960, -1,-1); AddStaticVehicle2(V_SUNRISE, 2461.7253,1357.9705,10.6389,180.2927, -1,-1); AddStaticVehicle2(V_URANUS, 2461.8162,1629.2268,10.4496,181.4625, -1,-1); AddStaticVehicle2(V_ZR350, 2395.7554,1658.9591,10.5740,359.7374, -1,-1); AddStaticVehicle2(V_PEREN, 1553.3696,1020.2884,10.5532,270.6825, -1,-1); AddStaticVehicle2(V_LANDSTAL, 1380.8304,1159.1782,10.9128,355.7117, -1,-1); AddStaticVehicle2(V_MOONBEAM, 1383.4630,1035.0420,10.9131,91.2515, -1,-1); AddStaticVehicle2(V_PEREN, 1445.4526,974.2831,10.5534,1.6213, -1,-1); AddStaticVehicle2(V_LANDSTAL, 1704.2365,940.1490,10.9127,91.9048, -1,-1); AddStaticVehicle2(V_PEREN, 1658.5463,1028.5432,10.5533,359.8419, -1,-1); AddStaticVehicle2(V_FCR900, 1677.6628,1040.1930,10.4136,178.7038, -1,-1); AddStaticVehicle2(V_FCR900, 1383.6959,1042.2114,10.4121,85.7269, -1,-1); AddStaticVehicle2(V_FCR900, 1064.2332,1215.4158,10.4157,177.2942, -1,-1); AddStaticVehicle2(V_FCR900, 1111.4536,1788.3893,10.4158,92.4627, -1,-1); AddStaticVehicle2(V_NRG500, 953.2818,1806.1392,8.2188,235.0706, -1,-1); AddStaticVehicle2(V_NRG500, 995.5328,1886.6055,10.5359,90.1048, -1,-1); AddStaticVehicle2(V_FCR900, 993.7083,2267.4133,11.0315,1.5610, -1,-1); AddStaticVehicle2(V_SLAMVAN, 1439.5662,1999.9822,10.5843,0.4194, -1,-1); AddStaticVehicle2(V_NRG500, 1430.2354,1999.0144,10.3896,352.0951, -1,-1); AddStaticVehicle2(V_NRG500, 2156.3540,2188.6572,10.2414,22.6504, -1,-1); // AddStaticVehicle2(V_COPCARVG, 2277.6846,2477.1096,10.5652,180.1090, -1,-1); // AddStaticVehicle2(V_COPCARVG, 2268.9888,2443.1697,10.5662,181.8062, -1,-1); // AddStaticVehicle2(V_COPCARVG, 2256.2891,2458.5110,10.5680,358.7335, -1,-1); // AddStaticVehicle2(V_COPCARVG, 2251.6921,2477.0205,10.5671,179.5244, -1,-1); // AddStaticVehicle2(V_COPBIKE, 2294.7305,2441.2651,10.3860,9.3764, -1,-1); // AddStaticVehicle2(V_COPBIKE, 2290.7268,2441.3323,10.3944,16.4594, -1,-1); AddStaticVehicle2(V_NRG500, 2476.7900,2532.2222,21.4416,0.5081, -1,-1); AddStaticVehicle2(V_NRG500, 2580.5320,2267.9595,10.3917,271.2372, -1,-1); AddStaticVehicle2(V_NRG500, 2814.4331,2364.6641,10.3907,89.6752, -1,-1); AddStaticVehicle2(V_SLAMVAN, 2827.4143,2345.6953,10.5768,270.0668, -1,-1); AddStaticVehicle2(V_FCR900, 1670.1089,1297.8322,10.3864,359.4936, -1,-1); // AddStaticVehicle2(V_MAVERICK, 1614.7153,1548.7513,11.2749,347.1516, -1,-1); // AddStaticVehicle2(V_MAVERICK, 1647.7902,1538.9934,11.2433,51.8071, -1,-1); // AddStaticVehicle2(V_MAVERICK, 1608.3851,1630.7268,11.2840,174.5517, -1,-1); // AddStaticVehicle2(V_RUSTLER, 1283.0006,1324.8849,9.5332,275.0468, -1,-1); // AddStaticVehicle2(V_RUSTLER, 1283.5107,1361.3171,9.5382,271.1684, -1,-1); // AddStaticVehicle2(V_RUSTLER, 1283.6847,1386.5137,11.5300,272.1003, -1,-1); // AddStaticVehicle2(V_RUSTLER, 1288.0499,1403.6605,11.5295,243.5028, -1,-1); AddStaticVehicle2(V_CHEETAH, 1319.1038,1279.1791,10.5931,0.9661, -1,-1); AddStaticVehicle2(V_FCR900, 1710.5763,1805.9275,10.3911,176.5028, -1,-1); AddStaticVehicle2(V_FCR900, 2805.1650,2027.0028,10.3920,357.5978, -1,-1); AddStaticVehicle2(V_SLAMVAN, 2822.3628,2240.3594,10.5812,89.7540, -1,-1); AddStaticVehicle2(V_FCR900, 2876.8013,2326.8418,10.3914,267.8946, -1,-1); AddStaticVehicle2(V_BANSHEE, 2842.0554,2637.0105,10.5000,182.2949, -1,-1); AddStaticVehicle2(V_TAMPA, 2494.4214,2813.9348,10.5172,316.9462, -1,-1); AddStaticVehicle2(V_TAMPA, 2327.6484,2787.7327,10.5174,179.5639, -1,-1); AddStaticVehicle2(V_TAMPA, 2142.6970,2806.6758,10.5176,89.8970, -1,-1); AddStaticVehicle2(V_FCR900, 2139.7012,2799.2114,10.3917,229.6327, -1,-1); AddStaticVehicle2(V_FCR900, 2104.9446,2658.1331,10.3834,82.2700, -1,-1); AddStaticVehicle2(V_FCR900, 1914.2322,2148.2590,10.3906,267.7297, -1,-1); AddStaticVehicle2(V_TAMPA, 1904.7527,2157.4312,10.5175,183.7728, -1,-1); AddStaticVehicle2(V_TAMPA, 1532.6139,2258.0173,10.5176,359.1516, -1,-1); AddStaticVehicle2(V_FCR900, 1534.3204,2202.8970,10.3644,4.9108, -1,-1); AddStaticVehicle2(V_TAMPA, 1613.1553,2200.2664,10.5176,89.6204, -1,-1); AddStaticVehicle2(V_LANDSTAL, 1552.1292,2341.7854,10.9126,274.0815, -1,-1); AddStaticVehicle2(V_PEREN, 1637.6285,2329.8774,10.5538,89.6408, -1,-1); AddStaticVehicle2(V_LANDSTAL, 1357.4165,2259.7158,10.9126,269.5567, -1,-1); AddStaticVehicle2(V_INFERNUS, 1281.7458,2571.6719,10.5472,270.6128, -1,-1); AddStaticVehicle2(V_NRG500, 1305.5295,2528.3076,10.3955,88.7249, -1,-1); AddStaticVehicle2(V_FCR900, 993.9020,2159.4194,10.3905,88.8805, -1,-1); AddStaticVehicle2(V_CHEETAH, 1512.7134,787.6931,10.5921,359.5796, -1,-1); AddStaticVehicle2(V_NRG500, 2299.5872,1469.7910,10.3815,258.4984, -1,-1); AddStaticVehicle2(V_NRG500, 2133.6428,1012.8537,10.3789,87.1290, -1,-1); AddStaticVehicle2(V_CHEETAH, 2266.7336,648.4756,11.0053,177.8517, -1,-1); AddStaticVehicle2(V_FCR900, 2404.6636,647.9255,10.7919,183.7688, -1,-1); AddStaticVehicle2(V_SUPERGT, 2628.1047,746.8704,10.5246,352.7574, -1,-1); AddStaticVehicle2(V_TAMPA, 2808.7822,900.1909,10.4548,182.4576, -1,-1); AddStaticVehicle2(V_ELEGY, 1919.8829,947.1886,10.4715,359.4453, -1,-1); AddStaticVehicle2(V_ELEGY, 1881.6346,1006.7653,10.4783,86.9967, -1,-1); AddStaticVehicle2(V_ELEGY, 2038.1044,1006.4022,10.4040,179.2641, -1,-1); AddStaticVehicle2(V_ELEGY, 2038.1614,1014.8566,10.4057,179.8665, -1,-1); AddStaticVehicle2(V_ELEGY, 2038.0966,1026.7987,10.4040,180.6107, -1,-1); AddStaticVehicle2(V_BOBCAT, 9.1065,1165.5066,19.5855,2.1281, -1,-1); AddStaticVehicle2(V_FREEWAY, 19.8059,1163.7103,19.1504,346.3326, -1,-1); AddStaticVehicle2(V_FREEWAY, 12.5740,1232.2848,18.8822,121.8670, -1,-1); AddStaticVehicle2(V_WAYFARER, 69.4633,1217.0189,18.3304,158.9345, -1,-1); AddStaticVehicle2(V_WAYFARER, -199.4185,1223.0405,19.2624,176.7001, -1,-1); // AddStaticVehicle2(V_RUSTLER, 325.4121,2538.5999,17.5184,181.2964, -1,-1); // AddStaticVehicle2(V_RUSTLER, 291.0975,2540.0410,17.5276,182.7206, -1,-1); AddStaticVehicle2(V_TORNADO, 384.2365,2602.1763,16.0926,192.4858, -1,-1); AddStaticVehicle2(V_WAYFARER, 423.8012,2541.6870,15.9708,338.2426, -1,-1); AddStaticVehicle2(V_WAYFARER, -244.0047,2724.5439,62.2077,51.5825, -1,-1); AddStaticVehicle2(V_WAYFARER, -311.1414,2659.4329,62.4513,310.9601, -1,-1); AddStaticVehicle2(V_SADLER, 596.8064,866.2578,-43.2617,186.8359, -1,-1); AddStaticVehicle2(V_SADLER, 835.0838,836.8370,11.8739,14.8920, -1,-1); AddStaticVehicle2(V_TAMPA, 843.1893,838.8093,12.5177,18.2348, -1,-1); AddStaticVehicle2(V_LANDSTAL, -235.9767,1045.8623,19.8158,180.0806, -1,-1); // AddStaticVehicle2(V_COPCARRU, -211.5940,998.9857,19.8437,265.4935, -1,-1); AddStaticVehicle2(V_BOBCAT, -304.0620,1024.1111,19.5714,94.1812, -1,-1); AddStaticVehicle2(V_HOTDOG, -290.2229,1317.0276,54.1871,81.7529, -1,-1); AddStaticVehicle2(V_TURISMO, -290.3145,1567.1534,75.0654,133.1694, -1,-1); AddStaticVehicle2(V_PATRIOT, 280.4914,1945.6143,17.6317,310.3278, -1,-1); AddStaticVehicle2(V_PATRIOT, 272.2862,1949.4713,17.6367,285.9714, -1,-1); AddStaticVehicle2(V_PATRIOT, 271.6122,1961.2386,17.6373,251.9081, -1,-1); AddStaticVehicle2(V_PATRIOT, 279.8705,1966.2362,17.6436,228.4709, -1,-1); AddStaticVehicle2(V_BARRACKS, 277.6437,1985.7559,18.0772,270.4079, -1,-1); AddStaticVehicle2(V_BARRACKS, 277.4477,1994.8329,18.0773,267.7378, -1,-1); AddStaticVehicle2(V_BANDITO, -441.3438,2215.7026,42.2489,191.7953, -1,-1); AddStaticVehicle2(V_BANDITO, -422.2956,2225.2612,42.2465,0.0616, -1,-1); AddStaticVehicle2(V_BANDITO, -371.7973,2234.5527,42.3497,285.9481, -1,-1); AddStaticVehicle2(V_BANDITO, -360.1159,2203.4272,42.3039,113.6446, -1,-1); AddStaticVehicle2(V_SANCHEZ, -660.7385,2315.2642,138.3866,358.7643, -1,-1); // AddStaticVehicle2(V_SKIMMER, -1029.2648,2237.2217,42.2679,260.5732, -1,-1); AddStaticVehicle2(V_ESPERANT, 95.0568,1056.5530,13.4068,192.1461, -1,-1); AddStaticVehicle2(V_BANSHEE, 114.7416,1048.3517,13.2890,174.9752, -1,-1); AddStaticVehicle2(V_INFERNUS, -290.0065,1759.4958,42.4154,89.7571, -1,-1); AddStaticVehicle2(V_NRG500, -302.5649,1777.7349,42.2514,238.5039, -1,-1); AddStaticVehicle2(V_NRG500, -302.9650,1776.1152,42.2588,239.9874, -1,-1); AddStaticVehicle2(V_FELTZER, -301.0404,1750.8517,42.3966,268.7585, -1,-1); AddStaticVehicle2(V_SLAMVAN, -866.1774,1557.2700,23.8319,269.3263, -1,-1); AddStaticVehicle2(V_SUNRISE, -799.3062,1518.1556,26.7488,88.5295, -1,-1); AddStaticVehicle2(V_FCR900, -749.9730,1589.8435,26.5311,125.6508, -1,-1); AddStaticVehicle2(V_NRG500, -867.8612,1544.5282,22.5419,296.0923, -1,-1); AddStaticVehicle2(V_YOSEMITE, -904.2978,1553.8269,25.9229,266.6985, -1,-1); AddStaticVehicle2(V_FCR900, -944.2642,1424.1603,29.6783,148.5582, -1,-1); AddStaticVehicle2(V_BANSHEE, -237.7157,2594.8804,62.3828,178.6802, -1,-1); AddStaticVehicle2(V_FREEWAY, -196.3012,2774.4395,61.4775,303.8402, -1,-1); // AddStaticVehicle2(V_SHAMAL, -1341.1079,-254.3787,15.0701,321.6338, -1,-1); // AddStaticVehicle2(V_SHAMAL, -1371.1775,-232.3967,15.0676,315.6091, -1,-1); // AddStaticVehicle2(V_SHAMAL, 1642.9850,-2425.2063,14.4744,159.8745, -1,-1); // AddStaticVehicle2(V_SHAMAL, 1734.1311,-2426.7563,14.4734,172.2036, -1,-1); AddStaticVehicle2(V_CHEETAH, -680.9882,955.4495,11.9032,84.2754, -1,-1); // AddStaticVehicle2(V_SKIMMER, -816.3951,2222.7375,43.0045,268.1861, -1,-1); // AddStaticVehicle2(V_SKIMMER, -94.6885,455.4018,1.5719,250.5473, -1,-1); // AddStaticVehicle2(V_SKIMMER, 1624.5901,565.8568,1.7817,200.5292, -1,-1); // AddStaticVehicle2(V_SKIMMER, 1639.3567,572.2720,1.5311,206.6160, -1,-1); // AddStaticVehicle2(V_SKIMMER, 2293.4219,517.5514,1.7537,270.7889, -1,-1); // AddStaticVehicle2(V_SKIMMER, 2354.4690,518.5284,1.7450,270.2214, -1,-1); // AddStaticVehicle2(V_SKIMMER, 772.4293,2912.5579,1.0753,69.6706, -1,-1); AddStaticVehicle2(V_SULTAN, 2133.0769,1019.2366,10.5259,90.5265, -1,-1); AddStaticVehicle2(V_SULTAN, 2142.4023,1408.5675,10.5258,0.3660, -1,-1); AddStaticVehicle2(V_SULTAN, 2196.3340,1856.8469,10.5257,179.8070, -1,-1); AddStaticVehicle2(V_SULTAN, 2103.4146,2069.1514,10.5249,270.1451, -1,-1); AddStaticVehicle2(V_SULTAN, 2361.8042,2210.9951,10.3848,178.7366, -1,-1); AddStaticVehicle2(V_SULTAN, -1993.2465,241.5329,34.8774,310.0117, -1,-1); AddStaticVehicle2(V_JESTER, -1989.3235,270.1447,34.8321,88.6822, -1,-1); AddStaticVehicle2(V_JESTER, -1946.2416,273.2482,35.1302,126.4200, -1,-1); AddStaticVehicle2(V_URANUS, -1956.8257,271.4941,35.0984,71.7499, -1,-1); AddStaticVehicle2(V_ELEGY, -1952.8894,258.8604,40.7082,51.7172, -1,-1); AddStaticVehicle2(V_INFERNUS, -1949.8689,266.5759,40.7776,216.4882, -1,-1); AddStaticVehicle2(V_BANSHEE, -1988.0347,305.4242,34.8553,87.0725, -1,-1); AddStaticVehicle2(V_JESTER, -1657.6660,1213.6195,6.9062,282.6953, -1,-1); AddStaticVehicle2(V_SULTAN, -1658.3722,1213.2236,13.3806,37.9052, -1,-1); AddStaticVehicle2(V_URANUS, -1660.8994,1210.7589,20.7875,317.6098, -1,-1); AddStaticVehicle2(V_SUNRISE, -1645.2401,1303.9883,6.8482,133.6013, -1,-1); // AddStaticVehicle2(V_SKIMMER, -1333.1960,903.7660,1.5568,0.5095, -1,-1); AddStaticVehicle2(V_INFERNUS, 113.8611,1068.6182,13.3395,177.1330, -1,-1); AddStaticVehicle2(V_BANSHEE, 159.5199,1185.1160,14.7324,85.5769, -1,-1); AddStaticVehicle2(V_INFERNUS, 612.4678,1694.4126,6.7192,302.5539, -1,-1); AddStaticVehicle2(V_NRG500, 661.7609,1720.9894,6.5641,19.1231, -1,-1); AddStaticVehicle2(V_NRG500, 660.0554,1719.1187,6.5642,12.7699, -1,-1); AddStaticVehicle2(V_SAVANNA, 711.4207,1947.5208,5.4056,179.3810, -1,-1); AddStaticVehicle2(V_SAVANNA, 1031.8435,1920.3726,11.3369,89.4978, -1,-1); AddStaticVehicle2(V_SAVANNA, 1112.3754,1747.8737,10.6923,270.9278, -1,-1); AddStaticVehicle2(V_SAVANNA, 1641.6802,1299.2113,10.6869,271.4891, -1,-1); AddStaticVehicle2(V_SAVANNA, 2135.8757,1408.4512,10.6867,180.4562, -1,-1); AddStaticVehicle2(V_SAVANNA, 2262.2639,1469.2202,14.9177,91.1919, -1,-1); AddStaticVehicle2(V_SAVANNA, 2461.7380,1345.5385,10.6975,0.9317, -1,-1); AddStaticVehicle2(V_SAVANNA, 2804.4365,1332.5348,10.6283,271.7682, -1,-1); AddStaticVehicle2(V_SULTAN, 2805.1685,1361.4004,10.4548,270.2340, -1,-1); AddStaticVehicle2(V_SUPERGT, 2853.5378,1361.4677,10.5149,269.6648, -1,-1); AddStaticVehicle2(V_SAVANNA, 2633.9832,2205.7061,10.6868,180.0076, -1,-1); AddStaticVehicle2(V_SAVANNA, 2119.9751,2049.3127,10.5423,180.1963, -1,-1); AddStaticVehicle2(V_SAVANNA, 2785.0261,-1835.0374,9.6874,226.9852, -1,-1); AddStaticVehicle2(V_SAVANNA, 2787.8975,-1876.2583,9.6966,0.5804, -1,-1); AddStaticVehicle2(V_INFERNUS, 2771.2993,-1841.5620,9.4870,20.7678, -1,-1); AddStaticVehicle2(V_TAXI, 1713.9319,1467.8354,10.5219,342.8006, -1,-1); AddStaticVehicle2(V_TAMPA,2513.8765,2368.1816,3.9390,85.5409,-1,-1); // tampa AddStaticVehicle2(V_SAVANNA,2510.8699,2397.8613,3.9283,7.0816,-1,-1); // savanna AddStaticVehicle2(V_SLAMVAN,2537.6511,2397.4429,3.9339,358.6610,-1,-1); // slamvan AddStaticVehicle2(V_LANDSTAL,2540.1926,2363.2505,3.9329,88.0596,-1,-1); // landstal AddStaticVehicle2(V_FBIRANCH,1716.6511,1387.6346,10.1719,195.3732,-1,-1); // fbiranch AddStaticVehicle2(V_FBIRANCH,1713.9792,1397.3528,10.1771,195.5063,-1,-1); // fbiranch AddStaticVehicle2(V_STRETCH,1711.7006,1405.5538,10.1757,195.4851,-1,-1); // limo AddStaticVehicle2(V_FBIRANCH,1708.9426,1416.8193,10.1718,192.9204,-1,-1); // fbiranch AddStaticVehicle2(V_NEWSVAN,1717.1743,1433.9290,10.2928,177.0596,-1,-1); // newsvan AddStaticVehicle2(V_COPBIKE,1718.0765,1380.7115,10.6894,195.7436,-1,-1); // cop bike AddStaticVehicle2(V_COPBIKE,1719.1389,1381.5099,10.0587,196.9333,-1,-1); // copbike AddStaticVehicle2(V_NRG500,2848.1685,915.0026,10.5222,99.9024,-1,-1); // nrg AddStaticVehicle2(V_FCR900,2853.1367,923.1398,10.5225,92.1160,-1,-1); // fcr AddStaticVehicle2(V_FCR900,2855.5422,929.4323,10.5203,86.2880,-1,-1); // fcr AddStaticVehicle2(V_BURRITO,2840.2390,960.1940,10.5213,173.6817,-1,-1); // huntley AddStaticVehicle2(V_BURRITO,2830.1165,963.1138,10.5229,5.9503,-1,-1); // huntley AddStaticVehicle2(V_SLAMVAN,2812.8147,965.9282,10.5222,92.2067,-1,-1); // van or something AddStaticVehicle2(V_BENSON,2826.4226,911.6951,10.5260,93.4742,-1,-1); // minivan AddStaticVehicle2(V_TAMPA,2802.0010,899.7051,10.5257,182.4596,-1,-1); // glenshit AddStaticVehicle2(V_TAMPA,2804.8748,899.9962,10.5228,187.1934,-1,-1); // glenshit AddStaticVehicle2(V_WAYFARER,2850.9485,936.1880,10.5229,359.2170,-1,-1); // wayfarer AddStaticVehicle2(V_WAYFARER,2850.9075,933.1924,10.5203,359.2168,-1,-1); // wayfarer AddStaticVehicle2(V_WAYFARER,2850.8469,928.7164,10.5197,359.2164,-1,-1); // wayfarer AddStaticVehicle2(V_SWATVAN,2223.5107,2453.2517,-7.8801,268.2045,-1,-1); // swat tank AddStaticVehicle2(V_SWATVAN,2227.1729,2462.8828,-7.8858,268.8480,-1,-1); // swat tank AddStaticVehicle2(V_COPCARVG,2314.9893,2460.0833,3.0197,268.9429,-1,-1); // cop car AddStaticVehicle2(V_COPCARVG,2314.5588,2470.2651,3.0193,271.6169,-1,-1); // AddStaticVehicle2(V_COPCARRU,2311.8721,2431.6428,3.0219,180.7283,-1,-1); // copcarru AddStaticVehicle2(V_COPCARRU,2303.3135,2431.7693,3.0199,180.1414,-1,-1); // AddStaticVehicle2(V_COPCARRU,2294.3782,2431.3086,3.0165,178.5332,-1,-1); // AddStaticVehicle2(V_COPCARVG,2277.0938,2430.8738,3.0175,358.4374,-1,-1); // copcar AddStaticVehicle2(V_COPCARVG,2255.1445,2431.7939,3.0171,358.1542,-1,-1); // copcar AddStaticVehicle2(V_COPCARVG,2314.0994,2484.8403,3.0163,271.4961,-1,-1); // copcar AddStaticVehicle2(V_ENFORCER,2286.2075,2474.7297,3.0213,357.8531,-1,-1); // cop van AddStaticVehicle2(V_ENFORCER,2277.2646,2474.8477,3.0187,357.6639,-1,-1); // AddStaticVehicle2(V_ENFORCER,2263.4182,2475.9897,3.4054,359.4711,-1,-1); // enforcer AddStaticVehicle2(V_COPBIKE, 295.5503,2455.9656,2.8444,272.6913, -1,-1); AddStaticVehicle2(V_COPBIKE,2297.9265,2448.2090,2.8325,256.5524,-1,-1); AddStaticVehicle2(V_COPBIKE,2297.2913,2464.0583,2.8477,311.1149,-1,-1); } public OnGameModeInit() { log_printf("--------------------------------------------------------------------------------"); log_printf("GameModeInit"); log_printf("--------------------------------------------------------------------------------"); SetGameModeText(mode_name); printf("\nLoaded \"%s\" mode.\n",mode_name); ShowPlayerMarkers(1); ShowNameTags(1); new hour,minute,second; gettime(hour,minute,second); SetWorldTime(hour); new map = MapVoteGetVotedMap(); printf("Map: %d\n",map); if (map==0) { AddStaticVehicle2(V_HYDRA,1967,-2637.3569,14.1309,359.9997,43,0,true); // hydra west AddStaticVehicle2(V_HYDRA,1977,-2637.3569,14.1309,359.9997,43,0,true); // hydra east AddStaticVehicle2(V_SEASPAR,2737.4866,-1760.1506,44.1182,224.5974,75,2,true); // sparrow1 AddStaticVehicle2(V_SEASPAR,1568.8612,-1238.7914,277.8883,49.2131,75,2,true); // sparrow2 AddStaticVehicle2(V_POLMAV,1987,-2286.9893,15.1966,85.8866,0,1); // AddStaticVehicle2(V_POLMAV,1987,-2314.5679,13.6807,86.7669,0,1); // AddStaticVehicle2(V_POLMAV,1992,-2400,13.7241,90.2958,0,1); // AddStaticVehicle2(V_POLMAV,1992,-2375,13.7236,77.8665,0,1); // police mav AddStaticVehicle2(V_POLMAV,1992,-2350,13.7236,94.8186,0,1); // police mav 2 AddStaticVehicle2(V_SHAMAL,1596.1857,-2450,14.4836,0.0000,1,1); // shamal AddStaticVehicle2(V_SHAMAL,1559.7833,-2450,14.4836,0.0000,1,1); // shamal AddStaticVehicle2(V_RUSTLER,1516.4668,-2455,14.2437,359.9142,7,6); // rustler AddStaticVehicle2(V_RUSTLER,1486.6560,-2455,14.2642,359.9445,1,6); // rustler AddStaticVehicle2(V_BEAGLE,1457.6503,-2446.1963,14.9146,0.0000,4,90); // beagle AddStaticVehicle2(V_BEAGLE,1442.9895,-2493.7166,14.9277,270.0598,7,68); // beagle runway AddStaticVehicle2(V_AT400,1470.1775,-2593.4873,13.4630,269.6879,8,7); // massive fucking plane AddStaticVehicle2(V_TUGSTAIR,1489.0352,-2590,13.2065,180.2330,1,76); // stairs for plane AddStaticVehicle2(V_BAGGAGE,1877.1975,-2419.0972,13.2110,117.3680,1,78); // baggage AddStaticVehicle2(V_BAGGAGE,1807.3389,-2449.4619,13.2110,129.6533,1,78); // baggage AddStaticVehicle2(V_BAGGAGE,1697.7036,-2434.6035,13.2111,116.7797,1,78); // baggage LosSantosVehicles(); AddWeaponPickup(PICKUP_AK47,WEAPON_AK47,160,1308.97,-874.4,40.0,30,WP_SYNCED); // 2 Los Santos AddWeaponPickup(PICKUP_AK47,WEAPON_AK47,160,2129.4,-2280.71,14.42,30,WP_SYNCED); // 6 Los Santos AddWeaponPickup(PICKUP_AK47,WEAPON_AK47,160,825.921,-1165.813,17.8936,30,WP_SYNCED); // 8 Los Santos AddWeaponPickup(PICKUP_COLT45,WEAPON_COLT45,100,2447.773,-1975.663,13.0,30,WP_SYNCED); // 21 Los Santos //AddWeaponPickup(PICKUP_COLT45,WEAPON_COLT45,100,2447.773,-1975.663,13.0,30,WP_SYNCED); // 22 Los Santos (same as 21) AddWeaponPickup(PICKUP_COLT45,WEAPON_COLT45,100,2538.0,-1630.0,14.0,30,WP_SYNCED); // 26 Los Santos AddWeaponPickup(PICKUP_COLT45,WEAPON_COLT45,100,2423.892,-1117.452,41.2464,30,WP_SYNCED); // 24 Los Santos AddWeaponPickup(PICKUP_COLT45,WEAPON_COLT45,100,338.0,-1875.0,4.0,30,WP_SYNCED); // 29 Los Santos AddWeaponPickup(PICKUP_COLT45,WEAPON_COLT45,100,2444.895,-1981.524,13.933,30,WP_SYNCED); // 31 Los Santos //AddWeaponPickup(PICKUP_COLT45,WEAPON_COLT45,100,2444.895,-1981.524,13.933,30,WP_SYNCED); // 32 Los Santos (same as 31) AddWeaponPickup(PICKUP_DEAGLE,WEAPON_DEAGLE,50,2766.0,-2182.0,11.0,30,WP_SYNCED); // 37 Los Santos AddWeaponPickup(PICKUP_UZI,WEAPON_UZI,120,2551.33,-1740.0,6.49,30,WP_SYNCED); // 61 Los Santos AddWeaponPickup(PICKUP_UZI,WEAPON_UZI,120,2790.343,-1427.489,39.6258,30,WP_SYNCED); // 62 Los Santos AddWeaponPickup(PICKUP_MP5,WEAPON_MP5,200,2198.11,-1170.22,33.5,30,WP_SYNCED); // 68 Los Santos AddWeaponPickup(PICKUP_MP5,WEAPON_MP5,200,1764.0,-1930.0,14.0,30,WP_SYNCED); // 71 Los Santos AddWeaponPickup(PICKUP_MP5,WEAPON_MP5,200,2266.0,-1028.0,59.0,30,WP_SYNCED); // 73 Los Santos AddWeaponPickup(PICKUP_MP5,WEAPON_MP5,200,2175.614,-2282.959,13.54,30,WP_SYNCED); // 76 Los Santos AddWeaponPickup(PICKUP_SAWEDOFF,WEAPON_SAWEDOFF,100,2428.0,-1214.0,36.0,30,WP_SYNCED); // 81 Los Santos //AddWeaponPickup(PICKUP_SAWEDOFF,WEAPON_SAWEDOFF,100,2254.378,-2261.689,14.3751,30,WP_SYNCED); // 77 Los Santos (out of reach) AddWeaponPickup(PICKUP_SAWEDOFF,WEAPON_SAWEDOFF,100,832.603,-1273.861,14.4833,30,WP_SYNCED); // 83 Los Santos AddWeaponPickup(PICKUP_SHOTGSPA,WEAPON_SHOTGSPA,100,2021.327,1013.349,10.3203,30,WP_SYNCED); // 85 Los Santos AddWeaponPickup(PICKUP_SILENCED,WEAPON_SILENCED,100,1214.0,-1816.0,17.0,30,WP_SYNCED); // 90 Los Santos AddWeaponPickup(PICKUP_SPRAYCAN,WEAPON_SPRAYCAN,500,2463.0,-1061.0,60.0,30,WP_SYNCED); // 94 Los Santos AddWeaponPickup(PICKUP_SPRAYCAN,WEAPON_SPRAYCAN,500,2510.0,-1723.0,19.0,30,WP_SYNCED); // 95 Los Santos //AddWeaponPickup(PICKUP_TEC9,WEAPON_TEC9,250,1878.3,-2091.1,13.5,30,WP_SYNCED); // 98 Los Santos (out of reach) AddWeaponPickup(PICKUP_TEC9,WEAPON_TEC9,250,2529.724,-1678.563,19.4225,30,WP_SYNCED); // 104 Los Santos AddWeaponPickup(PICKUP_TEC9,WEAPON_TEC9,250,2574.065,-1134.201,64.6535,30,WP_SYNCED); // 105 Los Santos AddWeaponPickup(PICKUP_TEC9,WEAPON_TEC9,250,899.8012,-792.078,102.0,30,WP_SYNCED); // 108 Los Santos AddWeaponPickup(PICKUP_TEC9,WEAPON_TEC9,250,2466.0,-1656.1,13.3,30,WP_SYNCED); // 109 Los Santos //AddWeaponPickup(PICKUP_TEC9,WEAPON_TEC9,250,1408.0,-2380.0,14.0,30,WP_SYNCED); // 101 Los Santos (out of reach) AddStaticPickup(PICKUP_ARMOR,2,1086.0,-1806.0,17.0); // 1 Los Santos AddStaticPickup(PICKUP_ARMOR,2,1562.0,-1888.0,14.0); // 8 Los Santos AddStaticPickup(PICKUP_ARMOR,2,1759.0,-2242.0,1.0); // 11 Los Santos AddStaticPickup(PICKUP_ARMOR,2,2112.0,-1990.0,14.0); // 16 Los Santos AddStaticPickup(PICKUP_ARMOR,2,2125.493,-2275.037,20.5202); // 18 Los Santos AddStaticPickup(PICKUP_ARMOR,2,2230.45,-2286.004,14.3751); // 20 Los Santos AddStaticPickup(PICKUP_ARMOR,2,1715.12,-1673.51,20.22); // 10 Los Santos (Interior) AddStaticPickup(PICKUP_ARMOR,2,2339.0,-1944.0,13.0); // 25 Los Santos AddStaticPickup(PICKUP_ARMOR,2,2543.0,-1625.0,12.0); // 34 Los Santos AddStaticPickup(PICKUP_ARMOR,2,2544.0,-1120.0,62.0); // 35 Los Santos AddStaticPickup(PICKUP_ARMOR,2,2767.0,-1192.0,69.0); // 41 Los Santos AddStaticPickup(PICKUP_ARMOR,2,943.012,-939.8284,57.7345); // 47 Los Santos AddStaticPickup(PICKUP_ARMOR,2,1292.7,-769.0,95.8); // 50 Los Santos AddStaticPickup(PICKUP_ARMOR,2,2146.559,-2244.46,13.58); // 53 Los Santos AddStaticPickup(PICKUP_ARMOR,2,2186.507,-2244.993,15.81); // 55 Los Santos AddStaticPickup(PICKUP_PARACHUTE,2,1528.222,-1357.985,330.0371); // 73 Los Santos AddStaticPickup(PICKUP_PARACHUTE,2,1797.602,-1308.881,133.8128); // 81 Los Santos for (new i=0 ; i 0) { obj_current = random(obj_counter); obj_time_left = obj_time[obj_current]; } new File: transmap; transmap = fopen("userdb/transmap.txt",io_read); if (!transmap) { printf("ERROR: couldn't open file userdb/transmap.txt"); } else { for (new i=0 ; i=playerid_max) playerid_max = playerid+1; return 1; } public OnPlayerRequestClass(playerid, classid) { if (!IsPlayerConnected(playerid)) { printf("ERROR: OnPlayerRequestClass(%d,%d) but not connected.\n",playerid, classid); return 1; } SetPlayerInterior(playerid, wardrobe_interior); SetPlayerPos(playerid,wardrobe_player_x,wardrobe_player_y,wardrobe_player_z); SetPlayerFacingAngle(playerid, wardrobe_player_orientation); SetPlayerCameraPos(playerid,wardrobe_camera_x,wardrobe_camera_y,wardrobe_camera_z); SetPlayerCameraLookAt(playerid,wardrobe_player_x,wardrobe_player_y,wardrobe_player_z); player_class_requested[playerid] = classid; player_class[playerid] = INVALID_CLASS; if (VetoPlayerClass(classid, INVALID_CLASS) == classid) { new name[80]; GetTextFromTeam(name, class_team[classid]); new text[80]; format(text,sizeof text,"~w~%s",name); if (classid==class_terrorist_medic || classid==class_bodyguard_medic || classid==class_cop_medic) { format(text,sizeof text,"%s~n~(medic)",text); } GameTextForPlayer(playerid,text,1000,GAME_TEXT_STYLE_BIG); } else { new name[80]; GetTextFromTeam(name, class_team[classid]); new text[80]; format(text,80,"~w~%s ~n~ ~r~Not available",name); GameTextForPlayer(playerid,text,1500,GAME_TEXT_STYLE_BIG); } return 1; } Balancedness(proposedclassid, oldclassid, &dualpm, &toomanybg) { new team_players_count = 0; dualpm = 0; toomanybg = 0; new num_players[NUM_TEAMS]; for (new i=0 ; i1) dualpm = 1; if (team_players_count==0) return 0; // a bodyguard is worth 2 cops balancedness += 0.42 * (num_players[TEAM_BODYGUARD]); balancedness += 0.28 * num_players[TEAM_COP]; balancedness += -0.28 * num_players[TEAM_TERRORIST]; // psychos & pm do not affect balancedness // absolute value new Float:pain = (floatabs(balancedness)*100) / team_players_count; if ((num_players[TEAM_BODYGUARD]*100)/team_players_count > 30) toomanybg = 1; //new text[100]; //format(text,sizeof text,"balancedness: %d",pain2); //SendClientMessageToAll(0xFFFFFFAA,text); return floatround (pain); } VetoPlayerClass(classid, oldclassid) { new dualpm = 0, toomanybg = 0; new prebalancedness = Balancedness(INVALID_CLASS, INVALID_CLASS,dualpm, toomanybg); new postbalancedness = Balancedness(classid, oldclassid, dualpm, toomanybg); new players_count = 0; for (new i=0 ; i%d] (%d -> %d) %d %d",players_count,prebalancedness,postbalancedness,oldclassid,classid,dualpm,toomanybg); for (new i=0 ; i 0) { SetUpObjectiveCheckPoint(playerid); } TogglePlayerControllable(playerid,1); return 1; } SetUpObjectiveCheckPoint(playerid) { if (obj_counter==0) { printf("ERROR: SetUpObjectiveCheckpoint when there are none"); return; } DisablePlayerCheckpoint(playerid); if (player_class[playerid]==INVALID_CLASS) { printf("ERROR: SetUpObjectiveCheckpoint without valid class"); return; } new team = class_team[player_class[playerid]]; if (team==TEAM_PSYCHO) return; new text[256]; format (text, sizeof text, "~b~PM Objective: ~w~%s~n~~b~Objectives left: %d", obj_desc[obj_current],obj_required-obj_completed); GameTextForPlayer(playerid,text,10000,GAME_TEXT_STYLE_SMALL); SetPlayerCheckpoint(playerid,obj_x[obj_current],obj_y[obj_current],obj_z[obj_current],obj_size[obj_current]); } SetPlayerClass(playerid, class) { new team_name[80]; new text[80]; new player_name[80]; GetPlayerName(playerid,player_name,80); if (player_class[playerid]!=INVALID_CLASS) { GetTextFromTeam(team_name,class_team[player_class[playerid]]); format (text, sizeof text, "%s is nolonger %s.", player_name, team_name); if (NumPlayersConnected()<=8) SendClientMessageToAll(ClassColour(player_class[playerid]),text); } player_class[playerid] = class; if (class==INVALID_CLASS) return; log_printf("Class: %d %d %s",class,playerid,player_name); SetPlayerColor(playerid,ClassColour(class)); SetSpawnInfo(playerid,0, class_modelid[class], game_boundary_min_x+(game_boundary_max_x-game_boundary_min_x)/2,game_boundary_min_y+(game_boundary_max_y-game_boundary_min_y)/2,0,0, class_weapon1[class], class_weapon1_ammo[class], class_weapon2[class], class_weapon2_ammo[class], class_weapon3[class], class_weapon3_ammo[class]); GetTextFromTeam(team_name,class_team[class]); format (text, 80, "~y~You are %s~n~~w~/duty to get orders~n~ /reclass to change", team_name); GameTextForPlayer(playerid,text,7000,GAME_TEXT_STYLE_SMALL); format (text, 80, "%s is now %s.",player_name, team_name); if (NumPlayersConnected()<=8) SendClientMessageToAll(ClassColour(class),text); if (IsPlayerInAnyVehicle(playerid)) { // RemovePlayerFromVehicle(playerid); // doesnt fucking work SetPlayerPos(playerid,game_boundary_min_x+(game_boundary_max_x-game_boundary_min_x)/2,game_boundary_min_y+(game_boundary_max_y-game_boundary_min_y)/2,0); } SpawnPlayer(playerid); } public OnPlayerDeath(playerid, killerid, reason) { if (!IsPlayerConnected(playerid)) { printf("ERROR: OnPlayerDeath(%d,%d,%d) but not connected.\n",playerid, killerid, reason); return 1; } if (player_class[playerid]==INVALID_CLASS) { printf("ERROR: OnPlayerDeath(%d,%d,%d) but victim has no class.\n",playerid, killerid, reason); return 1; } if (killerid!=INVALID_PLAYER_ID && player_class[killerid]==INVALID_CLASS) { printf("ERROR: OnPlayerDeath(%d,%d,%d) but killer has no class.\n",playerid, killerid, reason); return 1; } if (killerid!=INVALID_PLAYER_ID) { new score = GetPlayerScore(killerid); SetPlayerScore(killerid,score+1); } SendDeathMessage(killerid, playerid, reason); if (playerid!=killerid && killerid!=INVALID_PLAYER_ID) { new victimteam = class_team[player_class[playerid]]; new killerteam = class_team[player_class[killerid]]; if (MessagesGoTo(victimteam,killerteam) || MessagesGoTo(killerteam,victimteam)) { PlayerTeamKilled(killerid); } } if (killerid==INVALID_PLAYER_ID) killerid = playerid; new text[256]; GetPlayerName(playerid, text, sizeof text); log_printf("Died: %d %s", playerid, text); GetPlayerName(killerid, text, sizeof text); log_printf("CausedDeath: %d %s", killerid, text); if (class_team[player_class[playerid]]==TEAM_PRIMEMINISTER) { switch (class_team[player_class[killerid]]) { case TEAM_PRIMEMINISTER: GameTextForAll("The Prime Minister was killed in an accident!", 3000, GAME_TEXT_STYLE_SMALL); case TEAM_BODYGUARD: GameTextForAll("The Prime Minister was killed by his treacherous bodyguards", 3000, GAME_TEXT_STYLE_SMALL); case TEAM_COP: GameTextForAll("The Prime Minister was killed by the cops", 3000, GAME_TEXT_STYLE_SMALL); case TEAM_TERRORIST: GameTextForAll("The Prime Minister was killed by the terrorists", 3000, GAME_TEXT_STYLE_SMALL); case TEAM_PSYCHO: GameTextForAll("The Prime Minister was killed by a psychopath", 3000, GAME_TEXT_STYLE_SMALL); default: printf("ERROR: OnPlayerDeath (invalid team)\n"); } EveryoneViewsBody(killerid,playerid); EndGameEvent(); } /* if(reason == 38) { //minigun death Ban(killerid); } */ return 1; } EndGameEvent() { MapVoteStore(); SetTimer("GameModeExitFunc", 3500, 0); MapVoteDisplayNextMap(); } PlayerTeamKilled(playerid) { player_teamkills[playerid]++; switch (player_teamkills[playerid]) { case 1: { // warning GameTextForPlayer(playerid,"~w~Do ~r~NOT~w~ team kill!~n~use /duty",7000,GAME_TEXT_STYLE_SMALL); } case 2: { // frozen for 7 seconds GameTextForPlayer(playerid,"~w~Do ~r~NOT~w~ team kill!~n~(frozen for 7 seconds)",7000,GAME_TEXT_STYLE_SMALL); TogglePlayerControllable(playerid,0); player_teamkill_freeze_counter[playerid] = 7; } case 3: { // throw into air new Float:bx; new Float:by; new Float:bz; GetPlayerPos(playerid, bx, by, bz); SetPlayerPos(playerid, bx, by, bz+1000); GameTextForPlayer(playerid,"~w~Team killing ~r~punishment",7000,GAME_TEXT_STYLE_SMALL); } case 4: { // reclass to psycho SetPlayerClass(playerid,class_psycho1 + random(NUM_PSYCHOS)); GameTextForPlayer(playerid,"~r~FINAL WARNING!",7000,GAME_TEXT_STYLE_SMALL); } case 5: { // final solution Kick(playerid); } } } EveryoneViewsBody(killerid,bodyplayerid) { new Float:kx; new Float:ky; new Float:kz; GetPlayerPos(killerid, kx, ky, kz); new Float:bx; new Float:by; new Float:bz; GetPlayerPos(bodyplayerid, bx, by, bz); // from body to killer new Float:vx = kx - bx; new Float:vy = ky - by; new Float:vz = kz - bz; // distance new Float:d = floatsqroot(floatpower(vx,2) + floatpower(vy,2) + floatpower(vz,2)); if (d>5) { // normalise to unit vector, take distance of 5m and add 1.5 to height vx = vx / d * 5; vy = vy / d * 5; vz = vz / d * 5 + 1.5; } else { // if two players are on top of each other then just go 10m upwards vx = 0; vy = 0; vz = 10; } for (new i=0 ; i0 && round_timer_counter0 && round_timer_counter%150==10 && round_timer_counter>0 && round_timer_counter0) { player_teamkill_freeze_counter[i] = player_teamkill_freeze_counter[i] - 1; if (player_teamkill_freeze_counter[i]<=0) TogglePlayerControllable(i,1); } } new terrorists_in_airport_now = 0; for (new i=0 ; i10) { terrorists_in_airport = terrorists_in_airport_now; if (terrorists_in_airport_now) { ticks_since_loc_update = 0; for (new i=0 ; i5) { pm_old_location = pml; ticks_since_loc_update = 0; new text[200]; LocationToText(pm,text,sizeof text); for (new i=0 ; i 0 && pm!=INVALID_PLAYER_ID && obj_completed!=obj_required) { new Float:x, Float:y, Float:z; GetPlayerPos(pm,x,y,z); new Float:d = floatsqroot(floatpower(x-obj_x[obj_current],2)+floatpower(y-obj_y[obj_current],2)); if (d <= obj_size[obj_current]/2 && z+1.0 > obj_z[obj_current]) { obj_time_left--; if (obj_time_left == 0) { obj_completed++; if (obj_completed == obj_required) { EveryoneViewsBody(pm,pm); GameTextForAll("The Prime Minister completed objectives!", 3000, GAME_TEXT_STYLE_SMALL); EndGameEvent(); } else { new next; do { next = random(obj_counter); } while (obj_counter>1 && next==obj_current); obj_current = next; obj_time_left = obj_time[obj_current]; obj_was_in = 0; for (new i=0 ; i 0 && round_timer_counter == 20) { for (new i=0 ; i 0 && pm!=INVALID_PLAYER_ID && round_timer_counter % 30 == 0 && !obj_was_in) { for (new i=0 ; i0) { for (new i=0 ; i 0 && pm!=INVALID_PLAYER_ID) { new Float:x, Float:y, Float:z; GetPlayerPos(pm,x,y,z); for (new i=0 ; i100 ? 100.0 : pmh*2); switch (task_type[i]) { case TASK_MINI: { SendClientMessageToAll(COLOUR_IMPORTANT,"The PM has discovered a small ammunition stash."); GivePlayerWeapon(pm,WEAPON_MINIGUN,30); } case TASK_HP_PENALTY: { SendClientMessageToAll(COLOUR_IMPORTANT,"It has been discovered that the terrorists have been drinking out-of-date"); SendClientMessageToAll(COLOUR_IMPORTANT,"beer from the Fleischberg brewery, as a result they have contracted an illness."); for (new j=0 ; j= round_time) round_timer_counter = round_time - 1; // finish early } case TASK_MEDIC: { SendClientMessageToAll(COLOUR_IMPORTANT,"The PM has learnt the skills of a medic."); pm_medic = 1; } case TASK_SAFEHOUSE: { SendClientMessageToAll(COLOUR_IMPORTANT,"The PM has enabled the SAM sites that guard the no-fly-zone."); safehouse_exists = 1; } case TASK_HP_BONUS: { SendClientMessageToAll(COLOUR_IMPORTANT,"The PM has discovered some medicinal herbs that allow him to regenerate faster."); pm_health_bonus = 3; } } } } } } if (pm_radar_time>0) { pm_radar_time--; if (pm_radar_time == 0) { SendClientMessageToAll(COLOUR_IMPORTANT,"The funding has now been used, the PM is once again"); SendClientMessageToAll(COLOUR_IMPORTANT,"visible to the terrorist and psychopathic forces."); SetPlayerColor(pm,ClassColour(player_class[pm])); } } if (distance_display!=0 && pm!=INVALID_PLAYER_ID) { distance_display++; new Float:health; GetPlayerHealth(pm,health); new position[256]; new name[MAX_PLAYER_NAME]; GetPlayerName(pm,name,sizeof name); for (new i=0 ; i25) && distance_display%distance_display_timer==0) { format(position, sizeof position,"Distance to %s : %.2fm. His health is %.2f",name,DistanceFromPlayerToPlayer(i,pm),health); SendClientMessage(i,COLOUR_IMPORTANT,position); } else if (i!=pm && (DistanceFromPlayerToPlayer(i,pm)<=25) && distance_display%distance_display_timer==0) { format(position, sizeof position,"Distance to %s : Less than 25m. His health is %.2f",name,health); SendClientMessage(i,COLOUR_IMPORTANT,position); } } } } public OnPlayerDisconnect(playerid) { new text[256]; GetPlayerName(playerid,text,sizeof text); log_printf("Disconnects: %d %s",playerid,text); if (!IsPlayerConnected(playerid)) { printf("ERROR: OnPlayerDisconnect(%d) but not connected.\n",playerid); return 1; } playerid_max = 0; for (new i=0 ; i=playerid_max) playerid_max = i+1; } for (new i=0 ; i %s",output,msg); SendClientMessage(playerid,COLOUR_QUERY,output); SendClientMessage(player_query_target[playerid],COLOUR_QUERY,output); } else { SendClientMessage(playerid,COLOUR_IMPORTANT,"No query established."); } return 0; } else if(text[0]=='#') { if(strlen(player_chatroom[playerid])==0) { SendClientMessage(playerid,COLOUR_PERSONAL,"You are not in a chatroom! Use /cjoin ROOM to join one."); } else { new name[256]; new message[256]; new output[256]; GetPlayerName(playerid,name,sizeof(name)); strmid(message,text,1,strlen(text)); format(output,sizeof(output)," %s: %s",name,message); for(new n=0;n1 && text[1]!='.') { for (new i=0 ; i=NUM_CLASSES) return 1; } else if (streq(rest,"cop") || streq(rest,"c")) { myclass = class_cop1 + random(NUM_COPS); } else if (streq(rest,"terrorist") || streq(rest,"t")) { myclass = class_terrorist1 + random(NUM_TERRORISTS); } else if (streq(rest,"bodyguard") || streq(rest,"b")) { myclass = class_bodyguard1 + random(NUM_BODYGUARDS); } else if (streq(rest,"psycho") || streq(rest,"p")) { myclass = class_psycho1 + random(NUM_PSYCHOS); } else if (streq(rest,"pm")) { myclass = class_primeminister; } else if (streq(rest,"tmedic")) { myclass = class_terrorist_medic; } else if (streq(rest,"cmedic")) { myclass = class_cop_medic; } else if (streq(rest,"bmedic")) { myclass = class_bodyguard_medic; } else { SendClientMessage(playerid,COLOUR_PERSONAL,"No such class."); SendClientMessage(playerid,COLOUR_PERSONAL,"Usage: /reclass pm|terrorist|cop|bodyguard|psycho|tmedic|bmedic|cmedic"); return 1; } if (myclass==INVALID_CLASS) { SendClientMessage(playerid,COLOUR_PERSONAL,"Class not available."); return 1; } new veto = VetoPlayerClass(myclass,player_class[playerid]); if (veto==myclass) { SetPlayerClass(playerid,myclass); } else if (veto!=INVALID_CLASS) { new text[80]; GetTextFromTeam(text,class_team[veto]); format (text,sizeof text,"vetoed to %s",text); SendClientMessage(playerid,COLOUR_PERSONAL,text); CouldntSpawnAs(playerid,class_team[myclass]); } else { printf("VETO RETURNED INVALID_CLASS!\n"); } return 1; } else if (streq(cmd,"/swapclass")) { if (player_class[playerid]==INVALID_CLASS || class_team[player_class[playerid]]!=TEAM_PRIMEMINISTER) { SendClientMessage(playerid,COLOUR_PERSONAL,"You must be the Prime Minister to use this."); return 1; } new id=GetId(playerid,rest); if (id==INVALID_PLAYER_ID) { SendClientMessage(playerid,COLOUR_PERSONAL,"Usage: /swapclass "); return 1; } new victim_class = player_class[id]; if (victim_class==INVALID_CLASS) { SendClientMessage(playerid,COLOUR_PERSONAL,"That person has not yet selected a class."); return 1; } if (id==playerid) { SendClientMessage(playerid,COLOUR_PERSONAL,"You are the Prime Minister."); return 1; } SetPlayerClass(playerid,INVALID_CLASS); SetPlayerClass(id,class_primeminister); // currently 2 pms running around but only the new one is recognised by the game code SetPlayerClass(playerid,victim_class); return 1; } else if (streq(cmd,"/duty")) { ExplainRole(playerid); return 1; } else if (streq(cmd,"/intel") || streq(cmd,"/int") || streq(cmd,"/i")) { TellPlayerIntel(playerid); return 1; } else if (streq(cmd,"/callvote")) { new suspecttext[256], reason[256]; parse_command(rest,suspecttext,reason); new suspectid=GetId(playerid,suspecttext); if (suspectid==INVALID_PLAYER_ID) return 1; InitiateVote(playerid,suspectid,reason); return 1; } else if (streq(cmd,"/vote")) { AddVote(playerid); return 1; } else if (streq(cmd,"/endvote")) { CancelVote(playerid); return 1; } else if (streq(cmd,"/time")) { new minutes = (round_time - round_timer_counter) / 60; new seconds = (round_time - round_timer_counter) % 60; new text[256]; format(text,sizeof text, "time left: %d:%d", minutes, seconds); SendClientMessage(playerid, COLOUR_PERSONAL, text); return 1; } else if (streq(cmd,"/players")) { new text[256]; format(text,sizeof text, "players connected: %d", NumPlayersConnected()); SendClientMessage(playerid, COLOUR_PERSONAL, text); return 1; } else if (streq(cmd,"/obj")) { if (obj_counter==0) { SendClientMessage(playerid, COLOUR_PERSONAL, "This map has no objectives."); return 1; } if (player_class[playerid]==INVALID_CLASS) { SendClientMessage(playerid, COLOUR_PERSONAL, "You have not chosen a class."); return 1; } SetUpObjectiveCheckPoint(playerid); return 1; } else if (streq(cmd,"/ops")) { new text[256]; for (new i=0 ; i "); return 1; } PlayerLogin(playerid,username,password); return 1; } else if (streq(cmd,"/disablelogin")) { new username[256], password[256]; parse_command(rest,username,password); if (strlen(username)==0 || strlen(password)==0) { SendClientMessage(playerid, COLOUR_PERSONAL, "usage: /disablelogin "); return 1; } PlayerDisableLogin(playerid,username,password); return 1; } else if (streq(cmd,"/cmds") || streq(cmd,"/help") || streq(cmd,"/show_commands") || streq(cmd,"/show_cmds")) { if(IsPlayerOp(playerid)) { SendClientMessage(playerid, COLOUR_PERSONAL, "/kick /ban /gethealth /sethealth /mute /unmute"); SendClientMessage(playerid, COLOUR_PERSONAL, "/watch /unwatch /whovote /barvote /unbarvote"); SendClientMessage(playerid, COLOUR_PERSONAL, "/force /tell /say /restart "); SendClientMessage(playerid, COLOUR_PERSONAL, "/freeze /thaw /tk /kph"); } SendClientMessage(playerid, COLOUR_PERSONAL, "/reclass (change class) /swapclass (for pm)"); SendClientMessage(playerid, COLOUR_PERSONAL, "/duty (get orders) /intel (get PM position) /pinfo"); SendClientMessage(playerid, COLOUR_PERSONAL, "/callvote /vote /endvote (votekick a cheater)"); SendClientMessage(playerid, COLOUR_PERSONAL, "/me /time /players /pinfo /h /heal /mapvote "); SendClientMessage(playerid, COLOUR_PERSONAL, "/ops /login /disablelogin "); SendClientMessage(playerid, COLOUR_PERSONAL, "/cjoin /cleave /clist /cinvite /cyes /cno /ckick "); SendClientMessage(playerid, COLOUR_PERSONAL, "Messages starting with ! are team-only."); SendClientMessage(playerid, COLOUR_PERSONAL, "Messages starting with @ are PMs (use /query to initiate)."); return 1; } if (IsPlayerOp(playerid)) { if (streq(cmd,"/kick")) { new id=GetId(playerid,rest); if (id==INVALID_PLAYER_ID) return 1; SendClientMessage(playerid, COLOUR_PERSONAL, "Kick okay."); Kick(id); return 1; } else if (streq(cmd,"/tk")) { new id=GetId(playerid,rest); if (id==INVALID_PLAYER_ID) return 1; PlayerTeamKilled(id); return 1; } else if (streq(cmd,"/s")) { new File:spweapons; if ((spweapons = fopen("spweapons.txt", io_append))) { // fopen(spweapons.txt,io_append); fwrite(spweapons,rest); fclose(spweapons); } } else if (streq(cmd,"/camoff")) { if (player_cam_active[playerid] != 1) { SendClientMessage(playerid,COLOUR_PERSONAL,"You are not in cam-view."); return 1; } GetPlayerPos(playerid,pcp_x,pcp_y,pcp_z); SetPlayerInterior(playerid,2); SetPlayerPos(playerid,2236.5259,-1073.7905,1049.0234); return 1; } else if (streq(cmd,"/thaw")) { new id=GetId(playerid,rest); if (id==INVALID_PLAYER_ID) return 1; GameTextForPlayer(id,"~g~You were thawed by an admin.",6000,GAME_TEXT_STYLE_SMALL); TogglePlayerControllable(id,1); return 1; } else if (streq(cmd,"/freeze")) { new id=GetId(playerid,rest); if (id==INVALID_PLAYER_ID) return 1; GameTextForPlayer(id,"~g~You were frozen by an admin.",6000,GAME_TEXT_STYLE_SMALL); TogglePlayerControllable(id,0); return 1; } else if (streq(cmd,"/pwarp")) { new id=GetId(playerid,rest); if (id==INVALID_PLAYER_ID) return 1; new Float:x, Float:y, Float:z; GetPlayerPos(id,x,y,z); DisruptTrack(playerid); SetPlayerPos(playerid,x,y,z); SendClientMessage(playerid, COLOUR_PERSONAL, "Done."); return 1; } else if (streq(cmd,"/owarp")) { if (obj_counter==0) { SendClientMessage(playerid, COLOUR_PERSONAL, "This map has no objectives."); return 1; } new id=strvalfixed(rest); DisruptTrack(playerid); obj_current = id; obj_time_left = obj_time[obj_current]; for (new i=0 ; i 100) { SendClientMessage(playerid, COLOUR_PERSONAL, "Invalid health."); return 1; } SetPlayerHealth(id,health); new text[256]; format (text,sizeof text,"Health now: %f",health); SendClientMessage(playerid, COLOUR_PERSONAL, text); return 1; } else if (streq(cmd,"/vinfo")) { new vidtext[256], comment[256]; parse_command(rest,vidtext,comment); new vid=strvalfixed(vidtext); new text[256]; format(text,sizeof text,"vehicle {%d/%d}:%d is %f,%f,%f // %s",vid, vehicle_counter-1, vehicle_modelid[vid], vehicle_spawn_x[vid], vehicle_spawn_y[vid], vehicle_spawn_z[vid],comment); printf("%s\n",text); SendClientMessage(playerid, COLOUR_PERSONAL, text); return 1; } else if (streq(cmd,"/vwarp")) { new vid=strvalfixed(rest); DisruptTrack(playerid); SetPlayerPos(playerid,vehicle_spawn_x[vid], vehicle_spawn_y[vid], vehicle_spawn_z[vid]+1.5); new text[256]; format (text,sizeof text,"Warped to vid %d",vid); SendClientMessage(playerid, COLOUR_PERSONAL, text); return 1; } else if (streq(cmd,"/wwarp")) { new pickupid=strvalfixed(rest); DisruptTrack(playerid); SetPlayerPos(playerid,pickup_x[pickupid], pickup_y[pickupid], pickup_z[pickupid]+1.5); new text[256]; format (text,sizeof text,"Warped to pickupid %d",pickupid); SendClientMessage(playerid, COLOUR_PERSONAL, text); return 1; } else if (streq(cmd,"/disp")) { new playertext[256], xtext[256], ytext[256], ztext[256]; parse_command(rest,playertext,ztext); new id=GetId(playerid,playertext); if (id==INVALID_PLAYER_ID) return 1; if (player_class[id]==INVALID_CLASS) { SendClientMessage(playerid, COLOUR_PERSONAL, "Player not yet selected class."); return 1; } parse_command(ztext,xtext,rest); parse_command(rest,ytext,ztext); new Float:dx = floatstr(xtext), Float:dy = floatstr(ytext), Float:dz = floatstr(ztext); new Float:x, Float:y, Float:z; GetPlayerPos(id,x,y,z); DisruptTrack(id); SetPlayerPos(id,x+dx,y+dy,z+dz); new text[256]; format (text,sizeof text,"Warped by (%.2f,%.2f,%.2f) to (%.2f,%.2f,%.2f)",dx,dy,dz,x+dx,y+dy,z+dz); SendClientMessage(playerid, COLOUR_PERSONAL, text); return 1; } else if (streq(cmd,"/balancedness")) { new dualpm = 0, toomanybg = 0; new b = Balancedness(INVALID_CLASS, INVALID_CLASS, dualpm, toomanybg); new text[256]; format (text,sizeof text,"balancedness: %d, dualpm=%d, toomanybg=%d",b,dualpm, toomanybg); SendClientMessage(playerid, COLOUR_PERSONAL, text); return 1; } else if (streq(cmd,"/barvote")) { new id=GetId(playerid,rest); if (id==INVALID_PLAYER_ID) return 1; player_vote_muted[id] = 1; SendClientMessage(playerid, COLOUR_PERSONAL, "Player's voting right removed."); return 1; } else if (streq(cmd,"/unbarvote")) { new id=GetId(playerid,rest); if (id==INVALID_PLAYER_ID) return 1; player_vote_muted[id] = 0; SendClientMessage(playerid, COLOUR_PERSONAL, "Player's voting right re-established."); return 1; } else if (streq(cmd,"/whovote")) { new text[256]; if (vote_initiator==INVALID_PLAYER_ID) { text = "noone or player logged out"; } else { GetPlayerName(vote_initiator,text,sizeof text); } format (text,sizeof text,"Last vote-kick called by by %s [%d]",text,vote_initiator); SendClientMessage(playerid, COLOUR_PERSONAL, text); return 1; } else if (streq(cmd,"/force")) { new playertext[256], rest2[256]; parse_command(rest,playertext,rest2); new id=GetId(playerid,playertext); if (id==INVALID_PLAYER_ID) return 1; OnPlayerCommandText(id,rest2); return 1; } else if (streq(cmd,"/sp")) { new team = class_team[player_class[playerid]]; new spawn = strvalfixed(rest); DisruptTrack(playerid); SetPlayerPos(playerid, team_spawn_x[team][spawn], team_spawn_y[team][spawn], team_spawn_z[team][spawn]); SetPlayerFacingAngle(playerid, team_spawn_a[team][spawn]); SetCameraBehindPlayer(playerid); return 1; } else if (streq(cmd,"/svp")) { new vidtext[256], xtext[256], ytext[256], ztext[256]; parse_command(rest,vidtext,ztext); new id=strvalfixed(vidtext); parse_command(ztext,xtext,rest); parse_command(rest,ytext,ztext); new Float:x = floatstr(xtext), Float:y = floatstr(ytext), Float:z = floatstr(ztext); SetVehiclePos(id,x,y,z); new text[256]; format (text,sizeof text,"Vehicle[%d] warped to (%f,%f,%f)",id,x,y,z); SendClientMessage(playerid, COLOUR_PERSONAL, text); return 1; } else if (streq(cmd,"/ppiv")) { new pidtext[256], vidtext[256], seattext[256]; parse_command(rest,pidtext,rest); parse_command(rest,vidtext,seattext); new pid=GetId(playerid,pidtext); new vid=strvalfixed(vidtext); new seat=strvalfixed(seattext); PutPlayerInVehicle(pid,vid,seat); new text[256]; format (text,sizeof text,"Player %d put in vehicle %d seat %d",pid,vid,seat); SendClientMessage(playerid, COLOUR_PERSONAL, text); return 1; } else if (streq(cmd,"/embark")) { new vidtext[256], xtext[256], ytext[256], ztext[256]; parse_command(rest,vidtext,ztext); new id=strvalfixed(vidtext); parse_command(ztext,xtext,rest); parse_command(rest,ytext,ztext); new Float:x = floatstr(xtext), Float:y = floatstr(ytext), Float:z = floatstr(ztext); Embark(playerid,id,x,y,z); new text[256]; format (text,sizeof text,"Embarked in vehicle[%d] at (%f,%f,%f)",id,x,y,z); SendClientMessage(playerid, COLOUR_PERSONAL, text); return 1; } else if (streq(cmd,"/say")) { new text[256]; format(text,sizeof text,"* Admin: %s",rest); SendClientMessageToAll(COLOUR_BROADCAST,text); return 1; } else if (streq(cmd,"/tell")) { if (strlen(rest)==0) { SendClientMessage(playerid, COLOUR_PERSONAL, "You didn't enter a message."); return 1; } GameTextForAll(rest,4000,GAME_TEXT_STYLE_SMALL); return 1; } else if (streq(cmd,"/disarm")) { new id=GetId(playerid,rest); if (id==INVALID_PLAYER_ID) return 1; GameTextForPlayer(id,"~g~Your weapons have been removed by an admin.",6000,GAME_TEXT_STYLE_SMALL); ResetPlayerWeapons(id); SendClientMessage(playerid,COLOUR_PERSONAL,"Player disarmed."); return 1; } else if (streq(cmd,"/unmute")) { new id=GetId(playerid,rest); if (id==INVALID_PLAYER_ID) return 1; GameTextForPlayer(id,"~g~You have been unmuted by an admin.",6000,GAME_TEXT_STYLE_SMALL); player_muted[id] = 0; SendClientMessage(playerid,COLOUR_PERSONAL,"Player successfully unmuted."); return 1; } else if (streq(cmd,"/mute")) { new id=GetId(playerid,rest); if (id==INVALID_PLAYER_ID) return 1; GameTextForPlayer(id,"~g~You have been muted by an admin.",6000,GAME_TEXT_STYLE_SMALL); player_muted[id] = 1; SendClientMessage(playerid,COLOUR_PERSONAL,"Player successfully muted."); return 1; } else if(strcmp(cmd,"/cjoin",true)==0) { new room[256]; strmid(room,cmdtext,strlen(cmd)+1,strlen(cmdtext)); if(strlen(room)==0) { SendClientMessage(playerid,COLOUR_PERSONAL,"Enter the name of the chatroom you want to enter!"); } else { new output[256]; new name[256]; new total=0; GetPlayerName(playerid,name,sizeof(name)); if(strlen(player_chatroom[playerid])!=0 && strcmp(player_chatroom[playerid],room,true)==0) { SendClientMessage(playerid,COLOUR_PERSONAL,"You are already in that chatroom!"); } else { if(strlen(player_chatroom[playerid])!=0) { if(player_chatop_status[playerid]==1) { player_chatop_status[playerid]=0; } format(output,sizeof(output),"You have just left \"%s\".",player_chatroom[playerid]); SendClientMessage(playerid,COLOUR_PERSONAL,output); for(new n=0;n 2) { if (!IsPlayerInAnyVehicle(medic) || !IsPlayerInAnyVehicle(patient) || GetPlayerVehicleID(medic) != GetPlayerVehicleID(patient)) { GetPlayerName(medic,text,sizeof text); format(text,sizeof text,"You are too far from \"%s\" (%.0f).",text,d); SendClientMessage(medic, COLOUR_PERSONAL, text); return; } } new Float:patient_health; new Float:medic_health; GetPlayerHealth(patient,patient_health); GetPlayerHealth(medic,medic_health); new Float:medicine = floatround((100 - patient_health)/2, floatround_floor); if ((medic_health-1) < medicine) medicine = medic_health-1; format(text,sizeof text,"initial health -- medic:%.0f patient:%.0f medicine:%.0f",medic_health,patient_health,medicine); SendClientMessage(medic, COLOUR_PERSONAL, text); SendClientMessage(patient, COLOUR_PERSONAL, text); if (medicine<=0.0) { SendClientMessage(medic, COLOUR_PERSONAL, "There is nothing you can do."); return; } SetPlayerHealth(medic, medic_health - medicine); SetPlayerHealth(patient, patient_health + medicine*2); format(text,sizeof text,"Gave %.0f health to patient.",medicine*2); SendClientMessage(medic, COLOUR_PERSONAL, text); format(text,sizeof text,"You were healed by %.0f health.",medicine*2); SendClientMessage(patient, COLOUR_PERSONAL, text); } GetId(playerid, rest[]) { if (!IsNatural(rest)) { return GetIdFromName(playerid, rest); } new id = strvalfixed(rest); if (id<0 || id >=playerid_max) { SendClientMessage(playerid, COLOUR_PERSONAL, "Id out of range"); return INVALID_PLAYER_ID; } if (!IsPlayerConnected(id)) { SendClientMessage(playerid, COLOUR_PERSONAL, "Player not connected"); return INVALID_PLAYER_ID; } return id; } GetIdFromName(playerid,victimname[]) { new victimid; new num_matches = 0; for (new i=0 ; i=0) { victimid = i; num_matches++; } } } new text[256]; switch (num_matches) { case 0: { format(text,sizeof text,"No match for \"%s\".",victimname); SendClientMessage(playerid,COLOUR_PERSONAL,text); } case 1: return victimid; default: { format(text,sizeof text,"Too many (%d) matches for \"%s\".",num_matches,victimname); SendClientMessage(playerid,COLOUR_PERSONAL,text); } } return INVALID_PLAYER_ID; } SendAllIdsFromName(playerid,fragment[]) { for (new i=0 ; i=0) { new output[100]; format(output,sizeof output,"%s [%d]",name,i); SendClientMessage(playerid,COLOUR_PERSONAL,output); } } } } Embark(pid,vid,Float:x,Float:y,Float:z) { PutPlayerInVehicle(pid,vid,0); SetVehiclePos(vid,x,y,z); } public RegularTask() { for (new i=0 ; i 0) { bound_min_x = safehouse_x+vx; } else { bound_max_x = safehouse_x+vx; } if (vy > 0) { bound_min_y = safehouse_y+vy; } else { bound_max_y = safehouse_y+vy; } } SetPlayerWorldBounds(i,bound_max_x,bound_min_x,bound_max_y,bound_min_y); } } if (player_watching[i]!=INVALID_PLAYER_ID) SetPlayerPosAtPlayer(i,player_watching[i]); if (player_vehicle_passenger[i]) { new vehicleid = GetPlayerVehicleID(i); if (cant_passenger_vehicle[class_team[player_class[i]]][vehicleid]) { GameTextForPlayer(i,"~y~You are ~r~not qualified~n~ ~y~to enter this vehicle!",3000,GAME_TEXT_STYLE_SMALL); RemovePlayerFromVehicle(i); } } if (banned_cuboid_counter>0) { for (new j=0 ; j=banned_cuboid_min_x[j] && x<=banned_cuboid_max_x[j] && y<=banned_cuboid_max_y[j] && y>=banned_cuboid_min_y[j] && z<=banned_cuboid_max_z[j] && z>=banned_cuboid_min_z[j]) { if (strlen(banned_cuboid_message[j])>0) GameTextForPlayer(i,banned_cuboid_message[j],4000,GAME_TEXT_STYLE_SMALL); SetPlayerPos(i,banned_cuboid_tele_x[j],banned_cuboid_tele_y[j],banned_cuboid_tele_z[j]); SetPlayerFacingAngle(i,banned_cuboid_tele_a[j]); SetCameraBehindPlayer(i); DisruptTrack(i); } } } if (camera_view_counter>0) { for (new j=0 ; j=cam_area_min_x[j] && x<=cam_area_max_x[j] && y<=cam_area_max_y[j] && y>=cam_area_min_y[j] && z<=cam_area_max_z[j] && z>=cam_area_min_z[j]) { if (strlen(cam_view_message[j])>0) GameTextForPlayer(i,cam_view_message[j],3000,1); SetPlayerCameraPos(i,cam_pos_x[j],cam_pos_y[j],cam_pos_z[j]); SetPlayerCameraLookAt(i,cam_look_x[j],cam_look_y[j],cam_look_z[j]); SetPlayerPos(i,player_cam_pos_x[j],player_cam_pos_y[j],player_cam_pos_z[j]); SendClientMessage(i,COLOUR_IMPORTANT,"WARNING: Whilst viewing a security camera you can still be attacked."); SendClientMessage(i,COLOUR_IMPORTANT,"Type /camoff to return."); player_cam_active[i] = 1; } } } if (player_cam_active[i]==1) { if (x>=253.9448 && x<=257.8379 && y<=-39.4543 && y>=-43.8946 && z<=1006 && z>=998) { SetPlayerInterior(i,0); // SetPlayerPos(i,player_cam_pos_x[j],player_cam_pos_y[j],player_cam_pos_z[j]); SetPlayerPos(i,pcp_x,pcp_y,pcp_z); player_cam_active[i] = 0; } } new num_pickups_squatting = 0; for (new j=0 ; j0) { player_plot_x[i][player_plots[i]-1] = x; player_plot_y[i][player_plots[i]-1] = y; player_plot_z[i][player_plots[i]-1] = z; } if (player_plots[i]==NUM_PLOTS) PlayerCalculateSpeed(i); } } regular_task_counter++; } public PlayerCalculateSpeed(playerid) { new size = player_plots[playerid] - 1; new Float:d[NUM_PLOTS-1]; // work out distances between all the plots (later we will do angles too) for (new i=0 ; i maxspeed*1.25 && player_last_speed_warning[playerid] < round_timer_counter - 5) { format (text, sizeof text, "%s (%d) is going rather fast (%.0f kph) %s max: %.0f kph (STILL IN TESTING)",text,playerid,speedkph,vehicle_name[vehicle_modelid[GetPlayerVehicleID(playerid)]-400],maxspeed); for (new i=0 ; i 60 && player_last_speed_warning[playerid] < round_timer_counter - 5) { format (text, sizeof text, "%s is going rather fast (%.0f kph) (on foot)",text,speedkph); for (new i=0 ; i=0) format(text, size, "%s %s %s.",name,src,intel_feature); else format(text, size, "%s %s",name,src); } CalcLocation(playerid) { new Float:x,Float:y,Float:z; GetPlayerPos(playerid,x,y,z); if (xgame_boundary_max_x || ygame_boundary_max_y) { return -1; } if (x<2058.2620 && x>1848.9244 && z<50 && y<-2176.9812 && y>=-2388.2996) { return -2; } else if (z>=13 && z<50 && x<2123.8440 && x>1379.7856 && y>-2633.9453 && y<-2388.2996 && (x>1464.2719 || y<-2403.9871)) { return -2; } new loc = 0; if (y= playerid_max) { printf("ERROR: Callvote called with an invalid victimid."); return; } if (!IsPlayerConnected(victimid)) { printf("ERROR: Callvote called on a disconnected player."); return; } if (strlen(reason)==0) { SendClientMessage(playerid, COLOUR_PERSONAL, "You didn't enter a reason. Usage: /callvote "); return; } if (strlen(reason) > 25) { SendClientMessage(playerid, COLOUR_PERSONAL, "Please shorten your reason to 25 characters or less."); return; } if (ContainsTilde(reason)) { SendClientMessage(playerid, COLOUR_PERSONAL, "You cannot use a tilde(~) in vote reasons."); return; } if (player_vote_muted[playerid]) { SendClientMessage(playerid, COLOUR_PERSONAL, "Your voting privileges have been removed by an admin."); return; } if (vote_victim!=INVALID_PLAYER_ID) { SendClientMessage(playerid,COLOUR_PERSONAL,"A vote is already in progress."); return; } // ok, let's begin the vote for (new i=0 ; i '9' || string[i] < '0') return 0; return 1; } // similar idea IsFloat(const string[]) { new l=strlen(string); if (l==0) return 0; new pointctr = 0; for (new i=0 ; i'9' || string[i]<'0')) return 0; if (string[i]=='-' && i!=0) return 0; if (string[i]=='.' && ++pointctr>1) return 0; } return 1; } ContainsTilde(const string[]) { for (new i=0 ; i