Advertisement
Guest User

KeyStatus 1.0

a guest
Feb 3rd, 2013
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.97 KB | None | 0 0
  1. // Ce script à été coder par Sam (Chneubeul sur Gta Online)
  2. // Merci de reporter vos bugs bien détaillés et vos propositions pour solutionner le moindre problème
  3. // Merci d'utiliser ce script, à bientot. Sam !
  4.  
  5.  
  6. // Version 1.0
  7.  
  8. #include <a_samp>
  9.  
  10.  
  11. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 // Courtesy of DracoBlue
  12.  
  13.  
  14. #define key_action 0
  15. #define key_crouch 1
  16. #define key_fire 1
  17. #define key_sprint 2
  18. #define key_secondary_attack 3
  19. #define key_jump 4
  20. #define key_look_right 5
  21. #define key_handbrake 6
  22. #define key_look_left 7
  23. #define key_submission 8
  24. #define key_walk 9
  25. #define key_analog_up 10
  26. #define key_analog_down 11
  27. #define key_analog_left 12
  28. #define key_analog_right 13
  29. #define key_yes 14
  30. #define key_no 15
  31. #define key_ctrl_back 16
  32.  
  33.  
  34. new bool:KeyListed[MAX_PLAYERS];
  35. new bool:KeyInfo[MAX_PLAYERS][18];
  36. new TouchDown[MAX_PLAYERS];
  37.  
  38. new KeyValue[18] = {1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,65536,131072,262144};
  39.  
  40. new PlayerText:KeyList[MAX_PLAYERS];
  41.  
  42.  
  43. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  44. {
  45.     if(newkeys != 0)
  46.     {
  47.         new key = oldkeys - newkeys;
  48.         if(key > 0) { TouchDown[playerid]--; }
  49.         else if(key < 0) { TouchDown[playerid]++; }
  50.         for(new i; i < 18; i++)
  51.         {
  52.             if(key < 0) { key *= -1; }
  53.             if(KeyValue[i] == key)
  54.             {
  55.                 if(KeyInfo[playerid][i] == false)
  56.                 {
  57.                     KeyInfo[playerid][i] = true;
  58.                 }
  59.                 else if(KeyInfo[playerid][i] == true)
  60.                 {
  61.                     KeyInfo[playerid][i] = false;
  62.                 }
  63.             }
  64.         }
  65.     }
  66.  
  67.     if(!newkeys && oldkeys != 0) { TouchDown[playerid] = 0; }
  68.  
  69.     if(TouchDown[playerid] <=2)
  70.     {
  71.         for(new i=0; i<18; i++)
  72.         {
  73.             if(KeyValue[i] != newkeys && oldkeys != 0 && newkeys != 0)
  74.             {
  75.                 ResolveNewMultipleKeys(playerid, newkeys, oldkeys);
  76.             }
  77.             else if(oldkeys != KeyValue[i] && newkeys != 0 && oldkeys != 0)
  78.             {
  79.                 ResolveOldMultipleKeys(playerid, newkeys, oldkeys);
  80.             }
  81.             else
  82.             {
  83.                 if(newkeys & KeyValue[i])
  84.                 {
  85.                     KeyInfo[playerid][i] = true;
  86.                 }
  87.                 if(oldkeys & KeyValue[i])
  88.                 {
  89.                     KeyInfo[playerid][i] = false;
  90.                 }
  91.             }
  92.         }
  93.     }
  94.     if(KeyListed[playerid]) { ActuKeyList(playerid); }
  95.     return 1;
  96. }
  97.  
  98. public OnPlayerCommandText(playerid, cmdtext[])
  99. {
  100.     dcmd(keylist,7,cmdtext);
  101.     return 1;
  102. }
  103.  
  104. public OnPlayerConnect(playerid)
  105. {
  106.     KeyListed[playerid] = false;
  107.     KeyList[playerid] = CreatePlayerTextDraw( playerid, 250.00, 170.000000, " ");
  108.     PlayerTextDrawAlignment(playerid, KeyList[playerid], 2);
  109.     PlayerTextDrawBackgroundColor( playerid, KeyList[playerid], 255);
  110.     PlayerTextDrawFont( playerid, KeyList[playerid], 1);
  111.     PlayerTextDrawLetterSize( playerid, KeyList[playerid], 0.4000, 1.2);
  112.     PlayerTextDrawColor( playerid, KeyList[playerid], -1);
  113.     PlayerTextDrawSetOutline( playerid, KeyList[playerid], 0);
  114.     PlayerTextDrawSetProportional( playerid, KeyList[playerid], 1);
  115.     PlayerTextDrawSetShadow( playerid, KeyList[playerid], 1);
  116.     PlayerTextDrawSetSelectable( playerid, KeyList[playerid], 0);
  117.     PlayerTextDrawUseBox( playerid, KeyList[playerid], 1);
  118.     PlayerTextDrawBoxColor( playerid, KeyList[playerid], 0x000000);
  119.     PlayerTextDrawTextSize( playerid, KeyList[playerid], 200.000000, 180.000000);
  120.     return 1;
  121. }
  122.  
  123.  
  124. ResolveNewMultipleKeys(playerid, newkeys, oldkeys)
  125. {
  126.     new keys = newkeys - oldkeys;
  127.     for(new i; i < 18; i++)
  128.     {
  129.         if(keys == KeyValue[i]) { KeyInfo[playerid][i] = true; }
  130.         if(keys == oldkeys) { KeyInfo[playerid][i] = true; }
  131.     }
  132.     return 1;
  133. }
  134.  
  135. ResolveOldMultipleKeys(playerid, newkeys, oldkeys)
  136. {
  137.     new keys = oldkeys - newkeys;
  138.     for(new i; i < 18; i++)
  139.     {
  140.         if(keys == KeyValue[i]) { KeyInfo[playerid][i] = false; }
  141.         if(keys == oldkeys) { KeyInfo[playerid][i] = false; }
  142.     }
  143.     return 1;
  144. }
  145.  
  146. ActuKeyList(playerid)
  147. {
  148.     new string[1024];
  149.     format(string, 1024, "key_action : %d,~n~key_crouch : %d,~n~key_fire : %d,~n~key_sprint : %d,~n~key_secondary_attack : %d,~n~  \
  150.             key_jump : %d,~n~key_look_right : %d,~n~key_handbrake : %d,~n~key_look_left : %d,~n~key_submission : %d,~n~ \
  151.             key_walk : %d,~n~key_analog_up : %d,~n~key_analog_down : %d,~n~key_analog_left : %d,~n~ \
  152.             key_analog_right : %d,~n~key_yes : %d,~n~key_no : %d,~n~key_ctrl_back : %d,~n~",
  153.             (KeyInfo[playerid][0])? true : false,
  154.             (KeyInfo[playerid][1])?true : false,
  155.             (KeyInfo[playerid][2])? true : false,
  156.             (KeyInfo[playerid][3])? true : false,
  157.             (KeyInfo[playerid][4])? true : false,
  158.             (KeyInfo[playerid][5])? true : false,
  159.             (KeyInfo[playerid][6])? true : false,
  160.             (KeyInfo[playerid][7])? true : false,
  161.             (KeyInfo[playerid][8])? true : false,
  162.             (KeyInfo[playerid][9])? true : false,
  163.             (KeyInfo[playerid][10])? true : false,
  164.             (KeyInfo[playerid][11])? true : false,
  165.             (KeyInfo[playerid][12])? true : false,
  166.             (KeyInfo[playerid][13])? true : false,
  167.             (KeyInfo[playerid][14])? true : false,
  168.             (KeyInfo[playerid][15])? true : false,
  169.             (KeyInfo[playerid][16])? true : false,
  170.             (KeyInfo[playerid][17])? true : false);
  171.  
  172.     PlayerTextDrawSetString(playerid, KeyList[playerid], string);
  173.     PlayerTextDrawShow(playerid, KeyList[playerid]);
  174.     return 1;
  175. }
  176. dcmd_keylist(playerid, params[])
  177. {
  178.     #pragma unused params
  179.     new string[1024];
  180.     if(!KeyListed[playerid])
  181.     {
  182.         format(string, 1024, "key_action : %d,~n~key_crouch : %d,~n~key_fire : %d,~n~key_sprint : %d,~n~key_secondary_attack : %d,~n~  \
  183.             key_jump : %d,~n~key_look_right : %d,~n~key_handbrake : %d,~n~key_look_left : %d,~n~key_submission : %d,~n~ \
  184.             key_look_behind : %d,~n~key_walk : %d,~n~key_analog_up : %d,~n~key_analog_down : %d,~n~key_analog_left : %d,~n~ \
  185.             key_analog_right : %d,~n~key_yes : %d,~n~key_no : %d,~n~key_ctrl_back : %d",
  186.             (KeyInfo[playerid][key_action])? true : false,
  187.             (KeyInfo[playerid][key_crouch])?true : false,
  188.             (KeyInfo[playerid][key_fire])? true : false,
  189.             (KeyInfo[playerid][key_sprint])? true : false,
  190.             (KeyInfo[playerid][key_secondary_attack])? true : false,
  191.             (KeyInfo[playerid][key_jump])? true : false,
  192.             (KeyInfo[playerid][key_look_right])? true : false,
  193.             (KeyInfo[playerid][key_handbrake])? true : false,
  194.             (KeyInfo[playerid][key_look_left])? true : false,
  195.             (KeyInfo[playerid][key_submission])? true : false,
  196.             (KeyInfo[playerid][key_walk])? true : false,
  197.             (KeyInfo[playerid][key_analog_up])? true : false,
  198.             (KeyInfo[playerid][key_analog_down])? true : false,
  199.             (KeyInfo[playerid][key_analog_left])? true : false,
  200.             (KeyInfo[playerid][key_analog_right])? true : false,
  201.             (KeyInfo[playerid][key_yes])? true : false,
  202.             (KeyInfo[playerid][key_no])? true : false,
  203.             (KeyInfo[playerid][key_ctrl_back])? true : false);
  204.  
  205.         PlayerTextDrawSetString(playerid, KeyList[playerid], string);
  206.         PlayerTextDrawShow(playerid, KeyList[playerid]);
  207.         KeyListed[playerid] = true;
  208.     }
  209.     else
  210.     {
  211.         PlayerTextDrawHide(playerid, KeyList[playerid]);
  212.         KeyListed[playerid] = false;
  213.     }
  214.     return 1;
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement