hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.05.07. 01:36



Jelenlévő felhasználók

Jelenleg 417 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 417 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: FakeFull Chat Szín
HozzászólásElküldve: 2014.01.12. 05:18 
Offline
Minden6ó
Avatar

Csatlakozott: 2011.01.19. 12:14
Hozzászólások: 4280
Megköszönt másnak: 218 alkalommal
Megköszönték neki: 285 alkalommal
Hali! Az a problémám, hogy ha valaki /rs-t ír nem csapat szín szerinte írja hanem spec..
Ahogy néztem ez a plugin miatt írja, de nem lehetne meg oldnai hogy ne zavarjon be mert 2 plugint és szürkén ír :S
SMA Forráskód: [ Mindet kijelol ]
  1. /* AMX Mod X script.
  2.  
  3. *
  4.  
  5. * FakeFull (fakefull_original.sma)
  6.  
  7. * Copyright (C) 2003-2006 Freecode/JTP10181
  8.  
  9. *
  10.  
  11. * This program is free software; you can redistribute it and/or
  12.  
  13. * modify it under the terms of the GNU General Public License
  14.  
  15. * as published by the Free Software Foundation; either version 2
  16.  
  17. * of the License, or (at your option) any later version.
  18.  
  19. *
  20.  
  21. * This program is distributed in the hope that it will be useful,
  22.  
  23. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  24.  
  25. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  26.  
  27. * GNU General Public License for more details.
  28.  
  29. *
  30.  
  31. * You should have received a copy of the GNU General Public License
  32.  
  33. * along with this program; if not, write to the Free Software
  34.  
  35. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  36.  
  37. *
  38.  
  39. * In addition, as a special exception, the author gives permission to
  40.  
  41. * link the code of this program with the Half-Life Game Engine ("HL
  42.  
  43. * Engine") and Modified Game Libraries ("MODs") developed by Valve,
  44.  
  45. * L.L.C ("Valve"). You must obey the GNU General Public License in all
  46.  
  47. * respects for all of the code used other than the HL Engine and MODs
  48.  
  49. * from Valve. If you modify this file, you may extend this exception
  50.  
  51. * to your version of the file, but you are not obligated to do so. If
  52.  
  53. * you do not wish to do so, delete this exception statement from your
  54.  
  55. * version.
  56.  
  57. *
  58.  
  59. ****************************************************************************
  60.  
  61. *
  62.  
  63. * Version 1.7.6 Date: 08/09/2006
  64.  
  65. *
  66.  
  67. * Original Author: Freecode freecode@hotmail.com
  68.  
  69. * Current Author: JTP10181 jtp@jtpage.net
  70.  
  71. *
  72.  
  73. ****************************************************************************
  74.  
  75. *
  76.  
  77. * Based on OLO's FakeFull metamod plugin. Fake clients
  78.  
  79. * connect to the server when its empty. Everytime someone
  80.  
  81. * joins and there is no more spots left for another person
  82.  
  83. * one fake client is removed. When the server is empty
  84.  
  85. * and FakeFull is on Automatic mode it will add
  86.  
  87. * a fake client. Once the # of fake clients and real players
  88.  
  89. * equals to ff_players it will stop.
  90.  
  91. *
  92.  
  93. * Commands:
  94.  
  95. *
  96.  
  97. * amx_addfake <# | @FILL> Add # of bots or fill the server
  98.  
  99. *
  100.  
  101. * amx_removefake <# | @ALL> Remove # of bots or remove all
  102.  
  103. *
  104.  
  105. *
  106.  
  107. * CVARs: Paste the following into your amxx.cfg to change defaults.
  108.  
  109. * You must uncomment cvar lines for them to take effect
  110.  
  111. *
  112.  
  113. ****************************************************************************
  114.  
  115. * CVAR CONFIG BEGIN
  116.  
  117. ****************************************************************************
  118.  
  119.  
  120.  
  121. // ****************** FakeFull Settings ******************
  122.  
  123.  
  124.  
  125. //Turns Automatic mode on.
  126.  
  127. //ff_players must be set higher then 0.
  128.  
  129. //<1 = ON || 0 = OFF>
  130.  
  131. //ff_automode 0
  132.  
  133.  
  134.  
  135. //Minimal number of fake and real clients on the server.
  136.  
  137. //Fake clients will be kicked so that the total players on the
  138.  
  139. //Server equals this number. If there are more players than this
  140.  
  141. //All the fake players will be gone. Do NOT set this at or aboive
  142.  
  143. //your max player count or no one will be able to join
  144.  
  145. //REQUIRED to be above 0 for Automatic mode.
  146.  
  147. //ff_players 2
  148.  
  149.  
  150.  
  151. //Delay between each fake client joins/leaves.
  152.  
  153. //REQUIRED to be above 0 for Automatic mode and regular bot add.
  154.  
  155. //ff_delay 1
  156.  
  157.  
  158.  
  159. ****************************************************************************
  160.  
  161. * CVAR CONFIG END
  162.  
  163. ****************************************************************************
  164.  
  165. *
  166.  
  167. * Setup for Automatic Mode:
  168.  
  169. *
  170.  
  171. * Set ff_players to the number of fake clients you want in server at max.
  172.  
  173. * Turn on ff_automode.
  174.  
  175. *
  176.  
  177. * Changelog:
  178.  
  179. *
  180.  
  181. * v1.7.6 - JTP10181 - 08/09/06
  182.  
  183. * - Set team to UNASSIGNED for CS so they wont join teams
  184.  
  185. *
  186.  
  187. * v1.7.5 - JTP10181 - 08/03/06
  188.  
  189. * - Got rid of need for engine module
  190.  
  191. * - Upgraded to pCVARS
  192.  
  193. * - Finally put an end to fakes ending up with models and being seen as ghost players
  194.  
  195. *
  196.  
  197. * v1.7.4 - JTP10181 - 07/01/06
  198.  
  199. * - Fixed bug in team checking causing fakes on team "-1" to get kicked
  200.  
  201. * - Upgraded to new file natives
  202.  
  203. *
  204.  
  205. * v1.7.3 - JTP10181 - 4/21/06
  206.  
  207. * - Added code to kick bots if they get on a team somehow
  208.  
  209. *
  210.  
  211. * v1.7.2 - JTP10181
  212.  
  213. * - Added new line of code per suggestion on a forum post, to prevent crashing
  214.  
  215. *
  216.  
  217. * v1.7.1 - JTP10181
  218.  
  219. * - Cleaned up massive code, hopefully no more crashing
  220.  
  221. * - Renamed CVARS and commands
  222.  
  223. * - Added feature to randomly add frags to the fake clients
  224.  
  225. *
  226.  
  227. * v1.7 - JTP10181
  228.  
  229. * - Ported fake client creation to new method using AMXX. No longer needs module.
  230.  
  231. * - Changed bot name file to botnames.txt
  232.  
  233. *
  234.  
  235. * v1.6.1 - JTP
  236.  
  237. * - Fixed bug that could get server stuck in an infinite loop
  238.  
  239. * - Fixed bug that caused dupe names sometimes
  240.  
  241. *
  242.  
  243. * v1.6 - JTP
  244.  
  245. * - Ported to AMXx
  246.  
  247. * - Fixed mem leak/overflow bug caused by some of my code
  248.  
  249. * - Fixed bugs where it was not removing the fakes automatically
  250.  
  251. * - Rewrote a lot of the createBot function to make it more effecient
  252.  
  253. * and less likely to cause mem overflows from looping
  254.  
  255. * - Fixed bugs when setting the max_names higher.
  256.  
  257. * - Must have the botnames.cfg now, no defaults are embedded in the script
  258.  
  259. * - Fixed bug where playnames array was 1000 length for the names, made plugin huge.
  260.  
  261. *
  262.  
  263. * v1.5
  264.  
  265. * - Custom names and reading names from botnames.cfg
  266.  
  267. *
  268.  
  269. * Below v1.6 was maintained by FreeCode
  270.  
  271. *
  272.  
  273. ****************************************************************************/
  274.  
  275. #include <amxmodx>
  276.  
  277. #include <amxmisc>
  278.  
  279. #include <fakemeta>
  280.  
  281. #include <cstrike>
  282.  
  283. #include <fun>
  284.  
  285.  
  286.  
  287. new const Plugin[] = "FakeFull Original"
  288.  
  289. new const Version[] = "1.7.6"
  290.  
  291. new const Author[] = "JTP10181/Freecode/AssKicR"
  292.  
  293.  
  294.  
  295. #define MAX_NAMES 256
  296.  
  297.  
  298.  
  299. new bool:is_user_ffbot[33]
  300.  
  301. new bool:checkingStatus = false
  302.  
  303. new bool:changingBots = false
  304.  
  305. new botCount = 0, namesread = 0
  306.  
  307. new namesToUse[MAX_NAMES][33]
  308.  
  309. new pDelay, pAuto, pPlayers
  310.  
  311.  
  312.  
  313. public plugin_init()
  314.  
  315. {
  316.  
  317. register_plugin(Plugin,Version,Author)
  318.  
  319. pAuto = register_cvar("ff_automode","0")
  320.  
  321. pPlayers = register_cvar("ff_players","2")
  322.  
  323. pDelay = register_cvar("ff_delay","1")
  324.  
  325. register_concmd("amx_addfake","botadd",ADMIN_BAN,"<# | @FILL> - add this many bots")
  326.  
  327. register_concmd("amx_removefake","botremove",ADMIN_BAN,"<# | @ALL> - remove this many bots")
  328.  
  329. set_task(10.0,"ServerStatus",0,_,_,"b")
  330.  
  331. ReadNames()
  332.  
  333.  
  334.  
  335. //Setup jtp10181 CVAR
  336.  
  337. new cvarString[256], shortName[16]
  338.  
  339. copy(shortName,15,"ff")
  340.  
  341.  
  342.  
  343. register_cvar("jtp10181","",FCVAR_SERVER|FCVAR_SPONLY)
  344.  
  345. get_cvar_string("jtp10181",cvarString,255)
  346.  
  347.  
  348.  
  349. if (strlen(cvarString) == 0) {
  350.  
  351. formatex(cvarString,255,shortName)
  352.  
  353. set_cvar_string("jtp10181",cvarString)
  354.  
  355. }
  356.  
  357. else if (contain(cvarString,shortName) == -1) {
  358.  
  359. format(cvarString,255,"%s,%s",cvarString, shortName)
  360.  
  361. set_cvar_string("jtp10181",cvarString)
  362.  
  363. }
  364.  
  365. }
  366.  
  367.  
  368.  
  369. public plugin_natives()
  370.  
  371. {
  372.  
  373. set_module_filter("module_filter")
  374.  
  375. set_native_filter("native_filter")
  376.  
  377. }
  378.  
  379.  
  380.  
  381. public module_filter(const module[])
  382.  
  383. {
  384.  
  385. if (!cstrike_running() && equali(module, "cstrike")) {
  386.  
  387. return PLUGIN_HANDLED
  388.  
  389. }
  390.  
  391.  
  392.  
  393. return PLUGIN_CONTINUE
  394.  
  395. }
  396.  
  397.  
  398.  
  399. public native_filter(const name[], index, trap)
  400.  
  401. {
  402.  
  403. if (!trap) return PLUGIN_HANDLED
  404.  
  405.  
  406.  
  407. return PLUGIN_CONTINUE
  408.  
  409. }
  410.  
  411.  
  412.  
  413. public botadd(id,level,cid)
  414.  
  415. {
  416.  
  417. if (!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
  418.  
  419.  
  420.  
  421. new arg[10], botNum
  422.  
  423.  
  424.  
  425. if (read_argc() == 1) botNum = 1
  426.  
  427. else {
  428.  
  429. read_argv(1,arg,9)
  430.  
  431. if (equali(arg,"@FILL")) botNum = get_maxplayers() - get_playersnum(1)
  432.  
  433. else botNum = str_to_num(arg)
  434.  
  435. }
  436.  
  437.  
  438.  
  439. if (botNum <=0 || botNum > get_maxplayers() - get_playersnum(1)) {
  440.  
  441. console_print(id,"[AMXX] Invalid number of bots to add")
  442.  
  443. return PLUGIN_HANDLED
  444.  
  445. }
  446.  
  447.  
  448.  
  449. new Float:botDelay = get_pcvar_float(pDelay)
  450.  
  451. console_print(id,"[AMXX] Adding %d bots with %.1f second delay for each",botNum,botDelay)
  452.  
  453. set_task(botDelay,"createBot",0,_,_,"a",botNum)
  454.  
  455. set_task(botDelay * (botNum + 1),"doneChanging")
  456.  
  457. changingBots = true
  458.  
  459.  
  460.  
  461. return PLUGIN_HANDLED
  462.  
  463. }
  464.  
  465.  
  466.  
  467. public botremove(id,level,cid)
  468.  
  469. {
  470.  
  471. if (!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
  472.  
  473.  
  474.  
  475. new arg[10], botNum
  476.  
  477.  
  478.  
  479. if (read_argc() == 1) botNum = 1
  480.  
  481.  
  482.  
  483. else {
  484.  
  485. read_argv(1,arg,9)
  486.  
  487. if (equali(arg,"@ALL")) botNum = botCount
  488.  
  489. else botNum = str_to_num(arg)
  490.  
  491. }
  492.  
  493.  
  494.  
  495. if (botNum <=0 || botNum > botCount) {
  496.  
  497. console_print(id,"[AMXX] Invalid number of bots to remove")
  498.  
  499. return PLUGIN_HANDLED
  500.  
  501. }
  502.  
  503.  
  504.  
  505. new Float:botDelay = get_pcvar_float(pDelay)
  506.  
  507. console_print(id,"[AMXX] Removing %d bots with %.1f second delay for each",botNum,botDelay)
  508.  
  509. set_task(botDelay,"removeBot",0,_,_,"a",botNum)
  510.  
  511. set_task(botDelay * (botNum + 1),"doneChanging")
  512.  
  513. changingBots = true
  514.  
  515.  
  516.  
  517. return PLUGIN_HANDLED
  518.  
  519. }
  520.  
  521.  
  522.  
  523. public client_putinserver(id)
  524.  
  525. {
  526.  
  527. //Don't want anyone going invisible on us
  528.  
  529. set_pev(id, pev_rendermode, kRenderNormal)
  530.  
  531.  
  532.  
  533. is_user_ffbot[id] = false
  534.  
  535. ServerStatus()
  536.  
  537. }
  538.  
  539.  
  540.  
  541. public client_disconnect(id)
  542.  
  543. {
  544.  
  545. is_user_ffbot[id] = false
  546.  
  547. ServerStatus()
  548.  
  549. }
  550.  
  551.  
  552.  
  553. public createBot()
  554.  
  555. {
  556.  
  557. new bool:UseAnotherName
  558.  
  559. new BotName[33], UserNames[33][33]
  560.  
  561. new name_rand = random_num(0,namesread - 1)
  562.  
  563. new endLoop = name_rand - 1
  564.  
  565. if (endLoop < 0) endLoop = namesread - 1
  566.  
  567.  
  568.  
  569. //Save all the usernames so we dont have to keep getting them all
  570.  
  571. for (new x = 1; x <= 32; x++) {
  572.  
  573. if (!is_user_connected(x)) continue
  574.  
  575. get_user_name(x,UserNames[x],32)
  576.  
  577. }
  578.  
  579.  
  580.  
  581. do {
  582.  
  583. UseAnotherName = false
  584.  
  585. copy(BotName,32,namesToUse[name_rand])
  586.  
  587.  
  588.  
  589. for (new id = 1; id <= 32; id++) {
  590.  
  591.  
  592.  
  593. if (!is_user_connected(id)) continue
  594.  
  595.  
  596.  
  597. if (equali(BotName,UserNames[id])) {
  598.  
  599. UseAnotherName = true
  600.  
  601.  
  602.  
  603. if (name_rand == endLoop) {
  604.  
  605. UseAnotherName = false
  606.  
  607. log_amx("ERROR: Ran out of names to use, please add more to botnames.ini")
  608.  
  609. }
  610.  
  611.  
  612.  
  613. name_rand++
  614.  
  615. if (name_rand > namesread - 1) {
  616.  
  617. name_rand = 0
  618.  
  619. }
  620.  
  621. break
  622.  
  623. }
  624.  
  625. }
  626.  
  627. } while(UseAnotherName)
  628.  
  629.  
  630.  
  631. new Bot = engfunc(EngFunc_CreateFakeClient, BotName)
  632.  
  633.  
  634.  
  635. if (Bot > 0) {
  636.  
  637. //Supposed to prevent crashes?
  638.  
  639. dllfunc(MetaFunc_CallGameEntity, "player", Bot)
  640.  
  641. set_pev(Bot, pev_flags, FL_FAKECLIENT)
  642.  
  643.  
  644.  
  645. //Make Sure they have no model
  646.  
  647. set_pev(Bot, pev_model, "")
  648.  
  649. set_pev(Bot, pev_viewmodel2, "")
  650.  
  651. set_pev(Bot, pev_modelindex, 0)
  652.  
  653.  
  654.  
  655. //Make them invisible for good measure
  656.  
  657. set_pev(Bot, pev_renderfx, kRenderFxNone)
  658.  
  659. set_pev(Bot, pev_rendermode, kRenderTransAlpha)
  660.  
  661. set_pev(Bot, pev_renderamt, 0.0)
  662.  
  663.  
  664.  
  665. //Set the team if we need to for this mod
  666.  
  667. set_team(Bot)
  668.  
  669.  
  670.  
  671. is_user_ffbot[Bot] = true
  672.  
  673. botCount++
  674.  
  675. }
  676.  
  677. }
  678.  
  679.  
  680.  
  681. public removeBot()
  682.  
  683. {
  684.  
  685. for(new id = 1; id <= 32; id++) {
  686.  
  687. if (is_user_ffbot[id]) {
  688.  
  689. server_cmd("kick #%d",get_user_userid(id))
  690.  
  691. is_user_ffbot[id] = false
  692.  
  693. botCount--
  694.  
  695. return
  696.  
  697. }
  698.  
  699. }
  700.  
  701. }
  702.  
  703.  
  704.  
  705. public doneChanging()
  706.  
  707. {
  708.  
  709. changingBots = false
  710.  
  711. }
  712.  
  713.  
  714.  
  715. public ServerStatus()
  716.  
  717. {
  718.  
  719. if ( !get_pcvar_num(pAuto) ) return
  720.  
  721. if ( checkingStatus || changingBots ) return
  722.  
  723.  
  724.  
  725. checkingStatus = true
  726.  
  727. new rnd
  728.  
  729.  
  730.  
  731. if (botCount > 0) {
  732.  
  733. for (new id = 1; id <= 32; id++) {
  734.  
  735.  
  736.  
  737. if (!is_user_connected(id)) continue
  738.  
  739. if (!is_user_ffbot[id]) continue
  740.  
  741. rnd = random_num(1,100)
  742.  
  743. if (rnd <= 10) {
  744.  
  745. set_user_frags(id,get_user_frags(id) + 1)
  746.  
  747. }
  748.  
  749.  
  750.  
  751. //Set the team if we need to for this mod
  752.  
  753. set_team(id)
  754.  
  755.  
  756.  
  757. if (get_user_team(id) > 0) {
  758.  
  759. server_cmd("kick #%d",get_user_userid(id))
  760.  
  761. is_user_ffbot[id] = false
  762.  
  763. botCount--
  764.  
  765. }
  766.  
  767. }
  768.  
  769. }
  770.  
  771.  
  772.  
  773. new pnum = get_playersnum(1)
  774.  
  775. new maxplayers = get_maxplayers()
  776.  
  777. new ff_players = get_pcvar_num(pPlayers)
  778.  
  779. new Float:botDelay = get_pcvar_float(pDelay)
  780.  
  781.  
  782.  
  783. if (ff_players > maxplayers - 2) {
  784.  
  785. ff_players = maxplayers - 2
  786.  
  787. set_pcvar_num(pPlayers, ff_players)
  788.  
  789. }
  790.  
  791.  
  792.  
  793. if (botDelay <= 0.0 ) {
  794.  
  795. log_amx("ERROR: Please set ff_delay to a number higher than 0")
  796.  
  797. }
  798.  
  799.  
  800.  
  801. else if (ff_players > pnum) {
  802.  
  803. new addnum = ff_players - pnum
  804.  
  805. set_task(botDelay,"createBot",0,_,_,"a",addnum)
  806.  
  807. set_task(botDelay * (addnum + 1),"doneChanging")
  808.  
  809. changingBots = true
  810.  
  811. }
  812.  
  813.  
  814.  
  815. else if (ff_players < pnum) {
  816.  
  817. new removenum = pnum - ff_players
  818.  
  819. removenum = min(removenum, botCount)
  820.  
  821.  
  822.  
  823. if (removenum > 0) {
  824.  
  825. set_task(botDelay,"removeBot",0,_,_,"a",removenum)
  826.  
  827. set_task(botDelay * (removenum + 1),"doneChanging")
  828.  
  829. changingBots = true
  830.  
  831. }
  832.  
  833. }
  834.  
  835.  
  836.  
  837. checkingStatus = false
  838.  
  839. }
  840.  
  841.  
  842.  
  843. public set_team(BotID)
  844.  
  845. {
  846.  
  847. if (cstrike_running()) {
  848.  
  849. cs_set_user_team(BotID, CS_TEAM_UNASSIGNED)
  850.  
  851. }
  852.  
  853. }
  854.  
  855.  
  856.  
  857. public ReadNames() {
  858.  
  859.  
  860.  
  861. new botnames_file[128]
  862.  
  863. get_configsdir(botnames_file, 63)
  864.  
  865. format(botnames_file,127,"%s/botnames.txt",botnames_file)
  866.  
  867.  
  868.  
  869. new botnames = fopen(botnames_file,"r")
  870.  
  871.  
  872.  
  873. if (botnames) {
  874.  
  875. new data[35]
  876.  
  877.  
  878.  
  879. while(!feof(botnames)) {
  880.  
  881.  
  882.  
  883. if (namesread >= MAX_NAMES) {
  884.  
  885. log_amx("MAX_NAMES exceeded, not all fake client names were able to load")
  886.  
  887. break
  888.  
  889. }
  890.  
  891.  
  892.  
  893. fgets(botnames, data, 34)
  894.  
  895. trim(data)
  896.  
  897.  
  898.  
  899. new len = strlen(data)
  900.  
  901. if (len <= 0) return
  902.  
  903. if (data[len]-1 == '^n') data[--len] = 0
  904.  
  905.  
  906.  
  907. if (equal(data,"") || equal(data,"#",1)) continue
  908.  
  909.  
  910.  
  911. copy(namesToUse[namesread],32,data)
  912.  
  913. namesread++
  914.  
  915. }
  916.  
  917.  
  918.  
  919. fclose(botnames)
  920.  
  921. }
  922.  
  923. else {
  924.  
  925. new failmsg[128]
  926.  
  927. formatex(failmsg,128,"Unable to read file ^"%s^", it is required to load bot names from", botnames_file)
  928.  
  929. log_amx(failmsg)
  930.  
  931. set_fail_state(failmsg)
  932.  
  933. }
  934.  
  935. }

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

Kép
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 64 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