Advertisement
Pablo_Borsellino

[Filterscript] pGuitarHero

Oct 9th, 2011
573
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 15.84 KB | None | 0 0
  1. /********************************************************** pGuitarHero v1.0 ***
  2. *
  3. * Scriptname:
  4. * -» pGuitarHero
  5. *
  6. * Author:
  7. * -» Pablo_Borsellino
  8.  
  9. * Changelog:
  10. * • v1.0 (10.10.2011)
  11. * -» Initial Release
  12. *
  13. * Need to use:
  14. * -» Sa:Mp 0.3d RC4 or higher
  15. *
  16. * Language:
  17. * -» English
  18. *
  19. * Description:
  20. * -» This Filterscript let rotate the Los Santos Ferris Wheel. Search for:
  21. * -» "[[CHANGE THIS]]" via pressing STRG+F for own Settings etc.
  22. *
  23. * Functions:
  24. * -» pGUITAR_START(playerid);
  25. *
  26. * Public's:
  27. * -» n/a
  28. *
  29. * Credit's:
  30. * -» n/a
  31. *                                           Copyright © 2011 by Pablo_Borsellino
  32. *******************************************************************************/
  33.  
  34. //____________________________________________________________________Include___
  35. #include <a_samp>
  36.  
  37. //__________________________________________________________Useful definition___
  38. #define forEx(%0,%1) for(new %1=0;%1<%0;%1++)
  39.  
  40. //__________________________________________________________________Setting's___
  41. /***** Milliseconds to pause after pressing the right or the left button! *****/
  42. #define pGUITAR_ARROW_SLEEP_TIME 100
  43. /*********************** How far the guitar is streamed ***********************/
  44. #define pGUITAR_DRAW_DISTANCE 40
  45. /***************** Music in background, while playing Guitar! *****************/
  46. #define pGUITAR_AUDIO_URL "http://pabloborsellino.square7.ch/GRP-Freeroam/Audio/LoginMusik.mp3"
  47. /********************************* Note times **********************************
  48. Example: 10,20,25,30,40,46,55,70
  49. Created eight notes. While anyone play the guitar, they moving from top to
  50. bottom. The first one after 10*100 Ms = 1000 Ms = 1 Second. The nother ones:
  51. 20 * 100 Ms = 2 Seconds
  52. 25 * 100 Ms = 2,5 Seconds
  53. 30 * 100 Ms = 3 Seconds
  54. 40 * 100 Ms = 4 Seconds
  55. 46 * 100 Ms = 4,6 Seconds
  56. 55 * 100 Ms = 5,5 Seconds
  57. 70 * 100 Ms = 7 Seconds
  58. Here, the note is generated at random from note position 1 (leftmost), 2 (center
  59. left), 3(center right) and 4 (rightmost). Do not use time intervals of less than
  60. 5 Ms. In the notes to be created quickly, the player thus has little chance to
  61. get the notes. */
  62. #define pGUITAR_NOTE_TIMES 8,16,24,32,40,48,56,64,70,80,85,90,98,105,112,119,125,134,148,156,170,179,194,200,208,216,224,232,240,248,256,260,264,270,280,285,290,298,305,312,319,330,340,350,356,362,370,387,393,400
  63. /*************************** Maximal Count of notes ****************************
  64. Count your numbers in the #define pGUITAR_NOTE_TIMES and use this Number in this
  65. #define like: pGUITAR_NOTE_TIMES is: "8,16,24,32,40,48", so that are 6 Numbers..
  66. now you have to use in this define (pGUITAR_MAX_NOTES) the six or more than six */
  67. #define pGUITAR_MAX_NOTES 100
  68. /********************************* Information *********************************
  69. Search for "[[CHANGE THIS]]" (without the " ") via pressing STRG+F and change
  70. the code at this lines. There you can input as example the Winamount or Messages
  71. if a player plays guitar well or better... */
  72.  
  73. //_____________________________________________________________Don't touch it___
  74. new pGUITAR_ARROW[MAX_PLAYERS],
  75.     pGUITAR_OBJECT[MAX_PLAYERS],
  76.     pGUITAR_PERFECT_HITS[MAX_PLAYERS],
  77.     pGUITAR_ARROW_POS_ID[MAX_PLAYERS],
  78.     pGUITAR_NOTE_COUNT[MAX_PLAYERS],
  79.     pGUITAR_CURRENT_NOTE[MAX_PLAYERS],
  80.     bool:pGUITAR_ARROW_MOVED[MAX_PLAYERS],
  81.     bool:pGUITAR_PLAYER_PLAYS[MAX_PLAYERS],
  82.     pGUITAR_TOTAL_NOTE_COUNT[MAX_PLAYERS],
  83.     pGUITAR_PLAYER_NOTES_TIMER[MAX_PLAYERS],
  84.     PlayerText3D:pGUITAR_FINISH_LINE[MAX_PLAYERS],
  85.     pGUITAR_NOTES[MAX_PLAYERS][pGUITAR_MAX_NOTES+2],
  86.     pGUITAR_NOTE_OBJECTS[MAX_PLAYERS][pGUITAR_MAX_NOTES+2],
  87.     Float:pGUITAR_OLD_POS[MAX_PLAYERS][4];
  88.    
  89. //___________________________________________________________________Public's___
  90. public OnFilterScriptInit()
  91. {
  92.     forEx(MAX_PLAYERS,playerid)
  93.     {
  94.         pGUITAR_PLAYER_PLAYS[playerid]=false;
  95.         //[[CHANGE THIS]]
  96.         //If you dont change the this line, everyone plays Guitar on Filterscript
  97.         //loading/starting. You need to create your own Command, dialog or any-
  98.         //-thing where you can start the Guitar playing. Or input this all this
  99.         //code into your Gamemode and start the Guitar playing with the Function
  100.         //below. (pGUITAR_START(playerid);)
  101.         pGUITAR_START(playerid);
  102.         //[[CHANGE THIS]]
  103.     }
  104.     return true;
  105. }
  106.  
  107. //______________________________________________________________________________
  108. public OnFilterScriptExit()
  109. {
  110.     forEx(MAX_PLAYERS,playerid)
  111.         pGUITAR_STOP(playerid);
  112.     return true;
  113. }
  114.  
  115. //______________________________________________________________________________
  116. public OnPlayerObjectMoved(playerid,objectid)
  117. {
  118.     if(objectid==(pGUITAR_OBJECT[playerid]+1))return true;
  119.     if(IsPlayerConnected(playerid)&&pGUITAR_PLAYER_PLAYS[playerid]==true)
  120.         DestroyPlayerObject(playerid,objectid);
  121.     return true;
  122. }
  123.  
  124. //______________________________________________________________________________
  125. public OnPlayerUpdate(playerid)
  126. {
  127.     if(pGUITAR_PLAYER_PLAYS[playerid]==true)
  128.     {
  129.         new Keys,X,Y;
  130.         GetPlayerKeys(playerid,Keys,X,Y);
  131.         if(Y<0)//Right Key
  132.         {
  133.             if(pGUITAR_ARROW_POS_ID[playerid]==2&&pGUITAR_ARROW_MOVED[playerid]==true)
  134.             {
  135.                 MovePlayerObject(playerid,pGUITAR_ARROW[playerid],1185.826538,-1379.61,12.85,0.5);pGUITAR_ARROW_POS_ID[playerid]=1;
  136.                 SetTimerEx("pGUITAR_ALLOW_ARROW_MOVING",pGUITAR_ARROW_SLEEP_TIME,false,"d",playerid);
  137.                 pGUITAR_ARROW_MOVED[playerid]=false;
  138.                 return true;
  139.             }
  140.             else if(pGUITAR_ARROW_POS_ID[playerid]==3&&pGUITAR_ARROW_MOVED[playerid]==true)
  141.             {
  142.                 MovePlayerObject(playerid,pGUITAR_ARROW[playerid],1185.826538,-1379.58,12.85,0.5);pGUITAR_ARROW_POS_ID[playerid]=2;
  143.                 SetTimerEx("pGUITAR_ALLOW_ARROW_MOVING",pGUITAR_ARROW_SLEEP_TIME,false,"d",playerid);
  144.                 pGUITAR_ARROW_MOVED[playerid]=false;
  145.                 return true;
  146.             }
  147.             else if(pGUITAR_ARROW_POS_ID[playerid]==4&&pGUITAR_ARROW_MOVED[playerid]==true)
  148.             {
  149.                 MovePlayerObject(playerid,pGUITAR_ARROW[playerid],1185.826538,-1379.551,12.85,0.5);pGUITAR_ARROW_POS_ID[playerid]=3;
  150.                 SetTimerEx("pGUITAR_ALLOW_ARROW_MOVING",pGUITAR_ARROW_SLEEP_TIME,false,"d",playerid);
  151.                 pGUITAR_ARROW_MOVED[playerid]=false;
  152.                 return true;
  153.             }
  154.         }
  155.         else if(Y>0)//Left Key
  156.         {
  157.             if(pGUITAR_ARROW_POS_ID[playerid]==3&&pGUITAR_ARROW_MOVED[playerid]==true)
  158.             {
  159.                 MovePlayerObject(playerid,pGUITAR_ARROW[playerid],1185.826538 ,-1379.524,12.85,0.5);pGUITAR_ARROW_POS_ID[playerid]=4;
  160.                 SetTimerEx("pGUITAR_ALLOW_ARROW_MOVING",pGUITAR_ARROW_SLEEP_TIME,false,"d",playerid);
  161.                 pGUITAR_ARROW_MOVED[playerid]=false;
  162.                 return true;
  163.             }
  164.             else if(pGUITAR_ARROW_POS_ID[playerid]==2&&pGUITAR_ARROW_MOVED[playerid]==true)
  165.             {
  166.                 MovePlayerObject(playerid,pGUITAR_ARROW[playerid],1185.826538,-1379.551,12.85,0.5);pGUITAR_ARROW_POS_ID[playerid]=3;
  167.                 SetTimerEx("pGUITAR_ALLOW_ARROW_MOVING",pGUITAR_ARROW_SLEEP_TIME,false,"d",playerid);
  168.                 pGUITAR_ARROW_MOVED[playerid]=false;
  169.                 return true;
  170.             }
  171.             else if(pGUITAR_ARROW_POS_ID[playerid]==1&&pGUITAR_ARROW_MOVED[playerid]==true)
  172.             {
  173.                 MovePlayerObject(playerid,pGUITAR_ARROW[playerid],1185.826538,-1379.58,12.85,0.5);pGUITAR_ARROW_POS_ID[playerid]=2;
  174.                 SetTimerEx("pGUITAR_ALLOW_ARROW_MOVING",pGUITAR_ARROW_SLEEP_TIME,false,"d",playerid);
  175.                 pGUITAR_ARROW_MOVED[playerid]=false;
  176.                 return true;
  177.             }
  178.         }
  179.     }
  180.     return true;
  181. }
  182.  
  183. //_______________________________________________________________Own Public's___
  184. forward pGUITAR_START(playerid);
  185. public pGUITAR_START(playerid)
  186. {
  187.     new Float:pGUITAR_OLD_POS_EX[4];
  188.     GetPlayerPos(playerid,pGUITAR_OLD_POS_EX[0],pGUITAR_OLD_POS_EX[1],pGUITAR_OLD_POS_EX[2]);
  189.     GetPlayerFacingAngle(playerid,pGUITAR_OLD_POS_EX[3]);
  190.     pGUITAR_OLD_POS[playerid][0]=pGUITAR_OLD_POS_EX[0];
  191.     pGUITAR_OLD_POS[playerid][1]=pGUITAR_OLD_POS_EX[1];
  192.     pGUITAR_OLD_POS[playerid][2]=pGUITAR_OLD_POS_EX[2];
  193.     pGUITAR_OLD_POS[playerid][3]=pGUITAR_OLD_POS_EX[3];
  194.     if(pGUITAR_PLAYER_PLAYS[playerid]==true)return true;
  195.     RemovePlayerFromVehicle(playerid);
  196.     pGUITAR_ARROW_MOVED[playerid]=true;
  197.     pGUITAR_PLAYER_PLAYS[playerid]=true;
  198.     pGUITAR_OBJECT[playerid]=CreatePlayerObject(playerid,19317,1185.843505,-1379.569091,13.932065,0,0,90,pGUITAR_DRAW_DISTANCE); //pGUITAR_OBJECT (Bass)
  199.     pGUITAR_ARROW[playerid]=CreatePlayerObject(playerid,19130,1185.826538,-1379.61,12.85,0,180,0,pGUITAR_DRAW_DISTANCE);//pGUITAR_ARROW
  200.     pGUITAR_FINISH_LINE[playerid]=CreatePlayer3DTextLabel(playerid,"___________________",0xF1FE01FF,1185.880004,-1379.559702,13.33,40.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0);
  201.     pGUITAR_ARROW_POS_ID[playerid]=1;
  202.     pGUITAR_PERFECT_HITS[playerid]=0;
  203.     pGUITAR_NOTE_COUNT[playerid]=0;
  204.     pGUITAR_CURRENT_NOTE[playerid]=0;
  205.     pGUITAR_TOTAL_NOTE_COUNT[playerid]=0;
  206.     pGUITAR_PLAYER_NOTES_TIMER[playerid]=SetTimerEx("pGUITAR_NOTES_TIMER",100,true,"d",playerid);
  207.     pGUITAR_SET(playerid,pGUITAR_NOTE_TIMES);
  208.     PlayAudioStreamForPlayer(playerid,pGUITAR_AUDIO_URL,0,0,0,50,0);
  209.     TogglePlayerControllable(playerid,false);
  210.     SetPlayerCameraPos(playerid, 1186.47, -1379.54, 13.09);
  211.     SetPlayerCameraLookAt(playerid, 1182.79, -1379.53, 16.47);
  212.     SetPlayerPos(playerid,1189.1370,-1378.8746,13.5296);
  213.     return true;
  214. }
  215.  
  216. forward pGUITAR_STOP(playerid);
  217. public pGUITAR_STOP(playerid)
  218. {
  219.     if(pGUITAR_PLAYER_PLAYS[playerid]==false)return true;
  220.     SetPlayerPos(playerid,pGUITAR_OLD_POS[playerid][0],pGUITAR_OLD_POS[playerid][1],pGUITAR_OLD_POS[playerid][2]);
  221.     SetPlayerFacingAngle(playerid,pGUITAR_OLD_POS[playerid][3]);
  222.     StopAudioStreamForPlayer(playerid);
  223.     SetCameraBehindPlayer(playerid);
  224.     TogglePlayerControllable(playerid,true);
  225.     pGUITAR_ARROW_MOVED[playerid]=false;
  226.     pGUITAR_PLAYER_PLAYS[playerid]=false;
  227.     DestroyPlayerObject(playerid,pGUITAR_OBJECT[playerid]);
  228.     DestroyPlayerObject(playerid,pGUITAR_ARROW[playerid]);
  229.     DeletePlayer3DTextLabel(playerid,pGUITAR_FINISH_LINE[playerid]);
  230.     KillTimer(pGUITAR_PLAYER_NOTES_TIMER[playerid]);
  231.     forEx((pGUITAR_NOTE_COUNT[playerid]+1),NOTEs)if(IsValidPlayerObject(playerid,pGUITAR_NOTE_OBJECTS[playerid][NOTEs]))
  232.         DestroyPlayerObject(playerid,pGUITAR_NOTE_OBJECTS[playerid][NOTEs]);
  233.     return true;
  234. }
  235.  
  236. forward MoveNote(playerid,NoteID);
  237. public MoveNote(playerid,NoteID)
  238. {
  239.     if(pGUITAR_NOTE_COUNT[playerid]==0)
  240.     {
  241.         pGUITAR_NOTE_OBJECTS[playerid][pGUITAR_NOTE_COUNT[playerid]]=CreatePlayerObject(playerid,19260,1185.880004,-1379.608276,14.31,90,0,0,pGUITAR_DRAW_DISTANCE);
  242.         MovePlayerObject(playerid,pGUITAR_NOTE_OBJECTS[playerid][pGUITAR_NOTE_COUNT[playerid]],1185.880004,-1379.608886,13.2,0.2);
  243.         SetTimerEx("pGUITAR_MOVE_FINISHED",4150,false,"ddd",playerid,NoteID,pGUITAR_NOTE_OBJECTS[pGUITAR_NOTE_COUNT[playerid]]);
  244.         pGUITAR_NOTE_COUNT[playerid]++;
  245.         return true;
  246.     }
  247.     if(NoteID==0)
  248.     {
  249.         pGUITAR_NOTE_OBJECTS[playerid][pGUITAR_NOTE_COUNT[playerid]]=CreatePlayerObject(playerid,19260,1185.880004,-1379.608276,14.31,90,0,0,pGUITAR_DRAW_DISTANCE);
  250.         MovePlayerObject(playerid,pGUITAR_NOTE_OBJECTS[playerid][pGUITAR_NOTE_COUNT[playerid]],1185.880004,-1379.608886,13.2,0.2);
  251.     }
  252.     else if(NoteID==1)
  253.     {
  254.         pGUITAR_NOTE_OBJECTS[playerid][pGUITAR_NOTE_COUNT[playerid]]=CreatePlayerObject(playerid,19260,1185.880004,-1379.593750,14.31,90,0,0,pGUITAR_DRAW_DISTANCE);
  255.         MovePlayerObject(playerid,pGUITAR_NOTE_OBJECTS[playerid][pGUITAR_NOTE_COUNT[playerid]],1185.880004,-1379.577758,13.2,0.2);
  256.     }
  257.     else if(NoteID==2)
  258.     {
  259.         pGUITAR_NOTE_OBJECTS[playerid][pGUITAR_NOTE_COUNT[playerid]]=CreatePlayerObject(playerid,19260,1185.880004,-1379.581176,14.31,90,0,0,pGUITAR_DRAW_DISTANCE);
  260.         MovePlayerObject(playerid,pGUITAR_NOTE_OBJECTS[playerid][pGUITAR_NOTE_COUNT[playerid]],1185.880004,-1379.547729,13.2,0.2);
  261.     }
  262.     else if(NoteID==3)
  263.     {
  264.         pGUITAR_NOTE_OBJECTS[playerid][pGUITAR_NOTE_COUNT[playerid]]=CreatePlayerObject(playerid,19260,1185.880004,-1379.569702,14.31,90,0,0,pGUITAR_DRAW_DISTANCE);
  265.         MovePlayerObject(playerid,pGUITAR_NOTE_OBJECTS[playerid][pGUITAR_NOTE_COUNT[playerid]],1185.880004,-1379.517700,13.2,0.2);
  266.     }
  267.     SetTimerEx("pGUITAR_MOVE_FINISHED",4550,false,"ddd",playerid,NoteID,pGUITAR_NOTE_OBJECTS[playerid][pGUITAR_NOTE_COUNT[playerid]]);
  268.     pGUITAR_NOTE_COUNT[playerid]++;
  269.     if(pGUITAR_TOTAL_NOTE_COUNT[playerid]==pGUITAR_NOTE_COUNT[playerid])
  270.         SetTimerEx("pGUITAR_FINISHED",6000,false,"d",playerid);
  271.     return true;
  272. }
  273.  
  274. //______________________________________________________________________________
  275. forward pGUITAR_FINISHED(playerid);
  276. public pGUITAR_FINISHED(playerid)
  277. {
  278.     new Float:pGUITAR_HIT_RATIO = (pGUITAR_PERFECT_HITS[playerid]/pGUITAR_TOTAL_NOTE_COUNT[playerid]);
  279.     if(pGUITAR_HIT_RATIO==1.0)//100% (Mega Perfect)
  280.     {
  281.         //[[CHANGE THIS]]
  282.         //This function is called when the player finished all NOTEs (100% Hit)
  283.     }
  284.     if(pGUITAR_HIT_RATIO==0.9)//90% (Perfect)
  285.     {
  286.         //[[CHANGE THIS]]
  287.         //This function is called when the player finished all NOTEs (90% Hit)
  288.     }
  289.     if(pGUITAR_HIT_RATIO==0.8)//80% (Really Good)
  290.     {
  291.         //[[CHANGE THIS]]
  292.         //This function is called when the player finished all NOTEs (80% Hit)
  293.     }
  294.     if(pGUITAR_HIT_RATIO==0.7)//70% (Good)
  295.     {
  296.         //[[CHANGE THIS]]
  297.         //This function is called when the player finished all NOTEs (70% Hit)
  298.     }
  299.     if(pGUITAR_HIT_RATIO==0.6)//60% (Okay+)
  300.     {
  301.         //[[CHANGE THIS]]
  302.         //This function is called when the player finished all NOTEs (60% Hit)
  303.     }
  304.     if(pGUITAR_HIT_RATIO==0.5)//50% (Normal)
  305.     {
  306.         //[[CHANGE THIS]]
  307.         //This function is called when the player finished all NOTEs (100% Hit)
  308.     }
  309.     if(pGUITAR_HIT_RATIO==0.4)//40% (Okay-)
  310.     {
  311.         //[[CHANGE THIS]]
  312.         //This function is called when the player finished all NOTEs (100% Hit)
  313.     }
  314.     if(pGUITAR_HIT_RATIO==0.3)//30% (Well)
  315.     {
  316.         //[[CHANGE THIS]]
  317.         //This function is called when the player finished all NOTEs (100% Hit)
  318.     }
  319.     if(pGUITAR_HIT_RATIO==0.2)//20% (Really Well)
  320.     {
  321.         //[[CHANGE THIS]]
  322.         //This function is called when the player finished all NOTEs (100% Hit)
  323.     }
  324.     if(pGUITAR_HIT_RATIO==0.1)//10% (Bad)
  325.     {
  326.         //[[CHANGE THIS]]
  327.         //This function is called when the player finished all NOTEs (100% Hit)
  328.     }
  329.     if(pGUITAR_HIT_RATIO==0.0)//0% (Mega Bad)
  330.     {
  331.         //[[CHANGE THIS]]
  332.         //This function is called when the player finished all NOTEs (100% Hit)
  333.     }
  334.     pGUITAR_STOP(playerid);
  335.     return true;
  336. }
  337. //______________________________________________________________________________
  338. forward pGUITAR_MOVE_FINISHED(playerid,NoteID,ObjectID);
  339. public pGUITAR_MOVE_FINISHED(playerid,NoteID,ObjectID)
  340. {
  341.     UpdatePlayer3DTextLabelText(playerid,pGUITAR_FINISH_LINE[playerid],randomEx(0xBFC0C2FF,0x330000FF,0x000000FF,0x33AA33AA,0xFF6347AA,0x33CCFFAA,0x9ACD32AA,0xFFFF00AA,0xF5DEB3AA,0xFFFFFFAA,0xC2A2DAAA,0x2641FEAA,0xFF8282AA,0xFFA500AA,0xFF00FFFF,0xFF9933FF),"___________________");
  342.     if((pGUITAR_ARROW_POS_ID[playerid]-1)==NoteID)
  343.     {
  344.         //[[CHANGE THIS]]
  345.         //This function is called when the player hit the mark with the arrow.
  346.         GameTextForPlayer(playerid,"~g~Perfect!",200,3);
  347.         pGUITAR_PERFECT_HITS[playerid]++;
  348.     }
  349.     else
  350.     {
  351.         //[[CHANGE THIS]]
  352.         //This function is called when  the player does not hit the mark with the arrow.
  353.         GameTextForPlayer(playerid,"~r~Fail!",200,3);
  354.     }
  355.     return true;
  356. }
  357.  
  358. //______________________________________________________________________________
  359. forward pGUITAR_ALLOW_ARROW_MOVING(playerid);
  360. public pGUITAR_ALLOW_ARROW_MOVING(playerid)return pGUITAR_ARROW_MOVED[playerid]=true;
  361.  
  362. //______________________________________________________________________________
  363. forward pGUITAR_NOTES_TIMER(playerid);
  364. public pGUITAR_NOTES_TIMER(playerid)
  365. {
  366.     pGUITAR_CURRENT_NOTE[playerid]++;
  367.     forEx(pGUITAR_MAX_NOTES+2,i)if(pGUITAR_NOTES[playerid][i]==pGUITAR_CURRENT_NOTE[playerid])
  368.         MoveNote(playerid,random(3-0));
  369.     return true;
  370. }
  371.  
  372.  
  373. //____________________________________________________________________Stock's___
  374. stock randomEx(...)return getarg(random(numargs()));
  375.  
  376. stock pGUITAR_SET(playerid,...)
  377. {
  378.     new FUNC_ArgCount=numargs();
  379.     forEx(FUNC_ArgCount,i)
  380.     {
  381.         if(i==pGUITAR_MAX_NOTES+2)return true;
  382.         new Arg=getarg(i);
  383.         pGUITAR_NOTES[playerid][i]=Arg;
  384.         pGUITAR_TOTAL_NOTE_COUNT[i]=FUNC_ArgCount;
  385.     }
  386.     return true;
  387. }
  388.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement