Advertisement
System32

S32_MyPickup

Feb 4th, 2012
447
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 23.34 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) < 400 || strval(inputtext) > 611)
  238.                     {
  239.                         SendClientMessage(playerid, COLOR_KRED, "Invalid vehicle model! (400 - 611)");
  240.                         return ShowPlayerDialog(playerid, 19003, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - Vehicle Model", "{FFFFFF}Enter the new vehicle model!", "Ok", "Exit");
  241.                     }
  242.  
  243.                     MyPickupInfo[mp][mpVehicleModel] = strval(inputtext);
  244.  
  245.                     format(mpstring, sizeof(mpstring), "Vehicle model is changed to: %d", strval(inputtext));
  246.                     SendClientMessage(playerid, COLOR_LIME, mpstring);
  247.                     ShowPlayerMyPickupDialog(playerid, mp);
  248.  
  249.                     mysql_format(1, mpQuery, "UPDATE `mypickups` SET `Vehicle Model` = %d WHERE `Pickup ID` = %d", strval(inputtext), mp);
  250.                     mysql_query(mpQuery);
  251.                 }
  252.             }
  253.         }
  254.         case 19004:
  255.         {
  256.             foreach(MyPickups, mp)
  257.             {
  258.                 if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  259.                 {
  260.                     if(!response) return ShowPlayerMyPickupDialog(playerid, mp);
  261.                     if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 19004, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - VirtualWorld", "{FFFFFF}Enter the new pickup virtualworld!", "Ok", "Exit");
  262.                     if(strval(inputtext) < -1 || strval(inputtext) > 2147483647) // 2147483647 is max number of virtualworlds
  263.                     {
  264.                         SendClientMessage(playerid, COLOR_KRED, "Invalid virtualworld ID! (-1 - 2147483647)");
  265.                         return ShowPlayerDialog(playerid, 19004, DIALOG_STYLE_INPUT, "{FFFFFF}System32's Pickup Creator - VirtualWorld", "{FFFFFF}Enter the new pickup virtualworld!", "Ok", "Exit");
  266.                     }
  267.  
  268.                     MyPickupInfo[mp][mpVirtualWorld] = strval(inputtext);
  269.  
  270.                     format(mpstring, sizeof(mpstring), "Virtualworld is changed to: %d", strval(inputtext));
  271.                     SendClientMessage(playerid, COLOR_LIME, mpstring);
  272.                     ShowPlayerMyPickupDialog(playerid, mp);
  273.                    
  274.                     UpdateDynamicPickup(playerid);
  275.  
  276.                     format(mpQuery, sizeof(mpQuery), "UPDATE `mypickups` SET `VirtualWorld` = %d WHERE `Pickup ID` = %d", strval(inputtext), mp);
  277.                     mysql_query(mpQuery);
  278.                 }
  279.             }
  280.         }
  281.         case 19005:
  282.         {
  283.             foreach(MyPickups, mp)
  284.             {
  285.                 if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  286.                 {
  287.                     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");
  288.  
  289.                     MyPickupInfo[mp][mpVehicleColor1] = strval(inputtext);
  290.                     format(mpstring, sizeof(mpstring), "Vehicle color 1 is changed to: %d", strval(inputtext));
  291.                     SendClientMessage(playerid, COLOR_LIME, mpstring);
  292.                     ShowPlayerMyPickupDialog(playerid, mp);
  293.                    
  294.                     mysql_format(1, mpQuery, "UPDATE `mypickups` SET `Vehicle Color 1` = %d WHERE `Pickup ID` = %d", strval(inputtext), mp);
  295.                     mysql_query(mpQuery);
  296.                 }
  297.             }
  298.         }
  299.         case 19006:
  300.         {
  301.             foreach(MyPickups, mp)
  302.             {
  303.                 if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  304.                 {
  305.                     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");
  306.  
  307.                     MyPickupInfo[mp][mpVehicleColor2] = strval(inputtext);
  308.                     format(mpstring, sizeof(mpstring), "Vehicle color 2 is changed to: %d", strval(inputtext));
  309.                     SendClientMessage(playerid, COLOR_LIME, mpstring);
  310.                     ShowPlayerMyPickupDialog(playerid, mp);
  311.  
  312.                     mysql_format(1, mpQuery, "UPDATE `mypickups` SET `Vehicle Color 2` = %d WHERE `Pickup ID` = %d", strval(inputtext), mp);
  313.                     mysql_query(mpQuery);
  314.                 }
  315.             }
  316.         }
  317.         case 19007:
  318.         {
  319.             foreach(MyPickups, mp)
  320.             {
  321.                 if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  322.                 {
  323.                     if(!response) return ShowPlayerMyPickupDialog(playerid, mp);
  324.                    
  325.                     MyPickupInfo[mp][mpModel] = 0;
  326.                     MyPickupInfo[mp][mpType] = 0;
  327.                     MyPickupInfo[mp][mpEnterX] = 0.0;
  328.                     MyPickupInfo[mp][mpEnterY] = 0.0;
  329.                     MyPickupInfo[mp][mpEnterZ] = 0.0;
  330.                     MyPickupInfo[mp][mpVehicleModel] = 0;
  331.                     MyPickupInfo[mp][mpVehicleColor1] = 0;
  332.                     MyPickupInfo[mp][mpVehicleColor2] = 0;
  333.                     MyPickupInfo[mp][mpVirtualWorld] = 0;
  334.                     DestroyPickup(MyPickupInfo[mp][mpPickup]);
  335.                    
  336.                     SendClientMessage(playerid, COLOR_LIME, "Pickup at your position is removed");
  337.                    
  338.                     mysql_format(1, mpQuery, "DELETE FROM `mypickups` WHERE `Pickup ID` = %d", mp);
  339.                     mysql_query(mpQuery);
  340.                    
  341.                     Iter_Remove(MyPickups, mp);
  342.                 }
  343.             }
  344.         }
  345.     }
  346.     return 1;
  347. }
  348.  
  349. function LoadMyPickups()
  350. {
  351.     new largestring[512], MyPickupsCount, Duration = GetTickCount();
  352.     for(new mp = 0; mp < MAX_CUSTOM_PICKUPS; mp++)
  353.     {
  354.         mysql_format(1, mpQuery, "SELECT * FROM `mypickups` WHERE `Pickup ID` = %d", mp);
  355.         mysql_query(mpQuery);
  356.         mysql_store_result();
  357.         if(mysql_num_rows() == 1)
  358.         {
  359.             if(mysql_fetch_row_format(mpQuery, "|"))
  360.             {
  361.                 mysql_fetch_field_row(largestring, "Model"); MyPickupInfo[mp][mpModel] = strval(largestring);
  362.                 mysql_fetch_field_row(largestring, "Type"); MyPickupInfo[mp][mpType] = strval(largestring);
  363.                 mysql_fetch_field_row(largestring, "EnterX"); MyPickupInfo[mp][mpEnterX] = floatstr(largestring);
  364.                 mysql_fetch_field_row(largestring, "EnterY"); MyPickupInfo[mp][mpEnterY] = floatstr(largestring);
  365.                 mysql_fetch_field_row(largestring, "EnterZ"); MyPickupInfo[mp][mpEnterZ] = floatstr(largestring);
  366.                 mysql_fetch_field_row(largestring, "Vehicle Model"); MyPickupInfo[mp][mpVehicleModel] = strval(largestring);
  367.                 mysql_fetch_field_row(largestring, "Vehicle Color 1"); MyPickupInfo[mp][mpVehicleColor1] = strval(largestring);
  368.                 mysql_fetch_field_row(largestring, "Vehicle Color 2"); MyPickupInfo[mp][mpVehicleColor2] = strval(largestring);
  369.                 mysql_fetch_field_row(largestring, "VirtualWorld"); MyPickupInfo[mp][mpVirtualWorld] = strval(largestring);
  370.  
  371.                 MyPickupInfo[mp][mpPickup] = CreateDynamicPickup(MyPickupInfo[mp][mpModel], MyPickupInfo[mp][mpType], MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ], MyPickupInfo[mp][mpVirtualWorld]);
  372.  
  373.                 Iter_Add(MyPickups, mp);
  374.                 MyPickupsCount ++;
  375.             }
  376.         }
  377.         mysql_free_result();
  378.     }
  379.     return printf("Total number of dynamic pickups loaded: %d | Duration: %d ms", MyPickupsCount, (GetTickCount() - Duration));
  380. }
  381.  
  382. function GetTotalMyPickups() return Iter_Count(MyPickups);
  383.  
  384. function ShowPlayerMyPickupDialog(playerid, pickupid)
  385. {
  386.     format(mpstring, sizeof(mpstring), "{FFFFFF}System32's Pickup Creator - Main | (%d)", pickupid);
  387.     ShowPlayerDialog(playerid, 19000, DIALOG_STYLE_LIST, mpstring, "{FFFFFF}Model\nType\nPosition\nVehicle Model\nVirtualWorld\nVehicle Color 1\nVehicle Color 2\nRemove pickup", "Ok", "Exit");
  388.     return 1;
  389. }
  390.  
  391. function IsValidPickupID(pickupid)
  392. {
  393.     switch(pickupid)
  394.     {
  395.         case 1240: return 1;
  396.         case 1242: return 1;
  397.         case 1239: return 1;
  398.         case 1272: return 1;
  399.         case 1273: return 1;
  400.         case 1212: return 1;
  401.         case 1241: return 1;
  402.         case 1247: return 1;
  403.         case 1248: return 1;
  404.         case 1252: return 1;
  405.         case 1253: return 1;
  406.         case 1254: return 1;
  407.         case 1274: return 1;
  408.         case 1275: return 1;
  409.         case 1277: return 1;
  410.         case 1313: return 1;
  411.         case 1314: return 1;
  412.         case 1276: return 1;
  413.         case 1310: return 1;
  414.         case 1318: return 1;
  415.         case 1279: return 1;
  416.         default: return 0;
  417.     }
  418.     return 0;
  419. }
  420.  
  421. function UpdateDynamicPickup(playerid)
  422. {
  423.     foreach(MyPickups, mp)
  424.     {
  425.         if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  426.         {
  427.             DestroyDynamicPickup(MyPickupInfo[mp][mpPickup]);
  428.             MyPickupInfo[mp][mpPickup] = CreateDynamicPickup(MyPickupInfo[mp][mpModel], MyPickupInfo[mp][mpType], MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ], MyPickupInfo[mp][mpVirtualWorld]);
  429.         }
  430.     }
  431.     return 1;
  432. }
  433.  
  434. function UpdateDynamicPickupEx(playerid, pickupid, Float: X, Float: Y, Float: Z)
  435. {
  436.     DestroyDynamicPickup(MyPickupInfo[pickupid][mpPickup]);
  437.     MyPickupInfo[pickupid][mpPickup] = CreateDynamicPickup(MyPickupInfo[pickupid][mpModel], MyPickupInfo[pickupid][mpType], X, Y, Z, MyPickupInfo[pickupid][mpVirtualWorld]);
  438.     return 1;
  439. }
  440.  
  441. function IsValidColorID(colorid)
  442. {
  443.     switch(colorid)
  444.     {
  445.         case 0 .. 126, 130, 131, 132, 142, 144, 146 .. 161, 173, 174, 175, 236, 237, 239, 243, 252: return 1;
  446.         default: return 0;
  447.     }
  448.     return 0;
  449. }
  450.  
  451. YCMD:createpickup(playerid, params[], help)
  452. {
  453.     #pragma unused help
  454.     #pragma unused params
  455.     if(PlayerEditingPickup[playerid] == true) return SendClientMessage(playerid, COLOR_KRED, "Please finish current editing!");
  456.     if(GetTotalMyPickups() > MAX_CUSTOM_PICKUPS) return format(mpstring, sizeof(mpstring), "Max pickups is %d", MAX_CUSTOM_PICKUPS), SendClientMessage(playerid, COLOR_KRED, mpstring);
  457.  
  458.     new mp, Float: Pos[4];
  459.     mysql_format(1, mpQuery, "SELECT `Pickup ID` FROM `mypickups` ORDER BY `Pickup ID` DESC LIMIT 1");
  460.     mysql_query(mpQuery);
  461.     mysql_store_result();
  462.     mp = mysql_fetch_int();
  463.     mp++;
  464.     mysql_free_result();
  465.    
  466.     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  467.     MyPickupInfo[mp][mpModel] = 1239;
  468.     MyPickupInfo[mp][mpType] = 23;
  469.     MyPickupInfo[mp][mpEnterX] = Pos[0];
  470.     MyPickupInfo[mp][mpEnterY] = Pos[1];
  471.     MyPickupInfo[mp][mpEnterZ] = Pos[2];
  472.     MyPickupInfo[mp][mpVehicleModel] = 0;
  473.     MyPickupInfo[mp][mpVehicleColor1] = 0;
  474.     MyPickupInfo[mp][mpVehicleColor2] = 0;
  475.     MyPickupInfo[mp][mpVirtualWorld] = 0;
  476.     MyPickupInfo[mp][mpPickup] = CreateDynamicPickup(1239, 23, Pos[0], Pos[1], Pos[2], -1);
  477.    
  478.     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);
  479.     mysql_query(mpQuery);
  480.    
  481.     SendClientMessage(playerid, COLOR_LIME, "New dynamic pickup created on your location!");
  482.     PlayerEditingPickup[playerid] = true;
  483.     ShowPlayerMyPickupDialog(playerid, mp);
  484.    
  485.     Iter_Add(MyPickups, mp);
  486.     return 1;
  487. }
  488.  
  489. YCMD:editpickup(playerid, params[], help)
  490. {
  491.     #pragma unused help
  492.     #pragma unused params
  493.     foreach(MyPickups, mp)
  494.     {
  495.         if(IsPlayerInRangeOfPoint(playerid, 2.0, MyPickupInfo[mp][mpEnterX], MyPickupInfo[mp][mpEnterY], MyPickupInfo[mp][mpEnterZ]))
  496.         {
  497.             if(PlayerEditingPickup[playerid] == true) return SendClientMessage(playerid, COLOR_KRED, "Please finish current editing!");
  498.             SendClientMessage(playerid, COLOR_LIME, "You are editing pickup at your position!");
  499.             PlayerEditingPickup[playerid] = true;
  500.             ShowPlayerMyPickupDialog(playerid, mp);
  501.         }
  502.     }
  503.     return 1;
  504. }
  505.  
  506. timer CheckPlayerMyPickupKeys[200](playerid, pickupid)
  507. {
  508.     new keys, ud, lr;
  509.     GetPlayerKeys(playerid, keys, ud, lr);
  510.     if(ud > 0)
  511.     {
  512.         if(keys == KEY_SPRINT) NewPos[0] += 1.0;
  513.         else NewPos[0] += 0.1;
  514.         UpdateDynamicPickupEx(playerid, pickupid, MyPickupInfo[pickupid][mpEnterX] + NewPos[0], MyPickupInfo[pickupid][mpEnterY] + NewPos[1], MyPickupInfo[pickupid][mpEnterZ] + NewPos[2]);
  515.     }
  516.     else if(ud < 0)
  517.     {
  518.         if(keys == KEY_SPRINT) NewPos[0] -= 1.0;
  519.         else NewPos[0] -= 0.1;
  520.         UpdateDynamicPickupEx(playerid, pickupid, MyPickupInfo[pickupid][mpEnterX] + NewPos[0], MyPickupInfo[pickupid][mpEnterY] + NewPos[1], MyPickupInfo[pickupid][mpEnterZ] + NewPos[2]);
  521.     }
  522.     if(lr > 0)
  523.     {
  524.         if(keys == KEY_SPRINT) NewPos[1] += 1.0;
  525.         else NewPos[1] += 0.1;
  526.         UpdateDynamicPickupEx(playerid, pickupid, MyPickupInfo[pickupid][mpEnterX] + NewPos[0], MyPickupInfo[pickupid][mpEnterY] + NewPos[1], MyPickupInfo[pickupid][mpEnterZ] + NewPos[2]);
  527.     }
  528.     else if(lr < 0)
  529.     {
  530.         if(keys == KEY_SPRINT) NewPos[1] -= 1.0;
  531.         else NewPos[1] -= 0.1;
  532.         UpdateDynamicPickupEx(playerid, pickupid, MyPickupInfo[pickupid][mpEnterX] + NewPos[0], MyPickupInfo[pickupid][mpEnterY] + NewPos[1], MyPickupInfo[pickupid][mpEnterZ] + NewPos[2]);
  533.     }
  534.     if(keys == KEY_YES)
  535.     {
  536.         NewPos[2] += 0.1;
  537.         UpdateDynamicPickupEx(playerid, pickupid, MyPickupInfo[pickupid][mpEnterX] + NewPos[0], MyPickupInfo[pickupid][mpEnterY] + NewPos[1], MyPickupInfo[pickupid][mpEnterZ] + NewPos[2]);
  538.     }
  539.     else if(keys == KEY_NO)
  540.     {
  541.         NewPos[2] -= 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_SECONDARY_ATTACK)
  545.     {
  546.         TogglePlayerControllable(playerid, 1);
  547.         SetCameraBehindPlayer(playerid);
  548.         TextDrawHideForPlayer(playerid, MyPickupTD[0]);
  549.         TextDrawHideForPlayer(playerid, MyPickupTD[1]);
  550.         MyPickupInfo[pickupid][mpEnterX] += NewPos[0];
  551.         MyPickupInfo[pickupid][mpEnterY] += NewPos[1];
  552.         MyPickupInfo[pickupid][mpEnterZ] += NewPos[2];
  553.  
  554.         format(mpstring, sizeof(mpstring), "New position of pickup is: X: %f Y: %f Z: %f", MyPickupInfo[pickupid][mpEnterX], MyPickupInfo[pickupid][mpEnterY], MyPickupInfo[pickupid][mpEnterZ]);
  555.         SendClientMessage(playerid, COLOR_LIME, mpstring);
  556.  
  557.         PlayerEditingPickup[playerid] = false;
  558.        
  559.         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);
  560.         mysql_query(mpQuery);
  561.         stop CPMPK[playerid];
  562.     }
  563.     return 1;
  564. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement