Advertisement
System32

S32_MyPickup 1.1.0

Feb 6th, 2012
887
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 23.70 KB | None | 0 0
  1. /*
  2.      ••••    •     •      ••••    •••••     •••••     ••     ••   •••••     •••••
  3.     •         •   •      •          •     •       • •   • •       •   •  •
  4.      ••••      • •        ••••      •     •••     •  • •  •   •••••     •
  5.          •      •             •     •     •       •   •   •       •    •
  6.      ••••        •          ••••      •     •••••   •       •   •••••   •••••
  7. */
  8. #include <a_samp>
  9. #include <a_mysql>
  10. #include <streamer>
  11. #include <foreach>
  12. #include <YSI\y_commands>
  13. #include <YSI\y_timers>
  14.  
  15. #define function%0(%1) forward%0(%1); public%0(%1)
  16. #define MAX_CUSTOM_PICKUPS 100
  17. #define COLOR_KRED          0xFF0000FF
  18. #define COLOR_LIME          0x10F441AA
  19.  
  20. new mpQuery[500], mpstring[128], Iterator: MyPickups<MAX_CUSTOM_PICKUPS>, Timer: CPMPK[MAX_PLAYERS], Text: MyPickupTD[2], Float: NewPos[3], bool: PlayerEditingPickup[MAX_PLAYERS];
  21.  
  22. enum mpInfo
  23. {
  24.     mpModel,
  25.     mpType,
  26.     Float: mpEnterX,
  27.     Float: mpEnterY,
  28.     Float: mpEnterZ,
  29.     mpVehicleModel,
  30.     mpVehicleColor1,
  31.     mpVehicleColor2,
  32.     mpVirtualWorld,
  33.     mpPickup
  34. };
  35. new MyPickupInfo[MAX_CUSTOM_PICKUPS][mpInfo];
  36.  
  37. public OnFilterScriptInit()
  38. {
  39.     print("\n");
  40.     print("  \4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4");
  41.     print("  \4 S32_MyPickup \4");
  42.     print("  \4 by           \4");
  43.     print("  \4 System32     \4");
  44.     print("  \4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\n");
  45.    
  46.     mysql_connect("localhost", "root", "sa:mp", "");
  47.     mysql_debug(1);
  48.    
  49.     MyPickupTD[0] = TextDrawCreate(98.000000, 300.000000, "Use ~r~~h~UP ~w~- ~r~~h~DOWN  LEFT ~w~- ~r~~h~RIGHT  Y ~w~- ~r~~h~N  SPACE ~w~- ~r~~h~ENTER");
  50.     TextDrawBackgroundColor(MyPickupTD[0], 255);
  51.     TextDrawFont(MyPickupTD[0], 1);
  52.     TextDrawLetterSize(MyPickupTD[0], 0.500000, 1.000000);
  53.     TextDrawColor(MyPickupTD[0], -1);
  54.     TextDrawSetOutline(MyPickupTD[0], 0);
  55.     TextDrawSetProportional(MyPickupTD[0], 1);
  56.     TextDrawSetShadow(MyPickupTD[0], 0);
  57.  
  58.     MyPickupTD[1] = TextDrawCreate(650.000000, 300.000000, ".");
  59.     TextDrawBackgroundColor(MyPickupTD[1], 255);
  60.     TextDrawFont(MyPickupTD[1], 1);
  61.     TextDrawLetterSize(MyPickupTD[1], 0.000000, 1.000000);
  62.     TextDrawColor(MyPickupTD[1], -1);
  63.     TextDrawSetOutline(MyPickupTD[1], 0);
  64.     TextDrawSetProportional(MyPickupTD[1], 1);
  65.     TextDrawSetShadow(MyPickupTD[1], 1);
  66.     TextDrawUseBox(MyPickupTD[1], 1);
  67.     TextDrawBoxColor(MyPickupTD[1], 255);
  68.     TextDrawTextSize(MyPickupTD[1], -20.000000, 0.000000);
  69.    
  70.     LoadMyPickups();
  71.     return 1;
  72. }
  73.  
  74. public OnFilterScriptExit()
  75. {
  76.     TextDrawDestroy(MyPickupTD[0]);
  77.     TextDrawDestroy(MyPickupTD[1]);
  78.     return 1;
  79. }
  80.  
  81. public OnPlayerDisconnect(playerid, reason)
  82. {
  83.     PlayerEditingPickup[playerid] = false;
  84.     stop CPMPK[playerid];
  85.     return 1;
  86. }
  87.  
  88. public OnPlayerPickUpDynamicPickup(playerid, pickupid)
  89. {
  90.     foreach(MyPickups, mp)
  91.     {
  92.         if(pickupid == MyPickupInfo[mp][mpPickup])
  93.         {
  94.             if(MyPickupInfo[mp][mpVehicleModel] != 0)
  95.             {
  96.                 if(IsPlayerInAnyVehicle(playerid)) RemovePlayerFromVehicle(playerid), DestroyVehicle(GetPlayerVehicleID(playerid));
  97.                 new Float: Pos[4], Vehicle[MAX_PLAYERS];
  98.                 GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  99.                 GetPlayerFacingAngle(playerid, Pos[3]);
  100.                 Vehicle[playerid] = AddStaticVehicle(MyPickupInfo[mp][mpVehicleModel], Pos[0], Pos[1], Pos[2], Pos[3], MyPickupInfo[mp][mpVehicleColor1], MyPickupInfo[mp][mpVehicleColor2]);
  101.                 PutPlayerInVehicle(playerid, Vehicle[playerid], 0);
  102.             }
  103.         }
  104.     }
  105.     return 1;
  106. }
  107.  
  108. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  109. {
  110.     switch(dialogid)
  111.     {
  112.         case 19000:
  113.         {
  114.             if(!response) return PlayerEditingPickup[playerid] = false, 0;
  115.             switch(listitem)
  116.             {
  117.                 case 0:
  118.                 {
  119.                     ShowPlayerDialog(playerid, 19001, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Model", "{FFFFFF}Enter the new pickup model!", "Ok", "Exit");
  120.                 }
  121.                 case 1:
  122.                 {
  123.                     ShowPlayerDialog(playerid, 19002, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Type", "{FFFFFF}Enter the new pickup type!", "Ok", "Exit");
  124.                 }
  125.                 case 2:
  126.                 {
  127.                     foreach(MyPickups, mp)
  128.                     {
  129.                         if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  130.                         {
  131.                             CPMPK[playerid] = repeat CheckPlayerMyPickupKeys(playerid, mp);
  132.                             TextDrawShowForPlayer(playerid, MyPickupTD[0]);
  133.                             TextDrawShowForPlayer(playerid, MyPickupTD[1]);
  134.                             TogglePlayerControllable(playerid, 0);
  135.                             SetCameraBehindPlayer(playerid);
  136.                         }
  137.                     }
  138.                 }
  139.                 case 3:
  140.                 {
  141.                     ShowPlayerDialog(playerid, 19003, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Vehicle Model", "{FFFFFF}Enter the new vehicle model!", "Ok", "Exit");
  142.                 }
  143.                 case 4:
  144.                 {
  145.                     ShowPlayerDialog(playerid, 19004, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - VirtualWorld", "{FFFFFF}Enter the new pickup virtualworld!", "Ok", "Exit");
  146.                 }
  147.                 case 5:
  148.                 {
  149.                     foreach(MyPickups, mp)
  150.                     {
  151.                         if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  152.                         {
  153.                             if(MyPickupInfo[mp][mpVehicleModel] == 0) return SendClientMessage(playerid, COLOR_KRED, "This pickup is static (No vehicle model)"), ShowPlayerMyPickupDialog(playerid, mp);
  154.                             ShowPlayerDialog(playerid, 19005, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Color 1", "Enter the ID of color 1", "Ok", "Exit");
  155.                         }
  156.                     }
  157.                 }
  158.                 case 6:
  159.                 {
  160.                     foreach(MyPickups, mp)
  161.                     {
  162.                         if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  163.                         {
  164.                             if(MyPickupInfo[mp][mpVehicleModel] == 0) return SendClientMessage(playerid, COLOR_KRED, "This pickup is static (No vehicle model)"), ShowPlayerMyPickupDialog(playerid, mp);
  165.                             ShowPlayerDialog(playerid, 19006, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Color 2", "Enter the ID of color 2", "Ok", "Exit");
  166.                         }
  167.                     }
  168.                 }
  169.                 case 7:
  170.                 {
  171.                     ShowPlayerDialog(playerid, 19007, DIALOG_STYLE_MSGBOX, "{FFFFFF}System32's Pickup Creator - Remove", "{FFFFFF}Are you sure you want remove this pickup?", "Yes", "No");
  172.                 }
  173.             }
  174.         }
  175.         case 19001:
  176.         {
  177.             foreach(MyPickups, mp)
  178.             {
  179.                 if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  180.                 {
  181.                     if(!response) return ShowPlayerMyPickupDialog(playerid, mp);
  182.                     if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 19001, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Model", "{FFFFFF}Enter the new pickup model!", "Ok", "Exit");
  183.                     if(!IsValidPickupID(strval(inputtext)))
  184.                     {
  185.                         SendClientMessage(playerid, COLOR_KRED, "Invalid pickup ID!");
  186.                         return ShowPlayerDialog(playerid, 19001, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Model", "{FFFFFF}Enter the new pickup model!", "Ok", "Exit");
  187.                     }
  188.                    
  189.                     MyPickupInfo[mp][mpModel] = strval(inputtext);
  190.                    
  191.                     format(mpstring, sizeof(mpstring), "Model is changed to: %d", strval(inputtext));
  192.                     SendClientMessage(playerid, COLOR_LIME, mpstring);
  193.                     ShowPlayerMyPickupDialog(playerid, mp);
  194.                    
  195.                     UpdateDynamicPickup(playerid);
  196.                    
  197.                     mysql_format(1, mpQuery, "UPDATE `mypickups` SET `Model` = %d WHERE `Pickup ID` = %d", strval(inputtext), mp);
  198.                     mysql_query(mpQuery);
  199.                 }
  200.             }
  201.         }
  202.         case 19002:
  203.         {
  204.             foreach(MyPickups, mp)
  205.             {
  206.                 if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  207.                 {
  208.                     if(!response) return ShowPlayerMyPickupDialog(playerid, mp);
  209.                     if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 19002, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Type", "{FFFFFF}Enter the new pickup type!", "Ok", "Exit");
  210.                     if(strval(inputtext) < 0 || strval(inputtext) > 23)
  211.                     {
  212.                         SendClientMessage(playerid, COLOR_KRED, "Invalid model! (0- 23)");
  213.                         return ShowPlayerDialog(playerid, 19002, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Type", "{FFFFFF}Enter the new pickup type!", "Ok", "Exit");
  214.                     }
  215.  
  216.                     MyPickupInfo[mp][mpType] = strval(inputtext);
  217.  
  218.                     format(mpstring, sizeof(mpstring), "Type is changed to: %d", strval(inputtext));
  219.                     SendClientMessage(playerid, COLOR_LIME, mpstring);
  220.                     ShowPlayerMyPickupDialog(playerid, mp);
  221.                    
  222.                     UpdateDynamicPickup(playerid);
  223.  
  224.                     mysql_format(1, mpQuery, "UPDATE `mypickups` SET `Type` = %d WHERE `Pickup ID` = %d", strval(inputtext), mp);
  225.                     mysql_query(mpQuery);
  226.                 }
  227.             }
  228.         }
  229.         case 19003:
  230.         {
  231.             foreach(MyPickups, mp)
  232.             {
  233.                 if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  234.                 {
  235.                     if(!response) return ShowPlayerMyPickupDialog(playerid, mp);
  236.                     if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 19003, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Vehicle Model", "{FFFFFF}Enter the new vehicle model!", "Ok", "Exit");
  237.                     if(strval(inputtext) == 0)
  238.                     {
  239.                         MyPickupInfo[mp][mpVehicleModel] = 0;
  240.  
  241.                         SendClientMessage(playerid, COLOR_LIME, "Vehicle model is changed to: 0");
  242.                         ShowPlayerMyPickupDialog(playerid, mp);
  243.  
  244.                         mysql_format(1, mpQuery, "UPDATE `mypickups` SET `Vehicle Model` = 0 WHERE `Pickup ID` = %d", mp);
  245.                         return mysql_query(mpQuery);
  246.                     }
  247.                     if(strval(inputtext) < 400 || strval(inputtext) > 611)
  248.                     {
  249.                         SendClientMessage(playerid, COLOR_KRED, "Invalid vehicle model! (400 - 611)");
  250.                         return ShowPlayerDialog(playerid, 19003, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Vehicle Model", "{FFFFFF}Enter the new vehicle model!", "Ok", "Exit");
  251.                     }
  252.  
  253.                     MyPickupInfo[mp][mpVehicleModel] = strval(inputtext);
  254.  
  255.                     format(mpstring, sizeof(mpstring), "Vehicle model is changed to: %d", strval(inputtext));
  256.                     SendClientMessage(playerid, COLOR_LIME, mpstring);
  257.                     ShowPlayerMyPickupDialog(playerid, mp);
  258.  
  259.                     mysql_format(1, mpQuery, "UPDATE `mypickups` SET `Vehicle Model` = %d WHERE `Pickup ID` = %d", strval(inputtext), mp);
  260.                     mysql_query(mpQuery);
  261.                 }
  262.             }
  263.         }
  264.         case 19004:
  265.         {
  266.             foreach(MyPickups, mp)
  267.             {
  268.                 if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  269.                 {
  270.                     if(!response) return ShowPlayerMyPickupDialog(playerid, mp);
  271.                     if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 19004, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - VirtualWorld", "{FFFFFF}Enter the new pickup virtualworld!", "Ok", "Exit");
  272.                     if(strval(inputtext) < -1 || strval(inputtext) > 2147483647) // 2147483647 is max number of virtualworlds
  273.                     {
  274.                         SendClientMessage(playerid, COLOR_KRED, "Invalid virtualworld ID! (-1 - 2147483647)");
  275.                         return ShowPlayerDialog(playerid, 19004, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - VirtualWorld", "{FFFFFF}Enter the new pickup virtualworld!", "Ok", "Exit");
  276.                     }
  277.  
  278.                     MyPickupInfo[mp][mpVirtualWorld] = strval(inputtext);
  279.  
  280.                     format(mpstring, sizeof(mpstring), "Virtualworld is changed to: %d", strval(inputtext));
  281.                     SendClientMessage(playerid, COLOR_LIME, mpstring);
  282.                     ShowPlayerMyPickupDialog(playerid, mp);
  283.                    
  284.                     UpdateDynamicPickup(playerid);
  285.  
  286.                     format(mpQuery, sizeof(mpQuery), "UPDATE `mypickups` SET `VirtualWorld` = %d WHERE `Pickup ID` = %d", strval(inputtext), mp);
  287.                     mysql_query(mpQuery);
  288.                 }
  289.             }
  290.         }
  291.         case 19005:
  292.         {
  293.             foreach(MyPickups, mp)
  294.             {
  295.                 if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  296.                 {
  297.                     if(!IsValidColorID(strval(inputtext))) return SendClientMessage(playerid, COLOR_KRED, "Invalid color ID!"), ShowPlayerDialog(playerid, 19005, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Color 1", "Enter the ID of color 1", "Ok", "Exit");
  298.  
  299.                     MyPickupInfo[mp][mpVehicleColor1] = strval(inputtext);
  300.                     format(mpstring, sizeof(mpstring), "Vehicle color 1 is changed to: %d", strval(inputtext));
  301.                     SendClientMessage(playerid, COLOR_LIME, mpstring);
  302.                     ShowPlayerMyPickupDialog(playerid, mp);
  303.                    
  304.                     mysql_format(1, mpQuery, "UPDATE `mypickups` SET `Vehicle Color 1` = %d WHERE `Pickup ID` = %d", strval(inputtext), mp);
  305.                     mysql_query(mpQuery);
  306.                 }
  307.             }
  308.         }
  309.         case 19006:
  310.         {
  311.             foreach(MyPickups, mp)
  312.             {
  313.                 if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  314.                 {
  315.                     if(!IsValidColorID(strval(inputtext))) return SendClientMessage(playerid, COLOR_KRED, "Invalid color ID!"), ShowPlayerDialog(playerid, 19005, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Color 1", "Enter the ID of color 1", "Ok", "Exit");
  316.  
  317.                     MyPickupInfo[mp][mpVehicleColor2] = strval(inputtext);
  318.                     format(mpstring, sizeof(mpstring), "Vehicle color 2 is changed to: %d", strval(inputtext));
  319.                     SendClientMessage(playerid, COLOR_LIME, mpstring);
  320.                     ShowPlayerMyPickupDialog(playerid, mp);
  321.  
  322.                     mysql_format(1, mpQuery, "UPDATE `mypickups` SET `Vehicle Color 2` = %d WHERE `Pickup ID` = %d", strval(inputtext), mp);
  323.                     mysql_query(mpQuery);
  324.                 }
  325.             }
  326.         }
  327.         case 19007:
  328.         {
  329.             foreach(MyPickups, mp)
  330.             {
  331.                 if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  332.                 {
  333.                     if(!response) return ShowPlayerMyPickupDialog(playerid, mp);
  334.                    
  335.                     MyPickupInfo[mp][mpModel] = 0;
  336.                     MyPickupInfo[mp][mpType] = 0;
  337.                     MyPickupInfo[mp][mpEnterX] = 0.0;
  338.                     MyPickupInfo[mp][mpEnterY] = 0.0;
  339.                     MyPickupInfo[mp][mpEnterZ] = 0.0;
  340.                     MyPickupInfo[mp][mpVehicleModel] = 0;
  341.                     MyPickupInfo[mp][mpVehicleColor1] = 0;
  342.                     MyPickupInfo[mp][mpVehicleColor2] = 0;
  343.                     MyPickupInfo[mp][mpVirtualWorld] = 0;
  344.                     DestroyPickup(MyPickupInfo[mp][mpPickup]);
  345.                    
  346.                     SendClientMessage(playerid, COLOR_LIME, "Pickup at your position is removed");
  347.                    
  348.                     mysql_format(1, mpQuery, "DELETE FROM `mypickups` WHERE `Pickup ID` = %d", mp);
  349.                     mysql_query(mpQuery);
  350.                    
  351.                     Iter_Remove(MyPickups, mp);
  352.                 }
  353.             }
  354.         }
  355.     }
  356.     return 1;
  357. }
  358.  
  359. function LoadMyPickups()
  360. {
  361.     new largestring[512], MyPickupsCount, Duration = GetTickCount();
  362.     for(new mp = 0; mp < MAX_CUSTOM_PICKUPS; mp++)
  363.     {
  364.         mysql_format(1, mpQuery, "SELECT * FROM `mypickups` WHERE `Pickup ID` = %d", mp);
  365.         mysql_query(mpQuery);
  366.         mysql_store_result();
  367.         if(mysql_num_rows() == 1)
  368.         {
  369.             if(mysql_fetch_row_format(mpQuery, "|"))
  370.             {
  371.                 mysql_fetch_field_row(largestring, "Model"); MyPickupInfo[mp][mpModel] = strval(largestring);
  372.                 mysql_fetch_field_row(largestring, "Type"); MyPickupInfo[mp][mpType] = strval(largestring);
  373.                 mysql_fetch_field_row(largestring, "EnterX"); MyPickupInfo[mp][mpEnterX] = floatstr(largestring);
  374.                 mysql_fetch_field_row(largestring, "EnterY"); MyPickupInfo[mp][mpEnterY] = floatstr(largestring);
  375.                 mysql_fetch_field_row(largestring, "EnterZ"); MyPickupInfo[mp][mpEnterZ] = floatstr(largestring);
  376.                 mysql_fetch_field_row(largestring, "Vehicle Model"); MyPickupInfo[mp][mpVehicleModel] = strval(largestring);
  377.                 mysql_fetch_field_row(largestring, "Vehicle Color 1"); MyPickupInfo[mp][mpVehicleColor1] = strval(largestring);
  378.                 mysql_fetch_field_row(largestring, "Vehicle Color 2"); MyPickupInfo[mp][mpVehicleColor2] = strval(largestring);
  379.                 mysql_fetch_field_row(largestring, "VirtualWorld"); MyPickupInfo[mp][mpVirtualWorld] = strval(largestring);
  380.  
  381.                 MyPickupInfo[mp][mpPickup] = CreateDynamicPickup(MyPickupInfo[mp][mpModel], MyPickupInfo[mp][mpType], MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ], MyPickupInfo[mp][mpVirtualWorld]);
  382.  
  383.                 Iter_Add(MyPickups, mp);
  384.                 MyPickupsCount ++;
  385.             }
  386.         }
  387.         mysql_free_result();
  388.     }
  389.     return printf("Total number of dynamic pickups loaded: %d | Duration: %d ms", MyPickupsCount, (GetTickCount() - Duration));
  390. }
  391.  
  392. function GetTotalMyPickups() return Iter_Count(MyPickups);
  393.  
  394. function ShowPlayerMyPickupDialog(playerid, pickupid)
  395. {
  396.     format(mpstring, sizeof(mpstring), "{FFFFFF}System32's Pickup Creator - Main | (%d)", pickupid);
  397.     ShowPlayerDialog(playerid, 19000, DIALOG_STYLE_LIST, mpstring, "{FFFFFF}Model\nType\nPosition\nVehicle Model\nVirtualWorld\nVehicle Color 1\nVehicle Color 2\nRemove pickup", "Ok", "Exit");
  398.     return 1;
  399. }
  400.  
  401. function IsValidPickupID(pickupid)
  402. {
  403.     switch(pickupid)
  404.     {
  405.         case 1240: return 1;
  406.         case 1242: return 1;
  407.         case 1239: return 1;
  408.         case 1272: return 1;
  409.         case 1273: return 1;
  410.         case 1212: return 1;
  411.         case 1241: return 1;
  412.         case 1247: return 1;
  413.         case 1248: return 1;
  414.         case 1252: return 1;
  415.         case 1253: return 1;
  416.         case 1254: return 1;
  417.         case 1274: return 1;
  418.         case 1275: return 1;
  419.         case 1277: return 1;
  420.         case 1313: return 1;
  421.         case 1314: return 1;
  422.         case 1276: return 1;
  423.         case 1310: return 1;
  424.         case 1318: return 1;
  425.         case 1279: return 1;
  426.         default: return 0;
  427.     }
  428.     return 0;
  429. }
  430.  
  431. function UpdateDynamicPickup(playerid)
  432. {
  433.     foreach(MyPickups, mp)
  434.     {
  435.         if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  436.         {
  437.             DestroyDynamicPickup(MyPickupInfo[mp][mpPickup]);
  438.             MyPickupInfo[mp][mpPickup] = CreateDynamicPickup(MyPickupInfo[mp][mpModel], MyPickupInfo[mp][mpType], MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ], MyPickupInfo[mp][mpVirtualWorld]);
  439.         }
  440.     }
  441.     return 1;
  442. }
  443.  
  444. function UpdateDynamicPickupEx(playerid, pickupid, Float: X, Float: Y, Float: Z)
  445. {
  446.     DestroyDynamicPickup(MyPickupInfo[pickupid][mpPickup]);
  447.     MyPickupInfo[pickupid][mpPickup] = CreateDynamicPickup(MyPickupInfo[pickupid][mpModel], MyPickupInfo[pickupid][mpType], X, Y, Z, MyPickupInfo[pickupid][mpVirtualWorld]);
  448.     return 1;
  449. }
  450.  
  451. function IsValidColorID(colorid)
  452. {
  453.     switch(colorid)
  454.     {
  455.         case 0 .. 126, 130, 131, 132, 142, 144, 146 .. 161, 173, 174, 175, 236, 237, 239, 243, 252: return 1;
  456.         default: return 0;
  457.     }
  458.     return 0;
  459. }
  460.  
  461. YCMD:createpickup(playerid, params[], help)
  462. {
  463.     #pragma unused help
  464.     #pragma unused params
  465.     if(PlayerEditingPickup[playerid] == true) return SendClientMessage(playerid, COLOR_KRED, "Please finish current editing!");
  466.     if(GetTotalMyPickups() > MAX_CUSTOM_PICKUPS) return format(mpstring, sizeof(mpstring), "Max pickups is %d", MAX_CUSTOM_PICKUPS), SendClientMessage(playerid, COLOR_KRED, mpstring);
  467.  
  468.     new mp, Float: Pos[4];
  469.     mysql_format(1, mpQuery, "SELECT `Pickup ID` FROM `mypickups` ORDER BY `Pickup ID` DESC LIMIT 1");
  470.     mysql_query(mpQuery);
  471.     mysql_store_result();
  472.     mp = mysql_fetch_int();
  473.     mp++;
  474.     mysql_free_result();
  475.    
  476.     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  477.     MyPickupInfo[mp][mpModel] = 1239;
  478.     MyPickupInfo[mp][mpType] = 23;
  479.     MyPickupInfo[mp][mpEnterX] = Pos[0];
  480.     MyPickupInfo[mp][mpEnterY] = Pos[1];
  481.     MyPickupInfo[mp][mpEnterZ] = Pos[2];
  482.     MyPickupInfo[mp][mpVehicleModel] = 0;
  483.     MyPickupInfo[mp][mpVehicleColor1] = 0;
  484.     MyPickupInfo[mp][mpVehicleColor2] = 0;
  485.     MyPickupInfo[mp][mpVirtualWorld] = 0;
  486.     MyPickupInfo[mp][mpPickup] = CreateDynamicPickup(1239, 23, Pos[0], Pos[1], Pos[2], -1);
  487.    
  488.     mysql_format(1, mpQuery, "INSERT INTO `mypickups` (`Model`, `Type`, `EnterX`, `EnterY`, `EnterZ`, `Vehicle Model`, `Vehicle Color 1`, `Vehicle Color 2`, `VirtualWorld`, `Pickup ID`) VALUES (1239, 23, %f, %f, %f, 0, 0, 0, -1, %d)", Pos[0], Pos[1], Pos[2], mp);
  489.     mysql_query(mpQuery);
  490.    
  491.     SendClientMessage(playerid, COLOR_LIME, "New dynamic pickup created on your location!");
  492.     PlayerEditingPickup[playerid] = true;
  493.     ShowPlayerMyPickupDialog(playerid, mp);
  494.    
  495.     Iter_Add(MyPickups, mp);
  496.     return 1;
  497. }
  498.  
  499. YCMD:editpickup(playerid, params[], help)
  500. {
  501.     #pragma unused help
  502.     #pragma unused params
  503.     foreach(MyPickups, mp)
  504.     {
  505.         if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  506.         {
  507.             if(PlayerEditingPickup[playerid] == true) return SendClientMessage(playerid, COLOR_KRED, "Please finish current editing!");
  508.             SendClientMessage(playerid, COLOR_LIME, "You are editing pickup at your position!");
  509.             PlayerEditingPickup[playerid] = true;
  510.             ShowPlayerMyPickupDialog(playerid, mp);
  511.         }
  512.     }
  513.     return 1;
  514. }
  515.  
  516. timer CheckPlayerMyPickupKeys[200](playerid, pickupid)
  517. {
  518.     new keys, ud, lr;
  519.     GetPlayerKeys(playerid, keys, ud, lr);
  520.     if(ud > 0)
  521.     {
  522.         if(keys == KEY_SPRINT) NewPos[0] += 1.0;
  523.         else NewPos[0] += 0.1;
  524.         UpdateDynamicPickupEx(playerid, pickupid, MyPickupInfo[pickupid][mpEnterX] + NewPos[0], MyPickupInfo[pickupid][mpEnterY] + NewPos[1], MyPickupInfo[pickupid][mpEnterZ] + NewPos[2]);
  525.     }
  526.     else if(ud < 0)
  527.     {
  528.         if(keys == KEY_SPRINT) NewPos[0] -= 1.0;
  529.         else NewPos[0] -= 0.1;
  530.         UpdateDynamicPickupEx(playerid, pickupid, MyPickupInfo[pickupid][mpEnterX] + NewPos[0], MyPickupInfo[pickupid][mpEnterY] + NewPos[1], MyPickupInfo[pickupid][mpEnterZ] + NewPos[2]);
  531.     }
  532.     if(lr > 0)
  533.     {
  534.         if(keys == KEY_SPRINT) NewPos[1] += 1.0;
  535.         else NewPos[1] += 0.1;
  536.         UpdateDynamicPickupEx(playerid, pickupid, MyPickupInfo[pickupid][mpEnterX] + NewPos[0], MyPickupInfo[pickupid][mpEnterY] + NewPos[1], MyPickupInfo[pickupid][mpEnterZ] + NewPos[2]);
  537.     }
  538.     else if(lr < 0)
  539.     {
  540.         if(keys == KEY_SPRINT) NewPos[1] -= 1.0;
  541.         else NewPos[1] -= 0.1;
  542.         UpdateDynamicPickupEx(playerid, pickupid, MyPickupInfo[pickupid][mpEnterX] + NewPos[0], MyPickupInfo[pickupid][mpEnterY] + NewPos[1], MyPickupInfo[pickupid][mpEnterZ] + NewPos[2]);
  543.     }
  544.     if(keys == KEY_YES)
  545.     {
  546.         NewPos[2] += 0.1;
  547.         UpdateDynamicPickupEx(playerid, pickupid, MyPickupInfo[pickupid][mpEnterX] + NewPos[0], MyPickupInfo[pickupid][mpEnterY] + NewPos[1], MyPickupInfo[pickupid][mpEnterZ] + NewPos[2]);
  548.     }
  549.     else if(keys == KEY_NO)
  550.     {
  551.         NewPos[2] -= 0.1;
  552.         UpdateDynamicPickupEx(playerid, pickupid, MyPickupInfo[pickupid][mpEnterX] + NewPos[0], MyPickupInfo[pickupid][mpEnterY] + NewPos[1], MyPickupInfo[pickupid][mpEnterZ] + NewPos[2]);
  553.     }
  554.     if(keys == KEY_SECONDARY_ATTACK)
  555.     {
  556.         TogglePlayerControllable(playerid, 1);
  557.         SetCameraBehindPlayer(playerid);
  558.         TextDrawHideForPlayer(playerid, MyPickupTD[0]);
  559.         TextDrawHideForPlayer(playerid, MyPickupTD[1]);
  560.         MyPickupInfo[pickupid][mpEnterX] += NewPos[0];
  561.         MyPickupInfo[pickupid][mpEnterY] += NewPos[1];
  562.         MyPickupInfo[pickupid][mpEnterZ] += NewPos[2];
  563.  
  564.         format(mpstring, sizeof(mpstring), "New position of pickup is: X: %f Y: %f Z: %f", MyPickupInfo[pickupid][mpEnterX], MyPickupInfo[pickupid][mpEnterY], MyPickupInfo[pickupid][mpEnterZ]);
  565.         SendClientMessage(playerid, COLOR_LIME, mpstring);
  566.  
  567.         PlayerEditingPickup[playerid] = false;
  568.        
  569.         mysql_format(1, mpQuery, "UPDATE `mypickups` SET `EnterX` = %f, `EnterY` = %f, `EnterZ` = %f WHERE `Pickup ID` = %d", MyPickupInfo[pickupid][mpEnterX], MyPickupInfo[pickupid][mpEnterY], MyPickupInfo[pickupid][mpEnterZ], pickupid);
  570.         mysql_query(mpQuery);
  571.         stop CPMPK[playerid];
  572.     }
  573.     return 1;
  574. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement