Advertisement
OKStyle

FD ASM INC

Mar 31st, 2013
769
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.15 KB | None | 0 0
  1. // Formatted Dialog ASM by BJIADOKC, Daniel_Cortez, O.K.Style™
  2. forward ASM_Hook(arg_0[], arg_1, Float:arg_2);
  3. public ASM_Hook(arg_0[], arg_1, Float:arg_2)
  4. {
  5.     #emit STACK 20
  6.     #emit ZERO.pri
  7.     #emit ZERO.alt
  8.     format(arg_0, 1, "%s%d%f", arg_0, arg_1, arg_2);
  9.     ShowPlayerDialog(-1, -1, -1, "", arg_0, "", "");
  10.     #emit RETN
  11.     return 1;
  12. }
  13. stock ShowPlayerFormattedDialog(playerid, dialogid, style, caption[], button1[], button2[], content[], {Float, _}:...)
  14. {
  15.     new argc = (numargs() - 7) << 2;
  16.     if(argc == 0)
  17.     {
  18.         #emit   PUSH.S      button2
  19.         #emit   PUSH.S      button1
  20.         #emit   PUSH.S      content
  21.         #emit   PUSH.S      caption
  22.         #emit   PUSH.S      dialogid
  23.         #emit   PUSH.S      style
  24.         #emit   PUSH.S      playerid
  25.         #emit   PUSH.C      24
  26.         #emit   SYSREQ.C    ShowPlayerDialog
  27.         #emit   STACK       32
  28.     }
  29.     else
  30.     {
  31.         new output[2048], arg_start, arg_end;
  32.         #emit   CONST.alt       content
  33.         #emit   LCTRL           5
  34.         #emit   ADD
  35.         #emit   STOR.S.pri      arg_start
  36.         #emit   LOAD.S.alt      argc
  37.         #emit   ADD
  38.         #emit   STOR.S.pri      arg_end
  39.         do
  40.         {
  41.             #emit   LOAD.I
  42.             #emit   PUSH.pri
  43.             arg_end -= 4;
  44.             #emit   LOAD.S.pri  arg_end
  45.         }
  46.         while(arg_end > arg_start);
  47.         #emit   PUSH.S          content
  48.         #emit   PUSH.C          2048
  49.         #emit   PUSH.ADR        output
  50.         argc += 12;
  51.         #emit   PUSH.S          argc
  52.         #emit   SYSREQ.C        format
  53.         argc += 4;
  54.         #emit   LCTRL           4
  55.         #emit   LOAD.S.alt      argc
  56.         #emit   ADD
  57.         #emit   SCTRL           4
  58.         #emit   PUSH.S          button2
  59.         #emit   PUSH.S          button1
  60.         #emit   PUSH.ADR        output
  61.         #emit   PUSH.S          caption
  62.         #emit   PUSH.S          dialogid
  63.         #emit   PUSH.S          style
  64.         #emit   PUSH.S          playerid
  65.         #emit   PUSH.C          28
  66.         #emit   SYSREQ.C        ShowPlayerDialog
  67.         #emit   STACK           32
  68.     }
  69.     #emit RETN
  70.     return 1;
  71. }
  72. stock ShowFormattedDialogForAll(dialogid, style, caption[], button1[], button2[], content[], {Float, _}:...)
  73. {
  74.     new argc = (numargs() - 7) << 2, all_pls_dlg = GetMaxPlayers();
  75.     if(argc == 0)
  76.     {
  77.         #emit   PUSH.S      button2
  78.         #emit   PUSH.S      button1
  79.         #emit   PUSH.S      content
  80.         #emit   PUSH.S      caption
  81.         #emit   PUSH.S      dialogid
  82.         #emit   PUSH.S      style
  83.         do
  84.         {
  85.             all_pls_dlg--;
  86.             #emit   PUSH.S      all_pls_dlg
  87.             #emit   PUSH.C      28
  88.             #emit   SYSREQ.C    ShowPlayerDialog
  89.             #emit   stack       8
  90.         }
  91.         while(all_pls_dlg != 0);
  92.         #emit   STACK           24
  93.     }
  94.     else
  95.     {
  96.         new output[2048], arg_start, arg_end;
  97.         #emit   CONST.alt       content
  98.         #emit   LCTRL           5
  99.         #emit   ADD
  100.         #emit   STOR.S.pri      arg_start
  101.         #emit   LOAD.S.alt      argc
  102.         #emit   ADD
  103.         #emit   STOR.S.pri      arg_end
  104.         do
  105.         {
  106.             #emit   LOAD.I
  107.             #emit   PUSH.pri
  108.             arg_end -= 4;
  109.             #emit   LOAD.S.pri  arg_end
  110.         }
  111.         while(arg_end > arg_start);
  112.         #emit   PUSH.S          content
  113.         #emit   PUSH.C          2048
  114.         #emit   PUSH.ADR        output
  115.         argc += 12;
  116.         #emit   PUSH.S          argc
  117.         #emit   SYSREQ.C        format
  118.         argc += 4;
  119.         #emit   LCTRL           4
  120.         #emit   LOAD.S.alt      argc
  121.         #emit   ADD
  122.         #emit   SCTRL           4
  123.         #emit   PUSH.S          button2
  124.         #emit   PUSH.S          button1
  125.         #emit   PUSH.ADR        output
  126.         #emit   PUSH.S          caption
  127.         #emit   PUSH.S          dialogid
  128.         #emit   PUSH.S          style
  129.         do
  130.         {
  131.             all_pls_dlg--;
  132.             #emit   PUSH.S      all_pls_dlg
  133.             #emit   PUSH.C      28
  134.             #emit   SYSREQ.C    ShowPlayerDialog
  135.             #emit   stack       8
  136.         }
  137.         while(all_pls_dlg != 0);
  138.         #emit   STACK           24
  139.     }
  140.     #emit RETN
  141.     return 1;
  142. }
  143. #define ShowPlayerDialog(%0,%1,%2,%3,%4,%5,%6) ShowPlayerFormattedDialog(%0, %1, %2, %3, %5, %6, %4)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement