dbinds.pwn 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. //BINDS by D4RKKNIGH7
  2. // I do not take all credit for this, some of these functions belong to other people, unsure of location, if its you tell me and ill add you to credits
  3. //This was only a quick version to make, I will be updating in the future to make script smaller and tidyer.
  4. //Thanks for using.
  5. //Any bugs/ideas please put on the forum.
  6. //I have tested with YCMD only, but no reason it wont work with zcmd.
  7. #if !defined isnull
  8. #define isnull(%1) \
  9. ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  10. #endif
  11. #include <a_samp>
  12. #include <sscanf>
  13. #include <YSI\y_commands>
  14. //#include <zcmd>
  15. new PlayersBind[MAX_PLAYERS][24][128];
  16. new ToBind[MAX_PLAYERS];
  17. #define DIALOG_BIND 300
  18. #define DIALOG_BIND2 400
  19. #define RELEASED(%0) (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
  20. public OnFilterScriptInit()
  21. {
  22. print("\n--------------------------------------");
  23. print(" D4RKKNIGH7's Bind Script");
  24. print("--------------------------------------\n");
  25. return 1;
  26. }
  27. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  28. {
  29. if(RELEASED(KEY_ACTION)) if(!isnull(PlayersBind[playerid][0])) DoBind(playerid, PlayersBind[playerid][0]);
  30. if(RELEASED(KEY_CROUCH)) if(!isnull(PlayersBind[playerid][1])) DoBind(playerid, PlayersBind[playerid][1]);
  31. if(RELEASED(KEY_FIRE)) if(!isnull(PlayersBind[playerid][2])) DoBind(playerid, PlayersBind[playerid][2]);
  32. if(RELEASED(KEY_SPRINT)) if(!isnull(PlayersBind[playerid][3])) DoBind(playerid, PlayersBind[playerid][3]);
  33. if(RELEASED(KEY_SECONDARY_ATTACK)) if(!isnull(PlayersBind[playerid][4])) DoBind(playerid, PlayersBind[playerid][4]);
  34. if(RELEASED(KEY_JUMP)) if(!isnull(PlayersBind[playerid][5])) DoBind(playerid, PlayersBind[playerid][5]);
  35. if(RELEASED(KEY_LOOK_RIGHT)) if(!isnull(PlayersBind[playerid][6])) DoBind(playerid, PlayersBind[playerid][6]);
  36. if(RELEASED(KEY_HANDBRAKE)) if(!isnull(PlayersBind[playerid][7])) DoBind(playerid, PlayersBind[playerid][7]);
  37. if(RELEASED(KEY_LOOK_LEFT)) if(!isnull(PlayersBind[playerid][8])) DoBind(playerid, PlayersBind[playerid][8]);
  38. if(RELEASED(KEY_SUBMISSION)) if(!isnull(PlayersBind[playerid][9])) DoBind(playerid, PlayersBind[playerid][9]);
  39. if(RELEASED(KEY_LOOK_BEHIND)) if(!isnull(PlayersBind[playerid][10])) DoBind(playerid, PlayersBind[playerid][10]);
  40. if(RELEASED(KEY_WALK)) if(!isnull(PlayersBind[playerid][11])) DoBind(playerid, PlayersBind[playerid][11]);
  41. if(RELEASED(KEY_ANALOG_UP)) if(!isnull(PlayersBind[playerid][12])) DoBind(playerid, PlayersBind[playerid][12]);
  42. if(RELEASED(KEY_ANALOG_DOWN)) if(!isnull(PlayersBind[playerid][13])) DoBind(playerid, PlayersBind[playerid][13]);
  43. if(RELEASED(KEY_ANALOG_LEFT)) if(!isnull(PlayersBind[playerid][14])) DoBind(playerid, PlayersBind[playerid][14]);
  44. if(RELEASED(KEY_ANALOG_RIGHT)) if(!isnull(PlayersBind[playerid][15])) DoBind(playerid, PlayersBind[playerid][15]);
  45. if(RELEASED(KEY_YES)) if(!isnull(PlayersBind[playerid][16])) DoBind(playerid, PlayersBind[playerid][16]);
  46. if(RELEASED(KEY_NO)) if(!isnull(PlayersBind[playerid][17])) DoBind(playerid, PlayersBind[playerid][17]);
  47. if(RELEASED(KEY_CTRL_BACK)) if(!isnull(PlayersBind[playerid][18])) DoBind(playerid, PlayersBind[playerid][18]);
  48. if(RELEASED(KEY_UP)) if(!isnull(PlayersBind[playerid][19])) DoBind(playerid, PlayersBind[playerid][19]);
  49. if(RELEASED(KEY_DOWN)) if(!isnull(PlayersBind[playerid][20])) DoBind(playerid, PlayersBind[playerid][20]);
  50. if(RELEASED(KEY_LEFT)) if(!isnull(PlayersBind[playerid][21])) DoBind(playerid, PlayersBind[playerid][21]);
  51. if(RELEASED(KEY_RIGHT)) if(!isnull(PlayersBind[playerid][22])) DoBind(playerid, PlayersBind[playerid][22]);
  52. return 1;
  53. }
  54. public OnPlayerText(playerid, text[])
  55. {
  56. return 1;
  57. }
  58. CMD:bind(playerid, params[])
  59. {
  60. ShowBindDialog(playerid);
  61. return 1;
  62. }
  63. DoBind(playerid, text[])
  64. {
  65. if(text[0] != '/') return OnPlayerText(playerid, text);
  66. else return CallRemoteFunction("OnPlayerCommandText", "is", playerid, text);
  67. }
  68. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  69. {
  70. switch(dialogid)
  71. {
  72. case DIALOG_BIND:
  73. {
  74. if( !response ) return 1;
  75. switch( listitem )
  76. {
  77. case 0: ToBind[playerid] = 0, ShowBind2Dialog(playerid);
  78. case 1: ToBind[playerid] = 1, ShowBind2Dialog(playerid);
  79. case 2: ToBind[playerid] = 2, ShowBind2Dialog(playerid);
  80. case 3: ToBind[playerid] = 3, ShowBind2Dialog(playerid);
  81. case 4: ToBind[playerid] = 4, ShowBind2Dialog(playerid);
  82. case 5: ToBind[playerid] = 5, ShowBind2Dialog(playerid);
  83. case 6: ToBind[playerid] = 6, ShowBind2Dialog(playerid);
  84. case 7: ToBind[playerid] = 7, ShowBind2Dialog(playerid);
  85. case 8: ToBind[playerid] = 8, ShowBind2Dialog(playerid);
  86. case 9: ToBind[playerid] = 9, ShowBind2Dialog(playerid);
  87. case 10: ToBind[playerid] = 10, ShowBind2Dialog(playerid);
  88. case 11: ToBind[playerid] = 11, ShowBind2Dialog(playerid);
  89. case 12: ToBind[playerid] = 12, ShowBind2Dialog(playerid);
  90. case 13: ToBind[playerid] = 13, ShowBind2Dialog(playerid);
  91. case 14: ToBind[playerid] = 14, ShowBind2Dialog(playerid);
  92. case 15: ToBind[playerid] = 15, ShowBind2Dialog(playerid);
  93. case 16: ToBind[playerid] = 16, ShowBind2Dialog(playerid);
  94. case 17: ToBind[playerid] = 17, ShowBind2Dialog(playerid);
  95. case 18: ToBind[playerid] = 18, ShowBind2Dialog(playerid);
  96. case 19: ToBind[playerid] = 19, ShowBind2Dialog(playerid);
  97. case 20: ToBind[playerid] = 20, ShowBind2Dialog(playerid);
  98. case 21: ToBind[playerid] = 21, ShowBind2Dialog(playerid);
  99. case 22: ToBind[playerid] = 22, ShowBind2Dialog(playerid);
  100. case 23: ToBind[playerid] = 23, ShowBind2Dialog(playerid);
  101. }
  102. }
  103. case DIALOG_BIND2:
  104. {
  105. if( !response ) return 1;
  106. if(strlen(inputtext) == 0) ShowBind2Dialog(playerid);
  107. else
  108. {
  109. format(PlayersBind[playerid][ToBind[playerid]], 128, "%s", inputtext);
  110. }
  111. }
  112. }
  113. return 1;
  114. }
  115. ShowBindDialog(playerid) return ShowPlayerDialog( playerid, DIALOG_BIND, DIALOG_STYLE_LIST, "What key would you like to Bind", "KEY_ACTION\nKEY_CROUCH\nKEY_FIRE\nKEY_SPRINT\nKEY_SECONDARY_ATTACK\nKEY_JUMP\nKEY_LOOK_RIGHT\nKEY_HANDBRAKE\nKEY_LOOK_LEFT\nKEY_SUBMISSION\nKEY_LOOK_BEHIND\nKEY_WALK\nKEY_ANALOG_UP\nKEY_ANALOG_DOWN\nKEY_ANALOG_LEFT\nKEY_ANALOG_RIGHT\nKEY_YES\nKEY_NO\nKEY_CTRL_BACK\nKEY_UP\nKEY_DOWN\nKEY_LEFT\nKEY_RIGHT", "Choose", "Cancel" );
  116. ShowBind2Dialog(playerid) return ShowPlayerDialog( playerid, DIALOG_BIND2, DIALOG_STYLE_INPUT, "Bind", "What would you like to bind?\n you can bind something to say or a command", "Bind", "Cancel" );