Advertisement
Guest User

c_Dialogs.inc

a guest
Apr 1st, 2013
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.93 KB | None | 0 0
  1. /**
  2.  *  Author: Carlo. | Autorius: Carlo.
  3.  *  Include: c_Dialogs
  4.  *  Copyright 2013 c_library,
  5.  *  (email: samp.carlo@gmail.com)
  6.  */
  7.  
  8.  /*
  9.  
  10.     * CreateDialog() funkcija naudojama OnGameModeInit() callback'e
  11.     * ShowDialogForPlayer() funkciją galite naudoti visur kur yra playerid parametras
  12.     * ShowDialogForAll() funckiją galite naudoti visur
  13.     * ChangeDialog() funkciją galite naudoti visur
  14.     * HideDialogsForAll() funkciją galite naudoti visur
  15.     * HideDialogsForPlayer() funkciją galite naudoti tik kur yra playerid parametras
  16.     * ShowNextDialog() funkciją galite naudoti tik kur yra playerid parametras
  17.     * ShowPrevDialog() funkciją galite naudoti tik kur yra playerid parametras
  18.  
  19.     v0.1b:
  20.     - Pataisyta klaida su ChangeDialog, dabar nustos rodyti pakeistą dialog'ą ir jį parodys atsinaujinusį.
  21.     - Padaryta taip, kad jeigu sukuriant dialog'ą su CreateDialog() toks id jau naudojamas išmestų klaidą ir nesukurtų dialog'o
  22.     - Padaryta, kad default button2 būtų lygus "" ir jo rašyti nereikėtų ( Thanks Yiin )
  23.  
  24.   */
  25.  
  26.  
  27. #if !defined _samp_included
  28.     #tryinclude <a_samp>
  29.     #if !defined _samp_included
  30.         #error could not locate a_samp.inc file, please check your server includes
  31.     #endif
  32. #endif
  33.  
  34. #tryinclude <foreach>
  35.  
  36. #define MAX_DIALOGS 10000
  37. #define function::%0(%1) stock %0(%1)
  38.  
  39. enum d_info
  40. {
  41.     ID,
  42.     dialog_id,
  43.     style,
  44.     header[400],
  45.     content[500],
  46.     button1[20],
  47.     button2[20]
  48. }
  49. static dInfo[MAX_DIALOGS][d_info];
  50.  
  51. /* Function to Create a dialog | Funkcija kuri sukuria dialog'ą */
  52. function::CreateDialog(id,d_id,d_style,d_header[],d_content[],d_button1[],d_button2[] = "")
  53. {
  54.     if(DialogExist(id))
  55.     {
  56.         printf("c_Dialogs: klaida su dialog id %i, šis dialogo id jau naudojamas!",id);
  57.         return 1;
  58.     }
  59.     dInfo[id][ID]=id;
  60.     dInfo[id][dialog_id]=d_id;
  61.     dInfo[id][style]=d_style;
  62.     format(dInfo[id][header],40,"%s",d_header);
  63.     format(dInfo[id][content],400,"%s",d_content);
  64.     format(dInfo[id][button1],20,"%s",d_button1);
  65.     format(dInfo[id][button2],20,"%s",d_button2);
  66.     return 1;
  67. }
  68. /* Function to Show a Dialog by id for a one player | Funkcija kuri parodo dialog'ą pagal jo id vienam žaidėjui */
  69. function::ShowDialogForPlayer(playerid,d_id)
  70. {
  71.     ShowPlayerDialog(playerid,dInfo[d_id][dialog_id],dInfo[d_id][style],dInfo[d_id][header],dInfo[d_id][content],dInfo[d_id][button1],dInfo[d_id][button2]);
  72.     SetPVarInt(playerid,"currentDialog",d_id);
  73.     return 1;
  74. }
  75. /* Function to Show a Dialog by id for a all players | Funkcija kuri parodo dialog'ą pagal jo id visiems žaidėjams */
  76. function::ShowDialogForAll(d_id)
  77. {
  78.     foreach(Player,i)
  79.     {
  80.         ShowPlayerDialog(i,dInfo[d_id][dialog_id],dInfo[d_id][style],dInfo[d_id][header],dInfo[d_id][content],dInfo[d_id][button1],dInfo[d_id][button2]);
  81.         SetPVarInt(i,"currentDialog",d_id);
  82.     }
  83.     return 1;
  84. }
  85. /* Function to Change a Dialog parametres | Funkcija su kuria pakeisite esančio dialog'o parametrus */
  86. function::ChangeDialog(id,d_style,d_header[],d_content[],d_button1[],d_button2[])
  87. {
  88.     dInfo[id][style]=d_style;
  89.     format(dInfo[id][header],40,"%s",d_header);
  90.     format(dInfo[id][content],400,"%s",d_content);
  91.     format(dInfo[id][button1],20,"%s",d_button1);
  92.     format(dInfo[id][button2],20,"%s",d_button2);
  93.     foreach(Player,i)
  94.     {
  95.         if(GetPVarInt(i,"currentDialog")==id)
  96.         {
  97.             HideDialogsForPlayer(i);
  98.             ShowDialogForPlayer(i,id);
  99.         }
  100.     }
  101.     return 1;
  102. }
  103. /* Function to Hide all dialogs for all | Funkcija kuri paslėpia visus atidarytus dialog'us visiems */
  104. function::HideDialogsForAll()
  105. {
  106.     foreach(Player,i)
  107.     {
  108.         ShowPlayerDialog(i, -1, 0, NULL, NULL, NULL, NULL);
  109.     }
  110.    
  111.     return 1;
  112. }
  113. /* Function to Hide all dialogs for player | Funkcija kuri paslėpia visus atidarytus dialog'us konkrečiam žaidėjui */
  114. function::HideDialogsForPlayer(playerid)
  115. {
  116.     ShowPlayerDialog(playerid, -1, 0, NULL, NULL, NULL, NULL);
  117.     return 1;
  118. }
  119. /* Function to show dialog next by id ( smth like 1,2,3, and etc. )| Funkcija kuri parodo sekantį dialogą, tarkim 1 tai rodys dialogą su id 2 */
  120. function::ShowNextDialog(playerid,d_id)
  121. {
  122.     if(GetPVarInt(playerid,"currentDialog")==0)
  123.     {
  124.         print("c_Dialogs: klaida ShowNextDialog funkcijoje, zaidejas neturi pasirinkto dialog'o!");
  125.         return 1;
  126.     }
  127.     HideDialogsForPlayer(playerid);
  128.     ShowDialog(playerid,GetPVarInt(playerid,"currentDialog")+1);
  129.     return 1;
  130. }
  131. /* Function to show dialog prev by id ( smth like 3,2,1 and etc. )| Funkcija kuri parodo sekantį dialogą, tarkim 2 tai rodys dialogą su id 1 */
  132.  
  133. function::ShowPrevDialog(playerid,d_id)
  134. {
  135.     if(GetPVarInt(playerid,"currentDialog")==0)
  136.     {
  137.         print("c_Dialogs: klaida ShowPrevDialog funkcijoje, zaidejas neturi pasirinkto dialog'o!");
  138.         return 1;
  139.     }
  140.     HideDialogsForPlayer(playerid);
  141.     ShowDialog(playerid,GetPVarInt(playerid,"currentDialog")-1);
  142.     return 1;
  143. }
  144. /* Function to check if dialog exist or not | Funkcija kuri patikrina ar egzistuoja dialog'as */
  145. function::DialogExist(d_id)
  146. {
  147.     for(new d; d<MAX_DIALOGS; d++)
  148.     {
  149.         if(dInfo[d][ID] == d_id)
  150.             return true;
  151.         else
  152.             return false;
  153.     }
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement