Advertisement
JeffryUGP

[FS] Interaktive Dialoge - Beispielscript

Jan 22nd, 2014
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.68 KB | None | 0 0
  1. /*============================================================================================================================*
  2. * Credits: Dieser FilterScript "Interaktive Dialoge" wurde von Jeffry gemacht!                                                *
  3. *                                                                                                                             *
  4. *                                                                                                                             *
  5. * Made in January 2014.                                                                                                       *
  6. *                                                                                                                             *
  7. * Rechte des Benutzers:                                                                                                       *
  8. *                                                                                                                             *
  9. * -Es ist erlaubt den FilterScript zu modifizieren, solange keine Credits entfernt werden oder er veröffentlicht wird.       *
  10. *                                                                                                                             *
  11. * -Es ist nicht erlaubt diesen FilterScript neu zu veröffentlichen.                                                            *
  12. * -Es ist nicht elaubt dies als sein eigenes Werk darzustellen oder zu verkaufen.                                             *
  13. * -Es ist nicht erlaubt Credits zu entfernen.                                                                                 *
  14. *                                                                                                                             *
  15. * Danke.                                                                                                                      *
  16. * Viel Spaß.                                                                                                                 *
  17. *                                                                                                                             *
  18. *=============================================================================================================================*/
  19. #include <a_samp>
  20.  
  21. new g_PlayerDialog[MAX_PLAYERS] = {-1,...};
  22.  
  23. #define MAX_OWN_DIALOGS 100
  24. new g_dCaption[MAX_OWN_DIALOGS][36];
  25. new g_dInfo[MAX_OWN_DIALOGS][256];
  26. new g_dButton1[MAX_OWN_DIALOGS][8];
  27. new g_dButton2[MAX_OWN_DIALOGS][8];
  28.  
  29. public OnPlayerDisconnect(playerid, reason)
  30. {
  31.     g_PlayerDialog[playerid] = -1;
  32.     return 1;
  33. }
  34.  
  35.  
  36. public OnPlayerCommandText(playerid, cmdtext[])
  37. {
  38.     if(!strcmp("/ListeZeigen", cmdtext, true))
  39.     {
  40.         ShowPlayerDialog_Ex(playerid, 0, DIALOG_STYLE_LIST, "Beispiel", GetDialogInfo(0), "Ausw.", "Cancel");
  41.         SetTimer("a", 400, 1);
  42.         return 1;
  43.     }
  44.     if(!strcmp("/InListeEintragen", cmdtext, true))
  45.     {
  46.         AddItemToDialog(0, SpielerName(playerid));
  47.         return 1;
  48.     }
  49.     if(!strcmp("/AusListeAustragen", cmdtext, true))
  50.     {
  51.         RemoveItemFromDialog(0, SpielerName(playerid));
  52.         return 1;
  53.     }
  54.     return 0;
  55. }
  56.  
  57. forward a();
  58. public a()
  59. {
  60.     new b[20];
  61.     switch(random(10))
  62.     {
  63.         case 0: b = "Listitem A";
  64.         case 1: b = "Listitem B";
  65.         case 2: b = "Listitem C";
  66.         case 3: b = "Listitem D";
  67.         case 4: b = "Listitem E";
  68.         case 5: b = "Listitem F";
  69.         case 6: b = "Listitem G";
  70.         case 7: b = "Listitem H";
  71.         case 8: b = "Listitem I";
  72.         case 9: b = "Listitem J";
  73.     }
  74.     switch(random(2))
  75.     {
  76.         case 0: AddItemToDialog(0, b);
  77.         case 1: RemoveItemFromDialog(0, b);
  78.     }
  79.     return 1;
  80. }
  81.  
  82. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  83. {
  84.     g_PlayerDialog[playerid] = -1;
  85.    
  86.     if(dialogid == 0 && response == 1)
  87.     {
  88.         new item[64], l_found_id = -1;
  89.         item = GetItemFromDialog(dialogid, listitem);
  90.         if(!strlen(item)) return SendClientMessage(playerid, 0xFF0000FF, "Fehler: Item nicht gefunden");
  91.         for(new i=0; i<MAX_PLAYERS; i++)
  92.         {
  93.             if(IsPlayerConnected(i) && !strcmp(SpielerName(i), item))
  94.             {
  95.                 l_found_id = i;
  96.                 break;
  97.             }
  98.         }
  99.         new l_str[144];
  100.         format(l_str, sizeof(l_str), "Info: Ich habe Spieler %s mit der ID %d angeklickt.", SpielerName(l_found_id), l_found_id);
  101.         return SendClientMessage(playerid, -1, l_str);
  102.     }
  103.     return 0;
  104. }
  105.  
  106.  
  107. stock ShowPlayerDialog_Ex(playerid, dialogid, style, caption[], info[], button1[], button2[])
  108. {
  109.     g_PlayerDialog[playerid] = dialogid;
  110.     ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
  111.     if(dialogid > -1 && dialogid < MAX_OWN_DIALOGS)
  112.     {
  113.         format(g_dCaption[dialogid], sizeof(g_dCaption[]), caption);
  114.         format(g_dInfo[dialogid], sizeof(g_dInfo[]), info);
  115.         format(g_dButton1[dialogid], sizeof(g_dButton1[]), button1);
  116.         format(g_dButton2[dialogid], sizeof(g_dButton2[]), button2);
  117.     }
  118.     return 1;
  119. }
  120.  
  121. stock GetPlayerDialog(playerid)
  122. {
  123.     return g_PlayerDialog[playerid];
  124. }
  125.  
  126. stock GetDialogCaption(dialogid)
  127. {
  128.     return g_dCaption[dialogid];
  129. }
  130.  
  131. stock GetDialogInfo(dialogid)
  132. {
  133.     return g_dInfo[dialogid];
  134. }
  135.  
  136. stock GetDialogButton1(dialogid)
  137. {
  138.     return g_dButton1[dialogid];
  139. }
  140.  
  141. stock GetDialogButton2(dialogid)
  142. {
  143.     return g_dButton2[dialogid];
  144. }
  145.  
  146.  
  147. stock AddItemToDialog(dialogid, item[])
  148. {
  149.     new l_pos = strfind(g_dInfo[dialogid], item);
  150.     if(l_pos != -1) strdel(g_dInfo[dialogid], l_pos, l_pos+strlen(item)+1);
  151.     format(g_dInfo[dialogid], sizeof(g_dInfo[]), "%s%s\n", g_dInfo[dialogid], item);
  152.     return UpdateDialogForAll(dialogid);
  153. }
  154.  
  155. stock RemoveItemFromDialog(dialogid, item[])
  156. {
  157.     new l_pos = strfind(g_dInfo[dialogid], item);
  158.     if(l_pos == -1) return 0;
  159.     strdel(g_dInfo[dialogid], l_pos, l_pos+strlen(item)+1);
  160.     return UpdateDialogForAll(dialogid);
  161. }
  162.  
  163. stock GetItemFromDialog(dialogid, listitem)
  164. {
  165.     new l_str[64], c_count, l_lastpos = -1, tmp[sizeof(g_dInfo[])];
  166.     tmp = "*";
  167.     for(new i=0; i<strlen(g_dInfo[dialogid]); i++)
  168.     {
  169.         if(g_dInfo[dialogid][i] == '\n')
  170.         {
  171.             if(c_count == listitem)
  172.             {
  173.                 tmp = g_dInfo[dialogid];
  174.                 strdel(tmp, i, strlen(g_dInfo[dialogid]));
  175.                 strdel(tmp, 0, l_lastpos+1);
  176.                 break;
  177.             }
  178.             c_count++;
  179.             l_lastpos = i;
  180.         }
  181.     }
  182.     format(l_str, sizeof(l_str), tmp);
  183.     return l_str;
  184. }
  185.  
  186. stock UpdateDialogForAll(dialogid)
  187. {
  188.     for(new i=0; i<MAX_PLAYERS; i++)
  189.     {
  190.         if(g_PlayerDialog[i] == dialogid)
  191.         {
  192.             ShowPlayerDialog(i, g_PlayerDialog[i], DIALOG_STYLE_LIST, g_dCaption[g_PlayerDialog[i]], g_dInfo[g_PlayerDialog[i]], g_dButton1[g_PlayerDialog[i]], g_dButton2[g_PlayerDialog[i]]);
  193.         }
  194.     }
  195.     return 1;
  196. }
  197.  
  198. stock SpielerName(playerid)
  199. {
  200.     new l_name[MAX_PLAYER_NAME];
  201.     GetPlayerName(playerid, l_name, sizeof(l_name));
  202.     return l_name;
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement