hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.10.03. 22:48



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: koko.988az 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  [3 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Újraéledés
HozzászólásElküldve:2015.07.17. 14:55 
Offline
Tiszteletbeli
Avatar

Csatlakozott:2015.03.11. 20:11
Hozzászólások:915
Megköszönt másnak: 52 alkalommal
Megköszönték neki: 317 alkalommal
Hi guys :D
Nos, van ugye ez a "Hógolyó csata mód".
Aki ügyes, az beletudná írni azt, hogy halál után egyből éledjünk újra és folytassuk tovább?! (Mint pl: deathmatch)
Megy a kéz, aki megcsinálja :D
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. /* AMX Mod X
  3. * Snowball war
  4. *
  5. * / \ / \ ___________________________
  6. * / / \_/ \ \ / \
  7. * \__/\ /\__/ / GIVE ME A CARROT OR I WILL \
  8. * \O O/ \ BLOW UP YOUR HOUSE /
  9. * ___/ ^ \___ / ___________________________/
  10. * \___/ /_/
  11. * _/ \_
  12. * __// \\__
  13. * /___\/_\/___\
  14. *
  15. * (c) Copyright 2008 by FakeNick
  16. *
  17. * This file is provided as is (no warranties)
  18. *
  19. * DESCRIPTION
  20. * My plugin is changing an HE grenade for snowball. When player spawns he receives only
  21. * knife and HE. When snowball hit's wall it will explode with nice spalt effect.
  22. * In this mod there are two teams : blue (CT's) and red (T's). They must kill their opponents
  23. * with snowball. When player gets hit, his health is decreasing and there's
  24. * a chance that player will be chilled. In this mod target is to kill your opponents,soldier!
  25. * Snowball war includes very simple deathmatch (default off). It is also changing players models
  26. * to santa's (T's) and snow soldiers (CT's) - this model can be changed by plugin user.
  27. * Snowball war enables snow effect on server (comment line 171 to disable).
  28. *
  29. * MODULES
  30. * fakemeta
  31. * hamsandwich
  32. *
  33. * CVARS
  34. * sw_toggle - is mod on/off? (default ON - 1)
  35. * sw_friendly - is friendly fire on/off? (default OFF - 0)
  36. * sw_damage - damage done by snowball (default 100)
  37. * sw_life - life of snowball splat (default 3.0)
  38. * sw_dm - is deathmatch on/off? (defualt OFF - 0)
  39. * sw_dm_time - time to respawn (default 2.0)
  40. * sw_chill_chance - chance to chill player (from 0 - off, to 100 - maximum chance, default 30)
  41. * sw_chill_duration - duration of chill (default 5.0)
  42. * sw_chill_speed - percentage of speed that player receives when chilled (default 50.0)
  43. * sw_snowball_gravity - gravity of snowball (default 0.3)
  44. * sw_snowball_velocity - how many times snowball velocity will be multipied (default 2.0 times)
  45. * sw_crosshair_remove - will be crosshair removed (default ON - 1)
  46. * sw_spawn_protection - is spawn protection on? (default ON - 1)
  47. * sw_spawn_protection_time - time of spawn protection (default 3.0)
  48. *
  49. *
  50. * Changelog
  51. * Version 3.0 :
  52. * - Initial release
  53. *
  54. * Version 3.01 :
  55. * - Added game description changer
  56. *
  57. * Version 3.02 :
  58. * - Added change velocity of snowball
  59. * - Added change gravity of snowball
  60. * - Added crsoshair remover for more realism
  61. *
  62. * Version 3.03 :
  63. * - Added breaking glass when unchilling player
  64. * - Added random snow skybox generator
  65. * - Added spawn protection
  66. *
  67. * Version 3.04 :
  68. * - Fixed server crashing bug
  69. *
  70. * Version 3.05 :
  71. * - Added support for bots (code from ZP)
  72. *
  73. * Fordította: BBk
  74. */
  75.  
  76. #include <amxmodx>
  77. #include <amxmisc>
  78. #include <hamsandwich>
  79. #include <fakemeta>
  80. #include <fakemeta_util>
  81.  
  82. /*================================================================================
  83.  [Plugin Customization]
  84. =================================================================================*/
  85.  
  86. //Do not touch this!
  87. new const model_nade_world[] = "models/sw/w_snowball.mdl"
  88. new const model_nade_view[] = "models/sw/v_snowball.mdl"
  89. new const model_nade_player[] = "models/sw/p_snowball.mdl"
  90. new const model_splash[] = "sprites/bhit.spr"
  91.  
  92. //Randomly chosen models and sounds, add as many, as you want
  93.  
  94. new const model_red[][] = { "red1" }
  95. new const model_blue[][] = { "blue1" }
  96.  
  97. new const sound_pain[][] = { "player/pl_pain2.wav","player/pl_pain4.wav","player/pl_pain5.wav","player/pl_pain6.wav","player/pl_pain7.wav" }
  98. new const sound_hit[][] = { "player/pl_snow1.wav","player/pl_snow2.wav","player/pl_snow3.wav","player/pl_snow4.wav","player/pl_snow5.wav","player/pl_snow6.wav" }
  99. new const sound_chill[][] = { "sw/chill.wav" }
  100. new const sound_unchill[][] = { "sw/unchill.wav" }
  101. new const sound_win_blue[][] = { "sw/blue1.wav" }
  102. new const sound_win_red[][] = { "sw/red1.wav" }
  103. new const sound_win_no_one[][] = { "sw/draw.wav" }
  104.  
  105. /*================================================================================
  106.  [CUSTOMIZATION ENDS HERE!]
  107. =================================================================================*/
  108.  
  109. /*================================================================================
  110.  [Enums]
  111. =================================================================================*/
  112.  
  113. enum(+=100)
  114. {
  115. TASK_WELCOME = 100,
  116. TASK_AMMO,
  117. TASK_RESPAWN,
  118. TASK_UNCHILL,
  119. TASK_MODEL,
  120. TASK_GOD
  121. }
  122.  
  123. enum
  124. {
  125. CS_TEAM_UNASSIGNED = 0,
  126. CS_TEAM_T,
  127. CS_TEAM_CT,
  128. CS_TEAM_SPECTATOR
  129. }
  130.  
  131. /*================================================================================
  132.  [Pcvars]
  133. =================================================================================*/
  134.  
  135. new pcvar_on,pcvar_friendly,pcvar_dmg,pcvar_life,pcvar_dm,pcvar_dm_time,pcvar_chill_chance,
  136. pcvar_chill_duration,pcvar_chill_speed,pcvar_gravity,pcvar_velocity,pcvar_crosshair,
  137. pcvar_spawn,pcvar_spawn_duration,pcvar_bots
  138.  
  139. /*================================================================================
  140.  [Player variables]
  141. =================================================================================*/
  142.  
  143. new g_red[33],g_blue[33],g_IsChilled[33],Float:g_maxspeed[33],Float:g_ChillySpeed[33],
  144. g_has_custom_model[33],g_player_model[33][32],g_god[33],g_bots
  145.  
  146. /*================================================================================
  147.  [Global Variables]
  148. =================================================================================*/
  149.  
  150. new g_money,g_weapon,g_crosshair,g_fwSpawn,g_sync,g_maxplayers,g_death,g_endround,
  151. g_spray,g_glass,g_drop,gmsgScreenFade,Float:g_models_counter
  152.  
  153. //This can affect gameplay
  154. new const g_not_needed[][] =
  155. {
  156. "weaponbox",
  157. "armoury_entity",
  158. "grenade",
  159. "func_bomb_target",
  160. "info_bomb_target",
  161. "info_vip_start",
  162. "func_vip_safetyzone",
  163. "func_escapezone",
  164. "hostage_entity",
  165. "monster_scientist",
  166. "func_hostage_rescue",
  167. "info_hostage_rescue"
  168. }
  169.  
  170. //Grenade bounce sounds
  171. new const g_bouncelist[4][64] =
  172. {
  173. "weapons/grenade_hit1.wav",
  174. "weapons/grenade_hit2.wav",
  175. "weapons/grenade_hit3.wav",
  176. "weapons/he_bounce-1.wav"
  177. }
  178.  
  179. //Mod name
  180. new const g_modname[] = "Snowball war"
  181.  
  182. //Skyboxes
  183. new const g_skybox[][] = { "snow","office" }
  184.  
  185.  
  186. /*================================================================================
  187.  [Offsets and Constants]
  188. =================================================================================*/
  189.  
  190. #if cellbits == 32
  191. const OFFSET_CSTEAMS = 114
  192. const OFFSET_CSMONEY = 115
  193. const OFFSET_HE_AMMO = 388
  194. #else
  195. const OFFSET_CSTEAMS = 139
  196. const OFFSET_CSMONEY = 140
  197. const OFFSET_HE_AMMO = 437
  198. #endif
  199. const OFFSET_LINUX = 5
  200.  
  201. //To hide money displaying
  202. const HIDE_MONEY = (1<<5)
  203.  
  204. //To hide crosshair
  205. const HIDE_CROSSHAIR = (1<<6)
  206.  
  207. //For screen fade
  208. const FFADE_IN = 0x0000
  209.  
  210. //For break glass effect
  211. const BREAK_GLASS = 0x01
  212.  
  213. //Snow effect on server. Comment this line to disable
  214. #define EFFECT_SNOW
  215.  
  216. //If you experience many SVC_BAD kicks. increase this (for example set it to 0.5)
  217. const Float:MODEL_DELAY = 0.2
  218.  
  219. //Version information
  220. new const VERSION[] = "3.05"
  221.  
  222. /*================================================================================
  223.  [Code <!-- s;) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";)\" title=\"kacsintás\" /><!-- s;) -->]
  224. =================================================================================*/
  225.  
  226. public plugin_precache()
  227. {
  228. new a,modelpath[200]
  229.  
  230. for(a = 0; a < sizeof sound_win_blue; a++)
  231. engfunc(EngFunc_PrecacheSound,sound_win_blue[a])
  232. for(a = 0; a < sizeof sound_win_blue; a++)
  233. engfunc(EngFunc_PrecacheSound,sound_win_red[a])
  234. for(a = 0; a < sizeof sound_win_blue; a++)
  235. engfunc(EngFunc_PrecacheSound,sound_win_no_one[a])
  236. for(a = 0; a < sizeof sound_pain; a++)
  237. engfunc(EngFunc_PrecacheSound,sound_pain[a])
  238. for(a = 0; a < sizeof sound_hit; a++)
  239. engfunc(EngFunc_PrecacheSound,sound_hit[a])
  240. for(a = 0; a < sizeof sound_chill; a++)
  241. engfunc(EngFunc_PrecacheSound,sound_chill[a])
  242. for(a = 0; a < sizeof sound_unchill; a++)
  243. engfunc(EngFunc_PrecacheSound,sound_unchill[a])
  244.  
  245. for(a = 0;a < sizeof model_blue; a++)
  246. {
  247. formatex(modelpath, sizeof modelpath - 1, "models/player/%s/%s.mdl", model_blue[a], model_blue[a])
  248. engfunc(EngFunc_PrecacheModel,modelpath)
  249. }
  250. for(a = 0;a < sizeof model_red; a++)
  251. {
  252. formatex(modelpath, sizeof modelpath - 1, "models/player/%s/%s.mdl", model_red[a], model_red[a])
  253. engfunc(EngFunc_PrecacheModel,modelpath)
  254. }
  255.  
  256. engfunc(EngFunc_PrecacheModel,model_nade_world)
  257. engfunc(EngFunc_PrecacheModel,model_nade_view)
  258. engfunc(EngFunc_PrecacheModel,model_nade_player)
  259. engfunc(EngFunc_PrecacheModel,model_splash)
  260.  
  261. g_drop = engfunc(EngFunc_PrecacheModel,"sprites/blood.spr")
  262. g_spray = engfunc(EngFunc_PrecacheModel,"sprites/bloodspray.spr")
  263. g_glass = engfunc(EngFunc_PrecacheModel,"models/glassgibs.mdl")
  264.  
  265. #if defined EFFECT_SNOW
  266. engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_snow"))
  267. #endif
  268.  
  269. //Fake hostage to force round ending
  270. new ent
  271. ent = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"hostage_entity"))
  272.  
  273. if(pev_valid(ent))
  274. {
  275. engfunc(EngFunc_SetOrigin, ent, Float:{8192.0 ,8192.0 ,8192.0})
  276. dllfunc(DLLFunc_Spawn, ent)
  277. }
  278.  
  279. //Prevent some etnities form spawning
  280. g_fwSpawn = register_forward(FM_Spawn,"fw_SpawnEntity")
  281.  
  282. }
  283.  
  284. public plugin_init()
  285. {
  286. register_plugin("Snowball war", VERSION, "FakeNick")
  287.  
  288. pcvar_on = register_cvar("sw_toggle","1")
  289.  
  290. //Make sure that plugin is on
  291. if(!get_pcvar_num(pcvar_on))
  292. return
  293.  
  294. //Register dictionary
  295. register_dictionary("sw.txt")
  296.  
  297. //Events
  298. register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
  299. register_event("CurWeapon","event_modelchange","be","1=1")
  300. register_logevent("logevent_round_end",2,"1=Round_End")
  301.  
  302. //Forwards
  303. RegisterHam(Ham_Spawn,"player","fw_PlayerSpawn",1)
  304. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
  305. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  306.  
  307. register_forward(FM_SetModel,"fw_SetModel")
  308. register_forward(FM_Touch,"fw_Touch")
  309. register_forward(FM_EmitSound,"fw_EmitSound")
  310. register_forward(FM_Think,"fw_Think")
  311. register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
  312. register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged")
  313. register_forward(FM_GetGameDescription,"fw_GameDesc")
  314.  
  315. unregister_forward(FM_Spawn,g_fwSpawn)
  316.  
  317. //Pcvars
  318. pcvar_friendly = register_cvar("sw_friendly","0")
  319. pcvar_dmg = register_cvar("sw_damage","100")
  320. pcvar_life = register_cvar("sw_life","3.0")
  321. pcvar_dm = register_cvar("sw_dm","0")
  322. pcvar_dm_time = register_cvar("sw_dm_time","2.0")
  323. pcvar_chill_chance = register_cvar("sw_chill_chance","30")
  324. pcvar_chill_duration = register_cvar("sw_chill_duration","5.0")
  325. pcvar_chill_speed = register_cvar("sw_chill_speed","50.0")
  326. pcvar_gravity = register_cvar("sw_snowball_gravity","0.3")
  327. pcvar_velocity = register_cvar("sw_snowball_velocity","2.0")
  328. pcvar_crosshair = register_cvar("sw_crosshair_remove","1")
  329. pcvar_spawn = register_cvar("sw_spawn_protection","1")
  330. pcvar_spawn_duration = register_cvar("sw_spawn_protection_time","3.0")
  331.  
  332. pcvar_bots = get_cvar_pointer("bot_quota")
  333.  
  334. //For version recognize and see what server is running this plugin
  335. register_cvar("sw_version",VERSION,FCVAR_SERVER | FCVAR_SPONLY)
  336.  
  337. //Set skybox
  338. set_cvar_string("sv_skyname", g_skybox[random_num(0, sizeof g_skybox - 1)])
  339.  
  340. //Other stuff
  341. g_money = get_user_msgid("Money")
  342. g_weapon = get_user_msgid("HideWeapon")
  343. g_crosshair = get_user_msgid("Crosshair")
  344. g_death = get_user_msgid("DeathMsg")
  345. gmsgScreenFade = get_user_msgid("ScreenFade")
  346.  
  347. g_sync = CreateHudSyncObj()
  348.  
  349. g_maxplayers = get_maxplayers()
  350.  
  351. //Messsages
  352. register_message(get_user_msgid("TextMsg"), "message_textmsg")
  353. register_message(get_user_msgid("SendAudio"),"message_audio")
  354. register_message(get_user_msgid("HostagePos"), "message_hostagepos")
  355. register_message(get_user_msgid("Scenario"), "message_scenario")
  356. }
  357. public plugin_cfg()
  358. {
  359. // Get configs dir
  360. new cfgdir[32],file[192]
  361.  
  362. get_configsdir(cfgdir, sizeof cfgdir - 1)
  363.  
  364. formatex(file,sizeof file - 1,"%s/sw.cfg",cfgdir)
  365.  
  366. if(file_exists(file))
  367. {
  368. // Execute config file (sw.cfg)
  369. server_cmd("exec %s", file)
  370. }else{
  371. log_amx("[SW] Snowball War config file doesn't exist!")
  372. }
  373. }
  374. /*================================================================================
  375.  [Events]
  376. =================================================================================*/
  377. public event_round_start()
  378. {
  379. //It's not round end
  380. g_endround = false
  381.  
  382. //Reset models counter
  383. g_models_counter = 0.0
  384.  
  385. //Remove old welcome task and make a new one
  386. remove_task(TASK_WELCOME)
  387. set_task(2.5,"func_welcome",TASK_WELCOME)
  388.  
  389. }
  390. public event_modelchange(id)
  391. {
  392. new weapon = read_data(2)
  393.  
  394. if(weapon == CSW_HEGRENADE)
  395. {
  396. //Set view model and player model
  397. set_pev(id,pev_viewmodel2,model_nade_view)
  398. set_pev(id,pev_weaponmodel2,model_nade_world)
  399.  
  400. //Remove crosshair
  401. if(get_pcvar_num(pcvar_crosshair))
  402. {
  403. message_begin( MSG_ONE_UNRELIABLE, g_weapon, _, id )
  404. write_byte(HIDE_CROSSHAIR)
  405. message_end()
  406. }
  407.  
  408. }
  409. }
  410. public logevent_round_end()
  411. {
  412. // Prevent this from getting called twice when restarting (bugfix)
  413. static Float:last
  414. if (get_gametime() - last < 0.5) return;
  415. last = get_gametime()
  416.  
  417. g_endround = true
  418.  
  419. // Show HUD notice, play win sound
  420. if (!sw_GetBlue())
  421. {
  422. //Red team wins
  423. set_hudmessage(200, 0, 0, -1.0, 0.17, 0, 0.0, 3.0, 2.0, 1.0, -1)
  424. ShowSyncHudMsg(0, g_sync, "%L", LANG_PLAYER, "WIN_RED")
  425.  
  426. // Play win sound
  427. sw_sound(sound_win_red[random_num(0, sizeof sound_win_red -1)])
  428. }
  429. else if (!sw_GetRed())
  430. {
  431. //Blue team wins
  432. set_hudmessage(0, 0, 200, -1.0, 0.17, 0, 0.0, 3.0, 2.0, 1.0, -1)
  433. ShowSyncHudMsg(0, g_sync, "%L", LANG_PLAYER, "WIN_BLUE")
  434.  
  435. // Play win sound
  436. sw_sound(sound_win_blue[random_num(0, sizeof sound_win_blue -1)])
  437. }
  438. else
  439. {
  440. // No one wins
  441. set_hudmessage(0, 200, 0, -1.0, 0.17, 0, 0.0, 3.0, 2.0, 1.0, -1)
  442. ShowSyncHudMsg(0, g_sync, "%L", LANG_PLAYER, "WIN_NO_ONE")
  443.  
  444. sw_sound(sound_win_no_one[random_num(0, sizeof sound_win_no_one -1)])
  445. }
  446. }
  447. /*================================================================================
  448.  [Main Part]
  449. =================================================================================*/
  450. public func_welcome()
  451. {
  452. client_print(0,print_chat,"%L",LANG_PLAYER,"MSG_WELCOME",VERSION)
  453. }
  454. public client_connect(id)
  455. {
  456. if(!get_pcvar_num(pcvar_on))
  457. return
  458.  
  459. #if defined EFFECT_SNOW
  460. client_cmd(id, "cl_weather 1")
  461. #endif
  462. }
  463. public client_putinserver(id)
  464. {
  465. // Plugin disabled?
  466. if (!get_pcvar_num(pcvar_on))
  467. return;
  468.  
  469. // Initialize player vars
  470. g_IsChilled[id] = false
  471. g_blue[id] = false
  472. g_red[id]= false
  473. g_god[id] = false
  474.  
  475. // CZ bots seem to use a different "classtype" for player entities
  476. // (or something like that) which needs to be hooked separately
  477. if (!g_bots && pcvar_bots && is_user_bot(id))
  478. {
  479. // Set a task to let the private data initialize
  480. set_task(0.1, "task_bots", id)
  481. }
  482. }
  483. public client_disconnect(id)
  484. {
  485. if(!get_pcvar_num(pcvar_on))
  486. return
  487.  
  488. g_IsChilled[id] = false
  489. g_blue[id] = false
  490. g_red[id]= false
  491. g_god[id] = false
  492. }
  493. /*================================================================================
  494.  [Forwards]
  495. =================================================================================*/
  496.  
  497. public fw_PlayerSpawn(id)
  498. {
  499. if(!is_user_alive(id))
  500. return
  501.  
  502. g_blue[id] = false
  503. g_red[id] = false
  504. g_IsChilled[id] = false
  505. g_god[id] = false
  506.  
  507. //Strip player weapons
  508. fm_strip_user_weapons(id)
  509.  
  510. //Give him knife and "snowball"
  511. fm_give_item(id,"weapon_knife")
  512. fm_give_item(id,"weapon_hegrenade")
  513.  
  514. //Reset his model
  515. sw_reset_user_model(id)
  516.  
  517. //Strip his cash ;]
  518. sw_set_user_money(id,0,0)
  519.  
  520. //Hide money displaying
  521. sw_money(id)
  522.  
  523. //Set his team variable
  524. switch(sw_get_user_team(id))
  525. {
  526. case CS_TEAM_CT : g_blue[id] = true
  527. case CS_TEAM_T : g_red[id] = true
  528. }
  529.  
  530. //Set his new model
  531. remove_task(id + TASK_MODEL)
  532.  
  533. // Store our custom model in g_player_model[id]
  534. if(g_blue[id])
  535. {
  536. copy(g_player_model[id], sizeof g_player_model[] - 1, model_blue[random_num(0, sizeof model_blue -1)])
  537.  
  538. }else if(g_red[id])
  539. {
  540. copy(g_player_model[id], sizeof g_player_model[] - 1, model_red[random_num(0, sizeof model_red -1)])
  541. }
  542.  
  543. // Get the current model
  544. new currentmodel[32]
  545. sw_get_user_model(id, currentmodel, sizeof currentmodel - 1)
  546.  
  547. // Check whether it matches the custom model
  548. if (!equal(currentmodel, g_player_model[id]))
  549. {
  550. // If not, set a task to change it
  551. set_task(1.0 + g_models_counter, "task_set_model", id + TASK_MODEL)
  552.  
  553. // Add a delay between every model change
  554. g_models_counter += MODEL_DELAY
  555. }
  556.  
  557. //Check if spawn protection is on
  558. if(get_pcvar_num(pcvar_spawn))
  559. {
  560. //Set god
  561. g_god[id] = true
  562.  
  563. //Remove an old task and make a new one
  564. remove_task(id + TASK_GOD)
  565. set_task(get_pcvar_float(pcvar_spawn_duration),"task_UnGod",id + TASK_GOD)
  566.  
  567. //Set glow
  568. switch(sw_get_user_team(id))
  569. {
  570. case CS_TEAM_CT : fm_set_user_rendering(id,kRenderFxGlowShell,0,0,255,kRenderNormal,25)
  571. case CS_TEAM_T : fm_set_user_rendering(id,kRenderFxGlowShell,255,0,0,kRenderNormal,25)
  572. }
  573.  
  574. }
  575.  
  576. }
  577. public fw_SpawnEntity(entity)
  578. {
  579. // Invalid entity
  580. if (!pev_valid(entity)) return FMRES_IGNORED
  581.  
  582. // Get classname
  583. new classname[32]
  584. pev(entity, pev_classname, classname, sizeof classname - 1)
  585.  
  586. // Check whether it needs to be removed
  587. for (new i = 0; i < sizeof g_not_needed; i++)
  588. {
  589. if (equal(classname, g_not_needed[i]))
  590. {
  591. engfunc(EngFunc_RemoveEntity, entity)
  592. return FMRES_SUPERCEDE
  593. }
  594. }
  595.  
  596. return FMRES_IGNORED
  597. }
  598. public fw_SetModel(ent,const model[])
  599. {
  600. //Check ent validity
  601. if(!pev_valid(ent))
  602. return FMRES_IGNORED
  603.  
  604. //If model is equal to HE model, change it to snowball model
  605. if(equali(model,"models/w_hegrenade.mdl"))
  606. {
  607. //get owner to renew his ammo
  608. new Float:velocity[3],owner = pev(ent,pev_owner)
  609.  
  610. //remove an old task an set a new one
  611. remove_task(owner + TASK_AMMO)
  612. set_task(0.01,"task_ammo",owner + TASK_AMMO)
  613.  
  614. //Set model
  615. engfunc(EngFunc_SetModel,ent,model_nade_world)
  616.  
  617. //Block from exploding
  618. set_pev(ent, pev_dmgtime, get_gametime() + 9999.0)
  619.  
  620. //Set less gravity, so it will be "real" snowball
  621. set_pev(ent,pev_gravity,get_pcvar_float(pcvar_gravity))
  622.  
  623. //Get grenade velocity
  624. pev(ent, pev_velocity, velocity)
  625.  
  626. //Calculate new velocity
  627. velocity[0] *= get_pcvar_float(pcvar_velocity)
  628. velocity[1] *= get_pcvar_float(pcvar_velocity)
  629. velocity[2] *= get_pcvar_float(pcvar_velocity)
  630.  
  631. //Set new velocity
  632. set_pev(ent, pev_velocity,velocity)
  633.  
  634. return FMRES_SUPERCEDE
  635. }
  636. return FMRES_IGNORED
  637. }
  638. public fw_Touch(ent,id)
  639. {
  640. if(!pev_valid(ent))
  641. return FMRES_IGNORED
  642.  
  643. //Create some variables
  644. new classname[20],classname2[20],Float:origin[3],owner = pev(ent,pev_owner)
  645.  
  646. pev(ent,pev_origin,origin)
  647. pev(id,pev_classname,classname2,sizeof classname2 - 1)
  648. pev(ent,pev_classname,classname,sizeof classname - 1)
  649.  
  650. //Player get's hit
  651. if(equali(classname,"grenade") && equali(classname2,"player"))
  652. {
  653. if(is_user_alive(id))
  654. {
  655. //Check friendly fire
  656. if (get_user_team(owner) == get_user_team(id))
  657. if (!get_pcvar_num(pcvar_friendly))
  658. return FMRES_IGNORED
  659.  
  660. //Check god mode
  661. if(g_god[id])
  662. return FMRES_IGNORED
  663.  
  664. if(get_user_health(id) > get_pcvar_float(pcvar_dmg))
  665. {
  666. //Players health is greater than snowball damage
  667.  
  668. //Calculate chill chance
  669. if(random_num(0,100) <= get_pcvar_num(pcvar_chill_chance))
  670. {
  671. //Chill only non-chilled player
  672. if(!g_IsChilled[id])
  673. {
  674. //Emit sound
  675. engfunc(EngFunc_EmitSound,id,CHAN_AUTO,sound_chill[random_num(0, sizeof sound_chill - 1)],1.0,ATTN_NORM,0,PITCH_NORM)
  676.  
  677. //Make light effect
  678. sw_light(origin)
  679.  
  680. //Chill him!
  681. sw_ChillPlayer(id)
  682.  
  683. //Set unchill task
  684. remove_task(id + TASK_UNCHILL)
  685. set_task(get_pcvar_float(pcvar_chill_duration),"task_UnChill",id + TASK_UNCHILL)
  686. }
  687. }
  688.  
  689. //Create nice effect
  690. sw_effect(origin)
  691.  
  692. //Emit pain sound
  693. engfunc(EngFunc_EmitSound,id,CHAN_VOICE,sound_pain[random_num(0, sizeof sound_pain - 1)],1.0,ATTN_NORM,0,PITCH_NORM)
  694.  
  695. //Emit hit sound
  696. engfunc(EngFunc_EmitSound,ent,CHAN_AUTO,sound_hit[random_num(0, sizeof sound_hit - 1)],1.0,ATTN_NORM,0,PITCH_NORM)
  697.  
  698. //Do damage to player
  699. fm_set_user_health(id, get_user_health(id) - floatround(get_pcvar_float(pcvar_dmg)))
  700.  
  701. //Make white splash
  702. sw_splash(ent,origin)
  703.  
  704. }else if(get_user_health(id) <= get_pcvar_float(pcvar_dmg))
  705. {
  706. //Players health is lower or equal to snowball damage
  707.  
  708. //Emit hit sound
  709. engfunc(EngFunc_EmitSound,ent,CHAN_AUTO,sound_hit[random_num(0, sizeof sound_hit - 1)],1.0,ATTN_NORM,0,PITCH_NORM)
  710.  
  711. //Make nice effect
  712. sw_effect(origin)
  713.  
  714. //Remove entity
  715. engfunc(EngFunc_RemoveEntity,ent)
  716.  
  717. //Kill player
  718. sw_kill(owner,id,"snowball",0)
  719. }
  720. }else{
  721. //Snowball hits something (not player)
  722. sw_splash(ent,origin)
  723. }
  724.  
  725. }else if(equali(classname,"grenade"))
  726. {
  727. sw_effect(origin)
  728.  
  729. //Snowball hit's something, f.e. wall, etc.
  730. sw_splash(ent,origin)
  731.  
  732. //Emit hit sound
  733. engfunc(EngFunc_EmitSound,ent,CHAN_AUTO,sound_hit[random_num(0, sizeof sound_hit - 1)],1.0,ATTN_NORM,0,PITCH_NORM)
  734. }
  735.  
  736. return FMRES_IGNORED
  737. }
  738. public fw_EmitSound(ent,channel,const sound[])
  739. {
  740. //Check if emited sound is equal to one for our list
  741. for(new a; a < sizeof g_bouncelist;a++)
  742. {
  743. //If it's equal - block it
  744. if(equali(sound,g_bouncelist[a]))
  745. return FMRES_SUPERCEDE
  746. }
  747. return FMRES_IGNORED
  748. }
  749. public fw_Think(ent)
  750. {
  751. //Check validity
  752. if(!pev_valid(ent))
  753. return FMRES_IGNORED
  754.  
  755. //Retrieve class
  756. static class[20]
  757. pev(ent,pev_classname,class,sizeof class - 1)
  758.  
  759. //If class is equal to snow_splash, remove entity
  760. if(equali(class,"snow_splash"))
  761. engfunc(EngFunc_RemoveEntity,ent)
  762.  
  763. return FMRES_IGNORED
  764. }
  765. public fw_SetClientKeyValue(id, const infobuffer[], const key[])
  766. {
  767. // Block CS model changes
  768. if (g_has_custom_model[id] && equal(key, "model"))
  769. return FMRES_SUPERCEDE
  770.  
  771. return FMRES_IGNORED
  772. }
  773. public fw_ClientUserInfoChanged(id)
  774. {
  775. // Player doesn't have a custom model
  776. if (!g_has_custom_model[id])
  777. return FMRES_IGNORED
  778.  
  779. // Get current model
  780. static currentmodel[32]
  781. sw_get_user_model(id, currentmodel, sizeof currentmodel - 1)
  782.  
  783. // Check whether it matches the custom model - if not, set it again
  784. if (!equal(currentmodel, g_player_model[id]))
  785. sw_set_user_model(id, g_player_model[id])
  786.  
  787. return FMRES_IGNORED
  788. }
  789. public fw_PlayerKilled(victim, attacker, shouldgib)
  790. {
  791. //Check if deathmatch is on
  792. if(!get_pcvar_num(pcvar_dm))
  793. return
  794.  
  795. //Make sure that it's not round end
  796. if(!g_endround)
  797. {
  798. remove_task(victim + TASK_RESPAWN)
  799. set_task(get_pcvar_float(pcvar_dm_time),"task_respawn",victim + TASK_RESPAWN)
  800. }
  801.  
  802. }
  803. //Block knife damage
  804. public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
  805. {
  806. // Non-player damage or self damage
  807. if (victim == attacker || !is_user_connected(attacker))
  808. return HAM_IGNORED
  809.  
  810. return HAM_SUPERCEDE
  811. }
  812. //Change game name
  813. public fw_GameDesc()
  814. {
  815. forward_return(FMV_STRING,g_modname)
  816. return FMRES_SUPERCEDE
  817. }
  818. /*================================================================================
  819.  [Messages]
  820. =================================================================================*/
  821.  
  822. // Block some text messages
  823. public message_textmsg()
  824. {
  825. static textmsg[22]
  826. get_msg_arg_string(2, textmsg, sizeof textmsg - 1)
  827.  
  828. // Game restarting, reset scores and call round end to balance the teams
  829. if (equal(textmsg, "#Game_will_restart_in"))
  830. {
  831. logevent_round_end()
  832. }
  833. // Block round end related messages
  834. else if (equal(textmsg, "#Hostages_Not_Rescued") || equal(textmsg, "#Round_Draw") || equal(textmsg, "#Terrorists_Win") || equal(textmsg, "#CTs_Win"))
  835. {
  836. return PLUGIN_HANDLED
  837. }
  838.  
  839. //Block "Fire in the hole!" text
  840. if(get_msg_args() == 5)
  841. {
  842. if(get_msg_argtype(5) == ARG_STRING)
  843. {
  844. new value5[64]
  845. get_msg_arg_string(5 ,value5 ,63)
  846. if(equal(value5, "#Fire_in_the_hole"))
  847. {
  848. return PLUGIN_HANDLED
  849. }
  850. }
  851. }
  852. else if(get_msg_args() == 6)
  853. {
  854. if(get_msg_argtype(6) == ARG_STRING)
  855. {
  856. new value6[64]
  857. get_msg_arg_string(6 ,value6 ,63)
  858. if(equal(value6 ,"#Fire_in_the_hole"))
  859. {
  860. return PLUGIN_HANDLED
  861. }
  862. }
  863. }
  864.  
  865. return PLUGIN_CONTINUE
  866. }
  867.  
  868. //Block some audio messages
  869. public message_audio()
  870. {
  871. //Create variable
  872. static sample[20]
  873.  
  874. //Get message arguments
  875. get_msg_arg_string(2, sample, sizeof sample - 1)
  876.  
  877. //Check argument, if it's equal - block it
  878. if(equal(sample[1], "!MRAD_FIREINHOLE"))
  879. return PLUGIN_HANDLED
  880.  
  881. if(equal(sample[7], "terwin") || equal(sample[7], "ctwin") || equal(sample[7], "rounddraw"))
  882. return PLUGIN_HANDLED
  883.  
  884. return PLUGIN_CONTINUE
  885. }
  886.  
  887. //Block hostage from appearing on the radar
  888. public message_hostagepos()
  889. {
  890. return PLUGIN_HANDLED
  891. }
  892. // Block hostage HUD display
  893. public message_scenario()
  894. {
  895. if (get_msg_args() > 1)
  896. {
  897. static sprite[8]
  898. get_msg_arg_string(2, sprite, sizeof sprite - 1)
  899.  
  900. if (equal(sprite, "hostage"))
  901. return PLUGIN_HANDLED
  902. }
  903.  
  904. return PLUGIN_CONTINUE
  905. }
  906. /*================================================================================
  907.  [TASKS]
  908. =================================================================================*/
  909. public task_ammo(id)
  910. {
  911. id -= TASK_AMMO
  912.  
  913. sw_set_user_bpammo(id,1)
  914. }
  915. public task_respawn(id)
  916. {
  917. id -= TASK_RESPAWN
  918.  
  919. ExecuteHamB(Ham_CS_RoundRespawn,id)
  920. }
  921. public task_UnChill(id)
  922. {
  923. id -= TASK_UNCHILL
  924.  
  925. new Float:origin[3]
  926.  
  927. pev(id,pev_origin,origin)
  928.  
  929. sw_UnChill(id,origin)
  930. }
  931. public task_set_model(id)
  932. {
  933. id -= TASK_MODEL
  934.  
  935. sw_set_user_model(id, g_player_model[id])
  936. }
  937. public task_UnGod(id)
  938. {
  939. id -= TASK_GOD
  940.  
  941. g_god[id] = false
  942.  
  943. fm_set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,25)
  944. }
  945. public task_bots(id)
  946. {
  947. // Make sure it's a CZ bot and it's still connected
  948. if (g_bots || !get_pcvar_num(pcvar_bots) || !is_user_connected(id) || !is_user_bot(id))
  949. return;
  950.  
  951. RegisterHamFromEntity(Ham_Spawn, id, "fw_PlayerSpawn", 1)
  952. RegisterHamFromEntity(Ham_Killed, id, "fw_PlayerKilled")
  953. RegisterHamFromEntity(Ham_TakeDamage, id, "fw_TakeDamage")
  954.  
  955. // Ham forwards for CZ bots succesfully registered
  956. g_bots = true
  957.  
  958. // If the bot has already spawned, call the forward manually for him
  959. if (is_user_alive(id)) fw_PlayerSpawn(id)
  960. }
  961. /*================================================================================
  962.  [Stocks]
  963. =================================================================================*/
  964.  
  965. //Set player money
  966. stock sw_set_user_money(id,money,flash=1)
  967. {
  968. set_pdata_int(id,OFFSET_CSMONEY,money,OFFSET_LINUX)
  969.  
  970. message_begin(MSG_ONE,g_money,{0,0,0},id)
  971. write_long(money)
  972. write_byte(flash)
  973. message_end()
  974. }
  975. // Get User Team
  976. stock sw_get_user_team(id)
  977. {
  978. return get_pdata_int(id, OFFSET_CSTEAMS, OFFSET_LINUX)
  979. }
  980. //With this stock we can set player model
  981. stock sw_set_user_model(player, const modelname[])
  982. {
  983. engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", modelname)
  984.  
  985. g_has_custom_model[player] = true
  986. }
  987. //With this stock we can get player model
  988. stock sw_get_user_model(player, model[], len)
  989. {
  990. engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", model, len)
  991. }
  992. //With this stock we can reset player model
  993. stock sw_reset_user_model(player)
  994. {
  995. g_has_custom_model[player] = false
  996.  
  997. dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player))
  998. }
  999. //Set user snowballs
  1000. stock sw_set_user_bpammo(id,amount)
  1001. {
  1002. set_pdata_int(id, OFFSET_HE_AMMO, amount, OFFSET_LINUX)
  1003. }
  1004. //Make death msg
  1005. stock sw_kill(killer, victim, weapon[],headshot)
  1006. {
  1007. set_msg_block(g_death , BLOCK_SET)
  1008. user_kill(victim,1)
  1009. set_msg_block(g_death, BLOCK_NOT)
  1010.  
  1011. message_begin(MSG_ALL, g_death, {0,0,0}, 0)
  1012. write_byte(killer)
  1013. write_byte(victim)
  1014. write_byte(headshot)
  1015. write_string(weapon)
  1016. message_end()
  1017.  
  1018. if(get_user_team(killer)!= get_user_team(victim))
  1019. {
  1020. fm_set_user_frags(killer,get_user_frags(killer) + 1)
  1021.  
  1022. }else{
  1023. fm_set_user_frags(killer,get_user_frags(killer) - 1)
  1024. }
  1025. }
  1026. /*================================================================================
  1027.  [Other stuff]
  1028. =================================================================================*/
  1029. sw_GetBlue()
  1030. {
  1031. static iCt, id
  1032. iCt = 0
  1033.  
  1034. for (id = 1; id <= g_maxplayers; id++)
  1035. {
  1036. if (is_user_connected(id))
  1037. {
  1038. if(is_user_alive(id) && g_blue[id])
  1039. iCt++
  1040. }
  1041. }
  1042.  
  1043. return iCt
  1044. }
  1045. sw_GetRed()
  1046. {
  1047. static iT, id
  1048. iT = 0
  1049.  
  1050. for (id = 1; id <= g_maxplayers; id++)
  1051. {
  1052. if (is_user_connected(id))
  1053. {
  1054. if(is_user_alive(id) && g_red[id])
  1055. iT++
  1056. }
  1057. }
  1058.  
  1059. return iT
  1060. }
  1061. sw_money(id)
  1062. {
  1063. message_begin(MSG_ONE,g_weapon,_,id)
  1064. write_byte(HIDE_MONEY)
  1065. message_end()
  1066. message_begin(MSG_ONE,g_crosshair,_,id)
  1067. write_byte(0)
  1068. message_end()
  1069. }
  1070. sw_sound(const sound[])
  1071. {
  1072. client_cmd(0, "spk ^"%s^"", sound)
  1073. }
  1074. sw_splash(ent,Float:origin[3])
  1075. {
  1076. set_pev(ent, pev_velocity, Float:{0.0, 0.0, 0.0})
  1077. set_pev(ent, pev_classname, "snow_splash")
  1078. set_pev(ent, pev_solid, SOLID_NOT)
  1079. set_pev(ent, pev_movetype, MOVETYPE_NONE)
  1080. engfunc(EngFunc_SetOrigin, ent, origin)
  1081. engfunc(EngFunc_SetModel, ent, model_splash)
  1082. set_pev(ent,pev_nextthink,get_gametime() + get_pcvar_float(pcvar_life))
  1083. fm_set_rendering(ent, kRenderFxNoDissipation, 255, 255, 255, kRenderGlow, 255)
  1084. }
  1085. sw_effect(Float:fOrigin[3])
  1086. {
  1087. new origin[3]
  1088. FVecIVec(fOrigin,origin)
  1089.  
  1090. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  1091. write_byte(TE_BLOODSPRITE)
  1092. write_coord(origin[0]+random_num(-20,20))
  1093. write_coord(origin[1]+random_num(-20,20))
  1094. write_coord(origin[2]+random_num(-20,20))
  1095. write_short(g_spray)
  1096. write_short(g_drop)
  1097. write_byte(255)
  1098. write_byte(15)
  1099. message_end()
  1100. }
  1101. sw_light(Float:originF[3])
  1102. {
  1103. new origin[3]
  1104. FVecIVec(originF,origin)
  1105.  
  1106. // light effect
  1107. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  1108. write_byte(TE_DLIGHT)
  1109. write_coord(origin[0]) // x
  1110. write_coord(origin[1]) // y
  1111. write_coord(origin[2]) // z
  1112. write_byte(floatround(240.0/5.0)) // radius
  1113. write_byte(0) // r
  1114. write_byte(206)// g
  1115. write_byte(209) // b
  1116. write_byte(8) // life
  1117. write_byte(60) // decay rate
  1118. message_end()
  1119. }
  1120. sw_ChillPlayer(id)
  1121. {
  1122. //Set glow
  1123. fm_set_user_rendering(id,kRenderFxGlowShell,0,206,209,kRenderNormal,25)
  1124.  
  1125. //Set chill state
  1126. g_IsChilled[id] = true
  1127.  
  1128. //Retrieve player old maxspeed
  1129. pev(id,pev_maxspeed,g_maxspeed[id])
  1130.  
  1131. //Calculate his new maxspeed
  1132. g_ChillySpeed[id] = g_maxspeed[id] * get_pcvar_float(pcvar_chill_speed) / 100.0
  1133.  
  1134. //Set his new maxspeed
  1135. set_pev(id,pev_maxspeed,g_ChillySpeed[id])
  1136.  
  1137. //Add blue fade on players screen
  1138. message_begin(MSG_ONE,gmsgScreenFade,_,id)
  1139. write_short(floatround(4096.0 * get_pcvar_float(pcvar_chill_duration))) // duration
  1140. write_short(floatround(3072.0 * get_pcvar_float(pcvar_chill_duration))) // hold time
  1141. write_short(FFADE_IN) // flags
  1142. write_byte(0) // red
  1143. write_byte(206) // green
  1144. write_byte(209) // blue
  1145. write_byte(100) // alpha
  1146. message_end()
  1147. }
  1148. sw_UnChill(id,Float:fOrigin[3])
  1149. {
  1150. //Make some variables
  1151. new origin[3]
  1152.  
  1153. //Change origin from float to integer
  1154. FVecIVec(fOrigin,origin)
  1155.  
  1156. //Delete glow
  1157. fm_set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,25)
  1158.  
  1159. //Restore his maxspeed
  1160. set_pev(id,pev_maxspeed,g_maxspeed[id])
  1161.  
  1162. //Set chill state
  1163. g_IsChilled[id] = false
  1164.  
  1165. // clear tint
  1166. message_begin(MSG_ONE,gmsgScreenFade,_,id)
  1167. write_short(0) // duration
  1168. write_short(0) // hold time
  1169. write_short(FFADE_IN) // flags
  1170. write_byte(0) // red
  1171. write_byte(0) // green
  1172. write_byte(0) // blue
  1173. write_byte(255)// alpha
  1174. message_end()
  1175.  
  1176. //Make glass effect
  1177. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  1178. write_byte(TE_BREAKMODEL)
  1179. write_coord(origin[0]) // x
  1180. write_coord(origin[1]) // y
  1181. write_coord(origin[2] + 24) // z
  1182. write_coord(16) // size x
  1183. write_coord(16) // size y
  1184. write_coord(16) // size z
  1185. write_coord(random_num(-50,50)) // velocity x
  1186. write_coord(random_num(-50,50)) // velocity y
  1187. write_coord(25) // velocity z
  1188. write_byte(10) // random velocity
  1189. write_short(g_glass) // model
  1190. write_byte(10) // count
  1191. write_byte(25) // life
  1192. write_byte(BREAK_GLASS) // flags
  1193. message_end()
  1194.  
  1195. //Emit sound
  1196. engfunc(EngFunc_EmitSound,id,CHAN_AUTO,sound_unchill[random_num(0, sizeof sound_unchill - 1)],1.0,ATTN_NORM,0,PITCH_NORM)
  1197. }
  1198.  

_________________
viewtopic.php?f=101&t=25611#p184899
viewtopic.php?f=114&t=29544&p=209471#p209431

Ők köszönték meg SmaCk nek ezt a hozzászólást: 'HoTDoG' (2015.07.19. 09:14)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Újraéledés
HozzászólásElküldve:2015.07.17. 15:04 
Offline
Developer
Avatar

Csatlakozott:2011.06.01. 21:11
Hozzászólások:7965
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 537 alkalommal
sw_dm - is deathmatch on/off? (defualt OFF - 0)

_________________
http://www.easyrankup.eu

Ők köszönték meg kiki nek ezt a hozzászólást: SmaCk (2015.07.17. 15:05)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Újraéledés
HozzászólásElküldve:2015.07.17. 15:05 
Offline
Tiszteletbeli
Avatar

Csatlakozott:2015.03.11. 20:11
Hozzászólások:915
Megköszönt másnak: 52 alkalommal
Megköszönték neki: 317 alkalommal
kiki írta:
sw_dm - is deathmatch on/off? (defualt OFF - 0)


LoL, nem néztem :D
Köszöntem.

_________________
viewtopic.php?f=101&t=25611#p184899
viewtopic.php?f=114&t=29544&p=209471#p209431

Ők köszönték meg SmaCk nek ezt a hozzászólást: 'HoTDoG' (2015.07.19. 09:14)
  Népszerűség: 2.27%


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


Ki van itt

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