Advertisement
Guest User

SAMP - Enterable Journey by Kyance

a guest
Jul 3rd, 2014
375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.86 KB | None | 0 0
  1. #define FILTERSCRIPT
  2.  
  3. /***** Includes, Variables, Defines *****/
  4.  
  5. #include <a_samp>
  6. #include <zcmd>
  7. #include <foreach>
  8.  
  9. enum jcInfo
  10. {
  11.     jvID,
  12.     Owned,
  13.     Locked
  14. };
  15. enum jpInfo
  16. {
  17.     jpID,
  18.     InJourney
  19. };
  20. new vJInfo[MAX_VEHICLES][jcInfo];
  21. new pJInfo[MAX_PLAYERS][jpInfo];
  22.  
  23. new
  24.     Float:ExitX[ MAX_PLAYERS ],
  25.     Float:ExitY[ MAX_PLAYERS ],
  26.     Float:ExitZ[ MAX_PLAYERS ]
  27. ;
  28. new TimesEntered[ MAX_PLAYERS ];
  29.  
  30. #define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  31. #define COLOR_NOTES 0x2894FFFF
  32. #define COLOR_NOTES2 0xFF0000AA
  33.  
  34. #define DIALOG_JOURNEY_EDIT 1336
  35. #define DIALOG_JOURNEY_WELCOME 1337
  36. #define DIALOG_JOURNEY_BUY 1338
  37.  
  38. #if defined FILTERSCRIPT
  39.  
  40. public OnFilterScriptInit()
  41. {
  42.     print("\n--------------------------------------");
  43.     print(" Enterable Journey initialized. . . ");
  44.     print("--------------------------------------\n");
  45.    
  46.    
  47.     CreateObject(19354, -363.32071, -1495.16931, 515.54346,   0.00000, 90.00000, 0.00000);
  48.     CreateObject(19354, -363.32071, -1491.96143, 515.54352,   0.00000, 90.00000, 0.00000);
  49.     CreateObject(19354, -359.88071, -1495.16931, 515.54352,   0.00000, 90.00000, 0.18000);
  50.     CreateObject(19354, -359.88071, -1491.96143, 515.54352,   0.00000, 90.00000, 0.18000);
  51.     CreateObject(19354, -359.88071, -1498.37695, 515.54352,   0.00000, 90.00000, 0.18000);
  52.     CreateObject(19354, -363.30127, -1498.37732, 515.54352,   0.00000, 90.00000, 0.18000);
  53.     CreateObject(19353, -364.97937, -1491.95923, 517.22638,   0.00000, 0.00000, 0.00000);
  54.     CreateObject(19353, -364.97940, -1495.15576, 517.22638,   0.00000, 0.00000, 0.00000);
  55.     CreateObject(19353, -364.97940, -1498.34802, 517.22638,   0.00000, 0.00000, 0.00000);
  56.     CreateObject(19353, -363.28708, -1499.85925, 517.22638,   0.00000, 0.00000, 90.00000);
  57.     CreateObject(19353, -360.08200, -1499.85925, 517.22638,   0.00000, 0.00000, 90.00000);
  58.     CreateObject(19353, -358.38437, -1498.34290, 517.22638,   0.00000, 0.00000, 0.00000);
  59.     CreateObject(19353, -358.38440, -1495.13867, 517.22638,   0.00000, 0.00000, 0.00000);
  60.     CreateObject(19353, -358.38440, -1491.93530, 517.22638,   0.00000, 0.00000, 0.00000);
  61.     CreateObject(19353, -360.05481, -1490.42883, 517.22638,   0.00000, 0.00000, 90.00000);
  62.     CreateObject(19353, -363.26331, -1490.42883, 517.22638,   0.00000, 0.00000, 89.52000);
  63.     CreateObject(19353, -366.43570, -1490.42883, 517.22638,   0.00000, 0.00000, 89.52000);
  64.     CreateObject(19357, -363.18289, -1498.18420, 518.98297,   0.00000, 90.00000, 0.00000);
  65.     CreateObject(19357, -359.69479, -1498.18359, 518.98297,   0.00000, 90.00000, 0.00000);
  66.     CreateObject(19357, -363.18500, -1494.99048, 518.98297,   0.00000, 90.00000, 0.00000);
  67.     CreateObject(19357, -359.68829, -1494.99622, 518.98297,   0.00000, 90.00000, 0.00000);
  68.     CreateObject(19357, -359.68549, -1491.79407, 518.98297,   0.00000, 90.00000, 0.00000);
  69.     CreateObject(19357, -363.19281, -1491.77710, 518.98297,   0.00000, 90.00000, 0.00000);
  70.     CreateObject(2844, -360.21317, -1499.40344, 515.62482,   0.00000, 0.00000, 0.00000);
  71.     CreateObject(2846, -359.57269, -1498.80835, 515.61792,   0.00000, 0.00000, 0.00000);
  72.     CreateObject(2372, -358.61765, -1499.28564, 515.59485,   0.00000, 0.00000, 0.00000);
  73.     CreateObject(2394, -358.81400, -1498.70361, 516.30261,   0.00000, 0.00000, 90.00000);
  74.     CreateObject(1742, -364.92191, -1498.74048, 515.61078,   0.00000, 0.00000, 90.00000);
  75.     CreateObject(1755, -360.01999, -1492.61450, 515.55048,   0.00000, 0.00000, -40.00000);
  76.     CreateObject(1756, -358.96365, -1494.05823, 515.64764,   0.00000, 0.00000, -90.00000);
  77.     CreateObject(1823, -360.20941, -1496.04004, 515.59833,   0.00000, 0.00000, 90.00000);
  78.     CreateObject(2298, -361.81750, -1495.81787, 515.74573,   0.00000, 0.00000, 180.00000);
  79.     CreateObject(2296, -364.50320, -1495.87695, 515.63037,   0.00000, 0.00000, 90.00000);
  80.     CreateObject(1823, -360.20764, -1494.87805, 515.59833,   0.00000, 0.00000, 90.00000);
  81.     CreateObject(1742, -364.92181, -1497.32202, 515.61078,   0.00000, 0.00000, 90.00000);
  82.     CreateObject(2204, -364.35019, -1490.57275, 515.62958,   0.00000, 0.00000, 0.00000);
  83.     CreateObject(1208, -361.54620, -1490.82910, 515.63062,   0.00000, 0.00000, 180.00000);
  84.     CreateObject(2524, -361.43451, -1491.05200, 515.60944,   0.00000, 0.00000, 0.00000);
  85.     return 1;
  86. }
  87.  
  88. public OnFilterScriptExit()
  89. {
  90.     foreach(Player, i)
  91.     {
  92.         ResetPlayerInfo(i);
  93.     }
  94.     return 1;
  95. }
  96.  
  97. #else
  98.  
  99. main()
  100. {
  101.     print("\n----------------------------------");
  102.     print(" Version 1.2 of Enterable Journey is ready.");
  103.     print("----------------------------------\n");
  104. }
  105.  
  106. #endif
  107.  
  108.  
  109. public OnPlayerConnect(playerid)
  110. {
  111.     ResetPlayerInfo(playerid);
  112.     return 1;
  113. }
  114.  
  115. public OnPlayerDisconnect(playerid, reason)
  116. {
  117.     ResetPlayerInfo(playerid);
  118.     return 1;
  119. }
  120.  
  121. public OnPlayerSpawn(playerid)
  122. {
  123.     ResetPlayerInfo(playerid);
  124.     return 1;
  125. }
  126.  
  127.  
  128. public OnVehicleSpawn(vehicleid)
  129. {
  130.     if(GetVehicleModel(vehicleid) == 508)
  131.     {
  132.         ResetVehicleInfo(vehicleid);
  133.     }
  134.     return 1;
  135. }
  136.  
  137. public OnVehicleDeath(vehicleid, killerid)
  138. {
  139.     if(GetVehicleModel(vehicleid) == 508)
  140.     {
  141.         ResetVehicleInfo(vehicleid);
  142.     }
  143.     return 1;
  144. }
  145.  
  146. CMD:journeysettings(playerid, params[]) {
  147.     if(pJInfo[playerid][InJourney])
  148.     {
  149.         //new jID = pJInfo[playerid][jpID];
  150.         for(new i=1;i<MAX_VEHICLES;i++)
  151.         {
  152.             if(GetVehicleModel(i) == 508)
  153.             {
  154.                 new Float:fDistance = GetVehicleDistanceFromPoint(i, ExitX[playerid], ExitY[playerid], ExitZ[playerid]);
  155.                 if(fDistance < 10)
  156.                 {
  157.                     if(pJInfo[playerid][jpID] == vJInfo[i][jvID])
  158.                     {
  159.                         ShowPlayerDialog(playerid, DIALOG_JOURNEY_EDIT, DIALOG_STYLE_LIST, "{FFFFFF}Edit your {00C0FF}Journey", "{FFFFFF}Lock the {00C0FF}Journey\n{FFFFFF}Unlock the {00C0FF}Journey\n{FFFFFF}Disown the {00C0FF}Journey", "Select", "Close");
  160.                         return 1;
  161.                     }
  162.                     else SendClientMessage(playerid, COLOR_NOTES2, "[NOTE] You're not the owner of this 'Journey'!");
  163.                 }
  164.             }
  165.         }
  166.     }
  167.     else SendClientMessage(playerid, COLOR_NOTES, "[INFO] You need to be in the 'Journey' to edit it.");
  168.     return 1;
  169. }
  170. CMD:editjourney(playerid, params[])
  171.     return cmd_journeysettings(playerid, params);
  172.  
  173. /*
  174. This was used for testing!
  175. CMD:myjourney(playerid, params[]) {
  176.     new string[50];
  177.     new vID = pJInfo[playerid][jpID];
  178.     format(string, sizeof(string), "jpID: %d .... jvID: %d", pJInfo[playerid][jpID], vJInfo[vID][jvID]);
  179.     SendClientMessage(playerid, COLOR_NOTES, string);
  180.     return 1;
  181. }*/
  182.  
  183. public OnPlayerStateChange(playerid, newstate, oldstate)
  184. {
  185.     if(newstate == PLAYER_STATE_DRIVER)
  186.     {
  187.         new vID = GetPlayerVehicleID(playerid);
  188.         if(GetVehicleModel(vID) == 508)
  189.         {
  190.             if(!vJInfo[vID][Locked])
  191.             {
  192.                 TimesEntered[playerid]++;
  193.                 if(!vJInfo[vID][Owned]) ShowPlayerDialog(playerid, DIALOG_JOURNEY_BUY, DIALOG_STYLE_LIST, "{FFFFFF}Buy the {00C0FF}Journey", "{00C0FF}* {FFFFFF}Buy the {00C0FF}Journey", "Select", "Cancel");
  194.                 else
  195.                 {
  196.                     if(pJInfo[playerid][jpID] != vJInfo[vID][jvID] && TimesEntered[playerid] < 2)
  197.                     {
  198.                         ShowPlayerDialog(playerid, DIALOG_JOURNEY_WELCOME, DIALOG_STYLE_MSGBOX, "{FFFFFF}Introduction to the {00C0FF}Journey", "{FFFFFF}The {00C0FF}Journey {FFFFFF}is your Mobile/Temporary house.\nYou can own it by getting the keys of it.", "Close", "");
  199.                     }
  200.                     else if(pJInfo[playerid][jpID] != vJInfo[vID][jvID])
  201.                     {
  202.                         ShowPlayerDialog(playerid, DIALOG_JOURNEY_EDIT, DIALOG_STYLE_LIST, "{FFFFFF}Edit your {00C0FF}Journey", "{FFFFFF}Lock the {00C0FF}Journey\n{FFFFFF}Unlock the {00C0FF}Journey\n{FFFFFF}Disown the {00C0FF}Journey", "Select", "Close");
  203.                     }
  204.                 }
  205.             }
  206.             else RemovePlayerFromVehicle(playerid);
  207.         }
  208.     }
  209.     return 1;
  210. }
  211.  
  212. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  213. {
  214.     if(PRESSED(KEY_YES))
  215.     {
  216.         new Float:X, Float:Y, Float:Z;
  217.         GetPlayerPos(playerid, X,Y,Z);
  218.         for(new i=1;i<MAX_VEHICLES;i++)
  219.         {
  220.             if(GetVehicleModel(i) == 508)
  221.             {
  222.                 new Float:fDistance = GetVehicleDistanceFromPoint(i, X, Y, Z);
  223.                 if(fDistance < 3.0)
  224.                 {
  225.                     if(!vJInfo[i][Locked])
  226.                     {
  227.                         ExitX[playerid] = X, ExitY[playerid] = Y, ExitZ[playerid] = Z;
  228.  
  229.                         TogglePlayerControllable(playerid, 0), SetTimerEx("Unfreeze", 2000, false, "i", playerid);
  230.                         SetPlayerPos(playerid, -360.6434,-1499.0181,516.6295), SetPlayerVirtualWorld(playerid, 1);
  231.                         SetCameraBehindPlayer(playerid);
  232.                         TimesEntered[playerid]++;
  233.                         pJInfo[playerid][InJourney] = 1;
  234.  
  235.                         SendClientMessage(playerid, COLOR_NOTES, "[INFO] You've entered the 'Journey', to leave it, press 'N'.");
  236.                         SendClientMessage(playerid, COLOR_NOTES, "[INFO] To edit the Journey, type '/journeysettings', or '/editjourney'");
  237.  
  238.                         if(!vJInfo[i][Owned]) ShowPlayerDialog(playerid, DIALOG_JOURNEY_BUY, DIALOG_STYLE_LIST, "{FFFFFF}Buy the {00C0FF}Journey", "{00C0FF}* {FFFFFF}Buy the {00C0FF}Journey", "Select", "Cancel");
  239.                         else
  240.                         {
  241.                             if(pJInfo[playerid][jpID] != vJInfo[i][jvID] && TimesEntered[playerid] < 2)
  242.                             {
  243.                                 ShowPlayerDialog(playerid, DIALOG_JOURNEY_WELCOME, DIALOG_STYLE_MSGBOX, "{FFFFFF}Introduction to the {00C0FF}Journey", "{FFFFFF}The {00C0FF}Journey {FFFFFF}is your Mobile/Temporary house.\nYou can own it by getting the keys of it.", "Close", "");
  244.                             }
  245.                             else if(pJInfo[playerid][jpID] != vJInfo[i][jvID])
  246.                             {
  247.                                 ShowPlayerDialog(playerid, DIALOG_JOURNEY_EDIT, DIALOG_STYLE_LIST, "{FFFFFF}Edit your {00C0FF}Journey", "{FFFFFF}Lock the {00C0FF}Journey\n{FFFFFF}Unlock the {00C0FF}Journey\n{FFFFFF}Disown the {00C0FF}Journey", "Select", "Close");
  248.                             }
  249.                         }
  250.                     }
  251.                     else
  252.                     {
  253.                         if(pJInfo[playerid][jpID] != vJInfo[i][jvID])
  254.                         {
  255.                             SendClientMessage(playerid, COLOR_NOTES2, "[INFO] This 'Journey' is locked.");
  256.                         }
  257.                         else
  258.                         {
  259.                             ExitX[playerid] = X, ExitY[playerid] = Y, ExitZ[playerid] = Z;
  260.  
  261.                             TogglePlayerControllable(playerid, 0), SetTimerEx("Unfreeze", 2000, false, "i", playerid);
  262.                             SetPlayerPos(playerid, -360.6434,-1499.0181,516.6295), SetPlayerVirtualWorld(playerid, 1);
  263.                             SetCameraBehindPlayer(playerid);
  264.                             TimesEntered[playerid]++;
  265.                             pJInfo[playerid][InJourney] = 1;
  266.                         }
  267.                     }
  268.                     return 1;
  269.                 }
  270.             }
  271.         }
  272.     }
  273.     else if(PRESSED(KEY_NO))
  274.     {
  275.         new Float:X, Float:Y, Float:Z;
  276.         GetPlayerPos(playerid, X,Y,Z);
  277.         if(IsPlayerInRangeOfPoint(playerid, 8.0, -360.6434,-1499.0181,516.6295))
  278.         {
  279.             SetPlayerPos(playerid, ExitX[playerid], ExitY[playerid], ExitZ[playerid]), SetPlayerVirtualWorld(playerid, 0);
  280.             SendClientMessage(playerid, COLOR_NOTES, "[INFO] You've left the 'Journey'");
  281.             pJInfo[playerid][InJourney] = 0;
  282.             return 1;
  283.         }
  284.     }
  285.     return 1;
  286. }
  287.  
  288. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  289. {
  290.     switch(dialogid)
  291.     {
  292.         case DIALOG_JOURNEY_BUY:
  293.         {
  294.             if(response)
  295.             {
  296.                 new Float:X, Float:Y, Float:Z, count = 0;
  297.                 GetPlayerPos(playerid, X, Y, Z);
  298.                    
  299.                 for(new i=1;i<MAX_VEHICLES;i++)
  300.                 {
  301.                     if(GetVehicleModel(i) == 508)
  302.                     {
  303.                         new Float:fDistance = GetVehicleDistanceFromPoint(i, X, Y, Z);
  304.                         if(fDistance < 3.0)
  305.                         {
  306.                             count++;
  307.                         }
  308.                         if(count) RegisterVehicle(playerid, i);
  309.                         else
  310.                         {
  311.                             fDistance = GetVehicleDistanceFromPoint(i, ExitX[playerid], ExitY[playerid], ExitZ[playerid]);
  312.                             if(fDistance < 6.0)
  313.                             {
  314.                                 RegisterVehicle(playerid, i);
  315.                             }
  316.                         }
  317.                     }
  318.                 }
  319.             }
  320.         }
  321.         case DIALOG_JOURNEY_EDIT:
  322.         {
  323.             if(response)
  324.             {
  325.                 new vID = pJInfo[playerid][jpID];
  326.                 switch(listitem)
  327.                 {
  328.                     case 0:
  329.                     {
  330.                         if(vJInfo[vID][Locked])
  331.                         {
  332.                             SendClientMessage(playerid, COLOR_NOTES2, "[NOTE] The vehicle is already locked!");
  333.                             ShowPlayerDialog(playerid, DIALOG_JOURNEY_EDIT, DIALOG_STYLE_LIST, "{FFFFFF}Edit your {00C0FF}Journey", "{FFFFFF}Lock the {00C0FF}Journey\n{FFFFFF}Unlock the {00C0FF}Journey\n{FFFFFF}Disown the {00C0FF}Journey", "Select", "Close");
  334.                         }
  335.                         else
  336.                         {
  337.                             vJInfo[vID][Locked] = 1;
  338.                             SendClientMessage(playerid, COLOR_NOTES, "[INFO] You've successfully locked your vehicle!");
  339.                         }
  340.                     }
  341.                     case 1:
  342.                     {
  343.                         if(!vJInfo[vID][Locked])
  344.                         {
  345.                             SendClientMessage(playerid, COLOR_NOTES2, "[NOTE] The vehicle isn't locked!");
  346.                             ShowPlayerDialog(playerid, DIALOG_JOURNEY_EDIT, DIALOG_STYLE_LIST, "{FFFFFF}Edit your {00C0FF}Journey", "{FFFFFF}Lock the {00C0FF}Journey\n{FFFFFF}Unlock the {00C0FF}Journey\n{FFFFFF}Disown the {00C0FF}Journey", "Select", "Close");
  347.                         }
  348.                         else
  349.                         {
  350.                             vJInfo[vID][Locked] = 0;
  351.                             SendClientMessage(playerid, COLOR_NOTES, "[INFO] You've successfully unlocked your vehicle!");
  352.                         }
  353.                     }
  354.                     case 2:
  355.                     {
  356.                         ResetVehicleInfo(vID);
  357.                         SendClientMessage(playerid, COLOR_NOTES, "[INFO] You've successfully 'disowned' your vehicle!");
  358.                     }
  359.                 }
  360.             }
  361.         }
  362.     }
  363.     return 1;
  364. }
  365.  
  366. //Journey stuff
  367.  
  368. forward Unfreeze(playerid);
  369. public Unfreeze(playerid)
  370. {
  371.     TogglePlayerControllable(playerid, 1);
  372.     return 1;
  373. }
  374.  
  375. stock ResetVehicleInfo(vehicleid)
  376. {
  377.     vJInfo[vehicleid][Owned] = 0, vJInfo[vehicleid][Locked] = 0;
  378.     vJInfo[vehicleid][jvID] = vehicleid;
  379.     foreach(Player, i)
  380.     {
  381.         if(pJInfo[i][jpID] == vJInfo[vehicleid][jvID])
  382.         {
  383.             pJInfo[i][jpID] = -1;
  384.             if(pJInfo[i][InJourney])
  385.             {
  386.                 new Float:X, Float:Y, Float:Z;
  387.                 GetVehiclePos(vehicleid, X, Y, Z);
  388.  
  389.                 SetPlayerPos(i, X, Y+2, Z), SetPlayerVirtualWorld(i, 0);
  390.                 pJInfo[i][InJourney] = 0;
  391.             }
  392.         }
  393.     }
  394. }
  395. stock ResetPlayerInfo(playerid)
  396. {
  397.     pJInfo[playerid][jpID] = -1;
  398.     pJInfo[playerid][InJourney] = 0;
  399.     TimesEntered[playerid] = 0;
  400. }
  401.  
  402. stock RegisterVehicle(playerid, vehicleid)
  403. {
  404.     vJInfo[vehicleid][Owned] = 1, vJInfo[vehicleid][Locked] = 0;
  405.     pJInfo[playerid][jpID] = vehicleid;
  406.     vJInfo[vehicleid][jvID] = vehicleid;
  407.    
  408.     new string[98];
  409.     format(string, sizeof(string), "[INFO] You're now the owner of Journey ID '%d'", pJInfo[playerid][jpID]);
  410.     SendClientMessage(playerid, COLOR_NOTES, string);
  411. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement