hlmod.hu

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



Jelenlévő felhasználók

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

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-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  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: ReAPI - Invisible Spectator
HozzászólásElküldve: 2019.11.21. 16:53 
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 - Invisible Spectator
Leírás:
  • A játékos nézőként elrejtheti magát az eredménytábláról (TAB)
Használat:
  • amx_spectate - Ezt a parancsot kell használnod, ha el akarod magad rejteni (Konzol parancs). Az elrejtést kikapcsolhatod, ha belépsz egy csapatba vagy beírod újra a parancsot.
  • ADMIN_BAN - Ez a jog kell ahhoz, hogy használhasd a plugint. A kódban átírható.
Cvar / Beállítás:
  • LOCK_SAY - Ha aktív, nem tud a rejtett néző a chat-re írni. Kikapcsoláshoz írj elé "//" karaktert a kódban.
  • AUTO_INVISIBLE_SPECTATOR - Amikor valaki csatlakozik a nézőkhöz, automatikusan láthatatlanná válik. Alap beállításként kikapcsolva, ha használni szeretnéd, a kódban töröld a "//" karaktert.
Verzió:
  • v1.0
Követelmények:
  • ReHLDS
  • ReAPI 5.2.0.121-dev
Eredeti link:
  • Megnézem (Regisztráció szükséges a megtekintéséhez)
Készítő:
  • ReHLDS Team
Plugin:
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <reapi>
  4.  
  5. #pragma semicolon 1
  6.  
  7. #if REAPI_VERSION < 52121
  8.     #error Frissítsd a ReAPI -t 5.2.0.121 -re vagy újabb verzióra
  9. #endif
  10.  
  11. #define LOCK_SAY                    // A rejtett néző nem tud a chat-re írni
  12. //#define AUTO_INVISIBLE_SPECTATOR  // Automatikusan láthatatlan lesz a néző
  13.  
  14. new HookChain:g_hSV_WriteFullClientUpdate;
  15. new bool:g_bPlayerInVisible[MAX_CLIENTS + 1];
  16.  
  17. public plugin_init()
  18. {
  19.     register_plugin("Invisible Spectator", "1.0", "ReHLDS Team");
  20.  
  21.     if (!is_rehlds())
  22.     {
  23.         pause("ad");
  24.         set_fail_state("Ez a plugin nem elérhető, ReHLDS szükséges.");
  25.         return;
  26.     }
  27.  
  28. #if defined LOCK_SAY
  29.     register_clcmd("say", "Host_Say");
  30.     register_clcmd("say_team", "Host_Say");
  31. #endif
  32.  
  33. #if defined AUTO_INVISIBLE_SPECTATOR
  34.     register_event("TeamInfo", "Event_TeamInfo", "a", "2=TERRORIST", "2=CT", "2=SPECTATOR");
  35. #else
  36.     register_event("TeamInfo", "Event_TeamInfo", "a", "2=TERRORIST", "2=CT");
  37.     register_clcmd("amx_spectate", "ClCmd_Spectate", ADMIN_BAN, "Elrejti a nézőt.");
  38. #endif
  39.  
  40.     DisableHookChain((g_hSV_WriteFullClientUpdate = RegisterHookChain(RH_SV_WriteFullClientUpdate, "SV_WriteFullClientUpdate")));
  41. }
  42.  
  43. public SV_WriteFullClientUpdate(const id, buffer, const receiver)
  44. {
  45.     if (g_bPlayerInVisible[id])
  46.     {
  47.         set_key_value(buffer, "", "");
  48.         //set_key_value(buffer, "name",  "");
  49.         //set_key_value(buffer, "model", "");
  50.         //set_key_value(buffer, "*sid",  "");
  51.     }
  52. }
  53.  
  54. public client_putinserver(id)
  55. {
  56.     g_bPlayerInVisible[id] = false;
  57. }
  58.  
  59. public Event_TeamInfo()
  60. {
  61.     new id = read_data(1);
  62.  
  63. #if defined AUTO_INVISIBLE_SPECTATOR
  64.     new bool:bState = g_bPlayerInVisible[id];
  65.  
  66.     new szTeamName[2];
  67.     read_data(2, szTeamName, charsmax(szTeamName));
  68.     switch (szTeamName[0])
  69.     {
  70.         case 'C', 'T':
  71.         {
  72.             // Reset the invisible state
  73.             g_bPlayerInVisible[id] = false;
  74.         }
  75.         case 'S':
  76.         {
  77.             g_bPlayerInVisible[id] = true;
  78.         }
  79.     }
  80.  
  81.     if (g_bPlayerInVisible[id] != bState)
  82.     {
  83.         if (!TryDisableHookChain())
  84.         {
  85.             // let's me enable to hookchain, true optimization
  86.             EnableHookChain(g_hSV_WriteFullClientUpdate);
  87.         }
  88. #else
  89.     if (g_bPlayerInVisible[id])
  90.     {
  91.         // Reset the invisible state
  92.         g_bPlayerInVisible[id] = false;
  93. #endif
  94.         // Force update user info
  95.         rh_update_user_info(id);
  96.     }
  97. }
  98.  
  99. #if defined LOCK_SAY
  100. public Host_Say(id)
  101. {
  102.     if (g_bPlayerInVisible[id])
  103.     {
  104.         client_print(id, print_chat, "Elrejtetted magad, beszélgetni nem tudsz!");
  105.         return PLUGIN_HANDLED;
  106.     }
  107.  
  108.     return PLUGIN_CONTINUE;
  109. }
  110. #endif
  111.  
  112. #if !defined AUTO_INVISIBLE_SPECTATOR
  113. public ClCmd_Spectate(id, level, cid)
  114. {
  115.     if (!cmd_access(id, level, cid, 0))
  116.         return PLUGIN_CONTINUE;
  117.  
  118.     // Only spectator can be invisible
  119.     if (get_member(id, m_iTeam) != TEAM_SPECTATOR)
  120.     {
  121.         client_print(id, print_chat, "Csak nézőként lehetsz láthatatlan!");
  122.         return PLUGIN_HANDLED;
  123.     }
  124.  
  125.     g_bPlayerInVisible[id] ^= true;
  126.     client_print(id, print_chat, "Te most %s vagy.", g_bPlayerInVisible[id] ? "láthatatlan" : "látható");
  127.  
  128.     if (!TryDisableHookChain())
  129.     {
  130.         // let's me enable to hookchain, true optimization
  131.         EnableHookChain(g_hSV_WriteFullClientUpdate);
  132.     }
  133.  
  134.     rh_update_user_info(id);
  135.     return PLUGIN_HANDLED;
  136. }
  137. #endif
  138.  
  139. stock bool:TryDisableHookChain()
  140. {
  141.     // Make sure that there no one uses invisible spectator
  142.     new iPlayers[MAX_CLIENTS], iNum, nCount;
  143.     get_players(iPlayers, iNum, "ch");
  144.     for (new i = 0; i < iNum; ++i)
  145.     {
  146.         if (g_bPlayerInVisible[iPlayers[i]])
  147.             ++nCount;
  148.     }
  149.  
  150.     if (nCount <= 0)
  151.     {
  152.         DisableHookChain(g_hSV_WriteFullClientUpdate);
  153.         return true;
  154.     }
  155.  
  156.     return false;
  157. }
  158.  
  159. #if defined client_disconnected
  160. public client_disconnected(id)
  161. #else
  162. public client_disconnect(id)
  163. #endif
  164. {
  165.     if (g_bPlayerInVisible[id])
  166.     {
  167.         g_bPlayerInVisible[id] = false;
  168.         TryDisableHookChain();
  169.     }
  170. }

_________________
Kép

Ők köszönték meg theglorious nek ezt a hozzászólást: 8mTNNe (2019.11.21. 17:06)
  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  [ 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