Guest User

Advert System by Eso

a guest
Oct 24th, 2013
677
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.40 KB | None | 0 0
  1. /*
  2. MADE BY: ESO_WILLIAMS [HALILOVIC] aka E50 www.fb.com/Esoo.Halilovic/
  3. Use it for RP or what ever you want!
  4. Please leave the credit's
  5.  
  6. */
  7.  
  8. #include <a_samp>
  9. #include <sscanf2>
  10. #include <zcmd>
  11. #include < YSI\y_ini >
  12. #include < foreach >
  13.  
  14. //Textdraw oglasa
  15. new Text:bvana0;
  16. new Text:bvana1;
  17. new Text:bvana2;
  18. new Text:bvana3;
  19.  
  20. //Skracenice
  21. #define SCM SendClientMessage
  22. #define SCMTA SendClientMessageToAll
  23.  
  24. //definicije dialog
  25. #define GLAVNI_DIALOG 2
  26. #define CIJENA_DIALOG 3
  27. #define VRIJEME_DIALOG 4
  28. #define INFO_DIALOG 5
  29.  
  30. //boje
  31. #define SPLAVA "{0535F7}"
  32. #define CRVENA "{F81414}"
  33. #define SZELENA "{C9FFAB}"
  34. #define ZUTA "{F3FF02}"
  35. #define BILB "{CC00FF}"
  36. #define SIVA "{9E9E9E}"
  37.  
  38. //zabranjene riječi dodajete pod navodnike, prije toga zarez, na zadnju riječ ne ide zarez
  39. new ZabranjeneReci[][] =
  40. {
  41. "jebem","picka","pi.cko","je.bem",
  42. "majmun","jebe","pizdo"
  43. };
  44.  
  45. #define OGLAS_FILE "BVANA/Oglasnik.ini"
  46. enum oinfo
  47. {
  48. Ukljucen,
  49. Cijena,
  50. Vrijeme,
  51. Boja1,
  52. Boja2
  53. }
  54. new Oglasnik[oinfo];
  55. ///Tajmer za oglase
  56. forward OglasTimer();
  57. new OGVrijeme;
  58.  
  59.  
  60.  
  61. public OnFilterScriptInit()
  62. {
  63.  
  64. printf("Ucitano ADFS");
  65. //Vrijeme za oglas svake sekunde OGVrijeme varijabla se smanjuje za 1
  66. SetTimer("OglasTimer", 1000, true); // Set a timer of 1000 miliseconds (1 second)
  67. OGVrijeme = 0;
  68. #pragma tabsize 0
  69. // In OnGameModeInit prefferably, we procced to create our textdraws:
  70. bvana0 = TextDrawCreate(650.000000, 428.000000, "__");
  71. TextDrawBackgroundColor(bvana0, 255);
  72. TextDrawFont(bvana0, 1);
  73. TextDrawLetterSize(bvana0, 0.539999, 1.500000);
  74. TextDrawColor(bvana0, -1);
  75. TextDrawSetOutline(bvana0, 0);
  76. TextDrawSetProportional(bvana0, 1);
  77. TextDrawSetShadow(bvana0, 1);
  78. TextDrawUseBox(bvana0, 1);
  79. TextDrawBoxColor(bvana0, 150);
  80. TextDrawTextSize(bvana0, -20.000000, 70.000000);
  81. TextDrawSetSelectable(bvana0, 0);
  82.  
  83. bvana1 = TextDrawCreate(2.000000, 430.000000, "ADVERT :");
  84. TextDrawBackgroundColor(bvana1, 255);
  85. TextDrawFont(bvana1, 1);
  86. TextDrawLetterSize(bvana1, 0.310000, 1.000000);
  87. TextDrawColor(bvana1, 16711935);
  88. TextDrawSetOutline(bvana1, 0);
  89. TextDrawSetProportional(bvana1, 1);
  90. TextDrawSetShadow(bvana1, 1);
  91. TextDrawSetSelectable(bvana1, 0);
  92.  
  93. //78 max string
  94. bvana2 = TextDrawCreate(46.000000, 430.000000, " ");
  95. TextDrawBackgroundColor(bvana2, 255);
  96. TextDrawFont(bvana2, 1);
  97. TextDrawLetterSize(bvana2, 0.310000, 1.000000);
  98. TextDrawColor(bvana2, -1);
  99. TextDrawSetOutline(bvana2, 0);
  100. TextDrawSetProportional(bvana2, 1);
  101. TextDrawSetShadow(bvana2, 1);
  102. TextDrawSetSelectable(bvana2, 0);
  103.  
  104. //21max string
  105. bvana3 = TextDrawCreate(512.000000, 430.000000, " ");
  106. TextDrawBackgroundColor(bvana3, -1);
  107. TextDrawFont(bvana3, 1);
  108. TextDrawLetterSize(bvana3, 0.310000, 1.000000);
  109. TextDrawColor(bvana3, 7012351);
  110. TextDrawSetOutline(bvana3, 0);
  111. TextDrawSetProportional(bvana3, 1);
  112. TextDrawSetShadow(bvana3, 0);
  113. TextDrawSetSelectable(bvana3, 0);
  114.  
  115. //Ucitavanja postavki iz fajla
  116. new srvFile[80]; format(srvFile,sizeof(srvFile),OGLAS_FILE);
  117. if(fexist(srvFile))
  118. {
  119. INI_ParseFile(srvFile, "UcitajOglasP");
  120. print("Ucitana podesavanja oglasa.");
  121. }
  122. return 1;
  123. }
  124.  
  125. public OnFilterScriptExit()
  126. {
  127. SacuvajOglasP();
  128. TextDrawDestroy(bvana0);
  129. TextDrawDestroy(bvana1);
  130. TextDrawDestroy(bvana2);
  131. TextDrawDestroy(bvana3);
  132. return 1;
  133. }
  134.  
  135.  
  136. public OnPlayerRequestClass(playerid, classid)
  137. {
  138. return 1;
  139. }
  140.  
  141. public OnPlayerConnect(playerid)
  142. {
  143. if(Oglasnik[Ukljucen] == 1)
  144. {
  145. TextDrawShowForPlayer(playerid, bvana0);
  146. TextDrawShowForPlayer(playerid, bvana1);
  147. TextDrawShowForPlayer(playerid, bvana2);
  148. TextDrawShowForPlayer(playerid, bvana3);
  149. }
  150.  
  151. return 1;
  152. }
  153.  
  154. public OnPlayerDisconnect(playerid, reason)
  155. {
  156. if(Oglasnik[Ukljucen] == 1)
  157. {
  158. TextDrawHideForPlayer(playerid, bvana0);
  159. TextDrawHideForPlayer(playerid, bvana1);
  160. TextDrawHideForPlayer(playerid, bvana2);
  161. TextDrawHideForPlayer(playerid, bvana3);
  162. }
  163. return 1;
  164. }
  165.  
  166.  
  167. CMD:adsystem(playerid, params[])
  168. {
  169. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, ""CRVENA" Only Rcon Administrators.");
  170. ShowPlayerDialog(playerid, GLAVNI_DIALOG, DIALOG_STYLE_LIST, ""SPLAVA"Podesavanje", ""CRVENA"1 "SZELENA"-Informations\n"CRVENA"2 "SZELENA"-turn on/turn off\n"CRVENA"3 "SZELENA"-Price of Advert\n"CRVENA"4 "SZELENA"-Time of adverts", "Ok", "exit");
  171. return 1;
  172. }
  173.  
  174. COMMAND:pogl(playerid, params[])
  175. {
  176. return cmd_postavkeoglasa(playerid, params);
  177. }
  178.  
  179.  
  180. CMD:advert(playerid, params[])
  181. {
  182. //#pragma unused help
  183. //#pragma unused params
  184. new result[80],string[21], string2[83], logg[106];
  185. if(Oglasnik[Ukljucen] == 0) return SendClientMessage(playerid,-1, ""BILB" Advert | "SIVA"Adverting is turn off by Administrator.");
  186. if(sscanf(params, "s[78]", result)) return SendClientMessage(playerid,-1, ""BILB" Adverting | "SIVA"Help | /ad [text]");
  187. ProvjeraOglasa(result);
  188. new cijena = Oglasnik[Cijena];
  189. if(OGVrijeme > 0) return SCMF(playerid, -1, ""BILB" Advert | "SIVA"Wait %d seconds, do until next advert %d", Oglasnik[Vrijeme], OGVrijeme);
  190. if(cijena > GetPlayerMoney(playerid)) return SCMF(playerid, -1, ""BILB" BVANA Oglasnik | "SIVA"Nemate dovoljno novca da objavite oglas! Cijena:%d$", cijena);
  191. for(new words; words < sizeof(ZabranjeneReci); words++)
  192. if(strfind(result,ZabranjeneReci[words],true) != -1 ) return SendClientMessage(playerid,-1, ""BILB" BVANA Oglasnik | "SIVA"You typed an word that is restricted !");
  193. OGVrijeme = Oglasnik[Vrijeme];
  194. GivePlayerMoney(playerid, -cijena);
  195. format(string, sizeof(string), "%s", ImeIgraca(playerid));
  196. format(string2, sizeof(string2), "%s.", result);
  197. TextDrawSetString(bvana2, string2);
  198. TextDrawSetString(bvana3, string);
  199. format(logg, sizeof(logg), ""BILB" Advertising | "SPLAVA"Name: %s ", ImeIgraca(playerid));
  200. SCMTA(-1,logg);
  201. format(logg, sizeof(logg), "{FFFFFF}- %s.", result);
  202. SCMTA(-1,logg);
  203. format(logg, sizeof(logg), "[Adverting] %s : %s.",ImeIgraca(playerid), result);
  204. OglasLog(logg);
  205. new gtst[100];
  206. format(gtst, sizeof(gtst), "~w~You gave an Advert for %d $!", cijena);
  207. GameTextForPlayer(playerid, gtst, 3000,3);
  208.  
  209. return 1;
  210. }
  211.  
  212. CMD:ad(playerid, params[])
  213. {
  214. return cmd_oglas(playerid, params);
  215. }
  216.  
  217.  
  218. ///////////////////////FUNKCIJE/////////////////
  219.  
  220. forward UcitajOglasP(name[],value[]);
  221. public UcitajOglasP(name[],value[])
  222. {
  223. INI_Int("Ukljucen",Oglasnik[Ukljucen]);
  224. INI_Int("Cijena",Oglasnik[Cijena]);
  225. INI_Int("Vrijeme",Oglasnik[Vrijeme]);
  226. return 1;
  227. }
  228.  
  229. stock SacuvajOglasP()
  230. {
  231. new sFile[80];
  232. format(sFile,sizeof(sFile),OGLAS_FILE);
  233. new INI:File = INI_Open(sFile);
  234. INI_WriteInt(File,"Ukljucen",Oglasnik[Ukljucen]);
  235. INI_WriteInt(File,"Cijena",Oglasnik[Cijena]);
  236. INI_WriteInt(File,"Vrijeme",Oglasnik[Vrijeme]);
  237. INI_Close(File);
  238. return 1;
  239. }
  240.  
  241. stock OglasLog(string[])
  242. {
  243. new entry[256];
  244. format(entry, sizeof(entry), "%s\r\n",string);
  245. new File:hFile;
  246. hFile = fopen("BVANA/OglasLog.log", io_append);
  247. fwrite(hFile, entry);
  248. fclose(hFile);
  249. }
  250.  
  251. stock ImeIgraca(playerid)
  252. {
  253. new ime[MAX_PLAYER_NAME];
  254. GetPlayerName(playerid, ime, sizeof(ime));
  255. return ime;
  256. }
  257. stock ProvjeraOglasa(string[], s_size = sizeof(string))
  258. {
  259. new brojevi[] = { '1','2','3','4','5','6','7','8','9'};
  260. for(new b = 0; b < sizeof brojevi; b++)
  261. {
  262. strlen(string);
  263. for(new i = 0; i< s_size-1; i++)
  264. {
  265. if(string[i] == brojevi[b])
  266. string[i] = 'x' ;
  267. }
  268. }
  269. return 1;
  270. }
  271.  
  272. public OglasTimer()
  273. {
  274. if(OGVrijeme > 0) return OGVrijeme -= 1;
  275. return 1;
  276. }
  277.  
  278. stock SCMF(playerid,color,fstring[],{Float, _}:...)
  279. {
  280. new n=(numargs()-3)*4;
  281. if(n)
  282. {
  283. new message[128],arg_start,arg_end;
  284. #emit CONST.alt fstring
  285. #emit LCTRL 5
  286. #emit ADD
  287. #emit STOR.S.pri arg_start
  288. #emit LOAD.S.alt n
  289. #emit ADD
  290. #emit STOR.S.pri arg_end
  291. do
  292. {
  293. #emit LOAD.I
  294. #emit PUSH.pri
  295. arg_end-=4;
  296. #emit LOAD.S.pri arg_end
  297. }
  298. while(arg_end>arg_start);
  299. #emit PUSH.S fstring
  300. #emit PUSH.C 255
  301. #emit PUSH.ADR message
  302. n+=4*3;
  303. #emit PUSH.S n
  304. #emit SYSREQ.C format
  305. n+=4;
  306. #emit LCTRL 4
  307. #emit LOAD.S.alt n
  308. #emit ADD
  309. #emit SCTRL 4
  310. return SCM(playerid,color,message);
  311. }
  312. else return SCM(playerid,color,fstring);
  313. }
  314.  
  315.  
  316. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  317. {
  318. if(dialogid == GLAVNI_DIALOG)
  319. {
  320. if(!response) return 1;
  321. switch(listitem)
  322. {
  323. case 0:
  324. {
  325. new string[128], ukisk[11];
  326. if(Oglasnik[Ukljucen] == 1) ukisk = "Ukljuceno";
  327. else if(Oglasnik[Ukljucen] == 0) ukisk = "Iskljuceno";
  328. format(string,sizeof string, ""SZELENA"Adverting : %s\n"ZUTA"Price : %d\n"SZELENA"Wait : %d",ukisk, Oglasnik[Cijena],Oglasnik[Vrijeme]);
  329. ShowPlayerDialog(playerid, INFO_DIALOG, DIALOG_STYLE_MSGBOX, ""SPLAVA"Informations", string, "Close", "");
  330. }
  331. case 1:
  332. {
  333. if(Oglasnik[Ukljucen] == 1)
  334. {
  335. Oglasnik[Ukljucen] = 0;
  336. SendClientMessage(playerid,-1,""BILB" Advert | "SIVA"You turn off Adverting.");
  337. TextDrawHideForAll(bvana0);
  338. TextDrawHideForAll(bvana1);
  339. TextDrawHideForAll(bvana2);
  340. TextDrawHideForAll(bvana3);
  341. }
  342. else
  343. {
  344. Oglasnik[Ukljucen] = 1;
  345. SendClientMessage(playerid,-1,""BILB" Advert | "SIVA"You turn on Adverting.");
  346. TextDrawShowForAll(bvana0);
  347. TextDrawShowForAll(bvana1);
  348. TextDrawShowForAll(bvana2);
  349. TextDrawShowForAll(bvana3);
  350. }
  351. SacuvajOglasP();
  352. }
  353. case 2:
  354. {
  355. ShowPlayerDialog(playerid, CIJENA_DIALOG, DIALOG_STYLE_INPUT, ""SPLAVA"Price of Advert", ""SZELENA"Enter price of Advert", "Change", "Close");
  356. }
  357. case 3:
  358. {
  359. ShowPlayerDialog(playerid, VRIJEME_DIALOG, DIALOG_STYLE_INPUT, ""SPLAVA"Time until Advert again", ""SZELENA"Enter time.(in seconds).", "Change", "Exit");
  360. }
  361. }
  362. }
  363. if(dialogid == CIJENA_DIALOG)
  364. {
  365. if(response)
  366. {
  367. new cijena;
  368. if(sscanf(inputtext, "i", cijena)) return ShowPlayerDialog(playerid, CIJENA_DIALOG, DIALOG_STYLE_INPUT, ""SPLAVA"Cijena oglasa", ""SZELENA"Unesite novu cijenu oglasa, i nemoj se zajebavat! "ZUTA":P", "Promjeni", "Izlaz");
  369. if(cijena < 1 || cijena > 1000) return SCM(playerid,-1,""BILB" BVANA Oglasnik | "SIVA"Cijena ne moze biti manja od 1$ niti veca od 1000$");
  370. SCMF(playerid, -1, ""BILB" BVANA Oglasnik | "SIVA"Uspjesno si promjenio cijenu oglasa. Nova cijena:%d$ || Stara cijena: %d$ ", cijena,Oglasnik[Cijena]);
  371. Oglasnik[Cijena] = cijena;
  372. SacuvajOglasP();
  373. }
  374. }
  375.  
  376. if(dialogid == VRIJEME_DIALOG)
  377. {
  378. if(response)
  379. {
  380. new vrijeme;
  381. if(sscanf(inputtext, "i", vrijeme)) return ShowPlayerDialog(playerid, VRIJEME_DIALOG, DIALOG_STYLE_INPUT, ""SPLAVA"Vrijeme izmedju oglasa", ""SZELENA"Unesite novo vrijeme izmedju oglasa.(u sekundama).", "Promjeni", "Izlaz");
  382. if(vrijeme < 1 || vrijeme > 1000) return SCM(playerid,-1,""BILB" BVANA Oglasnik | "SIVA"Vrijeme izmedju oglasa, ne moze biti manja od 1 niti vise od 1000 sekundi.");
  383. SCMF(playerid, -1, ""BILB" BVANA Oglasnik | "SIVA"Uspjesno si promjenio vrijeme izmedju oglasa. Nova vrijeme:%d || Staro vrijeme: %d", vrijeme,Oglasnik[Vrijeme]);
  384. Oglasnik[Vrijeme] = vrijeme;
  385. SacuvajOglasP();
  386. }
  387. }
  388.  
  389. return 1;
  390. }
Advertisement
Add Comment
Please, Sign In to add comment