Advertisement
-DeimoS-

Защита от Dialog Hider

Mar 1st, 2016
885
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.52 KB | None | 0 0
  1. /*==============================================================================
  2.                             Защита от
  3.                            Dialog Hider
  4.                             by DeimoS
  5. ==============================================================================*/
  6.  
  7. static ac_dhider__player_dialog_ids[MAX_PLAYERS] = {-1, ...};
  8.  
  9.  
  10.  
  11. // Перехват ShowPlayerDialog для записи показанного игроку ID диалога
  12. stock ac_dhider__ShowPlayerDialog(playerid, dialogid, type, header[], text[], button1[], button2[])
  13. {
  14.     ac_dhider__player_dialog_ids[playerid] = dialogid;
  15.     return ShowPlayerDialog(playerid, dialogid, type, header, text, button1, button2);
  16. }
  17. #if defined _ALS_ShowPlayerDialog
  18.     #undef    ShowPlayerDialog
  19. #else
  20.     #define    _ALS_ShowPlayerDialog
  21. #endif
  22. #define    ShowPlayerDialog    ac_dhider__ShowPlayerDialog
  23.  
  24.  
  25.  
  26. // Перехват OnDialogResponse для проверки того, был ли показан игроку диалог, данные о котором он прислал серверу
  27. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  28. {
  29.     if(ac_dhider__player_dialog_ids[playerid] != dialogid)
  30.         return CallLocalFunction("OnPlayerUseDialogHider", "ii", playerid, dialogid);
  31.     ac_dhider__player_dialog_ids[playerid] = -1;
  32. #if defined ac_dhider__OnDialogResponse
  33.     ac_dhider__OnDialogResponse(playerid, dialogid, response, listitem, inputtext);
  34. #endif
  35.     return 1;
  36. }
  37. #if defined _ALS_OnDialogResponse
  38.     #undef    OnDialogResponse
  39. #else
  40.     #define    _ALS_OnDialogResponse
  41. #endif
  42.  
  43. #define    OnDialogResponse    ac_dhider__OnDialogResponse
  44.  
  45. #if defined ac_dhider__OnDialogResponse
  46.     forward ac_dhider__OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
  47. #endif
  48.  
  49. // Перехват OnPlayerDisconnect для того, чтоб обновить данные в массиве для следующего игрока
  50. public OnPlayerDisconnect(playerid, reason)
  51. {
  52.     ac_dhider__player_dialog_ids[playerid] = -1;
  53. #if defined ac_dhider__OnPlayerDisconnect
  54.     ac_dhider__OnPlayerDisconnect(playerid, reason);
  55. #endif
  56.     return 1;
  57. }
  58. #if defined _ALS_OnPlayerDisconnect
  59.     #undef OnPlayerDisconnect
  60. #else
  61.     #define _ALS_OnPlayerDisconnect
  62. #endif
  63.  
  64. #define OnPlayerDisconnect ac_dhider__OnPlayerDisconnect
  65. #if defined ac_dhider__OnPlayerDisconnect
  66.     forward ac_dhider__OnPlayerDisconnect(playerid, reason);
  67. #endif
  68.  
  69.  
  70.  
  71. forward OnPlayerUseDialogHider(playerid, dialogid);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement