Advertisement
Guest User

Off Line Message/Cash Sender by Zeus [v1.0]

a guest
Jun 2nd, 2014
451
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*=========================================================================
  2.   -------------------------------------------------------------------------
  3. *************Off-Line Message/Cash Sender By Zeus aka. BroZeus*************
  4.  
  5.   Current Version:- v1.0
  6.  
  7.   Credits--
  8.   YSI aka Cole Miner     :For y_ini include and isnumeric stock and for sscanf2   [<--He is always there :D]
  9.   Zeex                   :For ZCMD
  10.   David Weston           :For strlib.inc
  11.   Whole SAMP Team        :For SAMP and PAWNO compiler                             [ofc This credit would be alwasy there]
  12.   Zeus aka BroZeus       :For scripting of this FS
  13.  
  14. Avalable commands:--
  15. /sendcash      ---For sending offline message/cash
  16. /sendmes       ---Same as /sendcash
  17. /trans         ---For seeing received messages [Read messages=Green in color and UNREAD messages = orange in color]
  18.  
  19. *******************DO NOT REMOVE CREDITS OR REDISTRUBATE*******************
  20. ----------------------------------------------------------------------------
  21. ===========================================================================*/
  22.  
  23. #include <a_samp>
  24. #include <YSI\y_ini>
  25. #include <zcmd>
  26. #include <sscanf2>
  27. #include <strlib>
  28. /*======================*/
  29. #define USER_PATH "/Users/%s.ini"//specifies the user path which your server uses
  30. /*======================*/
  31. #define D_SendCash1   500//the dialogs and there id edit thier id's as per as your use DONT CHANGE THERE NAMES ONLY EDIT ID's
  32. #define D_MainMes     501
  33. #define D_ConfirmMes  502
  34. #define D_Transfers   503
  35. #define D_InputBox    504
  36. /*======================*/
  37. #define MESP "/Transfers/%s.ini"
  38. /*======================*/
  39. enum mInfo
  40. {
  41. Sender[MAX_PLAYER_NAME],
  42. Reciver[MAX_PLAYER_NAME],
  43. Subject[50],
  44. Amount,
  45. line1[100],
  46. line2[100],
  47. IsRead,
  48. msgn,
  49. newmsg
  50. }
  51. new MesInfo[MAX_PLAYERS][mInfo];
  52. new Inpu[MAX_PLAYERS],tg[10];
  53. /*=================================================================*/
  54. forward LoadMNO_MNO(playerid,name[],value[]);
  55. public LoadMNO_MNO(playerid,name[],value[])
  56. {
  57. INI_Int("msg_numbers", MesInfo[playerid][msgn]);
  58. INI_Int("NewMsg", MesInfo[playerid][newmsg]);
  59. return 1;
  60. }
  61. /*==================================================================*/
  62.  
  63. stock ReadWithTag(playerid,path[],tag[])//this stock made by me [ZEUS}  ;-)
  64. {
  65. new line[50],sqtag[12],sr=0,ide[15],val[21],lir=0;
  66. format(sqtag,12,"[%s]",tag);
  67. new File:Fi=fopen(path,io_read);
  68. while(fread(Fi,line))
  69. {
  70.  
  71. if(!strfind(line, sqtag, true))sr=1;
  72. if(sr==1)
  73. {
  74. lir++;
  75. sscanf(line,"p<=>s[15]s[21]",ide,val);
  76. if(lir==2)format(MesInfo[playerid][Reciver],MAX_PLAYER_NAME,"%s",str_replace("\n","",val));
  77. if(lir==3)format(MesInfo[playerid][Sender],MAX_PLAYER_NAME,"%s",str_replace("\n","",val));
  78. if(lir==4)format(MesInfo[playerid][Subject],MAX_PLAYER_NAME,"%s",str_replace("\n","",val));
  79. if(lir==5)MesInfo[playerid][Amount]=strval(str_replace("\n","",val));
  80. if(lir==6)format(MesInfo[playerid][line1],MAX_PLAYER_NAME,"%s",str_replace("\n","",val));
  81. if(lir==7)format(MesInfo[playerid][line2],MAX_PLAYER_NAME,"%s",str_replace("\n","",val));
  82. if(lir==8)MesInfo[playerid][IsRead]=strval(str_replace("\n","",val));
  83. }
  84. if(lir==8)break;
  85. }
  86. fclose(Fi);
  87. sr = 0;lir=0;
  88. return 1;
  89. }
  90.  
  91.  
  92.  
  93. stock UserPath(Reciverr[])
  94. {
  95. new string[MAX_PLAYER_NAME+20];
  96. format(string,sizeof(string),USER_PATH,Reciverr);
  97. return string;
  98. }
  99.  
  100. stock MesPath(Reciverm[])
  101. {
  102. new string[MAX_PLAYER_NAME+20];
  103. format(string,sizeof(string),MESP,Reciverm);
  104. return string;
  105. }
  106.  
  107. stock isnum(str[])//by YSI taken from y_utils
  108. {
  109.     new ch,i;
  110.     while ((ch = str[i++])) if (!('0' <= ch <= '9')) return 0;
  111.     return 1;
  112. }
  113.  
  114. stock ShowMes(playerid)
  115. {
  116. new str[250];
  117. format(str,sizeof(str),"{00FFFF}Reciver:\t\t{54C571}%s\n{00FFFF}Subject:\t\t{54C571}%s\n{00FFFF}Amount:\t\t{4E9258}$%i\n{00FFFF}Detail[Line1]:\t\t{54C571}%s\n{00FFFF}Detail[Line2]:\t\t{54C571}%s\n{E3E4FA}Send!",
  118. MesInfo[playerid][Reciver],
  119. MesInfo[playerid][Subject],
  120. MesInfo[playerid][Amount],
  121. MesInfo[playerid][line1],
  122. MesInfo[playerid][line2]);
  123. ShowPlayerDialog(playerid,D_SendCash1,DIALOG_STYLE_LIST,"{842DCE}Send Message",str,"Select","Cancel");
  124. }
  125. /*================================================================*/
  126. public OnPlayerSpawn(playerid)
  127. {
  128. new named[MAX_PLAYER_NAME];
  129. GetPlayerName(playerid,named,MAX_PLAYER_NAME);
  130. INI_ParseFile(MesPath(named), "LoadMNO_%s", .bExtra = true, .extra = playerid);
  131. if(MesInfo[playerid][newmsg]>=1)
  132. {
  133. new st[300];
  134. format(st,sizeof(st),"{00FFFF}You have received {ff0000}%i {00FFFF}new offline messages. Please do {ff0000}/trans {00FFFF}to see it/them.",MesInfo[playerid][newmsg]);
  135. SendClientMessage(playerid,-1,st);
  136. }
  137. return 1;
  138. }
  139.  
  140. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  141. {
  142.  
  143. switch(dialogid)
  144. {
  145. case D_SendCash1:
  146. {
  147. if(response){
  148. switch(listitem)
  149. {
  150. case 0:{ShowPlayerDialog(playerid,D_InputBox,DIALOG_STYLE_INPUT,"{842DCE}Reciver","{B93B8F}Enter the name of player whihc you want to send the message to.","OK","Back");Inpu[playerid]=1;}
  151. case 1:{ShowPlayerDialog(playerid,D_InputBox,DIALOG_STYLE_INPUT,"{842DCE}Subject","{B93B8F}Enter the subject of the transfer message.","OK","Back");Inpu[playerid]=2;}
  152. case 2:{ShowPlayerDialog(playerid,D_InputBox,DIALOG_STYLE_INPUT,"{842DCE}Amount","{B93B8F}Enter the amount you want to send.","OK","Back");Inpu[playerid]=3;}
  153. case 3:{ShowPlayerDialog(playerid,D_InputBox,DIALOG_STYLE_INPUT,"{842DCE}Details[Line 1/2]","{B93B8F}Enter some description about the message.\n\nNOTE:Maximum characters 20.","OK","Back");Inpu[playerid]=4;}
  154. case 4:{ShowPlayerDialog(playerid,D_InputBox,DIALOG_STYLE_INPUT,"{842DCE}Details[Line 2/2]","{B93B8F}Enter some description about the message.\n\nNOTE:Maximum characters 20.","OK","Back");Inpu[playerid]=5;}
  155. case 5:{new str[250];
  156. format(str,sizeof(str),"{00FFFF}Reciver:\t\t{54C571}%s\n{00FFFF}Subject:\t\t{54C571}%s\n{00FFFF}Amount:\t\t{4E9258}$%i\n{00FFFF}Detail[Line1]:\t\t{54C571}%s\n{00FFFF}Detail[Line2]:\t\t{54C571}%s\n\n{ff0000}NOTE:Clicking on confirmation will send the message.",
  157. MesInfo[playerid][Reciver],
  158. MesInfo[playerid][Subject],
  159. MesInfo[playerid][Amount],
  160. MesInfo[playerid][line1],
  161. MesInfo[playerid][line2]);
  162. ShowPlayerDialog(playerid,D_ConfirmMes,DIALOG_STYLE_MSGBOX,"{842DCE}Confirmation",str,"Confirm","Back");
  163. }
  164. }
  165. }
  166. }
  167.  
  168. /*..............*/
  169. case D_InputBox:
  170. {
  171. if(response)
  172. {
  173. switch(Inpu[playerid])
  174. {
  175. case 1:{
  176. if(!fexist(UserPath(inputtext)))
  177. {SendClientMessage(playerid,-1,"{ff0000}There is no such user");ShowMes(playerid);}
  178. else
  179. {format(MesInfo[playerid][Reciver],MAX_PLAYER_NAME,"%s",inputtext);ShowMes(playerid);}
  180. }
  181. case 2:{
  182. if(strlen(inputtext)>10)
  183. {SendClientMessage(playerid,-1,"{ff0000}Subject should not be more than 10 characters.");ShowMes(playerid);}
  184. else
  185. {format(MesInfo[playerid][Subject],MAX_PLAYER_NAME,"%s",inputtext);ShowMes(playerid);}
  186. }
  187. case 3:{
  188. if(!isnum(inputtext)){SendClientMessage(playerid,-1,"{ff0000}Enter a numerical value.");ShowMes(playerid);}
  189. else if(strval(inputtext)>GetPlayerMoney(playerid)){SendClientMessage(playerid,-1,"{ff0000}Not enough money.");ShowMes(playerid);}
  190. else {MesInfo[playerid][Amount]=strval(inputtext);ShowMes(playerid);}
  191. }
  192. case 4:{
  193. if(strlen(inputtext)>20)
  194. {SendClientMessage(playerid,-1,"{ff0000}Description should not be more than 20 characters.");ShowMes(playerid);}
  195. else
  196. {format(MesInfo[playerid][line1],20,"%s",inputtext);ShowMes(playerid);}
  197. }
  198. case 5:{
  199. if(strlen(inputtext)>20)
  200. {SendClientMessage(playerid,-1,"{ff0000}Description should not be more than 20 characters.");ShowMes(playerid);}
  201. else
  202. {format(MesInfo[playerid][line2],20,"%s",inputtext);ShowMes(playerid);}
  203. }
  204. }
  205. }
  206. else ShowMes(playerid);
  207. }
  208. /*......................*/
  209. case D_ConfirmMes:
  210. {
  211. if(response)
  212. {
  213. if(!strcmp(MesInfo[playerid][Reciver],"{ff0000}---",false) || !strcmp(MesInfo[playerid][Subject],"{ff0000}---",false))
  214. {
  215. SendClientMessage(playerid,-1,"{ff0000}The field of either Reciver or Subject is missing please fill them up.");
  216. ShowMes(playerid);
  217. }
  218. else
  219. {
  220. new pname[MAX_PLAYER_NAME];
  221. GetPlayerName(playerid,pname,MAX_PLAYER_NAME);
  222. GivePlayerMoney(playerid,-MesInfo[playerid][Amount]);
  223. if(!fexist(MesPath(MesInfo[playerid][Reciver])))//that is if its recivers first message
  224. {
  225. new INI:iFile = INI_Open(MesPath(MesInfo[playerid][Reciver]));
  226. INI_SetTag(iFile,"MNO");//contain the varable to store number of messages received by player :)
  227. INI_WriteInt(iFile,"msg_numbers",1);//the varaible storing the no. of messages
  228. INI_WriteInt(iFile,"NewMsg",1);
  229. INI_SetTag(iFile,"msg1");
  230. INI_WriteString(iFile,"Reciver",MesInfo[playerid][Reciver]);
  231. INI_WriteString(iFile,"Sender",pname);
  232. INI_WriteString(iFile,"Subject",MesInfo[playerid][Subject]);
  233. INI_WriteInt(iFile,"Amount",MesInfo[playerid][Amount]);
  234. INI_WriteString(iFile,"line1",MesInfo[playerid][line1]);
  235. INI_WriteString(iFile,"line2",MesInfo[playerid][line2]);
  236. INI_WriteInt(iFile,"IsRead",0);
  237. INI_Close(iFile);
  238. }
  239. else
  240. {
  241. INI_ParseFile(MesPath(MesInfo[playerid][Reciver]), "LoadMNO_%s", .bExtra = true, .extra = playerid);
  242. new Xtag[10];
  243. format(Xtag,10,"msg%i",MesInfo[playerid][msgn]+1);
  244. new INI:iFile = INI_Open(MesPath(MesInfo[playerid][Reciver]));
  245. INI_SetTag(iFile,"MNO");
  246. INI_WriteInt(iFile,"msg_numbers",MesInfo[playerid][msgn]+1);
  247. INI_WriteInt(iFile,"NewMsg",MesInfo[playerid][newmsg]+1);
  248. INI_SetTag(iFile,Xtag);
  249. INI_WriteString(iFile,"Reciver",MesInfo[playerid][Reciver]);
  250. INI_WriteString(iFile,"Sender",pname);
  251. INI_WriteString(iFile,"Subject",MesInfo[playerid][Subject]);
  252. INI_WriteInt(iFile,"Amount",MesInfo[playerid][Amount]);
  253. INI_WriteString(iFile,"line1",MesInfo[playerid][line1]);
  254. INI_WriteString(iFile,"line2",MesInfo[playerid][line2]);
  255. INI_WriteInt(iFile,"IsRead",0);
  256. INI_Close(iFile);
  257. }
  258. SendClientMessage(playerid,-1,"{00FF00}Message sent!!");
  259. }
  260. }
  261. else ShowMes(playerid);
  262. }
  263. /*..............................*/
  264. case D_Transfers:
  265. {
  266. if(response)
  267. {
  268. new tag[10],name[MAX_PLAYER_NAME],str[300];
  269. GetPlayerName(playerid,name,MAX_PLAYER_NAME);
  270. format(tag,sizeof(tag),"msg%i",listitem+1);
  271. ReadWithTag(playerid,MesPath(name),tag);
  272. if(MesInfo[playerid][IsRead]==0)
  273. {
  274. GivePlayerMoney(playerid,MesInfo[playerid][Amount]);
  275. if(MesInfo[playerid][Amount]>0)SendClientMessage(playerid,-1,"{00cc00}Money received from message.");
  276. new INI:File=INI_Open(MesPath(name));
  277. INI_SetTag(File,"MNO");
  278. INI_WriteInt(File,"NewMsg",MesInfo[playerid][Amount]-1);
  279. INI_SetTag(File,tag);
  280. INI_WriteInt(File,"IsRead",1);
  281. INI_Close(File);
  282. }
  283. format(str,sizeof(str),"{00FFFF}Sender:\t\t{54C571}%s\n{00FFFF}Subject:\t\t{54C571}%s\n{00FFFF}Amount:\t\t{4E9258}$%i\n{00FFFF}Detail[Line1]:\t\t{54C571}%s\n{00FFFF}Detail[Line2]:\t\t{54C571}%s\n\n{ff0000}===================================",
  284. MesInfo[playerid][Sender],
  285. MesInfo[playerid][Subject],
  286. MesInfo[playerid][Amount],
  287. MesInfo[playerid][line1],
  288. MesInfo[playerid][line2]);
  289. ShowPlayerDialog(playerid,D_MainMes,DIALOG_STYLE_MSGBOX,"{842DCE}Message",str,"Cool","Cancel");
  290. }
  291. }
  292. }
  293. }
  294.    
  295.  
  296.          
  297.  
  298.  
  299. /*=============================COMMANDS========================COMMANDS=========================COMMANDS=============================*/
  300. CMD:sendcash(playerid,params[])
  301. {
  302. format(MesInfo[playerid][Reciver],MAX_PLAYER_NAME,"{ff0000}---");
  303. format(MesInfo[playerid][Subject],MAX_PLAYER_NAME,"{ff0000}---");
  304. MesInfo[playerid][Amount]=0;
  305. format(MesInfo[playerid][line1],MAX_PLAYER_NAME,"{ff0000}---");
  306. format(MesInfo[playerid][line2],MAX_PLAYER_NAME,"{ff0000}---");
  307. ShowMes(playerid);
  308. return 1;
  309. }
  310.  
  311. CMD:sendmes(playerid,params[])
  312. {
  313. cmd_sendcash(playerid,params);
  314. return 1;
  315. }
  316.  
  317.  
  318. CMD:trans(playerid,params[])
  319. {
  320.  
  321. new named[MAX_PLAYER_NAME];
  322. GetPlayerName(playerid,named,sizeof(named));
  323. if(!fexist(MesPath(named)))return SendClientMessage(playerid,-1,"{C58917}No Off-Line Messages currently recieved.");
  324. INI_ParseFile(MesPath(named), "LoadMNO_%s", .bExtra = true, .extra = playerid);
  325. SendClientMessage(playerid,-1,"{00FFFF}NOTE : {F87217}ORANGE{00FFFF} messages = Unread messages & {00cc00}GREEN {00FFFF}messages = Read Messages");
  326. new sho[500],i,col[50];
  327. format(sho,500,"");
  328. for(i=1;i<=MesInfo[playerid][msgn];i++)
  329. {
  330. format(tg,10,"msg%i",i);
  331. ReadWithTag(playerid,MesPath(named),tg);
  332. if(MesInfo[playerid][IsRead]==0)format(col,sizeof(col),"{F87217}%s: %s\n",MesInfo[playerid][Sender],MesInfo[playerid][Subject]);
  333. else format(col,sizeof(col),"{00cc00}%s: %s\n",MesInfo[playerid][Sender],MesInfo[playerid][Subject]);
  334. strcat(sho,col,sizeof(sho));
  335. }
  336. ShowPlayerDialog(playerid,D_Transfers,DIALOG_STYLE_LIST,"{842DCE}Offline Transfers",sho,"Read","Cancel");
  337. return 1;
  338. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement