hlmod.hu

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



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: nincs regisztrált felhasználó 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  [ 9 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Pontrendszer
HozzászólásElküldve: 2012.10.20. 10:52 
Offline
Tud valamit
Avatar

Csatlakozott: 2011.10.28. 13:32
Hozzászólások: 148
Megköszönt másnak: 8 alkalommal
Megköszönték neki: 26 alkalommal
Sziasztok!
Valaki írna/adna egy nagyon egyszerű pontrendszert ami menti a pontokat.

Fejesenként kapjanak 3 pontot
Ölésenként 2 pontot


És könnyedén be lehessen építeni más pluginokba.

Köszönöm

(És ha nem nagy kérdés legyen egy menü aminek a tartalma:
m4: 5 pont.
Ak: 5pont
Ujraéledés: 10 pontű)

_________________
Következő pluginok várhatóak:
  • Emoticon of message


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pontrendszer
HozzászólásElküldve: 2012.10.20. 12:03 
Offline
Félisten

Csatlakozott: 2012.01.07. 21:10
Hozzászólások: 850
Megköszönt másnak: 9 alkalommal
Megköszönték neki: 154 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fun>
  4. #include <cstrike>
  5. #include <fakemeta>
  6. #include <hamsandwich>
  7. #include <nvault>
  8. #include <colorchat>
  9.  
  10. #pragma semicolon 1
  11.  
  12. #define PLUGIN "New Plug-In"
  13. #define VERSION "1.0"
  14. #define AUTHOR "HunGamer"
  15.  
  16. new pontok[33];
  17. new playername[33][32];
  18. new g_vault;
  19.  
  20. new killp, killhsp;
  21. new bolt1, bolt2, bolt3;
  22.  
  23. public plugin_init()
  24. {
  25. register_plugin(PLUGIN, VERSION, AUTHOR);
  26.  
  27. RegisterHam(Ham_Killed, "player", "fw_player_killed", 1);
  28.  
  29. killp = register_cvar("pont_kill", "2");
  30. killhsp = register_cvar("pont_killhs", "3");
  31.  
  32. register_clcmd("say /bolt", "Shop");
  33.  
  34. bolt1 = register_cvar("bolt_1", "5");
  35. bolt2 = register_cvar("bolt_2", "5");
  36. bolt3 = register_cvar("bolt_3", "10");
  37.  
  38. g_vault = nvault_open("PontRendszer");
  39. }
  40. public fw_player_killed(victim, attacker, shouldgib)
  41. {
  42. if(get_pdata_int(victim, 75) == HIT_HEAD)
  43. pontok[attacker] += get_pcvar_num(killhsp);
  44. else
  45. pontok[attacker] += get_pcvar_num(killp);
  46.  
  47. return HAM_IGNORED;
  48. }
  49.  
  50. public client_putinserver(id)
  51. {
  52. get_user_name(id, playername[id], 31);
  53. Betoltes(id);
  54. }
  55. public client_disconnect(id)
  56. {
  57. Mentes(id);
  58. pontok[id] = 0;
  59. }
  60. public Shop(id)
  61. {
  62. static Item[64];
  63.  
  64. formatex(Item, charsmax(Item),"\yBolt");
  65. new Menu = menu_create(Item, "Shoph");
  66.  
  67. formatex(Item, charsmax(Item),"\wM4A1 \r%d pont", get_pcvar_num(bolt1));
  68. menu_additem(Menu, Item, "1");
  69.  
  70. formatex(Item, charsmax(Item),"\wAK47 \r%d pont", get_pcvar_num(bolt2));
  71. menu_additem(Menu, Item, "2");
  72.  
  73. formatex(Item, charsmax(Item),"\wUjraeledes \r%d pont", get_pcvar_num(bolt3));
  74. menu_additem(Menu, Item, "3");
  75.  
  76. menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
  77. menu_display(id, Menu);
  78.  
  79. return PLUGIN_HANDLED;
  80. }
  81. public Shoph(id, menu, item)
  82. {
  83. if( item == MENU_EXIT )
  84. {
  85. menu_destroy(menu);
  86. return PLUGIN_HANDLED;
  87. }
  88. new data[6], iName[64];
  89. new access, callback;
  90. menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
  91.  
  92. new key = str_to_num(data);
  93. new elo = is_user_alive(id);
  94.  
  95. new ar1 = get_pcvar_num(bolt1);
  96. new ar2 = get_pcvar_num(bolt2);
  97. new ar3 = get_pcvar_num(bolt3);
  98.  
  99. switch(key)
  100. {
  101. case 1:
  102. {
  103. if (pontok[id] >= ar1 && elo)
  104. {
  105. pontok[id] -= ar1;
  106. give_item(id, "weapon_m4a1");
  107. cs_set_user_bpammo(id, CSW_M4A1, 90);
  108. ColorChat(id, GREEN, "Vasaroltal M4A1et");
  109. }
  110. else
  111. {
  112. ColorChat(id, GREEN, "Nincs eleg pontod");
  113. }
  114. }
  115. case 2:
  116. {
  117. if (pontok[id] >= ar2 && elo)
  118. {
  119. pontok[id] -= ar2;
  120. give_item(id, "weapon_ak47");
  121. cs_set_user_bpammo(id, CSW_AK47, 90);
  122. ColorChat(id, GREEN, "Vasaroltal AK47et");
  123. }
  124. else
  125. {
  126. ColorChat(id, GREEN, "Nincs eleg pontod");
  127. }
  128. }
  129. case 3:
  130. {
  131. if (pontok[id] >= ar3 && !elo)
  132. {
  133. pontok[id] -= ar3;
  134. ExecuteHamB(Ham_CS_RoundRespawn, id);
  135. ColorChat(id, GREEN, "Ujraeledtel");
  136. }
  137. else
  138. {
  139. ColorChat(id, GREEN, "Nincs eleg pontod");
  140. }
  141. }
  142. }
  143. menu_destroy(menu);
  144. return PLUGIN_HANDLED;
  145. }
  146. public Mentes(id)
  147. {
  148. new vaultkey[128],vaultdata[256];
  149.  
  150. format(vaultkey, charsmax(vaultkey),"%s-pont", playername[id]);
  151. format(vaultdata, charsmax(vaultdata),"#%i", pontok[id]);
  152.  
  153. nvault_set(g_vault,vaultkey,vaultdata);
  154.  
  155. return PLUGIN_CONTINUE;
  156. }
  157.  
  158. public Betoltes(id)
  159. {
  160. new vaultkey[128],vaultdata[256];
  161.  
  162. format(vaultkey, charsmax(vaultkey),"%s-pont", playername[id]);
  163. nvault_get(g_vault,vaultkey,vaultdata,255);
  164.  
  165. replace_all(vaultdata, 255, "#", "");
  166.  
  167. pontok[id] = str_to_num(vaultdata);
  168.  
  169. return PLUGIN_CONTINUE;
  170. }
  171.  

_________________
Megköszönni nem szégyen!
Csak kattints a Kép jelre. --->


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pontrendszer
HozzászólásElküldve: 2012.10.20. 18:49 
Offline
Tud valamit
Avatar

Csatlakozott: 2011.10.28. 13:32
Hozzászólások: 148
Megköszönt másnak: 8 alkalommal
Megköszönték neki: 26 alkalommal
Köszi.

_________________
Következő pluginok várhatóak:
  • Emoticon of message


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pontrendszer
HozzászólásElküldve: 2013.04.15. 20:08 
Offline
Fanatikus

Csatlakozott: 2013.03.07. 14:30
Hozzászólások: 158
Megköszönt másnak: 13 alkalommal
Megköszönték neki: 9 alkalommal
HunGamer írta:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fun>
  4. #include <cstrike>
  5. #include <fakemeta>
  6. #include <hamsandwich>
  7. #include <nvault>
  8. #include <colorchat>
  9.  
  10. #pragma semicolon 1
  11.  
  12. #define PLUGIN "New Plug-In"
  13. #define VERSION "1.0"
  14. #define AUTHOR "HunGamer"
  15.  
  16. new pontok[33];
  17. new playername[33][32];
  18. new g_vault;
  19.  
  20. new killp, killhsp;
  21. new bolt1, bolt2, bolt3;
  22.  
  23. public plugin_init()
  24. {
  25. register_plugin(PLUGIN, VERSION, AUTHOR);
  26.  
  27. RegisterHam(Ham_Killed, "player", "fw_player_killed", 1);
  28.  
  29. killp = register_cvar("pont_kill", "2");
  30. killhsp = register_cvar("pont_killhs", "3");
  31.  
  32. register_clcmd("say /bolt", "Shop");
  33.  
  34. bolt1 = register_cvar("bolt_1", "5");
  35. bolt2 = register_cvar("bolt_2", "5");
  36. bolt3 = register_cvar("bolt_3", "10");
  37.  
  38. g_vault = nvault_open("PontRendszer");
  39. }
  40. public fw_player_killed(victim, attacker, shouldgib)
  41. {
  42. if(get_pdata_int(victim, 75) == HIT_HEAD)
  43. pontok[attacker] += get_pcvar_num(killhsp);
  44. else
  45. pontok[attacker] += get_pcvar_num(killp);
  46.  
  47. return HAM_IGNORED;
  48. }
  49.  
  50. public client_putinserver(id)
  51. {
  52. get_user_name(id, playername[id], 31);
  53. Betoltes(id);
  54. }
  55. public client_disconnect(id)
  56. {
  57. Mentes(id);
  58. pontok[id] = 0;
  59. }
  60. public Shop(id)
  61. {
  62. static Item[64];
  63.  
  64. formatex(Item, charsmax(Item),"\yBolt");
  65. new Menu = menu_create(Item, "Shoph");
  66.  
  67. formatex(Item, charsmax(Item),"\wM4A1 \r%d pont", get_pcvar_num(bolt1));
  68. menu_additem(Menu, Item, "1");
  69.  
  70. formatex(Item, charsmax(Item),"\wAK47 \r%d pont", get_pcvar_num(bolt2));
  71. menu_additem(Menu, Item, "2");
  72.  
  73. formatex(Item, charsmax(Item),"\wUjraeledes \r%d pont", get_pcvar_num(bolt3));
  74. menu_additem(Menu, Item, "3");
  75.  
  76. menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
  77. menu_display(id, Menu);
  78.  
  79. return PLUGIN_HANDLED;
  80. }
  81. public Shoph(id, menu, item)
  82. {
  83. if( item == MENU_EXIT )
  84. {
  85. menu_destroy(menu);
  86. return PLUGIN_HANDLED;
  87. }
  88. new data[6], iName[64];
  89. new access, callback;
  90. menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
  91.  
  92. new key = str_to_num(data);
  93. new elo = is_user_alive(id);
  94.  
  95. new ar1 = get_pcvar_num(bolt1);
  96. new ar2 = get_pcvar_num(bolt2);
  97. new ar3 = get_pcvar_num(bolt3);
  98.  
  99. switch(key)
  100. {
  101. case 1:
  102. {
  103. if (pontok[id] >= ar1 && elo)
  104. {
  105. pontok[id] -= ar1;
  106. give_item(id, "weapon_m4a1");
  107. cs_set_user_bpammo(id, CSW_M4A1, 90);
  108. ColorChat(id, GREEN, "Vasaroltal M4A1et");
  109. }
  110. else
  111. {
  112. ColorChat(id, GREEN, "Nincs eleg pontod");
  113. }
  114. }
  115. case 2:
  116. {
  117. if (pontok[id] >= ar2 && elo)
  118. {
  119. pontok[id] -= ar2;
  120. give_item(id, "weapon_ak47");
  121. cs_set_user_bpammo(id, CSW_AK47, 90);
  122. ColorChat(id, GREEN, "Vasaroltal AK47et");
  123. }
  124. else
  125. {
  126. ColorChat(id, GREEN, "Nincs eleg pontod");
  127. }
  128. }
  129. case 3:
  130. {
  131. if (pontok[id] >= ar3 && !elo)
  132. {
  133. pontok[id] -= ar3;
  134. ExecuteHamB(Ham_CS_RoundRespawn, id);
  135. ColorChat(id, GREEN, "Ujraeledtel");
  136. }
  137. else
  138. {
  139. ColorChat(id, GREEN, "Nincs eleg pontod");
  140. }
  141. }
  142. }
  143. menu_destroy(menu);
  144. return PLUGIN_HANDLED;
  145. }
  146. public Mentes(id)
  147. {
  148. new vaultkey[128],vaultdata[256];
  149.  
  150. format(vaultkey, charsmax(vaultkey),"%s-pont", playername[id]);
  151. format(vaultdata, charsmax(vaultdata),"#%i", pontok[id]);
  152.  
  153. nvault_set(g_vault,vaultkey,vaultdata);
  154.  
  155. return PLUGIN_CONTINUE;
  156. }
  157.  
  158. public Betoltes(id)
  159. {
  160. new vaultkey[128],vaultdata[256];
  161.  
  162. format(vaultkey, charsmax(vaultkey),"%s-pont", playername[id]);
  163. nvault_get(g_vault,vaultkey,vaultdata,255);
  164.  
  165. replace_all(vaultdata, 255, "#", "");
  166.  
  167. pontok[id] = str_to_num(vaultdata);
  168.  
  169. return PLUGIN_CONTINUE;
  170. }
  171.  


Valaki hozzáírná, hogy hudban mindig kiirja mennyi pontom van ?
Köszi.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pontrendszer
HozzászólásElküldve: 2013.04.15. 23:49 
Offline
Őskövület
Avatar

Csatlakozott: 2012.02.07. 23:34
Hozzászólások: 2192
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 55 alkalommal
Show1337 írta:
HunGamer írta:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fun>
  4. #include <cstrike>
  5. #include <fakemeta>
  6. #include <hamsandwich>
  7. #include <nvault>
  8. #include <colorchat>
  9.  
  10. #pragma semicolon 1
  11.  
  12. #define PLUGIN "New Plug-In"
  13. #define VERSION "1.0"
  14. #define AUTHOR "HunGamer"
  15.  
  16. new pontok[33];
  17. new playername[33][32];
  18. new g_vault;
  19.  
  20. new killp, killhsp;
  21. new bolt1, bolt2, bolt3;
  22.  
  23. public plugin_init()
  24. {
  25. register_plugin(PLUGIN, VERSION, AUTHOR);
  26.  
  27. RegisterHam(Ham_Killed, "player", "fw_player_killed", 1);
  28.  
  29. killp = register_cvar("pont_kill", "2");
  30. killhsp = register_cvar("pont_killhs", "3");
  31.  
  32. register_clcmd("say /bolt", "Shop");
  33.  
  34. bolt1 = register_cvar("bolt_1", "5");
  35. bolt2 = register_cvar("bolt_2", "5");
  36. bolt3 = register_cvar("bolt_3", "10");
  37.  
  38. g_vault = nvault_open("PontRendszer");
  39. }
  40. public fw_player_killed(victim, attacker, shouldgib)
  41. {
  42. if(get_pdata_int(victim, 75) == HIT_HEAD)
  43. pontok[attacker] += get_pcvar_num(killhsp);
  44. else
  45. pontok[attacker] += get_pcvar_num(killp);
  46.  
  47. return HAM_IGNORED;
  48. }
  49.  
  50. public client_putinserver(id)
  51. {
  52. get_user_name(id, playername[id], 31);
  53. Betoltes(id);
  54. }
  55. public client_disconnect(id)
  56. {
  57. Mentes(id);
  58. pontok[id] = 0;
  59. }
  60. public Shop(id)
  61. {
  62. static Item[64];
  63.  
  64. formatex(Item, charsmax(Item),"\yBolt");
  65. new Menu = menu_create(Item, "Shoph");
  66.  
  67. formatex(Item, charsmax(Item),"\wM4A1 \r%d pont", get_pcvar_num(bolt1));
  68. menu_additem(Menu, Item, "1");
  69.  
  70. formatex(Item, charsmax(Item),"\wAK47 \r%d pont", get_pcvar_num(bolt2));
  71. menu_additem(Menu, Item, "2");
  72.  
  73. formatex(Item, charsmax(Item),"\wUjraeledes \r%d pont", get_pcvar_num(bolt3));
  74. menu_additem(Menu, Item, "3");
  75.  
  76. menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
  77. menu_display(id, Menu);
  78.  
  79. return PLUGIN_HANDLED;
  80. }
  81. public Shoph(id, menu, item)
  82. {
  83. if( item == MENU_EXIT )
  84. {
  85. menu_destroy(menu);
  86. return PLUGIN_HANDLED;
  87. }
  88. new data[6], iName[64];
  89. new access, callback;
  90. menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
  91.  
  92. new key = str_to_num(data);
  93. new elo = is_user_alive(id);
  94.  
  95. new ar1 = get_pcvar_num(bolt1);
  96. new ar2 = get_pcvar_num(bolt2);
  97. new ar3 = get_pcvar_num(bolt3);
  98.  
  99. switch(key)
  100. {
  101. case 1:
  102. {
  103. if (pontok[id] >= ar1 && elo)
  104. {
  105. pontok[id] -= ar1;
  106. give_item(id, "weapon_m4a1");
  107. cs_set_user_bpammo(id, CSW_M4A1, 90);
  108. ColorChat(id, GREEN, "Vasaroltal M4A1et");
  109. }
  110. else
  111. {
  112. ColorChat(id, GREEN, "Nincs eleg pontod");
  113. }
  114. }
  115. case 2:
  116. {
  117. if (pontok[id] >= ar2 && elo)
  118. {
  119. pontok[id] -= ar2;
  120. give_item(id, "weapon_ak47");
  121. cs_set_user_bpammo(id, CSW_AK47, 90);
  122. ColorChat(id, GREEN, "Vasaroltal AK47et");
  123. }
  124. else
  125. {
  126. ColorChat(id, GREEN, "Nincs eleg pontod");
  127. }
  128. }
  129. case 3:
  130. {
  131. if (pontok[id] >= ar3 && !elo)
  132. {
  133. pontok[id] -= ar3;
  134. ExecuteHamB(Ham_CS_RoundRespawn, id);
  135. ColorChat(id, GREEN, "Ujraeledtel");
  136. }
  137. else
  138. {
  139. ColorChat(id, GREEN, "Nincs eleg pontod");
  140. }
  141. }
  142. }
  143. menu_destroy(menu);
  144. return PLUGIN_HANDLED;
  145. }
  146. public Mentes(id)
  147. {
  148. new vaultkey[128],vaultdata[256];
  149.  
  150. format(vaultkey, charsmax(vaultkey),"%s-pont", playername[id]);
  151. format(vaultdata, charsmax(vaultdata),"#%i", pontok[id]);
  152.  
  153. nvault_set(g_vault,vaultkey,vaultdata);
  154.  
  155. return PLUGIN_CONTINUE;
  156. }
  157.  
  158. public Betoltes(id)
  159. {
  160. new vaultkey[128],vaultdata[256];
  161.  
  162. format(vaultkey, charsmax(vaultkey),"%s-pont", playername[id]);
  163. nvault_get(g_vault,vaultkey,vaultdata,255);
  164.  
  165. replace_all(vaultdata, 255, "#", "");
  166.  
  167. pontok[id] = str_to_num(vaultdata);
  168.  
  169. return PLUGIN_CONTINUE;
  170. }
  171.  


Valaki hozzáírná, hogy hudban mindig kiirja mennyi pontom van ?
Köszi.


SMA Forráskód: [ Mindet kijelol ]
  1. #include <engine>
  2.  
  3. public client_PreThink(id)
  4. {
  5. set_hudmessage(42, 212, 255, 0.0, 0.17, 0, 0.1)
  6. show_hudmessage(id, "PP: %d",pontok[id])
  7. }


Ezt tedd bele.

_________________
[sma]CMD:fear(playerid, params[]){ new str[5]; if(!sscanf(params, "s[5]", str)){ if(egyezik(str, "find")) Msg(playerid, "A-a!");}  return 1;}[/sma]

Ők köszönték meg fear_ezmegmi nek ezt a hozzászólást: Show1337 (2013.04.16. 14:20)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pontrendszer
HozzászólásElküldve: 2013.04.16. 14:20 
Offline
Fanatikus

Csatlakozott: 2013.03.07. 14:30
Hozzászólások: 158
Megköszönt másnak: 13 alkalommal
Megköszönték neki: 9 alkalommal
Kössz Működik.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pontrendszer
HozzászólásElküldve: 2013.04.18. 19:15 
Offline
Signore Senior
Avatar

Csatlakozott: 2011.09.09. 17:39
Hozzászólások: 4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
Ezmegmi. Tudod, hogy az nem arra való, ugye?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pontrendszer
HozzászólásElküldve: 2013.04.18. 20:47 
Offline
Őskövület
Avatar

Csatlakozott: 2012.02.07. 23:34
Hozzászólások: 2192
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 55 alkalommal
Silent írta:
Ezmegmi. Tudod, hogy az nem arra való, ugye?

Talán :roll:
Egyébként client_PreThink helyett akkor meg lehetne oldani egy task-kal, hogy bizonyos időközönként frissítse a játékos pontjait.

_________________
[sma]CMD:fear(playerid, params[]){ new str[5]; if(!sscanf(params, "s[5]", str)){ if(egyezik(str, "find")) Msg(playerid, "A-a!");}  return 1;}[/sma]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Pontrendszer
HozzászólásElküldve: 2013.04.19. 15:04 
Offline
Fanatikus

Csatlakozott: 2013.03.07. 14:30
Hozzászólások: 158
Megköszönt másnak: 13 alkalommal
Megköszönték neki: 9 alkalommal
Valaki áttudná írni hogy ne nvaultba hanem mysql be mentse ?

Gondolom senki nem fogja de azért hátha...

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


Ki van itt

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