hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.06.16. 21:49



Jelenlévő felhasználók

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

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-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  [6 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Jó így a forráskód?
HozzászólásElküldve:2012.07.07. 11:49 
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
Ezt a plugint átírtam úgy, hogy csak admin használhassa. Nem tudom hogy ez így jó-e vagy nem. Valaki okos megmondaná hogy jó-e?

[spoiler]
Kód:
  1. /* Magyarosította       Annoying Master* */

  2.  

  3. #include <amxmodx>

  4. #include <amxmisc>

  5. #include <fun>

  6. #include <hamsandwich>

  7. #include <fakemeta>

  8. #include <engine>

  9. #include <xs>

  10. #include <cstrike>

  11.  

  12. #define PLUGIN "Portal"

  13. #define VERSION "1.0"

  14. #define AUTHOR "DarkGL & R3X"

  15.  

  16. #define SOUNDS

  17. #define SPRITES

  18. //#define TEST

  19. //#define TRACE_HULL

  20.  

  21. #define MAX 32

  22. #define IsPlayer(%1) (1<=%1<=MAX)

  23.  

  24. new const szClassNameNieb[] = "portal_shot_niebieski"

  25. new const szClassNamePom[] = "portal_shot_pomaranczowy"

  26. new const szClassTelNieb[] = "teleport_nieb";

  27. new const szClassTelPom[] = "teleport_pom";

  28. new const v_model[] = "models/hun_portalgun/v_hun_portal.mdl";

  29. new const portal[] = "models/hun_portalgun/hun_portal.mdl";

  30. new const w_model[] = "models/rpgrocket.mdl";

  31.  

  32. #if defined SOUNDS

  33. new const portal_shot_blue[] = "hun_portalgun/portalgun_shoot_blue1.wav"

  34. new const portal_shot_red[] = "hun_portalgun/portalgun_shoot_red1.wav"

  35. new const soundOpen[][]={

  36.         "hun_portalgun/portal_open1.wav",

  37.         "hun_portalgun/portal_open2.wav",

  38.         "hun_portalgun/portal_open3.wav"

  39. }

  40. new const soundClose[][]={

  41.         "hun_portalgun/portal_close1.wav",

  42.         "hun_portalgun/portal_close2.wav"

  43. }

  44. new const soundEnter[][]={

  45.         "hun_portalgun/portal_enter1.wav",

  46.         "hun_portalgun/portal_enter2.wav"

  47. }

  48. new const soundInvalid[]= "hun_portalgun/portal_invalid_surface3.wav";

  49. #endif

  50.  

  51. new player_ent[MAX+1]

  52. new Float:fNextAttack[MAX+1]

  53. new bool:bMode[MAX+1]

  54. new iEnt[MAX+1][2];

  55. new iTel[MAX+1][2]

  56.  

  57. #define OFFSET_WEAPONOWNER 41

  58. #define OFFSET_LINUX_WEAPONS 4

  59. #define OFFSET_ACTIVEITEM 374

  60. #define OFFSET_LINUX_PLAYER 5

  61.  

  62. #define m_flNextPrimaryAttack 46

  63. #define m_flNextSecondaryAttack 47

  64.  

  65. new const szClassTouch[][]={

  66.         "worldspawn",

  67.         "func_wall",

  68.         "func_door",

  69.         "func_door_rotating",

  70.         "func_breakable"

  71. }

  72.  

  73. #define  MAX_DISTANCE 70.0

  74. #define  MIN_DISTANCE 50.0

  75.  

  76. #if defined SPRITES

  77. new sprite;

  78. new g_trail;

  79. new spriteInvalid[2];

  80. #endif

  81.  

  82. enum eCvar{

  83.         SpriteType,

  84.         FallDamge,

  85.         SpeedBullet,

  86.         PortalCost,

  87.         SpawnPortal

  88. }

  89.  

  90. new pCvars[eCvar]

  91.  

  92. public plugin_init() {

  93.         register_plugin(PLUGIN, VERSION, AUTHOR)

  94.        

  95.         RegisterHam(Ham_Killed,"player","ham_KilledPost",1)

  96.         RegisterHam( Ham_TakeDamage, "player", "ham_damage" );

  97.         RegisterHam(Ham_Spawn,"player","ham_Spawned",1)

  98.        

  99.         register_logevent("Koniec_Rundy", 2, "1=Round_End")

  100.        

  101.         register_forward(FM_CmdStart,"fwd_CmdStart")

  102.        

  103.         register_touch(szClassTelPom,"*","touchTeleport")

  104.         register_touch(szClassTelNieb,"*","touchTeleport")

  105.        

  106.         for(new i = 0;i<sizeof szClassTouch;i++){      

  107.                 register_touch(szClassTouch[i],szClassNameNieb,"touchNieb")

  108.                 register_touch(szClassTouch[i],szClassNamePom,"touchPom")

  109.         }

  110.        

  111.         register_clcmd("say /portal","buyPortal");

  112.         register_clcmd("drop","cmdDrop")

  113.        

  114.         register_clcmd("give_portal","give_weapon",ADMIN_CFG,"<nick>")

  115.        

  116.         public buyPortal(id)

  117. {

  118.        if(!(is_user_admin(id) & ADMIN_KICK))

  119.        

  120.                   return PLUGIN_HANDLED

  121. }

  122.        

  123.         return PLUGIN_CONTINUE;

  124. }

  125.  

  126. public ham_Spawned(id){

  127.         if(!is_user_alive(id)){

  128.                 return HAM_IGNORED;

  129.         }

  130.         if(get_pcvar_num(pCvars[SpawnPortal]) && !pev_valid(player_ent[id])){

  131.                 new szWeaponName[64],bool:bContinue = false;

  132.                 new num, iWeapons[32]

  133.                

  134.                 get_user_weapons(id, iWeapons, num)

  135.                 for(new i = 1;i<=30;i++){

  136.                         if(i == 2 || i == 4 || i == 6 || i == 9 || i == 25 || i == 29){

  137.                                 continue;

  138.                         }

  139.                         bContinue = false;

  140.                         for (new j=0; j<num; j++)

  141.                         {

  142.                                 if(iWeapons[j] == i){

  143.                                         bContinue = true;

  144.                                         break;

  145.                                 }

  146.                         }

  147.                         if(!bContinue){

  148.                                 get_weaponname(i,szWeaponName,charsmax(szWeaponName));

  149.                                 player_ent[id] = give_item(id,szWeaponName)

  150.                                 RegisterHamFromEntity(Ham_Item_Deploy,player_ent[id],"ham_ItemDeploy_Post",1)

  151.                                 set_pdata_float(player_ent[id], m_flNextPrimaryAttack, 99999.0, OFFSET_LINUX_WEAPONS)

  152.                                 set_pdata_float(player_ent[id], m_flNextSecondaryAttack, 99999.0, OFFSET_LINUX_WEAPONS)

  153.                                 break;

  154.                         }

  155.                 }

  156.                

  157.         }

  158.         return HAM_IGNORED;

  159. }

  160.  

  161. public buyPortal(id){

  162.         new cost = get_pcvar_num(pCvars[PortalCost]);

  163.         if(cost < 1){

  164.                 return PLUGIN_HANDLED;

  165.         }

  166.         if(cs_get_user_money(id) < cost){

  167.                 client_print(id,print_console,"Nincs eleg penzed a vasarlashoz!");

  168.         }

  169.         else

  170.         {

  171.                 if(!is_user_alive(id)){

  172.                         client_print(id,print_console,"Elned kell ahhoz, hogy ezt a fegyvert megvasarold!");

  173.                         return PLUGIN_HANDLED

  174.                 }

  175.                 if(pev_valid(player_ent[id])){

  176.                         client_print(id,print_console,"Neked mar van ilyen fegyvered!");

  177.                         return PLUGIN_HANDLED

  178.                 }

  179.                 new szWeaponName[64],bool:bContinue = false;

  180.                 new num, iWeapons[32]

  181.                

  182.                 get_user_weapons(id, iWeapons, num)

  183.                 for(new i = 1;i<=30;i++){

  184.                         if(i == 2 || i == 4 || i == 6 || i == 9 || i == 25 || i == 29){

  185.                                 continue;

  186.                         }

  187.                         bContinue = false;

  188.                         for (new j=0; j<num; j++)

  189.                         {

  190.                                 if(iWeapons[j] == i){

  191.                                         bContinue = true;

  192.                                         break;

  193.                                 }

  194.                         }

  195.                         if(!bContinue){

  196.                                 get_weaponname(i,szWeaponName,charsmax(szWeaponName));

  197.                                 player_ent[id] = give_item(id,szWeaponName)

  198.                                 RegisterHamFromEntity(Ham_Item_Deploy,player_ent[id],"ham_ItemDeploy_Post",1)

  199.                                 set_pdata_float(player_ent[id], m_flNextPrimaryAttack, 99999.0, OFFSET_LINUX_WEAPONS)

  200.                                 set_pdata_float(player_ent[id], m_flNextSecondaryAttack, 99999.0, OFFSET_LINUX_WEAPONS)

  201.                                 break;

  202.                         }

  203.                 }

  204.                 cs_set_user_money(id,cs_get_user_money(id) - cost,0);

  205.                

  206.         }

  207.         return PLUGIN_HANDLED;

  208. }

  209.  

  210. public ham_damage( this, inflictor, attacker, Float:damage, damagebits )

  211. {

  212.         if( !( damagebits & DMG_FALL ) || !IsPlayer(this))

  213.         return HAM_IGNORED;

  214.        

  215.         new bool:bCvar = !(!get_pcvar_num(pCvars[FallDamge]))

  216.        

  217.         if(!bCvar || (bCvar && !pev_valid(player_ent[this]))){

  218.                 return HAM_IGNORED;

  219.         }

  220.        

  221.         return HAM_SUPERCEDE;

  222. }

  223.  

  224. public Koniec_Rundy()

  225. {

  226.         remove_entity_name(szClassTelPom)

  227.         remove_entity_name(szClassTelNieb)

  228.         for(new i = 1;i<=MAX;i++){

  229.                 iTel[i][0] = 0;

  230.                 iTel[i][1] = 0;

  231.         }

  232. }

  233.  

  234. public touchTeleport(portal,id){

  235.         if(pev_valid(id)){

  236.                 if(pev(id,pev_movetype) == MOVETYPE_FOLLOW){

  237.                         return PLUGIN_CONTINUE;

  238.                 }

  239.                 static szClassName[64];

  240.                 pev(id,pev_classname,szClassName,charsmax(szClassName));

  241.                 if(equal(szClassName,szClassTelPom) || equal(szClassName,szClassTelNieb) || equal(szClassName,szClassNameNieb) || equal(szClassName,szClassNamePom)){

  242.                         return PLUGIN_CONTINUE;

  243.                 }

  244.                 moveTo(id,portal,pev(portal,pev_iuser1))

  245.         }

  246.         return PLUGIN_CONTINUE;

  247. }

  248.  

  249.  

  250. moveTo(id, in, out){

  251.         if(pev_valid(out)){

  252.                 #if defined TRACE_HULL

  253.                 new hull = HULL_POINT;

  254.                

  255.                 if(is_user_alive(id)){

  256.                         hull = HULL_HUMAN;

  257.                 }

  258.                 #endif

  259.                

  260.                 new Float:fDistance = MIN_DISTANCE;

  261.                 while(fDistance <= MAX_DISTANCE){

  262.                         new Float:fOrigin[3];

  263.                         pev(out, pev_origin, fOrigin);

  264.                        

  265.                         new Float:fAngles[3];

  266.                         pev(out, pev_vuser1, fAngles);

  267.                        

  268.                         xs_vec_mul_scalar(fAngles, fDistance, fAngles);

  269.                         xs_vec_add(fOrigin, fAngles, fOrigin);

  270.                        

  271.                         new Float:fMins[3],Float:fMaxs[3];

  272.                         pev(id,pev_mins,fMins);

  273.                         pev(id,pev_maxs,fMaxs);

  274.                        

  275.                        

  276.                        

  277.                         #if defined TRACE_HULL

  278.                         if(!trace_hull(fOrigin, hull, id, 0)){

  279.                                 #else

  280.                                 if(checkPortalPlace(fOrigin,fMins,fMaxs)){

  281.                                         #endif

  282.                                         set_pev(id, pev_origin, fOrigin);

  283.                                        

  284.                                         #if defined SOUNDS

  285.                                         engfunc(EngFunc_EmitAmbientSound, 0,fOrigin, soundEnter[random(sizeof soundEnter)],VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

  286.                                         #endif

  287.                                        

  288.                                         parseAngle(id, in, out);

  289.                                        

  290.                                         break;

  291.                                 }

  292.                                 fDistance += 10.0;

  293.                         }

  294.                 }

  295.         }

  296.  

  297.         public fwd_CmdStart(id, uc_handle, seed) {

  298.                 if(!is_user_alive(id) || player_ent[id] != get_pdata_cbase(id,OFFSET_ACTIVEITEM,OFFSET_LINUX_PLAYER)){

  299.                         return FMRES_IGNORED;

  300.                 }

  301.                

  302.                 new buttons = get_uc(uc_handle,UC_Buttons)

  303.                 new oldbuttons = get_user_oldbutton(id);

  304.                

  305.                 if(buttons&IN_ATTACK && fNextAttack[id] < get_gametime()){

  306.                         fNextAttack[id] = get_gametime() + 0.5;

  307.                         create_shot_portal(id);

  308.                         set_animation(id,random_num(1,2))

  309.                 }

  310.                 if(buttons & IN_ATTACK2 && !(oldbuttons & IN_ATTACK2)){

  311.                         bMode[id] = !bMode[id];

  312.                         client_print(id,print_center,"Atjaro: %s",bMode[id] ? "Kek":"Narancs")

  313.                 }

  314.                 return FMRES_HANDLED

  315.         }

  316.  

  317.         public plugin_precache(){

  318.                

  319.                 cvar_register();

  320.                

  321.                 precache_model(v_model);

  322.                 precache_model(portal);

  323.                 precache_model(w_model);

  324.                 #if defined SPRITES

  325.                 sprite = precache_model("sprites/white.spr");

  326.                 g_trail = precache_model("sprites/smoke.spr")

  327.                 spriteInvalid[0] = precache_model("sprites/hun_portalgun/pom.spr") ;

  328.                 spriteInvalid[1] = precache_model("sprites/hun_portalgun/nieb.spr") ;

  329.                 #endif

  330.                

  331.                 #if defined SOUNDS

  332.                 precache_sound(portal_shot_blue)

  333.                 precache_sound(portal_shot_red);

  334.                 for(new i = 0 ; i<sizeof soundOpen;i++){

  335.                         precache_sound(soundOpen[i])

  336.                 }

  337.                 for(new i = 0 ; i<sizeof soundClose;i++){

  338.                         precache_sound(soundClose[i])

  339.                 }

  340.                 for(new i = 0 ; i<sizeof soundEnter;i++){

  341.                         precache_sound(soundEnter[i])

  342.                 }

  343.                 precache_sound(soundInvalid)

  344.                 #endif

  345.                

  346.                 new szConfDir[64],szFullDir[128];

  347.                 get_configsdir(szConfDir,charsmax(szConfDir));

  348.                 formatex(szFullDir,charsmax(szFullDir),"%s/portal.cfg",szConfDir);

  349.                 if(!file_exists(szFullDir)){

  350.                         #if defined SPRITES

  351.                         write_file(szFullDir,"// Az 1-es vagy a 2-es a különbőző spritok beállítása, a 0 az, hogy ne legyen különbőző")

  352.                         write_file(szFullDir,"portal_sprite 1");

  353.                         #endif

  354.                        

  355.                         write_file(szFullDir,"// 1 - földre eséskor nem sebez 0 - csak azokat nem sebez földreeséskor, akinél van fegyver")

  356.                         write_file(szFullDir,"portal_fall_damage 1");

  357.                        

  358.                         write_file(szFullDir,"// lövés gyorsasága")

  359.                         write_file(szFullDir,"portal_bullet_speed 1500");

  360.                        

  361.                         write_file(szFullDir,"// 1 - vásárlás bekapcsolva (-1) - vásárlás kikapcsolva")

  362.                         write_file(szFullDir,"portal_cost 1");

  363.                        

  364.                         write_file(szFullDir,"// 1 - mindenki kapjon kör elelyén portalgunt 0 - ne legyen")

  365.                         write_file(szFullDir,"portal_spawn 0")

  366.                 }

  367.                 server_cmd("exec %s",szFullDir)

  368.                

  369.         }

  370.  

  371.         public client_connect(id){

  372.                 player_ent[id] = 0;

  373.                 iTel[id][0] = 0;

  374.                 iTel[id][1] = 0;

  375.         }

  376.  

  377.         public client_disconnect(id){

  378.                 player_ent[id] = 0;

  379.                 iTel[id][0] = 0;

  380.                 iTel[id][1] = 0;

  381.         }

  382.  

  383.         public touchNieb(touched,toucher){

  384.                 if(!pev_valid(toucher)){

  385.                         remove_entity(toucher)

  386.                         return PLUGIN_CONTINUE;

  387.                 }

  388.                

  389.                 missileTouche(toucher,0);

  390.                

  391.                 return PLUGIN_CONTINUE;

  392.         }

  393.  

  394.         public touchPom(touched,toucher){      

  395.                 if(!pev_valid(toucher)){

  396.                         remove_entity(toucher)

  397.                         return PLUGIN_CONTINUE;

  398.                 }

  399.                

  400.                 missileTouche(toucher,1);

  401.                

  402.                 return PLUGIN_CONTINUE;

  403.         }

  404.  

  405.         public missileTouche(iEntLocal,iPos){

  406.                 new Float:fOrigin[3],iOwner;

  407.                

  408.                 pev(iEntLocal,pev_origin,fOrigin);

  409.                

  410.                 iOwner = pev(iEntLocal,pev_owner);

  411.                

  412.                 new Float:fVelo[3],Float:fEndOrigin[3];

  413.                

  414.                 pev(iEntLocal, pev_velocity, fVelo)

  415.                

  416.                 xs_vec_normalize(fVelo,fVelo)

  417.                

  418.                 xs_vec_mul_scalar(fVelo,50.0,fVelo);

  419.                

  420.                 xs_vec_add(fOrigin,fVelo,fEndOrigin);

  421.                

  422.                 new ptr = create_tr2()

  423.                

  424.                 new Float:vfNormal[3]

  425.                

  426.                 engfunc(EngFunc_TraceLine, fOrigin, fEndOrigin, IGNORE_MISSILE | IGNORE_MONSTERS | IGNORE_GLASS, iEntLocal, ptr)

  427.                

  428.                 get_tr2(ptr, TR_vecPlaneNormal, vfNormal);

  429.                

  430.                 new Float:fOrigin3[3];

  431.                 get_tr2(ptr, TR_vecEndPos, fOrigin3);

  432.                

  433.                 free_tr2(ptr)

  434.                

  435.                 if(!validWall(fOrigin3,vfNormal) || !checkPlace(fOrigin3,iPos,iOwner)){

  436.                         #if defined SOUNDS

  437.                         engfunc(EngFunc_EmitAmbientSound, 0,fOrigin3, soundInvalid,VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

  438.                         #endif

  439.                        

  440.                         pev(iEntLocal, pev_velocity, fVelo)

  441.                        

  442.                         xs_vec_normalize(fVelo,fVelo)

  443.                        

  444.                         xs_vec_mul_scalar(fVelo,-4.0,fVelo);

  445.                         xs_vec_add(fOrigin,fVelo,fOrigin3);

  446.                        

  447.                         #if defined SPRITES

  448.                         for(new i = 1; i < 6; i++) {

  449.                                 engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, fOrigin3,0)

  450.                                 write_byte(TE_SPRITETRAIL)

  451.                                 engfunc(EngFunc_WriteCoord, fOrigin3[0])

  452.                                 engfunc(EngFunc_WriteCoord, fOrigin3[1])

  453.                                 engfunc(EngFunc_WriteCoord, fOrigin3[2])

  454.                                 engfunc(EngFunc_WriteCoord, fOrigin3[0])

  455.                                 engfunc(EngFunc_WriteCoord, fOrigin3[1])

  456.                                 engfunc(EngFunc_WriteCoord, fOrigin3[2] + 10)

  457.                                 write_short(iPos == 0 ? spriteInvalid[1] : spriteInvalid[0])

  458.                                 write_byte(2)

  459.                                 write_byte(1)

  460.                                 write_byte(1)

  461.                                 write_byte(random_num(5,10))

  462.                                 write_byte(5)

  463.                                 message_end()

  464.                         }

  465.                         #endif

  466.                        

  467.                         remove_entity(iEntLocal);

  468.                         return PLUGIN_CONTINUE;

  469.                 }

  470.                

  471.                 new Float:fOldNormal[3];

  472.                 xs_vec_copy(vfNormal, fOldNormal);

  473.                

  474.                 vector_to_angle(vfNormal, vfNormal);

  475.                

  476.                 //cosik

  477.                 pev(iEntLocal, pev_velocity, fVelo)

  478.                

  479.                 xs_vec_normalize(fVelo,fVelo)

  480.                

  481.                 xs_vec_mul_scalar(fVelo,-4.0,fVelo);

  482.                 xs_vec_add(fOrigin,fVelo,fOrigin);

  483.                 //

  484.                

  485.                 remove_entity(iEntLocal);

  486.                

  487.                 iEnt[iOwner][iPos] = 0;

  488.                

  489.                 if(pev_valid(iTel[iOwner][iPos])){

  490.                         new Float:fOrigin2[3];

  491.                         pev(iTel[iOwner][iPos],pev_origin,fOrigin2)

  492.                         #if defined SOUNDS

  493.                         engfunc(EngFunc_EmitAmbientSound, 0,fOrigin2, soundClose[random(sizeof soundClose)],VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

  494.                         #endif

  495.                         remove_entity(iTel[iOwner][iPos]);

  496.                         iTel[iOwner][iPos] = 0;

  497.                 }

  498.                

  499.                 iTel[iOwner][iPos] =  engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));

  500.                

  501.                 set_pev(iTel[iOwner][iPos],pev_classname,iPos == 0 ? szClassTelNieb : szClassTelPom);

  502.                

  503.                 set_pev(iTel[iOwner][iPos],pev_origin,fOrigin);

  504.                

  505.                 set_pev(iTel[iOwner][iPos],pev_solid,SOLID_TRIGGER)

  506.                 set_pev(iTel[iOwner][iPos],pev_movetype,MOVETYPE_FLY)

  507.                

  508.                 engfunc(EngFunc_SetModel, iTel[iOwner][iPos], portal)

  509.                

  510.                 set_pev(iTel[iOwner][iPos],pev_skin,iPos == 0 ? 0 : 1);

  511.                

  512.                 #if defined SOUNDS

  513.                 engfunc(EngFunc_EmitAmbientSound, 0,fOrigin, soundOpen[random(sizeof soundOpen)],VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

  514.                 #endif

  515.                

  516.                 new Float:fMins[3],Float:fMax[3],Float:mul[3];

  517.                

  518.                 mul[0] = floatabs(floatabs(fOldNormal[0])-1.0)

  519.                 mul[0] = mul[0] + 0.1 > 1.0 ? mul[0]:mul[0]+0.1

  520.                

  521.                 mul[1] = floatabs(floatabs(fOldNormal[1])-1.0)

  522.                 mul[1] = mul[1] + 0.1 > 1.0 ? mul[1]:mul[1]+0.1

  523.                

  524.                 mul[2] = floatabs(floatabs(fOldNormal[2])-1.0)

  525.                 mul[2] = mul[2] + 0.1 > 1.0 ? mul[2]:mul[2]+0.1

  526.                

  527.                 fMins[0] = floatmul(mul[0],-20.0)-2.0;

  528.                 fMins[1] = floatmul(mul[1],-10.0)-2.0;

  529.                 fMins[2] = floatmul(mul[2],-42.0)-2.0

  530.                

  531.                 fMax[0] = floatmul(mul[0],20.0)+2.0;

  532.                 fMax[1] = floatmul(mul[1],10.0)+2.0;

  533.                 fMax[2] = floatmul(mul[2],42.0)+2.0

  534.                

  535.                 engfunc(EngFunc_SetSize, iTel[iOwner][iPos],fMins, fMax)

  536.                

  537.                 set_pev(iTel[iOwner][iPos], pev_angles, vfNormal);

  538.                

  539.                 set_pev(iTel[iOwner][iPos],pev_iuser1,iTel[iOwner][iPos == 0 ? 1 : 0]);

  540.                

  541.                 if(pev_valid(iTel[iOwner][iPos == 0 ? 1 : 0]) && !pev_valid(pev(iTel[iOwner][iPos == 0 ? 1 : 0],pev_iuser1))){

  542.                         set_pev(iTel[iOwner][iPos == 0 ? 1 : 0],pev_iuser1,iTel[iOwner][iPos])

  543.                 }

  544.                

  545.                 set_pev(iTel[iOwner][iPos], pev_vuser1, fOldNormal);

  546.                

  547.                 set_pev(iTel[iOwner][iPos],pev_owner,iOwner);

  548.                

  549.                 return PLUGIN_CONTINUE;

  550.         }

  551.  

  552.         public give_weapon(id,level,cid){

  553.                 if(!cmd_access(id,level,cid,2)){

  554.                         return PLUGIN_HANDLED;

  555.                 }

  556.                 new szString[64];

  557.                 read_argv(1,szString,charsmax(szString));

  558.                 new find = find_player("bl",szString);

  559.                 if(!find){

  560.                         client_print(id,print_console,"[HUN Portal Gun] Nem talalok ilyen jatekost!");

  561.                         return PLUGIN_HANDLED;

  562.                 }

  563.                 else

  564.                 {

  565.                         if(!is_user_alive(find)){

  566.                                 client_print(id,print_console,"[HUN Portal Gun] Elo jatekos!");

  567.                                 return PLUGIN_HANDLED

  568.                         }

  569.                         new szName[64];

  570.                         get_user_name(find,szName,charsmax(szName));

  571.                         if(pev_valid(player_ent[find])){

  572.                                 client_print(id,print_console,"[HUN Portal Gun] %s elvesztette fegyveret!",szName);

  573.                                 return PLUGIN_HANDLED

  574.                         }

  575.                         else

  576.                         {

  577.                                 client_print(id,print_console,"[HUN Portal Gun] %s fegyvert kapott!",szName);

  578.                         }

  579.                 }

  580.                 new szWeaponName[64],bool:bContinue = false;

  581.                 new num, iWeapons[32]

  582.                

  583.                 get_user_weapons(id, iWeapons, num)

  584.                 for(new i = 1;i<=30;i++){

  585.                         if(i == 2 || i == 4 || i == 6 || i == 9 || i == 25 || i == 29){

  586.                                 continue;

  587.                         }

  588.                         bContinue = false;

  589.                         for (new j=0; j<num; j++)

  590.                         {

  591.                                 if(iWeapons[j] == i){

  592.                                         bContinue = true;

  593.                                         break;

  594.                                 }

  595.                         }

  596.                         if(!bContinue){

  597.                                 get_weaponname(i,szWeaponName,charsmax(szWeaponName));

  598.                                 player_ent[id] = give_item(id,szWeaponName)

  599.                                 RegisterHamFromEntity(Ham_Item_Deploy,player_ent[id],"ham_ItemDeploy_Post",1)

  600.                                 set_pdata_float(player_ent[id], m_flNextPrimaryAttack, 99999.0, OFFSET_LINUX_WEAPONS)

  601.                                 set_pdata_float(player_ent[id], m_flNextSecondaryAttack, 99999.0, OFFSET_LINUX_WEAPONS)

  602.                                 break;

  603.                         }

  604.                 }

  605.                 return PLUGIN_HANDLED;

  606.         }

  607.  

  608.         public ham_ItemDeploy_Post(weapon_ent)

  609.         {

  610.                 static owner

  611.                 owner = get_pdata_cbase(weapon_ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS);

  612.                

  613.                 if(!is_user_alive(owner)){

  614.                         return HAM_IGNORED;

  615.                 }

  616.                 set_pev(owner,pev_viewmodel2,v_model);

  617.                

  618.                 set_animation(owner,6)

  619.                 return HAM_IGNORED;

  620.         }

  621.  

  622.         public ham_KilledPost(id){

  623.                 if(is_user_connected(id)){

  624.                         player_ent[id] = 0;

  625.                 }

  626.         }

  627.  

  628.  

  629.         public cmdDrop(id){

  630.                 if(player_ent[id] == get_pdata_cbase(id,OFFSET_ACTIVEITEM,OFFSET_LINUX_PLAYER)){

  631.                         return PLUGIN_HANDLED;

  632.                 }

  633.                 return PLUGIN_CONTINUE;

  634.         }

  635.  

  636.         public create_shot_portal(id){

  637.                 new iPos = bMode[id] ? 0 : 1;

  638.                 if(pev_valid(iEnt[id][iPos]) && pev(iEnt[id][iPos],pev_owner) == id){

  639.                         engfunc(EngFunc_RemoveEntity,iEnt[id][iPos])

  640.                         iEnt[id][iPos] = 0;

  641.                 }

  642.                 iEnt[id][iPos] =  engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))

  643.                

  644.                 if(!pev_valid(iEnt[id][iPos])){

  645.                         return PLUGIN_CONTINUE;

  646.                 }

  647.                

  648.                 set_pev(iEnt[id][iPos],pev_classname,bMode[id] ? szClassNameNieb : szClassNamePom);

  649.                

  650.                 new Float:Origin[3], Float: vAngle[3], Float: Velocity[3];

  651.                

  652.                 pev(id,pev_v_angle,vAngle)

  653.                

  654.                 new iOrigin[3];

  655.                 get_user_origin(id,iOrigin,1)

  656.                 IVecFVec(iOrigin,Origin)

  657.                

  658.                 #if defined SOUNDS

  659.                 engfunc(EngFunc_EmitAmbientSound, 0,Origin, bMode[id] ? portal_shot_blue : portal_shot_red,VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

  660.                 #endif

  661.                

  662.                 set_pev(iEnt[id][iPos],pev_origin,Origin);

  663.                

  664.                 vAngle[0] *= -1.0;

  665.                

  666.                 set_pev(iEnt[id][iPos],pev_angles,vAngle)

  667.                

  668.                 set_pev(iEnt[id][iPos],pev_solid,SOLID_TRIGGER)

  669.                 set_pev(iEnt[id][iPos],pev_movetype,MOVETYPE_FLY)

  670.                

  671.                 VelocityByAim(id, get_pcvar_num(pCvars[SpeedBullet]) , Velocity);

  672.                

  673.                 set_pev(iEnt[id][iPos],pev_owner,id)

  674.                

  675.                 set_pev(iEnt[id][iPos],pev_velocity,Velocity)

  676.                

  677.                 engfunc(EngFunc_SetModel, iEnt[id][iPos], w_model)

  678.                

  679.                 engfunc(EngFunc_SetSize, iEnt[id][iPos], {-1.0, -1.0, -1.0}, {1.0, 1.0, 1.0})

  680.                

  681.                 set_rendering(iEnt[id][iPos], kRenderFxGlowShell, bMode[id] ? 0:255,bMode[id] ? 0:165,bMode[id] ? 255:0, kRenderTransColor, 1)

  682.                

  683.                 #if defined SPRITES

  684.                 new iMode = get_pcvar_num(pCvars[SpriteType]);

  685.                 if(iMode){

  686.                         message_begin(MSG_BROADCAST, SVC_TEMPENTITY)

  687.                         write_byte(TE_BEAMFOLLOW)

  688.                         write_short(iEnt[id][iPos])

  689.                         write_short(iMode == 1 ? sprite:g_trail);

  690.                         write_byte(10)

  691.                         write_byte(5)

  692.                         if(bMode[id]){

  693.                                 write_byte(0)

  694.                                 write_byte(0)

  695.                                 write_byte(255)

  696.                         }

  697.                         else{

  698.                                 write_byte(255)

  699.                                 write_byte(165)

  700.                                 write_byte(0)

  701.                         }

  702.                         write_byte(192)

  703.                         message_end()

  704.                 }

  705.                 #endif

  706.                

  707.                 return PLUGIN_CONTINUE;

  708.         }

  709.  

  710.  

  711.         stock bool:validWall(const Float:fOrigin[3], Float:fNormal[3], Float:width=40.0, Float:height = 65.0){

  712.                 new Float:fInvNormal[3];

  713.                 xs_vec_neg(fNormal, fInvNormal);

  714.                

  715.                 new Float:fPoint[3];

  716.                 xs_vec_add(fOrigin, fNormal, fPoint);

  717.                

  718.                 new Float:fNormalUp[3];

  719.                 new Float:fNormalRight[3];

  720.                 vector_to_angle(fNormal, fNormalUp);

  721.                

  722.                 fNormalUp[0] = -fNormalUp[0];

  723.                

  724.                 angle_vector(fNormalUp, ANGLEVECTOR_RIGHT, fNormalRight);

  725.                 angle_vector(fNormalUp, ANGLEVECTOR_UP, fNormalUp);

  726.                

  727.                 xs_vec_mul_scalar(fNormalUp, height/2, fNormalUp);

  728.                 xs_vec_mul_scalar(fNormalRight, width/2, fNormalRight);

  729.                

  730.                 new Float:fPoint2[3];

  731.                 xs_vec_add(fPoint, fNormalUp, fPoint2);

  732.                 xs_vec_add(fPoint2, fNormalRight, fPoint2);

  733.                 if(!traceToWall(fPoint2, fInvNormal))

  734.                 return false;

  735.                

  736.                 xs_vec_add(fPoint, fNormalUp, fPoint2);

  737.                 xs_vec_sub(fPoint2, fNormalRight, fPoint2);

  738.                 if(!traceToWall(fPoint2, fInvNormal))

  739.                 return false;

  740.                

  741.                 xs_vec_sub(fPoint, fNormalUp, fPoint2);

  742.                 xs_vec_sub(fPoint2, fNormalRight, fPoint2);

  743.                 if(!traceToWall(fPoint2, fInvNormal))

  744.                 return false;

  745.                

  746.                 xs_vec_sub(fPoint, fNormalUp, fPoint2);

  747.                 xs_vec_add(fPoint2, fNormalRight, fPoint2);

  748.                 if(!traceToWall(fPoint2, fInvNormal))

  749.                 return false;

  750.                

  751.                 return true;

  752.         }

  753.  

  754. bool:traceToWall(const Float:fOrigin[3], const Float:fVec[3]){

  755.                 new Float:fOrigin2[3];

  756.                 xs_vec_add(fOrigin, fVec, fOrigin2);

  757.                 xs_vec_add(fOrigin2, fVec, fOrigin2);

  758.                

  759.                 new tr = create_tr2();

  760.                 engfunc(EngFunc_TraceLine, fOrigin, fOrigin2, IGNORE_MISSILE | IGNORE_MONSTERS | IGNORE_GLASS, 0, tr);

  761.                 new Float:fFrac;

  762.                 get_tr2(tr, TR_flFraction, fFrac);

  763.                 free_tr2(tr);

  764.                

  765.                 if( floatabs(fFrac - 0.5) <= 0.02 ){

  766.                         return true;

  767.                 }

  768.                

  769.                 return false;

  770.         }

  771.  

  772.         set_animation(id, anim) {

  773.                 set_pev(id, pev_weaponanim, anim)

  774.                

  775.                 message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, id)

  776.                 write_byte(anim)

  777.                 write_byte(pev(id, pev_body))

  778.                 message_end()

  779.         }

  780.  

  781.         parseAngle(id, in, out){

  782.                 new Float:fAngles[3];

  783.                 pev(id, pev_v_angle, fAngles);

  784.                 angle_vector(fAngles, ANGLEVECTOR_FORWARD, fAngles);

  785.                

  786.                 new Float:fNormalIn[3];

  787.                 pev(in, pev_vuser1, fNormalIn);

  788.                 xs_vec_neg(fNormalIn, fNormalIn);

  789.                

  790.                 new Float:fNormalOut[3];

  791.                 pev(out, pev_vuser1, fNormalOut);

  792.                

  793.                 xs_vec_sub(fAngles, fNormalIn, fAngles);

  794.                 xs_vec_add(fAngles, fNormalOut, fAngles);

  795.                

  796.                 //fAngles[2] = -fAngles[2];

  797.                

  798.                 vector_to_angle(fAngles, fAngles);

  799.                

  800.                 set_pev(id, pev_angles, fAngles);

  801.                 set_pev(id, pev_fixangle, 1);

  802.                

  803.                

  804.                 pev(id, pev_velocity, fAngles);

  805.                 new Float:fSpeed = vector_length(fAngles);

  806.                 xs_vec_normalize(fAngles,  fAngles);

  807.                

  808.                 xs_vec_sub(fAngles, fNormalIn, fAngles);

  809.                 xs_vec_add(fAngles, fNormalOut, fAngles);

  810.                

  811.                 xs_vec_normalize(fAngles, fAngles);

  812.                 xs_vec_mul_scalar(fAngles, fSpeed, fAngles);

  813.                 set_pev(id, pev_velocity, fAngles);

  814.         }

  815.  

  816. bool:checkPlace(Float:fOrigin[3],iMode,id){

  817.                 new ent = -1;

  818.                 new szClass[64]

  819.                 while((ent = find_ent_in_sphere(ent,fOrigin,45.0))){

  820.                         pev(ent,pev_classname,szClass,charsmax(szClass));

  821.                         if(equal(szClass,szClassTelNieb) || equal(szClass,szClassTelPom)){

  822.                                 if(iMode == 0 && equal(szClass,szClassTelNieb) && pev(ent,pev_owner) == id){

  823.                                         continue;

  824.                                 }

  825.                                 else if(iMode == 1 && equal(szClass,szClassTelPom) && pev(ent,pev_owner) == id){

  826.                                         continue;

  827.                                 }

  828.                                 else{

  829.                                         return false;

  830.                                 }

  831.                         }

  832.                 }

  833.                 return true;

  834.         }

  835.  

  836.         public cvar_register(){

  837.                 #if defined SPRITES

  838.                 pCvars[SpriteType] = register_cvar("portal_sprite","1")

  839.                 #endif

  840.                 pCvars[FallDamge] = register_cvar("portal_fall_damage","1")

  841.                 pCvars[SpeedBullet] = register_cvar("portal_bullet_speed","1500")

  842.                 pCvars[PortalCost] = register_cvar("portal_cost","1")

  843.                 pCvars[SpawnPortal] = register_cvar("portal_spawn","0")

  844.         }

  845.  

  846. bool:checkPortalPlace(Float: fOrigin[3],Float: fMins[3],Float: fMaxs[3]){

  847.                 new Float:fOriginTmp[3]

  848.                

  849.                 xs_vec_copy(fOrigin,fOriginTmp)

  850.                

  851.                

  852.                 fOriginTmp[0] += fMins[0];

  853.                 fOriginTmp[1] += fMaxs[1];

  854.                 fOriginTmp[2] += fMaxs[2];

  855.                 if(!traceTo(fOrigin,fOriginTmp)){

  856.                         return false;

  857.                 }

  858.                 xs_vec_copy(fOrigin,fOriginTmp)

  859.                

  860.                

  861.                 fOriginTmp[0] += fMaxs[0];

  862.                 fOriginTmp[1] += fMaxs[1];

  863.                 fOriginTmp[2] += fMaxs[2];

  864.                 if(!traceTo(fOrigin,fOriginTmp)){

  865.                         return false;

  866.                 }

  867.                 xs_vec_copy(fOrigin,fOriginTmp)

  868.                

  869.                

  870.                 fOriginTmp[0] += fMins[0];

  871.                 fOriginTmp[1] += fMins[1];

  872.                 fOriginTmp[2] += fMaxs[2];

  873.                 if(!traceTo(fOrigin,fOriginTmp)){

  874.                         return false;

  875.                 }

  876.                 xs_vec_copy(fOrigin,fOriginTmp)

  877.                

  878.                 fOriginTmp[0] += fMaxs[0];

  879.                 fOriginTmp[1] += fMins[1];

  880.                 fOriginTmp[2] += fMaxs[2];

  881.                 if(!traceTo(fOrigin,fOriginTmp)){

  882.                         return false;

  883.                 }

  884.                 xs_vec_copy(fOrigin,fOriginTmp)

  885.                

  886.                 fOriginTmp[0] += fMins[0];

  887.                 fOriginTmp[1] += fMaxs[1];

  888.                 fOriginTmp[2] += fMins[2];

  889.                 if(!traceTo(fOrigin,fOriginTmp)){

  890.                         return false;

  891.                 }

  892.                 xs_vec_copy(fOrigin,fOriginTmp)

  893.                

  894.                 fOriginTmp[0] += fMaxs[0];

  895.                 fOriginTmp[1] += fMaxs[1];

  896.                 fOriginTmp[2] += fMins[2];

  897.                 if(!traceTo(fOrigin,fOriginTmp)){

  898.                         return false;

  899.                 }

  900.                 xs_vec_copy(fOrigin,fOriginTmp)

  901.                

  902.                 fOriginTmp[0] += fMins[0];

  903.                 fOriginTmp[1] += fMins[1];

  904.                 fOriginTmp[2] += fMins[2];

  905.                 if(!traceTo(fOrigin,fOriginTmp)){

  906.                         return false;

  907.                 }

  908.                 xs_vec_copy(fOrigin,fOriginTmp)

  909.                

  910.                 fOriginTmp[0] += fMaxs[0];

  911.                 fOriginTmp[1] += fMins[1];

  912.                 fOriginTmp[2] += fMins[2];

  913.                 if(!traceTo(fOrigin,fOriginTmp)){

  914.                         return false;

  915.                 }

  916.                 xs_vec_copy(fOrigin,fOriginTmp)

  917.                

  918.                 return true;

  919.         }

  920.  

  921. bool:traceTo(const Float:fFrom[3],const Float:fTo[3]){

  922.                 new tr = create_tr2();

  923.                

  924.                 engfunc(EngFunc_TraceLine, fFrom, fTo,0, 0, tr);

  925.                

  926.                 new Float:fFrac;

  927.                 get_tr2(tr, TR_flFraction, fFrac);

  928.                 free_tr2(tr);

  929.                

  930.                 return (fFrac == 1.0)

  931.                

  932.         }

  933.  

  934. #if defined TEST

  935.         Create_Line(const Float:start[3], const Float:stop[3], Float:go=10.0, r=0,g=0,b=255)

  936.         {

  937.                 new Float:fStart[3], Float:fStop[3];

  938.                 new Float:fVec[3];

  939.                 xs_vec_sub(start, stop, fVec);

  940.                 xs_vec_normalize(fVec, fVec);

  941.  

  942.                 xs_vec_mul_scalar(fVec, go, fVec);

  943.  

  944.                 xs_vec_add(stop, fVec, fStop);

  945.                 xs_vec_sub(start, fVec, fStart);

  946.  

  947.  

  948.                 message_begin(MSG_BROADCAST, SVC_TEMPENTITY)

  949.                 write_byte(0)

  950.                 engfunc(EngFunc_WriteCoord, fStart[0])

  951.                 engfunc(EngFunc_WriteCoord,fStart[1])

  952.                 engfunc(EngFunc_WriteCoord,fStart[2])

  953.  

  954.                 engfunc(EngFunc_WriteCoord,fStop[0])

  955.                 engfunc(EngFunc_WriteCoord,fStop[1])

  956.                 engfunc(EngFunc_WriteCoord,fStop[2])

  957.                 write_short(sprite)

  958.                 write_byte(1)

  959.                 write_byte(5)

  960.                 write_byte(1)//life

  961.                 write_byte(10)

  962.                 write_byte(0)

  963.                 write_byte(r)   // RED

  964.                 write_byte(g)   // GREEN

  965.                 write_byte(b)   // BLUE                                

  966.                 write_byte(250) // brightness

  967.                 write_byte(5)

  968.                 message_end()

  969.         }

  970. #endif

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

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

  973. */

  974.  
[/spoiler]

Ezt a részt egészítettem ki:

[spoiler]
Kód:
  1. register_clcmd("say /portal","buyPortal");

  2.         register_clcmd("drop","cmdDrop")

  3.        

  4.         register_clcmd("give_portal","give_weapon",ADMIN_CFG,"<nick>")

  5.        

  6.         public buyPortal(id)

  7. {

  8.        if(!(is_user_admin(id) & ADMIN_KICK))

  9.        

  10.                   return PLUGIN_HANDLED
[/spoiler]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Jó így a forráskód?
HozzászólásElküldve:2012.07.07. 11:51 
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
Kód:
  1.        if(!(is_user_admin(id) & ADMIN_KICK))

  2.        

  3.                   return PLUGIN_HANDLED


xD, elég régóta ittvagyok a fórumon de eddig ez a legnagyobb baromság amit láttam!

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Jó így a forráskód?
HozzászólásElküldve:2012.07.07. 11:57 
Offline
Veterán
Avatar

Csatlakozott:2011.06.07. 15:29
Hozzászólások:1728
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 63 alkalommal
Igen, az is_user_admin helyett get_user_flags kellene.

Kód:
  1. if(!(get_user_flags(id) & ADMIN_KICK))


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Jó így a forráskód?
HozzászólásElküldve:2012.07.07. 11:59 
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
és a felkiáltó jel is fölösleges, szerintem! Bár ki tudja mit akarsz csinálni!

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Jó így a forráskód?
HozzászólásElküldve:2012.07.07. 12:02 
Offline
Veterán
Avatar

Csatlakozott:2011.06.07. 15:29
Hozzászólások:1728
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 63 alkalommal
Azt akarja, hogy ha nincs KICK joga, akkor térjen vissza PLUGIN_HANDLED-del ( ne menjen tovább ).


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Jó így a forráskód?
HozzászólásElküldve:2012.07.07. 12:02 
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
Okés megpróbálom kijavítani azt lesz ami lesz!! Kicserélem get_user_flags -ra


**EDIT:**
Kijavítottam, de a return PLUGIN_HANDLED-el is kell vmit csinálni? Most így néz ki:

[spoiler]
Kód:
  1. register_clcmd("say /portal","buyPortal");

  2.         register_clcmd("drop","cmdDrop")

  3.        

  4.         register_clcmd("give_portal","give_weapon",ADMIN_CFG,"<nick>")

  5.        

  6.         public buyPortal(id)

  7. {

  8.        if(!(get_user_flags(id) & ADMIN_KICK))

  9.        

  10.                   return PLUGIN_HANDLED
[/spoiler]


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


Ki van itt

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