hlmod.hu

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



Jelenlévő felhasználók

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

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot], 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  [3 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Alt End Round Sounds
HozzászólásElküldve:2012.07.20. 01:30 
Offline
Őstag
Avatar

Csatlakozott:2012.02.14. 15:09
Hozzászólások:1423
Megköszönték neki: 2 alkalommal
Át lehetne írni, úgy hogy csak 1 lista van és random játszik le 1 zenét akármelyik csapat nyer?
http://amxmodx.crys.hu/site/?p=pluginz& ... ltendsound
Kód:
  1.  

  2.     #include <amxmodx>

  3.     #include <amxmisc>

  4.  

  5.  

  6.         new const

  7.     // _________________________________________________

  8.  

  9.             PLUGIN [] = "Alternative End Round Sounds",

  10.             VERSION[] = "2.3b",

  11.             AUTHOR [] = "Arkshine";

  12.     // _________________________________________________

  13.  

  14.  

  15.     #if AMXX_VERSION_NUM < 180

  16.         #define old_amxx

  17.     #endif

  18.  

  19.  

  20.     /* ========================= [ "START" AERA FOR CHANGES ] ========================= */

  21.  

  22.  

  23.         #define _DEBUG                 // Active debug

  24.         #define MAX_FILE_LENGTH  196   // Max length for files + path.

  25.  

  26.         #if defined old_amxx

  27.             #define MAX_SOUNDS    25   // Max sounds per team

  28.         #endif

  29.  

  30.         new const

  31.  

  32.             g_FileName[]    = "roundsound",     // Name of the main file if no files is found in 'g_FileFolder'.

  33.             g_FileFolder[]  = "round_sound",    // Name of the directory in amxmodx/configs/ for per-map files.

  34.             g_FilePrefix[]  = "ini",            // File extension used for the files.

  35.             g_CmdChat[]     = "/roundsound";    // Chat command for player.

  36.  

  37.  

  38.     /* ========================= [ "END" AERA FOR CHANGES ] ========================= */

  39.  

  40.  

  41.  

  42.     // - - - - - - - - - - - - - - - - - - - - - - -

  43.  

  44.     #define MAX_PLAYERS  32

  45.     #define TASKID_ADS   1333

  46.     #define SIZE_FILE    0

  47.     #define NULL        -1

  48.  

  49.     new

  50.         bool:g_pHeardSound[ MAX_PLAYERS + 1 ],

  51.  

  52.         #if !defined old_amxx

  53.             Array:g_lstSoundCT,

  54.             Array:g_lstSoundT,

  55.         #endif

  56.  

  57.         p_enabled,

  58.         p_player_toggle,

  59.         p_time_ads,

  60.         p_random_precache,

  61.  

  62.         g_sRp_value[12],

  63.         g_msgSayText;

  64.  

  65.  

  66.     enum _:e_Team

  67.     {

  68.         T = 0,

  69.         CT,

  70.     };

  71.  

  72.     new g_nSnd[ e_Team ];

  73.  

  74.     #if defined old_amxx

  75.         new g_sTeam_sounds[ MAX_SOUNDS ][ e_Team ][ MAX_FILE_LENGTH ];

  76.         #define charsmax(%1)  sizeof( %1 ) - 1

  77.     #endif

  78.  

  79.     #define _is_wav(%1)  equali( %1[strlen( %1 ) - 4 ], ".wav" )

  80.  

  81.     // - - - - - - - - - - - - - - - - - - - - - - -

  82.  

  83.  

  84.     public plugin_precache()

  85.     {

  86.         register_dictionary( "end_roundsound.txt" );

  87.  

  88.         if( ( p_random_precache = get_cvar_pointer( "erc_random_precache" ) ) )

  89.             get_pcvar_string( p_random_precache, g_sRp_value, charsmax( g_sRp_value ) );

  90.  

  91.         if( !p_random_precache )

  92.             return;

  93.  

  94.         #if !defined old_amxx

  95.             g_lstSoundCT = ArrayCreate( MAX_FILE_LENGTH );

  96.             g_lstSoundT  = ArrayCreate( MAX_FILE_LENGTH );

  97.         #endif

  98.  

  99.         loading_file();

  100.     }

  101.  

  102.  

  103.     public plugin_init()

  104.     {

  105.         register_plugin( PLUGIN, VERSION, AUTHOR );

  106.         register_cvar( "ers_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY );

  107.  

  108.         register_event( "SendAudio", "eT_win" , "a", "2&%!MRAD_terwin" );

  109.         register_event( "SendAudio", "eCT_win", "a", "2&%!MRAD_ctwin"  );

  110.  

  111.         p_enabled         = register_cvar( "ers_enabled"        , "1"   );

  112.         p_player_toggle   = register_cvar( "ers_player_toggle"  , "1"   );

  113.         p_time_ads        = register_cvar( "erc_time_ads"       , "120" );

  114.  

  115.         if( !p_random_precache )

  116.         {

  117.             register_cvar( "erc_random_precache", g_sRp_value );

  118.             server_cmd( "restart" );

  119.         }

  120.  

  121.         register_clcmd( "say"       , "cmd_Say" );

  122.         register_clcmd( "say_team"  , "cmd_Say" );

  123.  

  124.         g_msgSayText = get_user_msgid( "SayText" );

  125.     }

  126.  

  127.  

  128.     public client_authorized( id )

  129.         g_pHeardSound[id] = true;

  130.  

  131.  

  132.     public client_disconnect( id )

  133.     {

  134.         g_pHeardSound[id] = true;

  135.         remove_task( id + TASKID_ADS );

  136.     }

  137.  

  138.  

  139.     public client_putinserver( id )

  140.     {

  141.         new Float:time = get_pcvar_float( p_time_ads );

  142.  

  143.         if( !time )

  144.             return;

  145.  

  146.         remove_task( id + TASKID_ADS );

  147.         set_task( time, "show_ads", id + TASKID_ADS, _, _, "b" );

  148.     }

  149.  

  150.  

  151.     public show_ads( taskid )

  152.     {

  153.         new id = taskid - TASKID_ADS;

  154.         ShowPrint( id, "%L", id, "ERS_DISPLAY_ADS", g_CmdChat );

  155.     }

  156.  

  157.  

  158.     public cmd_Say( id )

  159.     {

  160.         if( !get_pcvar_num( p_enabled ) )

  161.             return PLUGIN_CONTINUE;

  162.  

  163.         static sMsg[64];

  164.         read_argv( 1, sMsg, charsmax( sMsg ) );

  165.  

  166.         if( equali( sMsg, g_CmdChat ) )

  167.         {

  168.             if( !get_pcvar_num( p_player_toggle ) )

  169.             {

  170.                 ShowPrint( id, "%L", id, "ERS_CMD_DISABLED" );

  171.                 return PLUGIN_HANDLED;

  172.             }

  173.  

  174.             g_pHeardSound[id] = g_pHeardSound[id] ? false : true;

  175.             ShowPrint( id, "%L", id, g_pHeardSound[id] ? "ERS_SOUND_ENABLED" : "ERS_SOUND_DISABLED" );

  176.  

  177.             return PLUGIN_HANDLED;

  178.         }

  179.  

  180.         return PLUGIN_CONTINUE;

  181.     }

  182.  

  183.  

  184.     public eT_win()

  185.     {

  186.         if( !g_nSnd[ e_Team:T ] )

  187.             return;

  188.  

  189.         play_sound( e_Team:T );

  190.     }

  191.  

  192.  

  193.     public eCT_win()

  194.     {

  195.         if( !g_nSnd[ e_Team:CT ] )

  196.             return;

  197.  

  198.         play_sound( e_Team:CT );

  199.     }

  200.  

  201.  

  202.     play_sound( iTeam )

  203.     {

  204.         static

  205.     //  - - - - - - - - - - - - - - - -

  206.             sCurSnd[ MAX_FILE_LENGTH ];

  207.     //  - - - - - - - - - - - - - - - -

  208.  

  209.         new iRand;

  210.  

  211.         if( g_nSnd[ iTeam ] > 1 )

  212.             iRand = random( g_nSnd[ iTeam ] );

  213.  

  214.         #if defined old_amxx

  215.             copy( sCurSnd, MAX_FILE_LENGTH - 1, g_sTeam_sounds[ iRand ][ iTeam ] );

  216.         #else

  217.             ArrayGetString( iTeam == CT ? g_lstSoundCT : g_lstSoundT, iRand, sCurSnd, MAX_FILE_LENGTH - 1 );

  218.         #endif

  219.  

  220.         _is_wav( sCurSnd ) ?

  221.  

  222.              format( sCurSnd, MAX_FILE_LENGTH - 1, "spk %s", sCurSnd[6] ) :

  223.              format( sCurSnd, MAX_FILE_LENGTH - 1, "mp3 play %s", sCurSnd );

  224.  

  225.         if( get_pcvar_num( p_player_toggle ) )

  226.         {

  227.             static

  228.         //  - - - - - - - - - - -

  229.                 iPlayers[32],

  230.                 iNum, pid;

  231.         //  - - - - - - - - - - -

  232.  

  233.             get_players( iPlayers, iNum, "c" );

  234.  

  235.             for( new i; i < iNum; i++ )

  236.             {

  237.                 pid = iPlayers[i];

  238.  

  239.                 if( !g_pHeardSound[pid] || is_user_bot( pid ) )

  240.                     continue;

  241.  

  242.                 client_cmd( pid, "%s", sCurSnd );

  243.             }

  244.         }

  245.         else

  246.             client_cmd( 0, "%s", sCurSnd );

  247.     }

  248.  

  249.  

  250.     get_prefix( sMap[], iLen_map, sMapType[], iLen_type )

  251.     {

  252.         new

  253.     //  - - - - - - - - -

  254.             sRest[32];

  255.     //  - - - - - - - - -

  256.  

  257.         get_mapname( sMap, iLen_map );

  258.         strtok( sMap, sMapType, iLen_type, sRest, charsmax( sRest ), '_', 1 );

  259.     }

  260.  

  261.  

  262.     loading_file()

  263.     {

  264.         static

  265.     //  - - - - - - - - - - - - - - - - -

  266.             sPath[ MAX_FILE_LENGTH ],

  267.     //      |

  268.             sConfigsDir[64],

  269.             sPrefix[6],

  270.             sMap[32];

  271.     //  - - - - - - - - - - - - - - - - -

  272.  

  273.         get_prefix( sMap, charsmax( sMap ), sPrefix, charsmax( sPrefix ) );

  274.         get_configsdir( sConfigsDir, charsmax( sConfigsDir ) );

  275.  

  276.  

  277.         new bool:bFound;

  278.  

  279.         for( new i = 1; i <= 3; i++ )

  280.         {

  281.             switch( i )

  282.             {

  283.                 case 1 : formatex( sPath, charsmax( sPath ), "%s/%s/prefix-%s.%s", sConfigsDir, g_FileFolder, sPrefix, g_FilePrefix );

  284.                 case 2 : formatex( sPath, charsmax( sPath ), "%s/%s/%s.%s", sConfigsDir, g_FileFolder, sMap, g_FilePrefix );

  285.                 case 3 : formatex( sPath, charsmax( sPath ), "%s/%s.%s", sConfigsDir, g_FileName, g_FilePrefix );

  286.  

  287.                 default : break;

  288.             }

  289.  

  290.             if( !CheckFile( sPath ) )

  291.                 continue;

  292.  

  293.             bFound = true;

  294.             break;

  295.         }

  296.  

  297.         log_amx( "---" );

  298.  

  299.         bFound ?

  300.             log_amx( "%L", LANG_SERVER, "ERS_LOG_LOADING", sPath ) :

  301.             log_amx( "%L", LANG_SERVER, "ERS_LOG_NO_FILES_FOUND" );

  302.  

  303.         load_sound( sPath );

  304.     }

  305.  

  306.  

  307.     load_sound( const file[] )

  308.     {

  309.         new

  310.     //  - - - - - - - - - - - - - - -

  311.             sBuffer[256],

  312.     //      |

  313.             sLeft[ MAX_FILE_LENGTH ],

  314.             sRight[4],

  315.             sExt[6],

  316.     //      |

  317.             eTeam;

  318.     //  - - - - - - - - - - - - - - -

  319.  

  320.         new fp = fopen( file, "rt" );

  321.  

  322.         while( !feof( fp ) )

  323.         {

  324.             fgets( fp, sBuffer, charsmax( sBuffer ) );

  325.  

  326.             trim( sBuffer );

  327.  

  328.             if( !sBuffer[0] || sBuffer[0] == ';' || ( sBuffer[0] == '/' && sBuffer[1] == '/' ) )

  329.                 continue;

  330.  

  331.             if( sBuffer[0] != '"' || strlen( sBuffer  ) < 11 )

  332.                 continue;

  333.  

  334.             parse( sBuffer, sLeft, charsmax( sLeft ), sRight, charsmax( sRight ) );

  335.             formatex( sExt, charsmax( sExt ), sLeft[ strlen( sLeft ) - 4 ] );

  336.  

  337.             if( equali( sExt, ".mp3" ) == -1 || equali( sExt, ".wav" ) == -1 )

  338.             {

  339.                 log_amx( "%L", LANG_SERVER, "ERS_LOG_UNKNOW_EXTENSION", sExt );

  340.                 continue;

  341.             }

  342.  

  343.             if( !file_exists( sLeft ) )

  344.             {

  345.                 log_amx( "%L", LANG_SERVER, "ERS_LOG_INEXISTENT_FILE", sLeft );

  346.                 continue;

  347.             }

  348.  

  349.             eTeam = NULL;

  350.  

  351.             if( equali( sRight, "CT" ) )

  352.                 eTeam = CT;

  353.  

  354.             else if( equali( sRight, "T" ) )

  355.                 eTeam = T;

  356.  

  357.             if( eTeam == NULL )

  358.             {

  359.                 log_amx( "%L", LANG_SERVER, "ERS_LOG_NO_TEAM_SOUND", sLeft );

  360.                 continue;

  361.             }

  362.  

  363.             #if defined old_amxx

  364.                 copy( g_sTeam_sounds[ g_nSnd[ eTeam ] ][ eTeam ], MAX_FILE_LENGTH - 1, sLeft );

  365.             #else

  366.                 ArrayPushString( eTeam == CT ? g_lstSoundCT : g_lstSoundT, sLeft );

  367.             #endif

  368.  

  369.             ++g_nSnd[ eTeam ];

  370.         }

  371.         fclose( fp );

  372.  

  373.         if( g_nSnd[ e_Team:T ] > 1 || g_nSnd[ e_Team:CT ] > 1 )

  374.         {

  375.                 new iMax_t, iMax_ct;

  376.                 GetPrecacheValue( iMax_t, iMax_ct );

  377.  

  378.                 #if defined old_amxx

  379.                     UpdateArray( iMax_t, e_Team:T );

  380.                     UpdateArray( iMax_ct, e_Team:CT );

  381.                 #else

  382.                     p_DeleteRandomItem( iMax_t , e_Team:T , g_lstSoundT  );

  383.                     p_DeleteRandomItem( iMax_ct, e_Team:CT, g_lstSoundCT );

  384.                 #endif

  385.         }

  386.  

  387.         log_amx( "---" );

  388.  

  389.         #if defined _DEBUG

  390.             log_amx( "[ Loading %d CTs Sounds ]", g_nSnd[ e_team:CT ] );

  391.         #endif

  392.         #if defined old_amxx

  393.             PrecacheSounds( e_Team:CT );

  394.         #else

  395.             PrecacheSounds_n( g_lstSoundCT );

  396.         #endif

  397.  

  398.         #if defined _DEBUG

  399.              log_amx( "[ Loading %d Ts Sounds ]", g_nSnd[ e_team:T ] );

  400.         #endif

  401.         #if defined old_amxx

  402.             PrecacheSounds( e_Team:T );

  403.         #else

  404.             PrecacheSounds_n( g_lstSoundT );

  405.         #endif

  406.     }

  407.  

  408.  

  409.     GetPrecacheValue( &iMax_t, &iMax_ct )

  410.     {

  411.         trim( g_sRp_value );

  412.         new pos = contain( g_sRp_value, "-" );

  413.  

  414.         if( pos > 0 )

  415.         {

  416.             iMax_ct = str_to_num( g_sRp_value[ pos + 1 ] )

  417.             g_sRp_value[ pos ] = '^0';

  418.             iMax_t = str_to_num( g_sRp_value );

  419.         }

  420.         else

  421.         {

  422.             iMax_t  = str_to_num( g_sRp_value );

  423.             iMax_ct = iMax_t;

  424.         }

  425.     }

  426.  

  427.  

  428.     stock UpdateArray( iMax, iTeam )

  429.     {

  430.         new const iCnt_sound = g_nSnd[ iTeam ];

  431.  

  432.         if( !iMax || iMax == iCnt_sound )

  433.             return;

  434.  

  435.         if( iMax >= iCnt_sound )

  436.             iMax = iCnt_sound - 1;

  437.  

  438.         static

  439.             sTmp_sounds[ MAX_SOUNDS ][ e_Team ][ MAX_FILE_LENGTH ],

  440.             iLast_number[ MAX_SOUNDS ];

  441.  

  442.         new i, iRand;

  443.         for( i = 0; i < iCnt_sound; i++ )

  444.         {

  445.             copy( sTmp_sounds[i][ iTeam ], MAX_FILE_LENGTH - 1, g_sTeam_sounds[i][ iTeam ] );

  446.             g_sTeam_sounds[i][ iTeam ][0] = '^0';

  447.         }

  448.  

  449.         arrayset( iLast_number, 0, charsmax( iLast_number ) );

  450.  

  451.         i = 0;

  452.         while( i != iMax )

  453.         {

  454.             check:

  455.             iRand = random( iCnt_sound );

  456.  

  457.             if( iLast_number[ iRand ] )

  458.                 goto check;

  459.  

  460.             copy( g_sTeam_sounds[i][ iTeam ], MAX_FILE_LENGTH - 1, sTmp_sounds[ iRand ][ iTeam ] );

  461.             ++i;

  462.  

  463.             iLast_number[ iRand ] = 1;

  464.         }

  465.  

  466.         g_nSnd[ iTeam ] = iMax;

  467.     }

  468.  

  469.  

  470.     stock p_DeleteRandomItem( iMax, iTeam, Array:sSound_a )

  471.     {

  472.         new const iCnt_sound = g_nSnd[ iTeam ];

  473.  

  474.         if( !iMax || iMax == iCnt_sound )

  475.             return;

  476.  

  477.         if( iMax >= iCnt_sound )

  478.             iMax = iCnt_sound - 1;

  479.  

  480.         DeleteRandomItem( iCnt_sound - iMax, sSound_a );

  481.         g_nSnd[ iTeam ] = iMax;

  482.     }

  483.  

  484.  

  485.     stock DeleteRandomItem( iRandom_n, Array:sSound_a )

  486.         {

  487.             new i;

  488.  

  489.             while( i++ != iRandom_n )

  490.                 ArrayDeleteItem( sSound_a, random( ArraySize( sSound_a ) ) );

  491.         }

  492.  

  493.  

  494.     stock PrecacheSounds( iTeam )

  495.     {

  496.         for( new i; i < g_nSnd[ iTeam ]; i++ )

  497.         {

  498.             PrecacheFile( g_sTeam_sounds[i][ iTeam ] );

  499.  

  500.             #if defined _DEBUG

  501.                 log_amx( "   - %s", g_sTeam_sounds[i][ iTeam ] );

  502.             #endif

  503.         }

  504.  

  505.         log_amx( "---" );

  506.     }

  507.  

  508.  

  509.     stock PrecacheSounds_n( Array:sSound_a )

  510.     {

  511.         static

  512.     //  - - - - - - - - - - - - - - - - - - -

  513.             sFile[ MAX_FILE_LENGTH ],

  514.             iFileLen = charsmax( sFile );

  515.     //  - - - - - - - - - - - - - - - - - - -

  516.  

  517.         for( new i; i < ArraySize( sSound_a ); i++ )

  518.         {

  519.             ArrayGetString( sSound_a, i, sFile, iFileLen );

  520.             PrecacheFile( sFile );

  521.  

  522.             #if defined _DEBUG

  523.                 log_amx( "   - %s", sFile );

  524.             #endif

  525.         }

  526.  

  527.          log_amx( "---" );

  528.     }

  529.  

  530.  

  531.     PrecacheFile( const sound[] )

  532.     {

  533.         _is_wav( sound ) ?

  534.  

  535.             precache_sound( sound[6] ) :

  536.             precache_generic( sound );

  537.     }

  538.  

  539.  

  540.     ShowPrint( id, const sMsg[], { Float, Sql, Result, _ }:... )

  541.     {

  542.         static

  543.     //  - - - - - - - - -

  544.             newMsg[191],

  545.             message[191],

  546.     //      |

  547.             tNewMsg;

  548.     //  - - - - - - - - -

  549.  

  550.         tNewMsg = charsmax( newMsg );

  551.         vformat( newMsg, tNewMsg, sMsg, 3 );

  552.  

  553.         replace_all( newMsg, tNewMsg, "!t", "^3" );

  554.         replace_all( newMsg, tNewMsg, "!g", "^4" );

  555.         replace_all( newMsg, tNewMsg, "!n", "^1" );

  556.  

  557.         formatex( message, charsmax( message ), "^4[ERS]^1 %s", newMsg );

  558.  

  559.         emessage_begin( MSG_ONE, g_msgSayText, _, id );

  560.         ewrite_byte( id );

  561.         ewrite_string( message );

  562.         emessage_end();

  563.     }

  564.  

  565.  

  566.     bool:CheckFile( const file[] )

  567.     {

  568.         new

  569.     //  - - - - - - - - - - - - - - - - -

  570.             sBuffer[256],

  571.             fp = fopen( file, "rt" );

  572.     //  - - - - - - - - - - - - - - - - -

  573.  

  574.         if( !fp )

  575.             return false;

  576.  

  577.         while( !feof( fp ) )

  578.         {

  579.             fgets( fp, sBuffer, charsmax( sBuffer ) );

  580.  

  581.             trim( sBuffer );

  582.  

  583.             if( !sBuffer[0] || sBuffer[0] == ';' || ( sBuffer[0] == '/' && sBuffer[1] == '/' ) || sBuffer[0] != '"' )

  584.                 continue;

  585.  

  586.             if( ( contain( sBuffer, ".mp3^"" ) != -1 || contain( sBuffer, ".wav^"" ) != -1 ) && ( contain( sBuffer, "^"T^"" ) != -1 || contain( sBuffer, "^"CT^"" ) != -1 ) )

  587.                 return true;

  588.         }

  589.         fclose( fp );

  590.  

  591.         return false;

  592.     }

  593. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE

  594. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }

  595. */

  596.  

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Alt End Round Sounds
HozzászólásElküldve:2012.07.20. 01:50 
Offline
Őskövület
Avatar

Csatlakozott:2013.01.01. 17:48
Hozzászólások:2441
Megköszönt másnak: 18 alkalommal
Megköszönték neki: 21 alkalommal
roundsounds.ini-ben írd a zenéket mind2 csapathoz nekem úgy mükődött.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Alt End Round Sounds
HozzászólásElküldve:2012.07.21. 08:40 
Offline
Developer
Avatar

Csatlakozott:2011.06.01. 21:11
Hozzászólások:7966
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 537 alkalommal
Cthez is meg thez is ugyan azt írod be, nálunk is így van!

_________________
http://www.easyrankup.eu


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 4 vendég


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

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