Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #define SHIP_OBJECTS 14
- new object[SHIP_OBJECTS];
- new boat, player_in_boat = -1;
- new refresh_cam;
- new camera;
- new Float:PI = 3.1415926535897932384626433832795;
- forward RefreshCam();
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Big ship v2 by Ponchik");
- print("--------------------------------------\n");
- boat = CreateVehicle(484, 813.601318, -2084.696777, 0.0, 270.0, 1, 1, 60*10); //change boat/position here/time to respawn
- //objects of ship
- object[0] = CreateObject(10771, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //ship
- object[1] = CreateObject(10772, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //white thing on floor (oh my english...)
- object[2] = CreateObject(11146, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //ship interior
- object[3] = CreateObject(11145, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //ship interior part 2
- object[4] = CreateObject(11148, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //some pipes
- object[5] = CreateObject(11147, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //again some pipes
- object[6] = CreateObject(11149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //ship interior part 3
- object[7] = CreateObject(11237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //antenas
- object[8] = CreateObject(10770, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //base for antenas
- object[9] = CreateObject(3885, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //base for rockets
- object[10] = CreateObject(3884, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //rockets
- object[11] = CreateObject(3885, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //base for rockets 2
- object[12] = CreateObject(3884, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //rockets 2
- object[13] = CreateObject(11374,0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //bended pipes
- //attach objects to boat
- AttachObjectToVehicle(object[0], boat, -0, 11.373538, 5.45, 0.0, 0.0, 90.0);
- AttachObjectToVehicle(object[1], boat, 0.18, 12.723538, 17.27, 0.0, 0.0, 90.0);
- AttachObjectToVehicle(object[2], boat, -0.55, 2.383538, 12.29, 0.0, 0.0, 90.0);
- AttachObjectToVehicle(object[3], boat, 0, -51.506462, 4.26, 0.0, 0.0, 90.0);
- AttachObjectToVehicle(object[4], boat, -0, 2.383538, 12.88, 0.0, 0.0, 90.0);
- AttachObjectToVehicle(object[5], boat, 0, -49.336462, 5.08, 0.0, 0.0, 90.0);
- AttachObjectToVehicle(object[6], boat, 5.21, 5.303538, 11.98, 0.0, 0.0, 90.0);
- AttachObjectToVehicle(object[7], boat, 7.55, 14.653538, 38.68, 0.0, 0.0, 90.0);
- AttachObjectToVehicle(object[8], boat, 7.55, 14.603538, 38.68, 0.0, 0.0, 90.0);
- AttachObjectToVehicle(object[9], boat, 7.49, 44.743538, 21.02, 0.0, 0.0, 90.0);
- AttachObjectToVehicle(object[10], boat, 7.49, 44.743538, 21.05, 0.0, 0.0, 90.0);
- AttachObjectToVehicle(object[11], boat, 7.9, -25.726462, 18.01, 0.0, 0.0, 90.0);
- AttachObjectToVehicle(object[12], boat, 7.9, -25.726462, 18.05, 0.0, 0.0, 90.0);
- AttachObjectToVehicle(object[13], boat, 5.21, 5.303538, 11.98, 0.0, 0.0, 90.0);
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new a; a<SHIP_OBJECTS; a++) {
- DestroyObject(object[a]);
- }
- DestroyVehicle(boat);
- KillTimer(refresh_cam);
- if(player_in_boat != -1) {
- SpawnPlayer(player_in_boat);
- SetCameraBehindPlayer(player_in_boat);
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(strcmp(cmdtext, "/shiphelp", true, 9) == 0)
- {
- SendClientMessage(playerid, 0x00FF00FF, "Big ship v2 by {F57E2F}Ponchik {00FF00}(btw hello to {13A61E}antichat {00FF00}team)");
- SendClientMessage(playerid, 0x00FF00FF, "Use {FFCC00}/goinship {00FF00}to control ship");
- SendClientMessage(playerid, 0x00FF00FF, "Use {FFCC00}CRTL button{00FF00} to change camera");
- SendClientMessage(playerid, 0x00FF00FF, "Press {FFCC00}F{00FF00} to exit from ship");
- return 1;
- }
- if(strcmp(cmdtext, "/goinship", true, 9) == 0)
- {
- if(player_in_boat != -1) {
- SendClientMessage(playerid, 0xFF0000FF, "Other player controling ship");
- return 1;
- }
- new Float:vehx, Float:vehy, Float:vehz;
- GetVehiclePos(boat, vehx, vehy, vehz);
- if(!IsPlayerInRangeOfPoint(playerid, 60.0, vehx, vehy, vehz)) { //you can delete this check to allow players to teleport to ship
- SendClientMessage(playerid,0xFF0000FF,"Get closer to ship");
- return 1;
- }
- SetVehiclePos(boat, vehx, vehy, 0); //some times boat sinking
- PutPlayerInVehicle(playerid, boat, 0);
- player_in_boat = playerid;
- refresh_cam = SetTimer("RefreshCam", 100, true); //here you can change refresh time to smoother camera move
- camera = 1;
- return 1;
- }
- return 0;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- if(vehicleid == boat) {
- player_in_boat = -1;
- KillTimer(refresh_cam);
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid, x, y, z);
- SetPlayerPos(playerid,x, y, z+20);
- SetCameraBehindPlayer(playerid);
- }
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- if(player_in_boat == playerid) {
- player_in_boat = -1;
- KillTimer(refresh_cam);
- SetCameraBehindPlayer(playerid);
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(player_in_boat == playerid) {
- player_in_boat = -1;
- KillTimer(refresh_cam);
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if (player_in_boat == playerid && (newkeys & KEY_ACTION) && !(oldkeys & KEY_ACTION))
- {
- camera++;
- if(camera > 6) {
- camera = 0;
- SetCameraBehindPlayer(playerid);
- SendClientMessage(playerid,0x00FF00FF,"Camera changed to default");
- }else{
- new msg[32];
- format(msg,sizeof(msg),"Camera changed to ¹%i", camera);
- SendClientMessage(playerid,0x00FF00FF,msg);
- }
- }
- return 1;
- }
- public RefreshCam() {
- //change camera position here
- new Float:AX, Float:AY, Float:AZ;
- new Float:BX, Float:BY, Float:BZ;
- new Float:ugol, Float:new_BX, Float:new_BY, Float:aradian, Float:x1, Float:y1, Float:x_v_staroi, Float:y_v_staroi;
- GetVehiclePos(boat, AX, AY, AZ);
- GetVehicleZAngle(boat, ugol);
- if(camera == 1) {
- BX = AX+140;
- BY = AY;
- BZ = 70;
- }else if(camera == 2) {
- BX = AX+70;
- BY = AY;
- BZ = 35;
- }else if(camera == 3) {
- BX = AX;
- BY = AY+50;
- BZ = 120;
- }else if(camera == 4) {
- BX = AX;
- BY = AY-50;
- BZ = 120;
- }else if(camera == 5) {
- BX = AX-70;
- BY = AY;
- BZ = 40;
- }else if(camera == 6) {
- BX = AX;
- BY = AY+10;
- BZ = 120;
- }else{
- return 1;
- }
- new_BX = BX-AX;
- new_BY = BY-AY;
- aradian = ((-ugol)+90)*(PI/180);
- x1 = new_BX*floatcos(aradian)+new_BY*floatsin(aradian);
- y1 = -new_BX*floatsin(aradian)+new_BY*floatcos(aradian);
- x_v_staroi = x1+AX;
- y_v_staroi = y1+AY;
- SetPlayerCameraPos(player_in_boat, x_v_staroi, y_v_staroi, BZ);
- SetPlayerCameraLookAt(player_in_boat, AX, AY, AZ);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement