hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.27. 20:05



Jelenlévő felhasználók

Jelenleg 522 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 522 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Advertisements Saybe csak piros
HozzászólásElküldve: 2014.11.03. 04:59 
Offline
Beavatott
Avatar

Csatlakozott: 2014.10.12. 09:18
Hozzászólások: 71
Megköszönték neki: 12 alkalommal
Üdv!

Ezt a plugint kellene úgy át írni, hogy chatbe, ne TEAMCOLOR legyen, hanem CSAK PIROS.

pl:

[Advert] Ne csalj!

Mindenkinek pirossal mutassa, ne csak a T csapatnak!

Előre is köszönöm!

SMX Forráskód: [ Mindet kijelol ]
  1. #pragma semicolon 1
  2.  
  3. #include <sourcemod>
  4.  
  5. #define PL_VERSION "0.6"
  6. #define CVAR_DISABLED "OFF"
  7. #define CVAR_ENABLED "ON"
  8.  
  9. public Plugin:myinfo =
  10. {
  11. name = "Advertisements",
  12. author = "Tsunami",
  13. description = "Display advertisements",
  14. version = PL_VERSION,
  15. url = "http://www.tsunami-productions.nl"
  16. };
  17.  
  18. new g_iFrames = 0;
  19. new g_iTickrate;
  20. new bool:g_bTickrate = true;
  21. new Float:g_flTime;
  22. new Handle:g_hAdvertisements = INVALID_HANDLE;
  23. new Handle:g_hCenterAd[MAXPLAYERS + 1];
  24. new Handle:g_hEnabled;
  25. new Handle:g_hFile;
  26. new Handle:g_hInterval;
  27. new Handle:g_hTimer;
  28.  
  29. static g_iSColors[4] = {1, 3, 3, 4};
  30. static g_iTColors[13][3] = {{255, 255, 255}, {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 0}, {255, 0, 255}, {0, 255, 255}, {255, 128, 0}, {255, 0, 128}, {128, 255, 0}, {0, 255, 128}, {128, 0, 255}, {0, 128, 255}};
  31. static String:g_sSColors[4][13] = {"{DEFAULT}", "{LIGHTGREEN}", "{TEAM}", "{GREEN}"};
  32. static String:g_sTColors[13][12] = {"{WHITE}", "{RED}", "{GREEN}", "{BLUE}", "{YELLOW}", "{PURPLE}", "{CYAN}", "{ORANGE}", "{PINK}", "{OLIVE}", "{LIME}", "{VIOLET}", "{LIGHTBLUE}"};
  33.  
  34. public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)
  35. {
  36. MarkNativeAsOptional("GetUserMessageType");
  37.  
  38. return APLRes_Success;
  39. }
  40.  
  41. public OnPluginStart()
  42. {
  43. CreateConVar("sm_advertisements_version", PL_VERSION, "Display advertisements", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
  44. g_hEnabled = CreateConVar("sm_advertisements_enabled", "1", "Enable/disable displaying advertisements.");
  45. g_hFile = CreateConVar("sm_advertisements_file", "advertisements.txt", "File to read the advertisements from.");
  46. g_hInterval = CreateConVar("sm_advertisements_interval", "30", "Amount of seconds between advertisements.");
  47.  
  48. HookConVarChange(g_hInterval, ConVarChange_Interval);
  49. RegServerCmd("sm_advertisements_reload", Command_ReloadAds, "Reload the advertisements");
  50. }
  51.  
  52. public OnMapStart()
  53. {
  54. ParseAds();
  55.  
  56. g_hTimer = CreateTimer(GetConVarInt(g_hInterval) * 1.0, Timer_DisplayAds, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
  57. }
  58.  
  59. public OnGameFrame()
  60. {
  61. if(g_bTickrate)
  62. {
  63. g_iFrames++;
  64.  
  65. new Float:flTime = GetEngineTime();
  66. if(flTime >= g_flTime)
  67. {
  68. if(g_iFrames == g_iTickrate)
  69. {
  70. g_bTickrate = false;
  71. }
  72. else
  73. {
  74. g_iTickrate = g_iFrames;
  75. g_iFrames = 0;
  76. g_flTime = flTime + 1.0;
  77. }
  78. }
  79. }
  80. }
  81.  
  82. public ConVarChange_Interval(Handle:convar, const String:oldValue[], const String:newValue[])
  83. {
  84. if(g_hTimer)
  85. KillTimer(g_hTimer);
  86.  
  87. g_hTimer = CreateTimer(GetConVarInt(g_hInterval) * 1.0, Timer_DisplayAds, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
  88. }
  89.  
  90. public Handler_DoNothing(Handle:menu, MenuAction:action, param1, param2) {}
  91.  
  92. public Action:Command_ReloadAds(args)
  93. {
  94. ParseAds();
  95. return Plugin_Handled;
  96. }
  97.  
  98. public Action:Timer_DisplayAds(Handle:timer)
  99. {
  100. if(!GetConVarBool(g_hEnabled))
  101. return;
  102.  
  103. decl AdminFlag:fFlagList[16], String:sBuffer[256], String:sFlags[16], String:sText[256], String:sType[6];
  104. KvGetString(g_hAdvertisements, "type", sType, sizeof(sType));
  105. KvGetString(g_hAdvertisements, "text", sText, sizeof(sText));
  106. KvGetString(g_hAdvertisements, "flags", sFlags, sizeof(sFlags), "none");
  107.  
  108. if(!KvGotoNextKey(g_hAdvertisements))
  109. {
  110. KvRewind(g_hAdvertisements);
  111. KvGotoFirstSubKey(g_hAdvertisements);
  112. }
  113.  
  114. new bool:bAdmins = StrEqual(sFlags, ""), bool:bFlags = !StrEqual(sFlags, "none");
  115. if(bFlags)
  116. FlagBitsToArray(ReadFlagString(sFlags), fFlagList, sizeof(fFlagList));
  117.  
  118. if(StrContains(sText, "{CURRENTMAP}") != -1)
  119. {
  120. GetCurrentMap(sBuffer, sizeof(sBuffer));
  121. ReplaceString(sText, sizeof(sText), "{CURRENTMAP}", sBuffer);
  122. }
  123.  
  124. if(StrContains(sText, "{DATE}") != -1)
  125. {
  126. FormatTime(sBuffer, sizeof(sBuffer), "%m/%d/%Y");
  127. ReplaceString(sText, sizeof(sText), "{DATE}", sBuffer);
  128. }
  129.  
  130. if(StrContains(sText, "{TICKRATE}") != -1)
  131. {
  132. IntToString(g_iTickrate, sBuffer, sizeof(sBuffer));
  133. ReplaceString(sText, sizeof(sText), "{TICKRATE}", sBuffer);
  134. }
  135.  
  136. if(StrContains(sText, "{TIME}") != -1)
  137. {
  138. FormatTime(sBuffer, sizeof(sBuffer), "%I:%M:%S%p");
  139. ReplaceString(sText, sizeof(sText), "{TIME}", sBuffer);
  140. }
  141.  
  142. if(StrContains(sText, "{TIME24}") != -1)
  143. {
  144. FormatTime(sBuffer, sizeof(sBuffer), "%H:%M:%S");
  145. ReplaceString(sText, sizeof(sText), "{TIME24}", sBuffer);
  146. }
  147.  
  148. if(StrContains(sText, "{TIMELEFT}") != -1)
  149. {
  150. new iMins, iSecs, iTimeLeft;
  151.  
  152. if(GetMapTimeLeft(iTimeLeft) && iTimeLeft > 0)
  153. {
  154. iMins = iTimeLeft / 60;
  155. iSecs = iTimeLeft % 60;
  156. }
  157.  
  158. Format(sBuffer, sizeof(sBuffer), "%d:%02d", iMins, iSecs);
  159. ReplaceString(sText, sizeof(sText), "{TIMELEFT}", sBuffer);
  160. }
  161.  
  162. if(StrContains(sText, "\\n") != -1)
  163. {
  164. Format(sBuffer, sizeof(sBuffer), "%c", 13);
  165. ReplaceString(sText, sizeof(sText), "\\n", sBuffer);
  166. }
  167.  
  168. decl Handle:hConVar, String:sConVar[64], String:sName[64];
  169. new iStart = StrContains(sText, "{BOOL:");
  170. while(iStart != -1)
  171. {
  172. new iEnd = StrContains(sText[iStart + 6], "}");
  173. if(iEnd != -1)
  174. {
  175. strcopy(sConVar, iEnd + 1, sText[iStart + 6]);
  176. Format(sName, sizeof(sName), "{BOOL:%s}", sConVar);
  177.  
  178. if((hConVar = FindConVar(sConVar)))
  179. ReplaceString(sText, sizeof(sText), sName, GetConVarBool(hConVar) ? CVAR_ENABLED : CVAR_DISABLED);
  180. }
  181.  
  182. new iStart2 = StrContains(sText[iStart + 1], "{BOOL:") + iStart + 1;
  183. if(iStart == iStart2)
  184. break;
  185.  
  186. iStart = iStart2;
  187. }
  188.  
  189. iStart = StrContains(sText, "{");
  190. while(iStart != -1)
  191. {
  192. new iEnd = StrContains(sText[iStart + 1], "}");
  193. if(iEnd != -1)
  194. {
  195. strcopy(sConVar, iEnd + 1, sText[iStart + 1]);
  196. Format(sName, sizeof(sName), "{%s}", sConVar);
  197.  
  198. if((hConVar = FindConVar(sConVar)))
  199. {
  200. GetConVarString(hConVar, sBuffer, sizeof(sBuffer));
  201. ReplaceString(sText, sizeof(sText), sName, sBuffer);
  202. }
  203. }
  204.  
  205. new iStart2 = StrContains(sText[iStart + 1], "{") + iStart + 1;
  206. if (iStart == iStart2) {
  207. break;
  208. } else {
  209. iStart = iStart2;
  210. }
  211. }
  212.  
  213. if(StrContains(sType, "C") != -1)
  214. {
  215. for(new i = 1; i <= MaxClients; i++)
  216. {
  217. if(IsClientInGame(i) && !IsFakeClient(i) &&
  218. ((!bAdmins && !(bFlags && HasFlag(i, fFlagList))) ||
  219. bAdmins && (GetUserFlagBits(i) & (ADMFLAG_GENERIC|ADMFLAG_ROOT))))
  220. {
  221. PrintCenterText(i, sText);
  222.  
  223. new Handle:hCenterAd;
  224. g_hCenterAd[i] = CreateDataTimer(1.0, Timer_CenterAd, hCenterAd, TIMER_FLAG_NO_MAPCHANGE|TIMER_REPEAT);
  225. WritePackCell(hCenterAd, i);
  226. WritePackString(hCenterAd, sText);
  227. }
  228. }
  229. }
  230. if(StrContains(sType, "H") != -1)
  231. {
  232. for(new i = 1; i <= MaxClients; i++)
  233. {
  234. if(IsClientInGame(i) && !IsFakeClient(i) &&
  235. ((!bAdmins && !(bFlags && HasFlag(i, fFlagList))) ||
  236. bAdmins && (GetUserFlagBits(i) & (ADMFLAG_GENERIC|ADMFLAG_ROOT))))
  237. PrintHintText(i, sText);
  238. }
  239. }
  240. if(StrContains(sType, "M") != -1)
  241. {
  242. new Handle:hPl = CreatePanel();
  243. DrawPanelText(hPl, sText);
  244. SetPanelCurrentKey(hPl, 10);
  245.  
  246. for(new i = 1; i <= MaxClients; i++)
  247. {
  248. if(IsClientInGame(i) && !IsFakeClient(i) &&
  249. ((!bAdmins && !(bFlags && HasFlag(i, fFlagList))) ||
  250. bAdmins && (GetUserFlagBits(i) & (ADMFLAG_GENERIC|ADMFLAG_ROOT))))
  251. SendPanelToClient(hPl, i, Handler_DoNothing, 10);
  252. }
  253.  
  254. CloseHandle(hPl);
  255. }
  256. if(StrContains(sType, "S") != -1)
  257. {
  258. new iTeamColors = StrContains(sText, "{TEAM}"), String:sColor[4];
  259. Format(sText, sizeof(sText), "%c%c%c%s", 1, 11, 1, sText);
  260.  
  261. for(new c = 0; c < sizeof(g_iSColors); c++)
  262. {
  263. if(StrContains(sText, g_sSColors[c]))
  264. {
  265. Format(sColor, sizeof(sColor), "%c", g_iSColors[c]);
  266. ReplaceString(sText, sizeof(sText), g_sSColors[c], sColor);
  267. }
  268. }
  269.  
  270. if(iTeamColors == -1)
  271. {
  272. for(new i = 1; i <= MaxClients; i++)
  273. {
  274. if(IsClientInGame(i) && !IsFakeClient(i) &&
  275. ((!bAdmins && !(bFlags && HasFlag(i, fFlagList))) ||
  276. bAdmins && (GetUserFlagBits(i) & (ADMFLAG_GENERIC|ADMFLAG_ROOT))))
  277. PrintToChat(i, sText);
  278. }
  279. }
  280. else
  281. {
  282. for(new i = 1; i <= MaxClients; i++)
  283. {
  284. if(IsClientInGame(i) && !IsFakeClient(i) &&
  285. ((!bAdmins && !(bFlags && HasFlag(i, fFlagList))) ||
  286. bAdmins && (GetUserFlagBits(i) & (ADMFLAG_GENERIC|ADMFLAG_ROOT))))
  287. SayText2(i, sText);
  288. }
  289. }
  290. }
  291. if(StrContains(sType, "T") != -1)
  292. {
  293. decl String:sColor[16];
  294. new iColor = -1, iPos = BreakString(sText, sColor, sizeof(sColor));
  295.  
  296. for(new i = 0; i < sizeof(g_sTColors); i++)
  297. {
  298. if(StrEqual(sColor, g_sTColors[i]))
  299. iColor = i;
  300. }
  301.  
  302. if(iColor == -1)
  303. {
  304. iPos = 0;
  305. iColor = 0;
  306. }
  307.  
  308. new Handle:hKv = CreateKeyValues("Stuff", "title", sText[iPos]);
  309. KvSetColor(hKv, "color", g_iTColors[iColor][0], g_iTColors[iColor][1], g_iTColors[iColor][2], 255);
  310. KvSetNum(hKv, "level", 1);
  311. KvSetNum(hKv, "time", 10);
  312.  
  313. for(new i = 1; i <= MaxClients; i++)
  314. {
  315. if(IsClientInGame(i) && !IsFakeClient(i) &&
  316. ((!bAdmins && !(bFlags && HasFlag(i, fFlagList))) ||
  317. bAdmins && (GetUserFlagBits(i) & (ADMFLAG_GENERIC|ADMFLAG_ROOT))))
  318. CreateDialog(i, hKv, DialogType_Msg);
  319. }
  320.  
  321. CloseHandle(hKv);
  322. }
  323. }
  324.  
  325. public Action:Timer_CenterAd(Handle:timer, Handle:pack)
  326. {
  327. decl String:sText[256];
  328. static iCount = 0;
  329.  
  330. ResetPack(pack);
  331. new iClient = ReadPackCell(pack);
  332. ReadPackString(pack, sText, sizeof(sText));
  333.  
  334. if(IsClientInGame(iClient) && ++iCount < 5)
  335. {
  336. PrintCenterText(iClient, sText);
  337.  
  338. return Plugin_Continue;
  339. }
  340. else
  341. {
  342. iCount = 0;
  343. g_hCenterAd[iClient] = INVALID_HANDLE;
  344.  
  345. return Plugin_Stop;
  346. }
  347. }
  348.  
  349. ParseAds()
  350. {
  351. if(g_hAdvertisements)
  352. CloseHandle(g_hAdvertisements);
  353.  
  354. g_hAdvertisements = CreateKeyValues("Advertisements");
  355.  
  356. decl String:sFile[256], String:sPath[256];
  357. GetConVarString(g_hFile, sFile, sizeof(sFile));
  358. BuildPath(Path_SM, sPath, sizeof(sPath), "configs/%s", sFile);
  359.  
  360. if(!FileExists(sPath))
  361. SetFailState("File Not Found: %s", sPath);
  362.  
  363. FileToKeyValues(g_hAdvertisements, sPath);
  364. KvGotoFirstSubKey(g_hAdvertisements);
  365. }
  366.  
  367. SayText2(to, const String:message[])
  368. {
  369. new Handle:hBf = StartMessageOne("SayText2", to);
  370. if(!hBf)
  371. return;
  372.  
  373. #if SOURCEMOD_V_MAJOR >= 1 && SOURCEMOD_V_MINOR >= 5
  374. if(GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available && GetUserMessageType() == UM_Protobuf)
  375. {
  376. PbSetBool(hBf, "chat", true);
  377. PbSetInt(hBf, "ent_idx", to);
  378. PbSetString(hBf, "msg_name", message);
  379. PbAddString(hBf, "params", "");
  380. PbAddString(hBf, "params", "");
  381. PbAddString(hBf, "params", "");
  382. PbAddString(hBf, "params", "");
  383. }
  384. else
  385. {
  386. #endif
  387. BfWriteByte(hBf, to);
  388. BfWriteByte(hBf, true);
  389. BfWriteString(hBf, message);
  390. #if SOURCEMOD_V_MAJOR >= 1 && SOURCEMOD_V_MINOR >= 5
  391. }
  392. #endif
  393. EndMessage();
  394. }
  395.  
  396. bool:HasFlag(iClient, AdminFlag:fFlagList[16])
  397. {
  398. new iFlags = GetUserFlagBits(iClient);
  399. if(iFlags & ADMFLAG_ROOT)
  400. return true;
  401.  
  402. for(new i = 0; i < sizeof(fFlagList); i++)
  403. {
  404. if(iFlags & FlagToBit(fFlagList[i]))
  405. return true;
  406. }
  407.  
  408. return false;
  409. }

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 4 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole