hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.25. 09:29



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Google [Bot] 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  [ 4 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Melyik plugin
HozzászólásElküldve: 2013.06.23. 14:57 
Offline
Félisten

Csatlakozott: 2012.06.19. 15:12
Hozzászólások: 926
Megköszönt másnak: 109 alkalommal
Megköszönték neki: 31 alkalommal
Ez melyik plugin [AFK]: 0 Terror es 1 CT Nem Mozdul

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Melyik plugin
HozzászólásElküldve: 2013.06.23. 16:14 
Offline
Őstag
Avatar

Csatlakozott: 2010.04.16. 16:50
Hozzászólások: 1342
Megköszönt másnak: 42 alkalommal
Megköszönték neki: 58 alkalommal
tessék! :)
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. /*
  3.  *
  4.  * MMMMMMM ,MMMMMMMMMMMMMMMMMMMMMMMM MMMM .aMMMMM
  5.  * 0MMMMMMMMMi MMMMMMMMMMMMMMMMMMMMMMMM MMMM MMMMMr
  6.  * MMMMMMMMMM: MMMM MMMM MMMMMM
  7.  * 7MMM2 MMMM MMMM MMMM .MMMMM.
  8.  * MMMMMM MMMMMM MMMM MMMM MMMMMM
  9.  * MMMM MMMM MMMM MMMM rMMMMM
  10.  * .iMMMM WMMMMr MMMM MMMM XMMMMM8
  11.  * rMMMM MMMM MMMM;WWWWWWWWWWWWWM0 MMMM @MMMM.
  12.  * MMMMMM MMMMMM MMMMMMMMMMMMMMMMMMMM MMMMZMMMMMM
  13.  * MMMM SMMMM MMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMM8
  14.  * MMMM, MMMM2 MMMM MMMMMMM SMMMMM
  15.  * 2MMMMa ,ZMMMM MMMM MMMMW MMMMMM
  16.  * MMMM irrrrrrr: MMMM MMMM MMMM ;MMMMMi 7Zrrrrrrrr7
  17.  * BMMMMMMMMMMMMMMMMMMMMMM0r MMMM MMMM MMMMMX MMMMMMMMMMM
  18.  * MMMMMMMMMMMMMMMMMMMMMMMM: MMMM MMMM @MMMMM
  19.  * MMMMM8 MMMMMM MMMM MMMM MMMMMZ
  20.  * MMMM MMMM MMMM MMMM ZMMMMM
  21.  * MMMM ;MMMM MMMM MMMM MMMMM@
  22.  * MMMZ2 rMMMMZ ,MMMM MMMM XMMMM
  23.  *
  24.  *
  25.  *
  26.  *
  27.  * MMM BMMMW ;MMM r @MMMMMMMMM0 . . 0MMMMMMMMM@ r 2MMMMMMMMMM i
  28.  * MMM MMMM0 ;MMM MMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMM:
  29.  * MMM WMMMW @MMMa @MMMM BMMMW ZMMMM. MMMMM rMMMM
  30.  * MMM rMMMM iMMM MMMi MMM MMMa MMM MMMX
  31.  * MMM MMMMr MZM 2MMM; .MMMS MMMZ
  32.  * MMM MMMMM rMMM MMMM, MMMMS MMMMM
  33.  * MMM MMMM MMM @MMMMMMMM rrrX, MMMMMMMMMrrrr77 BMMMMMMMMZ;rrr8
  34.  * MMMMMMMMMM MMM MMMMMMMMMMMMMM MMMMMMMMMMMMMM ZMMMMMMMMMMMMMi
  35.  * MMMMB MMMMr MMM @ZZZSMMMMM MZZZ20MMMM, ZZZZa2MMMM.
  36.  * MMM ZMMMM MMM iMMMM: MMMMX MMM0
  37.  * MMM WMMM@ MMM .S,X MMM: 2,7 MMMZ Z,r WMM
  38.  * MMM MMMM0 MMM MMMMM MMM: WMMMM MMMZ XMMMM @MM
  39.  * MMM SMMMM MMM MMM XMMMM. MMM ,MMMMr MMMi MMMZ
  40.  * MMM BMMMM MMM rMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMi iMMMMM@MMMMMMMMMMMM:
  41.  * MMM 7MMM0 ,MMM S MMMMMMMMMMMM S i.BMMMMMMMMMMM 7 :aMMMMMMMMMMM 7
  42.  *
  43.  *
  44.  *
  45.  *
  46.  * Kick/Slay/Spec-Switcher for CS with bombdrop
  47.  * based on AFK-Kicker by Cheesy Peteza
  48.  * Slay ability and Bomb drop added by Isobold (www.clan-nva.de)
  49.  * Code revision and some nice hints by juKay
  50.  *
  51.  * Date: 01-Jul-2005
  52.  *
  53.  *
  54.  * Description: AFK Slay/Kicker for CS. Kicks after mp_afktime and slays player
  55.  * if last surviver and afk and minimum afk_minplayers.
  56.  * Textmessage elsewhere
  57.  * Drops bomb after 25 sec afk
  58.  * AFK-Count-Message at roundstart
  59.  * AFK-Players are renamed and get their old name back when playing again or being switched spec
  60.  * (never the less their afk-name will show up during spectime)
  61.   * Able to kick specs after a certain time
  62.  *
  63.  * Cvars:
  64.  * afk_kicktime 150 // Kick people AFK longer than this time
  65.  * afk_slaytime 60 // Slay people AFK longer than this time and last survivor
  66.  * afk_minplayers 8 // Only kick AFKs when there is atleast this many players on the server
  67.  * afk_slayplayers 1 // Shall we slay or shall we not
  68.  * afk_adminimmunity 1 // Admins immun from slaying
  69.  * // Will show message anyway!
  70.  * afk_adminkickimmunity 1 // Admins immun from kicking
  71.  * afk_options 1 // 1 - Kick player after kicktime, 0 - switch to spec after kicktime
  72.  * afk_rename 1 // Set to 1, it renames AFK players as described before
  73.  *
  74.  *
  75.  *
  76.  * Requirements: AMXModX (cstrike and engine module)
  77.  *
  78.  *
  79.  *
  80.  *
  81.  * Need help with this?
  82.  *
  83.  *
  84.  *
  85.  */
  86.  
  87. #include <amxmodx>
  88. #include <amxmisc>
  89. #include <cstrike>
  90. #include <engine>
  91.  
  92.  
  93. #define MIN_AFK_TIME 30 // I use this incase stupid admins accidentally set afk_kicktime to something silly.
  94. #define WARNING_TIME 15 // Start warning the user this many seconds before they are about to be kicked.
  95. #define CHECK_FREQ 5 // This is also the warning message frequency.
  96. #define BOMB_DROP_TIME 25 // Time until bomb gets dropped, it is also afk recognition time
  97. #define SHOW_FREQ 20 // Frequence of afk-count-messages, only needed if the CVAR afk_show_counter is set to 1
  98. #define SPEC_ASK_TIME 30 // Time until demo-menu will pop up ...
  99.  
  100.  
  101. new g_oldangles[33][3]
  102. new g_spawnpos[33][3]
  103. new g_afktime[33]
  104. new g_spectime[33]
  105. new st_afk_name[33][33]
  106. new bool:g_spawned[33] = {true, ...}
  107. new bool:g_demorec[33] = {false, ...}
  108. new bool:g_afkname[33] = {false, ...}
  109. new CsTeams:team
  110. new AfkCT
  111. new AfkT
  112. new bombcarrier
  113. new numCT
  114. new numT
  115.  
  116. // At mapchange init this
  117. public plugin_init() {
  118. register_plugin("AFK KiSSS","2.5.2","Isobold & Cheesy Peteza")
  119. register_cvar("afkslay_version", "2.5.2", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)
  120.  
  121. register_cvar("afk_options", "0") // kirúgja az embereket a megadott idő után (1), vagy spectbe rakja (0)
  122. register_cvar("afk_kicktime", "70") // ennyi másodperc után rúgja ki a játékost
  123. register_cvar("afk_slaytime", "40") // ha az adott csapatban egyedül van a tétlen ember, ennyi másodperc után megöli
  124. register_cvar("afk_minplayers", "6") // csak akkor lép működésbe a plugin, ha legalább ennyi ember van a szerveren
  125. register_cvar("afk_slayplayers", "1") // megöli a tétlen embereket (1), vagy nem (0)
  126. register_cvar("afk_adminimmunity", "0") // adminok védettek ellene (1), vagy nem (0)
  127. register_cvar("afk_adminkickimmunity", "0") // ha az afk_adminimmunity 0, és ez 1, akkor nem rúgja ki az adminokat, csak megöli őket
  128. register_cvar("afk_show_counter", "0") // mutassa a visszaszámlálót (1), vagy nem (0)
  129. register_cvar("afk_rename", "0") // átnevezze a tétlen játékosokat (1), vagy nem (0)
  130. register_cvar("afk_speckick", "0") // kirúgja a spectelőket is (1), vagy nem (0)
  131. register_cvar("afk_speckicktime", "300") // ha afk_speckik 1, ennyi mp után rúgja ki a specteket
  132.  
  133. set_task(float(CHECK_FREQ),"checkPlayers",_,_,_,"b")
  134. register_event("ResetHUD", "playerSpawned", "be")
  135. register_dictionary("afkkicker.txt")
  136. register_logevent("event_RoundStart",2,"0=World triggered","1=Round_Start")
  137. register_logevent("bomb_events", 3, "1=triggered", "2=Spawned_With_The_Bomb", "2=Dropped_The_Bomb", "2=Got_The_Bomb", "2=Planted_The_Bomb")
  138.  
  139. new keys = MENU_KEY_1|MENU_KEY_2
  140. register_menucmd(register_menuid("Recording a demo?"), keys, "recDemo")
  141. //register_menucmd(register_menuid("Recording a demo?"), 1023, "recDemo")
  142. }
  143.  
  144.  
  145. // Check wether one or more players is/are afk
  146. public checkPlayers() {
  147. new playerCount, i, cplayer
  148. new cplayers[32]
  149. get_players(cplayers, playerCount, "ac")
  150. get_alive_nums()
  151.  
  152. for (i=0; i<playerCount; i++) {
  153. cplayer = cplayers[i]
  154.  
  155. if (is_user_connected(cplayer) && !is_user_bot(cplayer) && !is_user_hltv(cplayer) && is_user_alive(cplayer) && g_spawned[cplayer]) {
  156. new newangle[3]
  157. g_demorec[cplayer] = false
  158. get_user_origin(cplayer, newangle)
  159. if ( newangle[0] == g_spawnpos[cplayer][0] && newangle[1] == g_spawnpos[cplayer][1] && newangle[2] == g_spawnpos[cplayer][2] ) {
  160. g_afktime[cplayer] += CHECK_FREQ
  161. check_afktime(cplayer)
  162. if(get_cvar_num("afk_rename") && get_cvar_num("afk_slaytime") && !(g_afkname[cplayer])) {
  163. new AFKName[32]
  164. get_user_name(cplayer, st_afk_name[cplayer], 31)
  165. format(AFKName, 31, "[AFK] %s", st_afk_name[cplayer])
  166. set_user_info(cplayer, "name", AFKName)
  167. g_afkname[cplayer] = true
  168. }
  169. if(get_cvar_num("afk_slayplayers"))
  170. check_team(cplayer)
  171. } else {
  172. get_user_origin(cplayer, newangle, 3)
  173. if ( newangle[0] == g_oldangles[cplayer][0] && newangle[1] == g_oldangles[cplayer][1] && newangle[2] == g_oldangles[cplayer][2] ) {
  174. g_afktime[cplayer] += CHECK_FREQ
  175. check_afktime(cplayer)
  176. if(get_cvar_num("afk_rename") && get_cvar_num("afk_slaytime") && !(g_afkname[cplayer])) {
  177. new AFKName[32]
  178. get_user_name(cplayer, st_afk_name[cplayer], 31)
  179. format(AFKName, 31, "[AFK] %s", st_afk_name[cplayer])
  180. set_user_info(cplayer, "name", AFKName)
  181. g_afkname[cplayer] = true
  182. }
  183. if(get_cvar_num("afk_slayplayers"))
  184. check_team(cplayer)
  185. } else {
  186. g_oldangles[cplayer][0] = newangle[0]
  187. g_oldangles[cplayer][1] = newangle[1]
  188. g_oldangles[cplayer][2] = newangle[2]
  189. if(g_afkname[cplayer]) {
  190. new AFKName[32]
  191. format(AFKName, 31, "%s", st_afk_name[cplayer])
  192. set_user_info(cplayer, "name", AFKName)
  193. g_afkname[cplayer] = false
  194. }
  195. g_afktime[cplayer] = 0
  196. }
  197. }
  198. if(g_afktime[cplayer] > BOMB_DROP_TIME && cplayer == bombcarrier) {
  199. client_cmd(cplayer,"use weapon_c4")
  200. client_cmd(cplayer,"drop")
  201. client_print(0, print_chat, "[AFK KiSSS] - Bomb Drop")
  202. }
  203. } else {
  204. if (is_user_connected(cplayer) && !is_user_bot(cplayer) && !is_user_hltv(cplayer))
  205. checkspec(cplayer)
  206. }
  207. }
  208. return PLUGIN_HANDLED
  209. }
  210.  
  211. // All players in your team afk or not?
  212. check_team(id) {
  213. if(g_afktime[id] < get_cvar_num("afk_slaytime")) {
  214. } else {
  215. team = cs_get_user_team(id)
  216. if((team == CS_TEAM_T && numT > 0) || (team == CS_TEAM_CT && numCT > 0)) {
  217. } else {
  218. if(get_playersnum() < get_cvar_num("afk_minplayers") || (get_user_flags(id)&ADMIN_IMMUNITY && get_cvar_num("afk_adminimmunity"))) {
  219. client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_INFO_MSG")
  220. } else {
  221. new sid[1]
  222. sid[0] = id
  223. delayed_wc3_slay(sid)
  224. new pname[32]
  225. get_user_name(id, pname, 31)
  226. client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_KILL_MSG", pname)
  227. }
  228. }
  229. }
  230. }
  231.  
  232. // Check what to do when afk
  233. check_afktime(id) {
  234. new numplayers = get_playersnum()
  235. new minplayers = get_cvar_num("afk_minplayers")
  236.  
  237. if(!(get_user_flags(id)&ADMIN_IMMUNITY && get_cvar_num("afk_adminkickimmunity")))
  238. {
  239. if (numplayers >= minplayers) {
  240. new maxafktime = get_cvar_num("afk_kicktime")
  241. if (maxafktime < MIN_AFK_TIME) {
  242. // log_amx("cvar afk_kicktime %i is too low. Minimum value is %i.", maxafktime, MIN_AFK_TIME)
  243. maxafktime = MIN_AFK_TIME
  244. set_cvar_num("afk_kicktime", MIN_AFK_TIME)
  245. }
  246. new name[32]
  247. get_user_name(id, name, 31)
  248. if(get_cvar_num("afk_options")==1) {
  249. if ( maxafktime-WARNING_TIME <= g_afktime[id] < maxafktime) {
  250. new timeleft = maxafktime - g_afktime[id]
  251. client_print(id, print_chat, "[AFK] %L", id, "AFK_TIMELEFT", timeleft)
  252. } else if (g_afktime[id] > maxafktime) {
  253. client_print(0, print_chat, "[AFK]: %L", LANG_PLAYER, "AFK_KICKED", name, maxafktime)
  254. // log_amx("%s was kicked for being AFK longer than %i seconds", name, maxafktime)
  255. server_cmd("kick #%d ^"You were kicked for being AFK longer than %i seconds^"", get_user_userid(id), maxafktime)
  256. }
  257. } else {
  258. if ( maxafktime-WARNING_TIME <= g_afktime[id] < maxafktime) {
  259. new timeleft = maxafktime - g_afktime[id]
  260. client_print(id, print_chat, "[AFK] %L", id, "AFK_STIME", timeleft)
  261. } else if (g_afktime[id] > maxafktime) {
  262. // log_amx("%s was switched to spec for being AFK longer than %i seconds", name, maxafktime)
  263. client_cmd(id,"kill")
  264. cs_set_user_team(id, CS_TEAM_SPECTATOR)
  265. client_print(0, print_chat, "[AFK] - Spec-be Atrakva!")
  266. g_afktime[id] = 0
  267. g_spectime[id] = 0
  268. new sid[1]
  269. sid[0] = id
  270. set_task(0.5,"delayed_wc3_slay",_,sid)
  271. if(get_cvar_num("afk_rename") && g_afkname[id]) {
  272. new AFKName[32]
  273. format(AFKName, 31, "%s", st_afk_name[id])
  274. set_user_info(id, "name", AFKName)
  275. g_afkname[id] = false
  276. }
  277. }
  278. }
  279. }
  280. }
  281. }
  282.  
  283. checkspec(cplayer) {
  284. // log_amx("Checkspec for id: %i", cplayer)
  285. if(get_cvar_num("afk_speckick") == 1 && cs_get_user_team(cplayer) == CS_TEAM_SPECTATOR && g_demorec[cplayer] == false) {
  286. if(!(get_user_flags(cplayer)&ADMIN_IMMUNITY && get_cvar_num("afk_adminkickimmunity"))) {
  287. // Spectatorbehandlung hier rein
  288. new maxspectime = get_cvar_num("afk_speckicktime")
  289. new sname[32]
  290. get_user_name(cplayer, sname, 31)
  291. if(g_spectime[cplayer] > SPEC_ASK_TIME) {
  292. // log_amx("Showing demo menu to %s - id: %i", sname, cplayer)
  293. ShowDemoMenu(cplayer)
  294. }
  295. g_spectime[cplayer] += CHECK_FREQ
  296. if(g_spectime[cplayer] > maxspectime) {
  297. client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_KICKED", sname, maxspectime)
  298. // log_amx("%s was kicked for being spec longer than %i seconds", sname, maxspectime)
  299. server_cmd("kick #%d ^"You were kicked for being spec longer than %i seconds^"", cplayer, maxspectime)
  300. }
  301. }
  302. }
  303. }
  304.  
  305. // just connected you are not afk for shure <!-- s;) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";)\" title=\"kacsintás\" /><!-- s;) -->
  306. public client_connect(id) {
  307. g_afktime[id] = 0
  308. g_spectime[id] = 0
  309. g_demorec[id] = false
  310. g_afkname[id] = false
  311. get_user_name(id, st_afk_name[id], 31)
  312. return PLUGIN_HANDLED
  313. }
  314.  
  315. // just connected you are not afk for shure <!-- s;) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";)\" title=\"kacsintás\" /><!-- s;) -->
  316. public client_putinserver(id) {
  317. g_afktime[id] = 0
  318. g_spectime[id] = 0
  319. g_demorec[id] = false
  320. g_afkname[id] = false
  321. get_user_name(id, st_afk_name[id], 31)
  322. return PLUGIN_HANDLED
  323. }
  324.  
  325. // get player position after spawn
  326. public playerSpawned(id) {
  327. g_spawned[id] = false
  328. g_demorec[id] = false
  329. new sid[1]
  330. sid[0] = id
  331. set_task(0.75, "delayedSpawn",_, sid, 1) // Give the player time to drop to the floor when spawning
  332. return PLUGIN_HANDLED
  333. }
  334.  
  335. // Used to get playerposition after spawn and drop
  336. public delayedSpawn(sid[]) {
  337. get_user_origin(sid[0], g_oldangles[sid[0]], 3)
  338. get_user_origin(sid[0], g_spawnpos[sid[0]])
  339. g_spawned[sid[0]] = true
  340. return PLUGIN_HANDLED
  341. }
  342.  
  343. public event_RoundStart() {
  344. new playerCount, Players[32], l
  345. if(task_exists (95729,0)) remove_task (95729,0)
  346. get_players(Players, playerCount, "ac")
  347. for(l=0;l<32;l++) {
  348. if(task_exists (2945 + l,0)) remove_task (2945 + l,0)
  349. }
  350. set_task(2.0, "afk_rs_msg")
  351. if(get_cvar_num("afk_show_counter") == 1) set_task(float(SHOW_FREQ),"afk_rs_msg",95729,_,_,"b")
  352. return PLUGIN_HANDLED
  353. }
  354.  
  355. // Collect and displays informations about number and team of afk-players
  356. public afk_rs_msg() {
  357. new playerCount, i, player
  358. new Players[32]
  359. get_players(Players, playerCount, "ac")
  360. AfkT = 0
  361. AfkCT = 0
  362.  
  363. for (i=0; i<playerCount; i++) {
  364. player = Players[i]
  365. if(g_afktime[player] > BOMB_DROP_TIME) {
  366. if(cs_get_user_team(player) == CS_TEAM_T)
  367. AfkT++
  368. if(cs_get_user_team(player) == CS_TEAM_CT)
  369. AfkCT++
  370. }
  371. }
  372. if(AfkT > 0 || AfkCT > 0) client_print(0, print_chat, "[AFK KiSSS]: %i T AFK - %i CT AFK", AfkT, AfkCT)
  373. return PLUGIN_HANDLED
  374. }
  375.  
  376. // Tracks the bombholder
  377. public bomb_events() {
  378.  
  379. new arg0[64], action[64], name[33], userid, id;
  380.  
  381. // Read the log data that we need
  382. read_logargv(0,arg0,63)
  383. read_logargv(2,action,63)
  384.  
  385. // Find the id of the player that triggered the log
  386. parse_loguser(arg0,name,32,userid)
  387. id = find_player("k",userid)
  388.  
  389. // Find out what action it was
  390. if (equal(action,"Spawned_With_The_Bomb")) {
  391. bombcarrier = id;
  392. } else if (equal(action,"Dropped_The_Bomb")) {
  393. bombcarrier = 0;
  394. } else if (equal(action,"Got_The_Bomb")) {
  395. bombcarrier = id;
  396. } else if (equal(action, "Planted_The_Bomb")) {
  397. bombcarrier = 0;
  398. }
  399.  
  400. return PLUGIN_HANDLED
  401.  
  402. }
  403.  
  404. // Retrieves the number of non-afk alive players
  405. get_alive_nums() {
  406. new playerCount, i, gplayer
  407. new Players[32]
  408. get_players(Players, playerCount, "ac")
  409. numCT = 0
  410. numT = 0
  411.  
  412. for (i=0; i<playerCount; i++) {
  413. gplayer = Players[i]
  414. if(cs_get_user_team(gplayer) == CS_TEAM_T && g_afktime[gplayer] < BOMB_DROP_TIME)
  415. numT++
  416. if(cs_get_user_team(gplayer) == CS_TEAM_CT && g_afktime[gplayer] < BOMB_DROP_TIME)
  417. numCT++
  418. }
  419. }
  420.  
  421.  
  422. public delayed_wc3_slay(sid[]) {
  423. new id
  424. id = sid[0]
  425. // log_amx("Trying to wc3-slay %i",id)
  426. if(is_user_alive(id)) {
  427. client_cmd(id,"kill")
  428. set_task(2.0,"delayed_wc3_slay",2945 + id,sid)
  429. }
  430. }
  431.  
  432.  
  433. public ShowDemoMenu(specid)
  434. {
  435. new menu[192]
  436. new keys = MENU_KEY_1|MENU_KEY_2
  437.  
  438. format(menu, 191, "Recording a demo?^n^n1. Yes^n2. No")
  439. show_menu(specid, keys, menu)
  440. }
  441.  
  442. public recDemo(specid, key)
  443. {
  444. // if they pressed yes...
  445. if ( key == 0 )
  446. g_demorec[specid] = true // If recording a demo, don't bother him anymore, only kick real afk-specs
  447. }
  448.  

_________________
Kép

Ők köszönték meg expert nek ezt a hozzászólást: Tomos (2013.06.26. 15:56)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Melyik plugin
HozzászólásElküldve: 2013.06.26. 15:55 
Offline
Félisten

Csatlakozott: 2012.06.19. 15:12
Hozzászólások: 926
Megköszönt másnak: 109 alkalommal
Megköszönték neki: 31 alkalommal
expert írta:
tessék! :)
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. /*
  3.  *
  4.  * MMMMMMM ,MMMMMMMMMMMMMMMMMMMMMMMM MMMM .aMMMMM
  5.  * 0MMMMMMMMMi MMMMMMMMMMMMMMMMMMMMMMMM MMMM MMMMMr
  6.  * MMMMMMMMMM: MMMM MMMM MMMMMM
  7.  * 7MMM2 MMMM MMMM MMMM .MMMMM.
  8.  * MMMMMM MMMMMM MMMM MMMM MMMMMM
  9.  * MMMM MMMM MMMM MMMM rMMMMM
  10.  * .iMMMM WMMMMr MMMM MMMM XMMMMM8
  11.  * rMMMM MMMM MMMM;WWWWWWWWWWWWWM0 MMMM @MMMM.
  12.  * MMMMMM MMMMMM MMMMMMMMMMMMMMMMMMMM MMMMZMMMMMM
  13.  * MMMM SMMMM MMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMM8
  14.  * MMMM, MMMM2 MMMM MMMMMMM SMMMMM
  15.  * 2MMMMa ,ZMMMM MMMM MMMMW MMMMMM
  16.  * MMMM irrrrrrr: MMMM MMMM MMMM ;MMMMMi 7Zrrrrrrrr7
  17.  * BMMMMMMMMMMMMMMMMMMMMMM0r MMMM MMMM MMMMMX MMMMMMMMMMM
  18.  * MMMMMMMMMMMMMMMMMMMMMMMM: MMMM MMMM @MMMMM
  19.  * MMMMM8 MMMMMM MMMM MMMM MMMMMZ
  20.  * MMMM MMMM MMMM MMMM ZMMMMM
  21.  * MMMM ;MMMM MMMM MMMM MMMMM@
  22.  * MMMZ2 rMMMMZ ,MMMM MMMM XMMMM
  23.  *
  24.  *
  25.  *
  26.  *
  27.  * MMM BMMMW ;MMM r @MMMMMMMMM0 . . 0MMMMMMMMM@ r 2MMMMMMMMMM i
  28.  * MMM MMMM0 ;MMM MMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMM:
  29.  * MMM WMMMW @MMMa @MMMM BMMMW ZMMMM. MMMMM rMMMM
  30.  * MMM rMMMM iMMM MMMi MMM MMMa MMM MMMX
  31.  * MMM MMMMr MZM 2MMM; .MMMS MMMZ
  32.  * MMM MMMMM rMMM MMMM, MMMMS MMMMM
  33.  * MMM MMMM MMM @MMMMMMMM rrrX, MMMMMMMMMrrrr77 BMMMMMMMMZ;rrr8
  34.  * MMMMMMMMMM MMM MMMMMMMMMMMMMM MMMMMMMMMMMMMM ZMMMMMMMMMMMMMi
  35.  * MMMMB MMMMr MMM @ZZZSMMMMM MZZZ20MMMM, ZZZZa2MMMM.
  36.  * MMM ZMMMM MMM iMMMM: MMMMX MMM0
  37.  * MMM WMMM@ MMM .S,X MMM: 2,7 MMMZ Z,r WMM
  38.  * MMM MMMM0 MMM MMMMM MMM: WMMMM MMMZ XMMMM @MM
  39.  * MMM SMMMM MMM MMM XMMMM. MMM ,MMMMr MMMi MMMZ
  40.  * MMM BMMMM MMM rMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMi iMMMMM@MMMMMMMMMMMM:
  41.  * MMM 7MMM0 ,MMM S MMMMMMMMMMMM S i.BMMMMMMMMMMM 7 :aMMMMMMMMMMM 7
  42.  *
  43.  *
  44.  *
  45.  *
  46.  * Kick/Slay/Spec-Switcher for CS with bombdrop
  47.  * based on AFK-Kicker by Cheesy Peteza
  48.  * Slay ability and Bomb drop added by Isobold (http://www.clan-nva.de)
  49.  * Code revision and some nice hints by juKay
  50.  *
  51.  * Date: 01-Jul-2005
  52.  *
  53.  *
  54.  * Description: AFK Slay/Kicker for CS. Kicks after mp_afktime and slays player
  55.  * if last surviver and afk and minimum afk_minplayers.
  56.  * Textmessage elsewhere
  57.  * Drops bomb after 25 sec afk
  58.  * AFK-Count-Message at roundstart
  59.  * AFK-Players are renamed and get their old name back when playing again or being switched spec
  60.  * (never the less their afk-name will show up during spectime)
  61.   * Able to kick specs after a certain time
  62.  *
  63.  * Cvars:
  64.  * afk_kicktime 150 // Kick people AFK longer than this time
  65.  * afk_slaytime 60 // Slay people AFK longer than this time and last survivor
  66.  * afk_minplayers 8 // Only kick AFKs when there is atleast this many players on the server
  67.  * afk_slayplayers 1 // Shall we slay or shall we not
  68.  * afk_adminimmunity 1 // Admins immun from slaying
  69.  * // Will show message anyway!
  70.  * afk_adminkickimmunity 1 // Admins immun from kicking
  71.  * afk_options 1 // 1 - Kick player after kicktime, 0 - switch to spec after kicktime
  72.  * afk_rename 1 // Set to 1, it renames AFK players as described before
  73.  *
  74.  *
  75.  *
  76.  * Requirements: AMXModX (cstrike and engine module)
  77.  *
  78.  *
  79.  *
  80.  *
  81.  * Need help with this?
  82.  *
  83.  *
  84.  *
  85.  */
  86.  
  87. #include <amxmodx>
  88. #include <amxmisc>
  89. #include <cstrike>
  90. #include <engine>
  91.  
  92.  
  93. #define MIN_AFK_TIME 30 // I use this incase stupid admins accidentally set afk_kicktime to something silly.
  94. #define WARNING_TIME 15 // Start warning the user this many seconds before they are about to be kicked.
  95. #define CHECK_FREQ 5 // This is also the warning message frequency.
  96. #define BOMB_DROP_TIME 25 // Time until bomb gets dropped, it is also afk recognition time
  97. #define SHOW_FREQ 20 // Frequence of afk-count-messages, only needed if the CVAR afk_show_counter is set to 1
  98. #define SPEC_ASK_TIME 30 // Time until demo-menu will pop up ...
  99.  
  100.  
  101. new g_oldangles[33][3]
  102. new g_spawnpos[33][3]
  103. new g_afktime[33]
  104. new g_spectime[33]
  105. new st_afk_name[33][33]
  106. new bool:g_spawned[33] = {true, ...}
  107. new bool:g_demorec[33] = {false, ...}
  108. new bool:g_afkname[33] = {false, ...}
  109. new CsTeams:team
  110. new AfkCT
  111. new AfkT
  112. new bombcarrier
  113. new numCT
  114. new numT
  115.  
  116. // At mapchange init this
  117. public plugin_init() {
  118. register_plugin("AFK KiSSS","2.5.2","Isobold & Cheesy Peteza")
  119. register_cvar("afkslay_version", "2.5.2", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)
  120.  
  121. register_cvar("afk_options", "0") // kirúgja az embereket a megadott idő után (1), vagy spectbe rakja (0)
  122. register_cvar("afk_kicktime", "70") // ennyi másodperc után rúgja ki a játékost
  123. register_cvar("afk_slaytime", "40") // ha az adott csapatban egyedül van a tétlen ember, ennyi másodperc után megöli
  124. register_cvar("afk_minplayers", "6") // csak akkor lép működésbe a plugin, ha legalább ennyi ember van a szerveren
  125. register_cvar("afk_slayplayers", "1") // megöli a tétlen embereket (1), vagy nem (0)
  126. register_cvar("afk_adminimmunity", "0") // adminok védettek ellene (1), vagy nem (0)
  127. register_cvar("afk_adminkickimmunity", "0") // ha az afk_adminimmunity 0, és ez 1, akkor nem rúgja ki az adminokat, csak megöli őket
  128. register_cvar("afk_show_counter", "0") // mutassa a visszaszámlálót (1), vagy nem (0)
  129. register_cvar("afk_rename", "0") // átnevezze a tétlen játékosokat (1), vagy nem (0)
  130. register_cvar("afk_speckick", "0") // kirúgja a spectelőket is (1), vagy nem (0)
  131. register_cvar("afk_speckicktime", "300") // ha afk_speckik 1, ennyi mp után rúgja ki a specteket
  132.  
  133. set_task(float(CHECK_FREQ),"checkPlayers",_,_,_,"b")
  134. register_event("ResetHUD", "playerSpawned", "be")
  135. register_dictionary("afkkicker.txt")
  136. register_logevent("event_RoundStart",2,"0=World triggered","1=Round_Start")
  137. register_logevent("bomb_events", 3, "1=triggered", "2=Spawned_With_The_Bomb", "2=Dropped_The_Bomb", "2=Got_The_Bomb", "2=Planted_The_Bomb")
  138.  
  139. new keys = MENU_KEY_1|MENU_KEY_2
  140. register_menucmd(register_menuid("Recording a demo?"), keys, "recDemo")
  141. //register_menucmd(register_menuid("Recording a demo?"), 1023, "recDemo")
  142. }
  143.  
  144.  
  145. // Check wether one or more players is/are afk
  146. public checkPlayers() {
  147. new playerCount, i, cplayer
  148. new cplayers[32]
  149. get_players(cplayers, playerCount, "ac")
  150. get_alive_nums()
  151.  
  152. for (i=0; i<playerCount; i++) {
  153. cplayer = cplayers[i]
  154.  
  155. if (is_user_connected(cplayer) && !is_user_bot(cplayer) && !is_user_hltv(cplayer) && is_user_alive(cplayer) && g_spawned[cplayer]) {
  156. new newangle[3]
  157. g_demorec[cplayer] = false
  158. get_user_origin(cplayer, newangle)
  159. if ( newangle[0] == g_spawnpos[cplayer][0] && newangle[1] == g_spawnpos[cplayer][1] && newangle[2] == g_spawnpos[cplayer][2] ) {
  160. g_afktime[cplayer] += CHECK_FREQ
  161. check_afktime(cplayer)
  162. if(get_cvar_num("afk_rename") && get_cvar_num("afk_slaytime") && !(g_afkname[cplayer])) {
  163. new AFKName[32]
  164. get_user_name(cplayer, st_afk_name[cplayer], 31)
  165. format(AFKName, 31, "[AFK] %s", st_afk_name[cplayer])
  166. set_user_info(cplayer, "name", AFKName)
  167. g_afkname[cplayer] = true
  168. }
  169. if(get_cvar_num("afk_slayplayers"))
  170. check_team(cplayer)
  171. } else {
  172. get_user_origin(cplayer, newangle, 3)
  173. if ( newangle[0] == g_oldangles[cplayer][0] && newangle[1] == g_oldangles[cplayer][1] && newangle[2] == g_oldangles[cplayer][2] ) {
  174. g_afktime[cplayer] += CHECK_FREQ
  175. check_afktime(cplayer)
  176. if(get_cvar_num("afk_rename") && get_cvar_num("afk_slaytime") && !(g_afkname[cplayer])) {
  177. new AFKName[32]
  178. get_user_name(cplayer, st_afk_name[cplayer], 31)
  179. format(AFKName, 31, "[AFK] %s", st_afk_name[cplayer])
  180. set_user_info(cplayer, "name", AFKName)
  181. g_afkname[cplayer] = true
  182. }
  183. if(get_cvar_num("afk_slayplayers"))
  184. check_team(cplayer)
  185. } else {
  186. g_oldangles[cplayer][0] = newangle[0]
  187. g_oldangles[cplayer][1] = newangle[1]
  188. g_oldangles[cplayer][2] = newangle[2]
  189. if(g_afkname[cplayer]) {
  190. new AFKName[32]
  191. format(AFKName, 31, "%s", st_afk_name[cplayer])
  192. set_user_info(cplayer, "name", AFKName)
  193. g_afkname[cplayer] = false
  194. }
  195. g_afktime[cplayer] = 0
  196. }
  197. }
  198. if(g_afktime[cplayer] > BOMB_DROP_TIME && cplayer == bombcarrier) {
  199. client_cmd(cplayer,"use weapon_c4")
  200. client_cmd(cplayer,"drop")
  201. client_print(0, print_chat, "[AFK KiSSS] - Bomb Drop")
  202. }
  203. } else {
  204. if (is_user_connected(cplayer) && !is_user_bot(cplayer) && !is_user_hltv(cplayer))
  205. checkspec(cplayer)
  206. }
  207. }
  208. return PLUGIN_HANDLED
  209. }
  210.  
  211. // All players in your team afk or not?
  212. check_team(id) {
  213. if(g_afktime[id] < get_cvar_num("afk_slaytime")) {
  214. } else {
  215. team = cs_get_user_team(id)
  216. if((team == CS_TEAM_T && numT > 0) || (team == CS_TEAM_CT && numCT > 0)) {
  217. } else {
  218. if(get_playersnum() < get_cvar_num("afk_minplayers") || (get_user_flags(id)&ADMIN_IMMUNITY && get_cvar_num("afk_adminimmunity"))) {
  219. client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_INFO_MSG")
  220. } else {
  221. new sid[1]
  222. sid[0] = id
  223. delayed_wc3_slay(sid)
  224. new pname[32]
  225. get_user_name(id, pname, 31)
  226. client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_KILL_MSG", pname)
  227. }
  228. }
  229. }
  230. }
  231.  
  232. // Check what to do when afk
  233. check_afktime(id) {
  234. new numplayers = get_playersnum()
  235. new minplayers = get_cvar_num("afk_minplayers")
  236.  
  237. if(!(get_user_flags(id)&ADMIN_IMMUNITY && get_cvar_num("afk_adminkickimmunity")))
  238. {
  239. if (numplayers >= minplayers) {
  240. new maxafktime = get_cvar_num("afk_kicktime")
  241. if (maxafktime < MIN_AFK_TIME) {
  242. // log_amx("cvar afk_kicktime %i is too low. Minimum value is %i.", maxafktime, MIN_AFK_TIME)
  243. maxafktime = MIN_AFK_TIME
  244. set_cvar_num("afk_kicktime", MIN_AFK_TIME)
  245. }
  246. new name[32]
  247. get_user_name(id, name, 31)
  248. if(get_cvar_num("afk_options")==1) {
  249. if ( maxafktime-WARNING_TIME <= g_afktime[id] < maxafktime) {
  250. new timeleft = maxafktime - g_afktime[id]
  251. client_print(id, print_chat, "[AFK] %L", id, "AFK_TIMELEFT", timeleft)
  252. } else if (g_afktime[id] > maxafktime) {
  253. client_print(0, print_chat, "[AFK]: %L", LANG_PLAYER, "AFK_KICKED", name, maxafktime)
  254. // log_amx("%s was kicked for being AFK longer than %i seconds", name, maxafktime)
  255. server_cmd("kick #%d ^"You were kicked for being AFK longer than %i seconds^"", get_user_userid(id), maxafktime)
  256. }
  257. } else {
  258. if ( maxafktime-WARNING_TIME <= g_afktime[id] < maxafktime) {
  259. new timeleft = maxafktime - g_afktime[id]
  260. client_print(id, print_chat, "[AFK] %L", id, "AFK_STIME", timeleft)
  261. } else if (g_afktime[id] > maxafktime) {
  262. // log_amx("%s was switched to spec for being AFK longer than %i seconds", name, maxafktime)
  263. client_cmd(id,"kill")
  264. cs_set_user_team(id, CS_TEAM_SPECTATOR)
  265. client_print(0, print_chat, "[AFK] - Spec-be Atrakva!")
  266. g_afktime[id] = 0
  267. g_spectime[id] = 0
  268. new sid[1]
  269. sid[0] = id
  270. set_task(0.5,"delayed_wc3_slay",_,sid)
  271. if(get_cvar_num("afk_rename") && g_afkname[id]) {
  272. new AFKName[32]
  273. format(AFKName, 31, "%s", st_afk_name[id])
  274. set_user_info(id, "name", AFKName)
  275. g_afkname[id] = false
  276. }
  277. }
  278. }
  279. }
  280. }
  281. }
  282.  
  283. checkspec(cplayer) {
  284. // log_amx("Checkspec for id: %i", cplayer)
  285. if(get_cvar_num("afk_speckick") == 1 && cs_get_user_team(cplayer) == CS_TEAM_SPECTATOR && g_demorec[cplayer] == false) {
  286. if(!(get_user_flags(cplayer)&ADMIN_IMMUNITY && get_cvar_num("afk_adminkickimmunity"))) {
  287. // Spectatorbehandlung hier rein
  288. new maxspectime = get_cvar_num("afk_speckicktime")
  289. new sname[32]
  290. get_user_name(cplayer, sname, 31)
  291. if(g_spectime[cplayer] > SPEC_ASK_TIME) {
  292. // log_amx("Showing demo menu to %s - id: %i", sname, cplayer)
  293. ShowDemoMenu(cplayer)
  294. }
  295. g_spectime[cplayer] += CHECK_FREQ
  296. if(g_spectime[cplayer] > maxspectime) {
  297. client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_KICKED", sname, maxspectime)
  298. // log_amx("%s was kicked for being spec longer than %i seconds", sname, maxspectime)
  299. server_cmd("kick #%d ^"You were kicked for being spec longer than %i seconds^"", cplayer, maxspectime)
  300. }
  301. }
  302. }
  303. }
  304.  
  305. // just connected you are not afk for shure <!-- s;) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";)\" title=\"kacsintás\" /><!-- s;) -->
  306. public client_connect(id) {
  307. g_afktime[id] = 0
  308. g_spectime[id] = 0
  309. g_demorec[id] = false
  310. g_afkname[id] = false
  311. get_user_name(id, st_afk_name[id], 31)
  312. return PLUGIN_HANDLED
  313. }
  314.  
  315. // just connected you are not afk for shure <!-- s;) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";)\" title=\"kacsintás\" /><!-- s;) -->
  316. public client_putinserver(id) {
  317. g_afktime[id] = 0
  318. g_spectime[id] = 0
  319. g_demorec[id] = false
  320. g_afkname[id] = false
  321. get_user_name(id, st_afk_name[id], 31)
  322. return PLUGIN_HANDLED
  323. }
  324.  
  325. // get player position after spawn
  326. public playerSpawned(id) {
  327. g_spawned[id] = false
  328. g_demorec[id] = false
  329. new sid[1]
  330. sid[0] = id
  331. set_task(0.75, "delayedSpawn",_, sid, 1) // Give the player time to drop to the floor when spawning
  332. return PLUGIN_HANDLED
  333. }
  334.  
  335. // Used to get playerposition after spawn and drop
  336. public delayedSpawn(sid[]) {
  337. get_user_origin(sid[0], g_oldangles[sid[0]], 3)
  338. get_user_origin(sid[0], g_spawnpos[sid[0]])
  339. g_spawned[sid[0]] = true
  340. return PLUGIN_HANDLED
  341. }
  342.  
  343. public event_RoundStart() {
  344. new playerCount, Players[32], l
  345. if(task_exists (95729,0)) remove_task (95729,0)
  346. get_players(Players, playerCount, "ac")
  347. for(l=0;l<32;l++) {
  348. if(task_exists (2945 + l,0)) remove_task (2945 + l,0)
  349. }
  350. set_task(2.0, "afk_rs_msg")
  351. if(get_cvar_num("afk_show_counter") == 1) set_task(float(SHOW_FREQ),"afk_rs_msg",95729,_,_,"b")
  352. return PLUGIN_HANDLED
  353. }
  354.  
  355. // Collect and displays informations about number and team of afk-players
  356. public afk_rs_msg() {
  357. new playerCount, i, player
  358. new Players[32]
  359. get_players(Players, playerCount, "ac")
  360. AfkT = 0
  361. AfkCT = 0
  362.  
  363. for (i=0; i<playerCount; i++) {
  364. player = Players[i]
  365. if(g_afktime[player] > BOMB_DROP_TIME) {
  366. if(cs_get_user_team(player) == CS_TEAM_T)
  367. AfkT++
  368. if(cs_get_user_team(player) == CS_TEAM_CT)
  369. AfkCT++
  370. }
  371. }
  372. if(AfkT > 0 || AfkCT > 0) client_print(0, print_chat, "[AFK KiSSS]: %i T AFK - %i CT AFK", AfkT, AfkCT)
  373. return PLUGIN_HANDLED
  374. }
  375.  
  376. // Tracks the bombholder
  377. public bomb_events() {
  378.  
  379. new arg0[64], action[64], name[33], userid, id;
  380.  
  381. // Read the log data that we need
  382. read_logargv(0,arg0,63)
  383. read_logargv(2,action,63)
  384.  
  385. // Find the id of the player that triggered the log
  386. parse_loguser(arg0,name,32,userid)
  387. id = find_player("k",userid)
  388.  
  389. // Find out what action it was
  390. if (equal(action,"Spawned_With_The_Bomb")) {
  391. bombcarrier = id;
  392. } else if (equal(action,"Dropped_The_Bomb")) {
  393. bombcarrier = 0;
  394. } else if (equal(action,"Got_The_Bomb")) {
  395. bombcarrier = id;
  396. } else if (equal(action, "Planted_The_Bomb")) {
  397. bombcarrier = 0;
  398. }
  399.  
  400. return PLUGIN_HANDLED
  401.  
  402. }
  403.  
  404. // Retrieves the number of non-afk alive players
  405. get_alive_nums() {
  406. new playerCount, i, gplayer
  407. new Players[32]
  408. get_players(Players, playerCount, "ac")
  409. numCT = 0
  410. numT = 0
  411.  
  412. for (i=0; i<playerCount; i++) {
  413. gplayer = Players[i]
  414. if(cs_get_user_team(gplayer) == CS_TEAM_T && g_afktime[gplayer] < BOMB_DROP_TIME)
  415. numT++
  416. if(cs_get_user_team(gplayer) == CS_TEAM_CT && g_afktime[gplayer] < BOMB_DROP_TIME)
  417. numCT++
  418. }
  419. }
  420.  
  421.  
  422. public delayed_wc3_slay(sid[]) {
  423. new id
  424. id = sid[0]
  425. // log_amx("Trying to wc3-slay %i",id)
  426. if(is_user_alive(id)) {
  427. client_cmd(id,"kill")
  428. set_task(2.0,"delayed_wc3_slay",2945 + id,sid)
  429. }
  430. }
  431.  
  432.  
  433. public ShowDemoMenu(specid)
  434. {
  435. new menu[192]
  436. new keys = MENU_KEY_1|MENU_KEY_2
  437.  
  438. format(menu, 191, "Recording a demo?^n^n1. Yes^n2. No")
  439. show_menu(specid, keys, menu)
  440. }
  441.  
  442. public recDemo(specid, key)
  443. {
  444. // if they pressed yes...
  445. if ( key == 0 )
  446. g_demorec[specid] = true // If recording a demo, don't bother him anymore, only kick real afk-specs
  447. }
  448.  


Kösz linket tudsz hozzá adni mert a lang fájl hiányzik.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Melyik plugin
HozzászólásElküldve: 2013.06.26. 17:27 
Offline
Jómunkásember
Avatar

Csatlakozott: 2013.01.15. 19:04
Hozzászólások: 407
Megköszönt másnak: 17 alkalommal
Megköszönték neki: 176 alkalommal
TESSÉK


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  [ 4 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 22 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