Guest User

Advance Fishing System [Y_INI][fFish]

a guest
Aug 26th, 2016
1,016
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.32 KB | None | 0 0
  1. /*__________________________________________________________________
  2. |                                                                  |
  3. |            Advance Fishing System [ Y_INI ] Script  By FuNkY     |
  4. |               ____            ____         ___                   |
  5. |               |___ U N K Y      |  HE     |  __ R E A T          |
  6. |               |                 |         |___|                  |
  7. |__________________________________________________________________|*/
  8.  
  9. #include <a_samp> // Thanks to SA-MP team for it
  10. #include <zcmd> // Thanks to ZeeX for it
  11. #include <streamer> // Thanks to Incognito for it
  12. #include <YSI\y_ini> // Thanks to Y_Less for it
  13. #include <sscanf2> // Thanks to Emmet_ for it
  14.  
  15. #define FOLDER "Fishes/%s.ini" // Folder where the data of players save
  16. #define DIALOG_MSGs 69
  17. #define DIALOG_SELLSHOP 70
  18. #define DIALOG_BUYSHOP 71
  19. #define fc "{DB881A}"
  20. #define wc "{FFFFFF}"
  21. #define red "{ff0000}"
  22.  
  23. //// ** FISH SELL ** ////
  24.  
  25. #define SFPRICE 20000
  26. #define BFPRICE 50000
  27. #define VBFPRICE 100000
  28.  
  29. //// ** FOR BUY ** ////
  30.  
  31. #define FRPRICE 1000
  32. #define BPRICE 2000
  33. enum PlayerData
  34. {
  35.     SmallFish,
  36.     BigFish,
  37.     VBigFish,
  38.     Bait,
  39.     FishingRod
  40. }
  41. new User[MAX_PLAYERS][PlayerData];
  42. new FishCP, SellShopCP , BuyShopCP;
  43. new Timing[MAX_PLAYERS];
  44. new Fish[MAX_PLAYERS];
  45. new FishON[MAX_PLAYERS];
  46. new FRod[MAX_PLAYERS];
  47. new timeleft[MAX_PLAYERS];
  48. new timer[MAX_PLAYERS];
  49. public OnFilterScriptInit()
  50. {
  51.     FishCP = CreateDynamicCP(377.8893,-2088.7971,7.8359,1.0,-1,-1,-1,50.0);
  52.     BuyShopCP = CreateDynamicCP(360.3678,-2029.4905,7.8359,1.0,-1,-1,-1,50.0);
  53.     SellShopCP = CreateDynamicCP(360.3615,-2034.6349,7.8359,1.0,-1,-1,-1,50.0);
  54.     Create3DTextLabel("Fishing", 0xFF0000FF, 377.8893,-2088.7971,7.8359, 40.0, 0, 1);
  55.     Create3DTextLabel("Buying Shop", 0xFF0000FF, 360.3678,-2029.4905,7.8359, 40.0, 0, 1);
  56.     Create3DTextLabel("Selling Shop", 0xFF0000FF, 360.3615,-2034.6349,7.8359, 40.0, 0, 1);
  57.     print("\n--------------------------------------");
  58.     print(" Advance Fishing System by FuNkYTheGreat");
  59.     print("           ----- LOADED -----"           );
  60.     print("--------------------------------------\n");
  61.     return 1;
  62. }
  63. public OnFilterScriptExit()
  64. {
  65.     print("\n--------------------------------------");
  66.     print(" Advance Fishing System by FuNkYTheGreat");
  67.     print("           ----- UN-LOADED -----"        );
  68.     print("--------------------------------------\n");
  69.     return 1;
  70. }
  71. CMD:fstats(playerid, params[])
  72. {
  73.     new tid,string[128];
  74.  
  75.     if(!sscanf(params, "u", tid))
  76.     {
  77.         if(tid == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, ""red"Player not connected.");
  78.         ShowFishStats(playerid, tid);
  79.         format(string, sizeof(string), ""fc"[FISHING-STATS] "wc"%s's Stats.", GetName(tid));
  80.         SendClientMessage(playerid, -1, string);
  81.     }
  82.     else
  83.     {
  84.         ShowFishStats(playerid, playerid);
  85.         SendClientMessage(playerid, -1, ""fc"[FISHING-STATS] "wc"You can also use /stats ( playerid ).");
  86.     }
  87.     return 1;
  88. }
  89. public OnPlayerConnect(playerid)
  90. {
  91.     if(fexist(Root(playerid)))
  92.     {
  93.         INI_ParseFile(Root(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  94.     }
  95.     else
  96.     {
  97.         new INI:file = INI_Open(Root(playerid));
  98.         INI_WriteInt(file, "SmallFish", User[playerid][SmallFish]);
  99.         INI_WriteInt(file, "BigFish", User[playerid][BigFish]);
  100.         INI_WriteInt(file, "VBigFish", User[playerid][VBigFish]);
  101.         INI_WriteInt(file, "FishindRods",User[playerid][FishingRod]);
  102.         INI_WriteInt(file, "Bait",User[playerid][Bait]);
  103.  
  104.         INI_ParseFile(Root(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  105.         INI_Close(file);
  106.     }
  107.     return 1;
  108. }
  109.  
  110. public OnPlayerDisconnect(playerid,reason)
  111. {
  112.     if(fexist(Root(playerid)))
  113.     {
  114.         new INI:file = INI_Open(Root(playerid));
  115.         INI_WriteInt(file, "SmallFish", User[playerid][SmallFish]);
  116.         INI_WriteInt(file, "BigFish",User[playerid][BigFish]);
  117.         INI_WriteInt(file, "VBigFish", User[playerid][VBigFish]);
  118.         INI_WriteInt(file, "FishindRods",User[playerid][FishingRod]);
  119.         INI_WriteInt(file, "Bait",User[playerid][Bait]);
  120.         INI_Close(file);
  121.     }
  122.     User[playerid][SmallFish] = 0;
  123.     User[playerid][BigFish] = 0;
  124.     User[playerid][VBigFish] = 0;
  125.     User[playerid][FishingRod] = 0;
  126.     User[playerid][Bait] = 0;
  127.     Timing[playerid]= 0;
  128.     Fish[playerid]= 0;
  129.     FishON[playerid]= 0;
  130.     FRod[playerid]= 0;
  131.     timeleft[playerid] = 0;
  132.     timer[playerid] = 0;
  133.     return 1;
  134. }
  135. public OnPlayerEnterDynamicCP(playerid, checkpointid)
  136. {
  137.     new string[250];
  138.     if(checkpointid == FishCP)
  139.     {
  140.     if(User[playerid][Bait] == 0 ) return SendClientMessage(playerid, -1 ,""fc"[FISHING]"wc" You didn't have any Bait to Start Fishing");
  141.     if(User[playerid][FishingRod] == 0 ) return SendClientMessage(playerid, -1 ,""fc"[FISHING]"wc" You didn't have any Fishing Rods to Start Fishing");
  142.     if(FishON[playerid] == 1 ) return SendClientMessage(playerid, -1 ,""fc"[FISHING]"wc" You have to wait 15 Minutes to Start fishing again");
  143.     SendClientMessage( playerid, -1 ,""fc"[FISHING] "wc"You have start Fishing!");
  144.     Timing[playerid] = SetTimerEx("Timer",30000,1,"i",playerid);
  145.     Fish[playerid] = 1;
  146.     FRod[playerid]++;
  147.     User[playerid][Bait]--;
  148.     timeleft[playerid] = 30;
  149.     timer[playerid] = SetTimerEx("tLeft",900,1,"i",playerid);
  150.     TogglePlayerControllable(playerid , false);
  151.     SetPlayerPos(playerid,377.8893,-2088.7971,7.8359);
  152.     SetPlayerFacingAngle(playerid, 182.2118 );
  153.     SetPlayerAttachedObject( playerid, 0, 18632, 1, -0.091109, 0.255484, 0.018155, 94.362060, 312.328125, 190.418655, 1.000000, 1.000000, 1.000000 );
  154.     ApplyAnimation(playerid, "SAMP", "FishingIdle", 3.0,1,1,0,0,0);
  155.     ApplyAnimation(playerid, "SAMP", "FishingIdle", 3.0,1,1,0,0,0);
  156.     FishON[playerid] = 1;
  157.     SetTimerEx("WaitTime",900000, 0, "d", playerid);
  158.     if(FRod[playerid] == 5 )
  159.     {
  160.     User[playerid][FishingRod]--;
  161.     FRod[playerid] = 5;
  162.     }
  163.     }
  164.     else if(checkpointid == BuyShopCP)
  165.     {
  166.     format(string, sizeof(string), ""fc"Buy Fishing Rods\n"fc"Buy Bait");
  167.     ShowPlayerDialog(playerid, DIALOG_BUYSHOP, DIALOG_STYLE_LIST, "Buying Shop",string, "Buy", "Exit");
  168.     }
  169.     else if(checkpointid == SellShopCP)
  170.     {
  171.     format(string, sizeof(string), ""fc"Sell Small Fish "wc"%d \n"fc"Sell Big Fish "wc"%d \n"fc"Sell Very Big Fish "wc"%d",User[playerid][SmallFish],User[playerid][BigFish],User[playerid][VBigFish]);
  172.     ShowPlayerDialog(playerid, DIALOG_SELLSHOP, DIALOG_STYLE_LIST, "Selling Shop",string, "Buy", "Exit");
  173.     }
  174.     return 0;
  175. }
  176.  
  177. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  178. {
  179.     if(dialogid == DIALOG_SELLSHOP)
  180.     {
  181.         if(response)
  182.         {
  183.             switch(listitem)
  184.             {
  185.                 case 0:
  186.                 {
  187.                     if(User[playerid][SmallFish] >= 1)
  188.                     {
  189.                         SendClientMessage( playerid, -1 ,""fc"[FISHING]"wc" You have succesfully selled a Small Fish!");
  190.                         GivePlayerMoney(playerid,SFPRICE);
  191.                         User[playerid][SmallFish]--;
  192.                     }
  193.                     else
  194.                     {
  195.                         SendClientMessage( playerid, -1 ,""fc"[FISHING]"wc" You didn't have enough Small Fish to sell!");
  196.                     }
  197.                 }
  198.                 case 1:
  199.                 {
  200.                     if(User[playerid][BigFish] >= 1)
  201.                     {
  202.                         SendClientMessage( playerid, -1 ,""fc"[FISHING]"wc" You have succesfully selled a Big Fish!");
  203.                         GivePlayerMoney(playerid,BFPRICE);
  204.                         User[playerid][BigFish]--;
  205.                     }
  206.                     else
  207.                     {
  208.                         SendClientMessage( playerid, -1 ,""fc"[FISHING]"wc" You didn't have enough Big Fish to sell!");
  209.                     }
  210.                 }
  211.                 case 2:
  212.                 {
  213.                     if(User[playerid][VBigFish] >= 1)
  214.                     {
  215.                         SendClientMessage( playerid, -1 ,""fc"[FISHING]"wc" You have succesfully selled a Very Big Fish!");
  216.                         GivePlayerMoney(playerid,VBFPRICE);
  217.                         User[playerid][VBigFish]--;
  218.                     }
  219.                     else
  220.                     {
  221.                         SendClientMessage( playerid, -1 ,""fc"[FISHING]"wc" You didn't have enough Very Big Fish to sell!");
  222.                     }
  223.                 }
  224.             }
  225.         }
  226.     }
  227.     if(dialogid == DIALOG_BUYSHOP)
  228.     {
  229.         if(response)
  230.         {
  231.             switch(listitem)
  232.             {
  233.                 case 0:
  234.                 {
  235.                     if(GetPlayerMoney(playerid) >= FRPRICE)
  236.                     {
  237.                         SendClientMessage( playerid, -1 ,""fc"[FISHING]"wc" You have succesfully buy a Fishing Rod!");
  238.                         GivePlayerMoney(playerid,-FRPRICE);
  239.                         User[playerid][FishingRod]++;
  240.                     }
  241.                     else
  242.                     {
  243.                         SendClientMessage( playerid, -1 ,""fc"[FISHING]"wc" You didn't have enough money to buy a Fishing Rod!");
  244.                     }
  245.                 }
  246.                 case 1:
  247.                 {
  248.                     if(GetPlayerMoney(playerid) >= BPRICE)
  249.                     {
  250.                         SendClientMessage( playerid, -1 ,""fc"[FISHING]"wc" You have succesfully buy a Bait!");
  251.                         GivePlayerMoney(playerid,-BPRICE);
  252.                         User[playerid][Bait]++;
  253.  
  254.                     }
  255.                     else
  256.                     {
  257.                         SendClientMessage( playerid, -1 ,""fc"[FISHING]"wc" You didn't have enough money to buy a Bait!");
  258.                     }
  259.                 }
  260.             }
  261.         }
  262.     }
  263.     return 0;
  264. }
  265. forward ShowFishStats(playerid, targetid);
  266. public ShowFishStats(playerid, targetid)
  267. {
  268.     new string[1500], string2[1500];
  269.     format(string, sizeof(string), ""fc"Small Fishes: "wc"%d\n", User[playerid][SmallFish]);
  270.     strcat(string2, string);
  271.     format(string, sizeof(string), ""fc"Big Fishes: "wc"%d\n", User[playerid][BigFish]);
  272.     strcat(string2, string);
  273.     format(string, sizeof(string), ""fc"Very Big Fishes: "wc"%d\n", User[playerid][VBigFish]);
  274.     strcat(string2, string);
  275.     format(string, sizeof(string), ""fc"Fishing Rods: "wc"%d\n", User[playerid][FishingRod]);
  276.     strcat(string2, string);
  277.     format(string, sizeof(string), ""fc"Bait: "wc"%d\n", User[playerid][Bait]);
  278.     strcat(string2, string);
  279.     ShowPlayerDialog(playerid, DIALOG_MSGs , DIALOG_STYLE_MSGBOX, "Fishing Stats", string2, "Close", "");
  280.     return 1;
  281. }
  282. forward Timer(playerid);
  283. public Timer(playerid)
  284. {
  285.     new fishes =  1 + random(10);
  286.     new string[250];
  287.     switch( random( 6 ) )
  288.     {
  289.     case 0,1,2,3:
  290.     {
  291.         format(string, sizeof(string), ""fc"[FISHING] "wc"%s Has Caught "fc"%d"wc" Small Fishes",GetName(playerid),fishes);
  292.         SendClientMessageToAll(-1 , string);
  293.         format(string, sizeof(string), ""fc"[FISHING] "wc"You have Caught "fc"%d"wc" Small Fishes",fishes);
  294.         SendClientMessage(playerid, -1 , string);
  295.         User[playerid][SmallFish]+=fishes;
  296.     }
  297.     case 4,5:
  298.     {
  299.         format(string, sizeof(string), ""fc"[FISHING] "wc"%s Has Caught "fc"%d"wc" Big Fishes",GetName(playerid),fishes);
  300.         SendClientMessageToAll(-1 , string);
  301.         format(string, sizeof(string), ""fc"[FISHING] "wc"You have Caught "fc"%d"wc" Big Fishes",fishes);
  302.         SendClientMessage(playerid, -1 , string);
  303.         User[playerid][BigFish]+=fishes;
  304.     }
  305.     case 6:
  306.     {
  307.         format(string, sizeof(string), ""fc"[FISHING] "wc"%s Has Caught "fc"%d"wc" Very Big Fishes",GetName(playerid),fishes);
  308.         SendClientMessageToAll(-1 , string);
  309.         format(string, sizeof(string), ""fc"[FISHING] "wc"You have Caught "fc"%d"wc" Very Big Fishes",fishes);
  310.         SendClientMessage(playerid, -1 , string);
  311.         User[playerid][VBigFish]+=fishes;
  312.     }
  313.     }
  314.     GameTextForPlayer(playerid, "~r~Fishing ~y~Complete!", 5000, 3);
  315.     ClearAnimations(playerid);
  316.     Fish[playerid] = 0;
  317.     KillTimer(Timing[playerid]);
  318.     TogglePlayerControllable(playerid , true);
  319.     RemovePlayerAttachedObject(playerid, 0);
  320.     return 1;
  321. }
  322. forward WaitTime(playerid);
  323. public WaitTime(playerid)
  324. {
  325.     FishON[playerid] = 0;
  326.     return 1;
  327. }
  328. forward LoadUser_data(playerid, name[], value[]);
  329. public LoadUser_data(playerid, name[], value[])
  330. {
  331.     INI_Int("SmallFish", User[playerid][SmallFish]);
  332.     INI_Int("BigFish",User[playerid][BigFish]);
  333.     INI_Int("VBigFish", User[playerid][VBigFish]);
  334.     INI_Int("FishindRods",User[playerid][FishingRod]);
  335.     INI_Int("Bait",User[playerid][Bait]);
  336.     return 1;
  337. }
  338. Root(playerid)
  339. {
  340.     new string[128],playername[MAX_PLAYER_NAME];
  341.     GetPlayerName(playerid,playername,sizeof(playername));
  342.     format(string,sizeof(string),FOLDER,playername);
  343.     return string;
  344. }
  345. GetName(playerid)
  346. {
  347.     new pName[24];
  348.     GetPlayerName(playerid, pName, 24);
  349.     return pName;
  350. }
  351. forward tLeft(playerid);
  352. public tLeft(playerid)
  353. {
  354.     timeleft[playerid]--;
  355.     new string[128];
  356.     format(string, 128, "~r~TIME LEFT ~b~: %d", timeleft[playerid]);
  357.     GameTextForPlayer(playerid, string , 900, 3);
  358.     if (timeleft[playerid] == 1)
  359.     {
  360.     KillTimer(timer[playerid]);
  361.     }
  362.     return 1;
  363. }
Add Comment
Please, Sign In to add comment