hlmod.hu

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



Jelenlévő felhasználók

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

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-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  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: ReAPI - Paint Marker
HozzászólásElküldve: 2019.02.08. 18:50 
Offline
Fórum Moderátor
Avatar

Csatlakozott: 2012.07.02. 17:41
Hozzászólások: 1641
Megköszönt másnak: 121 alkalommal
Megköszönték neki: 247 alkalommal
ReAPI - Paint Marker
Leírás:
  • Rajzolni tudsz a falakra a szerveren. Alap parancs: +paint - Alap jog: d
Cvar / Beállítás:
  • Automatikusan készít egy cfg fájlt, amxmodx/configs/plugins/paint_marker.cfg
  • paint_marker_access "d" - Használathoz jog, üresen bárki használhatja. Több jogra is beállítható, pl: "ad".
  • paint_marker_life_time "25" - Eltűnési idő másodpercben (Min. 1 - Max. 25)
Verzió:
  • v1.1
Követelmények:
  • ReApi
Kompatibilis:
  • Amx Mod X 1.8.3-1.9.0dev
Készítő:
  • w0w
Kép:
► Spoiler mutatása

Lang:
  1. [hu]
  2. PAINT_MARKER_ERROR_ACCESS = ^3* ^1Nincs hozzáférésed ehhez a parancshoz
  3. PAINT_MARKER_CVAR_ACCESS = Rajzolás jog
  4. PAINT_MARKER_CVAR_LIFE_TIME = Eltűnési idő másodpercben

Plugin:
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4. #include <reapi>
  5. #include <xs>
  6.  
  7. #pragma semicolon 1
  8.  
  9. new const PLUGIN_VERSION[] = "1.1";
  10.  
  11. const Float:THINK_TIME = 0.1;
  12.  
  13. new bool:g_bAlive[MAX_PLAYERS+1];
  14. new bool:g_bIsPainting[MAX_PLAYERS+1], bool:g_bIsHoldingPaint[MAX_PLAYERS+1];
  15. new Float:g_iOriginPaint[MAX_PLAYERS+1][3];
  16. new g_pSpriteLightning;
  17. new g_iAccess = ADMIN_BAN;
  18. new g_iLifeTime;
  19.  
  20. public plugin_init()
  21. {
  22.     register_plugin("Paint Marker", PLUGIN_VERSION, "w0w");
  23.     register_dictionary("paint_marker.txt");
  24.  
  25.     register_clcmd("+paint", "func_PaintEnable");
  26.     register_clcmd("-paint", "func_PaintDisable");
  27.  
  28.     RegisterHookChain(RG_CSGameRules_PlayerSpawn, "refwd_PlayerSpawn_Post", true);
  29.     RegisterHookChain(RG_CBasePlayer_Killed, "refwd_PlayerKilled_Post", true);
  30.  
  31.     new pCvar;
  32.  
  33.     pCvar = create_cvar("paint_marker_access", "d", FCVAR_NONE, fmt("%l", "PAINT_MARKER_CVAR_ACCESS"));
  34.     hook_cvar_change(pCvar, "hook_CvarChange_Access");
  35.  
  36.     pCvar = create_cvar("paint_marker_life_time", "25", FCVAR_NONE, fmt("%l", "PAINT_MARKER_CVAR_LIFE_TIME"), true, 1.0, true, 25.0);
  37.     bind_pcvar_num(pCvar, g_iLifeTime);
  38.  
  39.     AutoExecConfig(true, "paint_marker");
  40.  
  41.     pCvar = register_cvar("paint_marker_version", PLUGIN_VERSION);
  42.     set_pcvar_string(pCvar, PLUGIN_VERSION);
  43.  
  44.     new iEnt = rg_create_entity("info_target", true);
  45.     if(iEnt)
  46.     {
  47.         SetThink(iEnt, "think_Paint");
  48.         set_entvar(iEnt, var_nextthink, get_gametime() + THINK_TIME);
  49.     }
  50. }
  51.  
  52. public OnConfigsExecuted()
  53. {
  54.     set_cvar_string("paint_marker_version", PLUGIN_VERSION);
  55. }
  56.  
  57. public plugin_precache()
  58. {
  59.     g_pSpriteLightning = precache_model("sprites/lgtning.spr");
  60. }
  61.  
  62. public client_disconnected(id)
  63. {
  64.     g_bIsPainting[id] = g_bAlive[id] = false;
  65. }
  66.  
  67. public refwd_PlayerSpawn_Post(id)
  68. {
  69.     if(is_user_alive(id))
  70.     {
  71.         g_bAlive[id] = true;
  72.         g_bIsPainting[id] = false;
  73.     }
  74. }
  75.  
  76. public refwd_PlayerKilled_Post(id)
  77. {
  78.     g_bAlive[id] = g_bIsPainting[id] = false;
  79. }
  80.  
  81. // +paint
  82. public func_PaintEnable(id)
  83. {
  84.     if(!g_bAlive[id])
  85.         return PLUGIN_HANDLED;
  86.  
  87.     if(g_iAccess > 0 && !(get_user_flags(id) & g_iAccess))
  88.     {
  89.         client_print_color(id, print_team_red, "%l", "PAINT_MARKER_ERROR_ACCESS");
  90.         return PLUGIN_HANDLED;
  91.     }
  92.  
  93.     g_bIsPainting[id] = true;
  94.     return PLUGIN_HANDLED;
  95. }
  96.  
  97. // -paint
  98. public func_PaintDisable(id)
  99. {
  100.     g_bIsPainting[id] = false;
  101.     return PLUGIN_HANDLED;
  102. }
  103.  
  104. public think_Paint(iEnt)
  105. {
  106.     static iPlayers[MAX_PLAYERS], iPlayerCount;
  107.     get_players_ex(iPlayers, iPlayerCount, GetPlayers_ExcludeDead);
  108.  
  109.     for(new i, iPlayer; i < iPlayerCount; i++)
  110.     {
  111.         iPlayer = iPlayers[i];
  112.  
  113.         if(!g_bIsPainting[iPlayer] || func_IsAimingAtSky(iPlayer))
  114.         {
  115.             g_bIsHoldingPaint[iPlayer] = false;
  116.             continue;
  117.         }
  118.  
  119.         static Float:flOrigin[3], Float:flDistance;
  120.         flOrigin = g_iOriginPaint[iPlayer];
  121.  
  122.         if(!g_bIsHoldingPaint[iPlayer])
  123.         {
  124.             func_GetAimOrigin(iPlayer, g_iOriginPaint[iPlayer]);
  125.             func_MoveTowardClient(iPlayer, g_iOriginPaint[iPlayer]);
  126.             g_bIsHoldingPaint[iPlayer] = true;
  127.             continue;
  128.         }
  129.  
  130.         func_GetAimOrigin(iPlayer, g_iOriginPaint[iPlayer]);
  131.         func_MoveTowardClient(iPlayer, g_iOriginPaint[iPlayer]);
  132.  
  133.         flDistance = get_distance_f(g_iOriginPaint[iPlayer], flOrigin);
  134.  
  135.         if(flDistance > 2)
  136.             func_StartPainting(g_iOriginPaint[iPlayer], flOrigin);
  137.     }
  138.  
  139.     set_entvar(iEnt, var_nextthink, get_gametime() + THINK_TIME);
  140. }
  141.  
  142. func_StartPainting(Float:flOrigin1[3], Float:flOrigin2[3])
  143. {
  144.     message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  145.     write_byte(TE_BEAMPOINTS);
  146.     write_coord_f(flOrigin1[0]);         // startposition x
  147.     write_coord_f(flOrigin1[1]);         // startposition y
  148.     write_coord_f(flOrigin1[2]);         // startposition z
  149.     write_coord_f(flOrigin2[0]);         // endposition x
  150.     write_coord_f(flOrigin2[1]);         // endposition y
  151.     write_coord_f(flOrigin2[2]);         // endposition z
  152.     write_short(g_pSpriteLightning);    // sprite index
  153.     write_byte(0);                        // starting frame
  154.     write_byte(10);                        // frame rate in 0.1's
  155.     write_byte(g_iLifeTime * 10);        // life in 0.1's
  156.     write_byte(50);                        // line width in 0.1's
  157.     write_byte(0);                        // noise aimplitude in 0.01's
  158.     write_byte(random_num(0, 255));        // red
  159.     write_byte(random_num(0, 255));        // green
  160.     write_byte(random_num(0, 255));        // blue
  161.     write_byte(255);                    // brightness
  162.     write_byte(0);                        // scroll speed in 0.1's
  163.     message_end();
  164. }
  165.  
  166. func_GetAimOrigin(id, Float:flOrigin[3])
  167. {
  168.     static Float:flStart[3], Float:flViewOfs[3];
  169.     get_entvar(id, var_origin, flStart);
  170.     get_entvar(id, var_view_ofs, flViewOfs);
  171.     xs_vec_add(flStart, flViewOfs, flStart);
  172.  
  173.     static Float:flDest[3];
  174.     get_entvar(id, var_v_angle, flDest);
  175.     engfunc(EngFunc_MakeVectors, flDest);
  176.     global_get(glb_v_forward, flDest);
  177.     xs_vec_mul_scalar(flDest, 9999.0, flDest);
  178.     xs_vec_add(flStart, flDest, flDest);
  179.  
  180.     engfunc(EngFunc_TraceLine, flStart, flDest, 0, id, 0);
  181.     get_tr2(0, TR_vecEndPos, flOrigin);
  182. }
  183.  
  184. stock func_MoveTowardClient(id, Float:flOrigin[3])
  185. {
  186.     static Float:flPlayerOrigin[3];
  187.  
  188.     get_entvar(id, var_origin, flPlayerOrigin);
  189.  
  190.     flOrigin[0] += (flPlayerOrigin[0] > flOrigin[0]) ? 1.0 : -1.0;
  191.     flOrigin[1] += (flPlayerOrigin[1] > flOrigin[1]) ? 1.0 : -1.0;
  192.     flOrigin[2] += (flPlayerOrigin[2] > flOrigin[2]) ? 1.0 : -1.0;
  193. }
  194.  
  195. bool:func_IsAimingAtSky(id)
  196. {
  197.     new Float:flOrigin[3];
  198.     func_GetAimOrigin(id, flOrigin);
  199.     return (engfunc(EngFunc_PointContents, flOrigin) == CONTENTS_SKY);
  200. }
  201.  
  202. public hook_CvarChange_Access(id, const szOldValue[], const szNewValue[])
  203. {
  204.     g_iAccess = read_flags(szNewValue);
  205. }

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 


Ki van itt

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