<div><div align="center"><b><font size="5">[ANY] Chat Responder </font></b></div><br /><b><font size="3">ABOUT<b></b>:</font></b><br />This plugin takes triggers and responces from a config file and when a player types a phrase, it'll check to see if there are any triggers in it. If so, it'll print back. It can be configured to detect "exact" or "contains" phrases.<br /><br />If I type "Hey whats up!" and "Hey whats up!" is registered as an exact trigger, it'll cause a response.<br />If I type "Banana Man yo" and "yo" is registered as a "contains" trigger, then it'll cause a responce.<br /><br />The config file looks like this<br /><div style="margin: 5px;">
<div class="smallfont" style="margin-bottom: 2px;">
<b>Spoiler</b> <input value="Show" style="margin: 0px; padding: 0px; width: 45px; font-size: 10px;" onclick="if(this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != 'inline')
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'inline'; this.innerText = ''; this.value = 'Hide'; }
else
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value='Show'; }" type="button">
</div>
<div class="alt2" style="border: 1px inset; padding: 6px;">
<div class="spoiler" style="display: none;"><div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">Code:</div>
<hr /><code style="margin:0px" dir="ltr" style="text-align:left">"Chat Responder"<br />{<br /> "Hi"<br /> {<br /> "response" "Hey! How are you!"<br /> "type" "e"<br /> }<br /> "Can you hear me?"<br /> {<br /> "response" "I can hear ya loud and clear!"<br /> "type" "c"<br /> }<br /> "Testing 1 2 3"<br /> {<br /> "response" "I can hear ya loud and clear!"<br /> "type" "e"<br /> }<br /> "What's my name?"<br /> {<br /> "response" "Your name is {NAME}!"<br /> "type" "e"<br /> }<br />}</code><hr />
</div></div>
</div>
</div><br /><br />Where "Hi" will trigger the response and "type" will determine if it's supposed to be an exact or a contain trigger.<br /><br /><b><font size="3">CREDITS:</font></b><br />Thanks to ThatOneGuy for introducing me to ADT Arrays when I was learning and also shout out to this thread for giving me the idea <a href="https://forums.allie...d.php?t=267133"target="_blank">[link]</a><br /><br /><b><font size="3">BUGS:</font></b><br />If there are any bugs please comment below, don't forget to check your error logs!<br /><br /><b><font size="3">SOURCE:</font></b><br /><div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">PHP Code:</div>
<div class="alt2">
<hr />
<code style="white-space:nowrap">
<div dir="ltr" style="text-align:left;">
<!-- php buffer start --><code><span style="color: #000000">
<span style="color: #0000BB"></span><span style="color: #FF8000">/****************************************************************************
<br /> [ANT] Chat Responder - A friend inside the code *
<br /> Copyright © 2015 Michael Flaherty *
<br />
<br /> This program is free software: you can redistribute it and/or modify *
<br /> it under the terms of the GNU General Public License as published by *
<br /> the Free Software Foundation, either version 3 of the License, or *
<br /> (at your option) any later version. *
<br />
<br /> This program is distributed in the hope that it will be useful, *
<br /> but WITHOUT ANY WARRANTY; without even the implied warranty of *
<br /> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
<br /> GNU General Public License for more details. *
<br />
<br /> You should have received a copy of the GNU General Public License *
<br /> along with this program. If not, see <http://www.gnu.org/l...p; *
<br />*****************************************************************************/
<br />#include <sourcemod>
<br />#include <autoexecconfig>
<br />
<br />#pragma semicolon 1
<br />#pragma newdecls required
<br />#pragma dynamic 131072 //increase stack space to from 4 kB to 131072 cells (or 512KB, a cell is 4 bytes).
<br />
<br />#define TAG " x04"
<br />#define PLUGIN_VERSION "1.0"
<br />
<br />/* ADT Arrays */
<br /></span><span style="color: #0000BB">Handle gh_adtExactTextsResponse</span><span style="color: #007700">;
<br /></span><span style="color: #0000BB">Handle gh_adtExactTextsTrigger</span><span style="color: #007700">;
<br /></span><span style="color: #0000BB">Handle gh_adtContainTextTrigger</span><span style="color: #007700">;
<br /></span><span style="color: #0000BB">Handle gh_adtContainTextResponse</span><span style="color: #007700">;
<br />
<br />
<br /></span><span style="color: #FF8000">/* Lonely Bool */
<br /></span><span style="color: #0000BB">bool g_bLateLoad</span><span style="color: #007700">;
<br />
<br /></span><span style="color: #FF8000">/* Strings */
<br /></span><span style="color: #0000BB">char g_sPath</span><span style="color: #007700">[</span><span style="color: #0000BB">PLATFORM_MAX_PATH</span><span style="color: #007700">];
<br />
<br /></span><span style="color: #FF8000">/* ConVars */
<br /></span><span style="color: #0000BB">ConVar gcv_bPluginEnabled</span><span style="color: #007700">;
<br /></span><span style="color: #0000BB">ConVar gcv_sFilePath</span><span style="color: #007700">;
<br /></span><span style="color: #0000BB">ConVar gcv_bGlobalReply</span><span style="color: #007700">;
<br />
<br />public </span><span style="color: #0000BB">Plugin myinfo </span><span style="color: #007700">=
<br />{
<br /> </span><span style="color: #0000BB">name </span><span style="color: #007700">= </span><span style="color: #DD0000">"[ANY] Chat Responder"</span><span style="color: #007700">,
<br /> </span><span style="color: #0000BB">author </span><span style="color: #007700">= </span><span style="color: #DD0000">"Headline"</span><span style="color: #007700">,
<br /> </span><span style="color: #0000BB">description </span><span style="color: #007700">= </span><span style="color: #DD0000">"A simple chat bot"</span><span style="color: #007700">,
<br /> </span><span style="color: #0000BB">version </span><span style="color: #007700">= </span><span style="color: #0000BB">PLUGIN_VERSION</span><span style="color: #007700">,
<br /> </span><span style="color: #0000BB">url </span><span style="color: #007700">= </span><span style="color: #DD0000">"http://www.michaelwflaherty.com"
<br /></span><span style="color: #007700">};
<br />
<br />public </span><span style="color: #0000BB">APLRes AskPluginLoad2</span><span style="color: #007700">(</span><span style="color: #0000BB">Handle hMyself</span><span style="color: #007700">, </span><span style="color: #0000BB">bool bLate</span><span style="color: #007700">, </span><span style="color: #0000BB">char</span><span style="color: #007700">[] </span><span style="color: #0000BB">sError</span><span style="color: #007700">, </span><span style="color: #0000BB">int err_max</span><span style="color: #007700">)
<br />{
<br /> </span><span style="color: #0000BB">g_bLateLoad </span><span style="color: #007700">= </span><span style="color: #0000BB">bLate</span><span style="color: #007700">;
<br />
<br /> return </span><span style="color: #0000BB">APLRes_Success</span><span style="color: #007700">;
<br />}
<br />
<br />public </span><span style="color: #0000BB">void OnPluginStart</span><span style="color: #007700">()
<br />{
<br /> </span><span style="color: #0000BB">AutoExecConfig_SetFile</span><span style="color: #007700">(</span><span style="color: #DD0000">"hl_chatresponder"</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">AutoExecConfig_CreateConVar</span><span style="color: #007700">(</span><span style="color: #DD0000">"hl_chatresponder_version"</span><span style="color: #007700">, </span><span style="color: #0000BB">PLUGIN_VERSION</span><span style="color: #007700">, </span><span style="color: #DD0000">"Headline's Chat Responder : Version"</span><span style="color: #007700">, </span><span style="color: #0000BB">FCVAR_NOTIFY</span><span style="color: #007700">|</span><span style="color: #0000BB">FCVAR_DONTRECORD</span><span style="color: #007700">);
<br />
<br /> </span><span style="color: #0000BB">gcv_bPluginEnabled </span><span style="color: #007700">= </span><span style="color: #0000BB">AutoExecConfig_CreateConVar</span><span style="color: #007700">(</span><span style="color: #DD0000">"hl_chatresponder_enable"</span><span style="color: #007700">, </span><span style="color: #DD0000">"1"</span><span style="color: #007700">, </span><span style="color: #DD0000">"Enable the plugin?n (1 = Yes, 0 = No)"</span><span style="color: #007700">, </span><span style="color: #0000BB">FCVAR_NONE</span><span style="color: #007700">, </span><span style="color: #0000BB">true</span><span style="color: #007700">, </span><span style="color: #0000BB">0.0</span><span style="color: #007700">, </span><span style="color: #0000BB">true</span><span style="color: #007700">, </span><span style="color: #0000BB">1.0</span><span style="color: #007700">);
<br />
<br /> </span><span style="color: #0000BB">gcv_sFilePath </span><span style="color: #007700">= </span><span style="color: #0000BB">AutoExecConfig_CreateConVar</span><span style="color: #007700">(</span><span style="color: #DD0000">"hl_chatresponder_filepath"</span><span style="color: #007700">, </span><span style="color: #DD0000">"configs/hl_chatresponder.txt"</span><span style="color: #007700">, </span><span style="color: #DD0000">"File path to parse"</span><span style="color: #007700">, </span><span style="color: #0000BB">FCVAR_NONE</span><span style="color: #007700">);
<br />
<br /> </span><span style="color: #0000BB">gcv_bGlobalReply </span><span style="color: #007700">= </span><span style="color: #0000BB">AutoExecConfig_CreateConVar</span><span style="color: #007700">(</span><span style="color: #DD0000">"hl_chatresponder_global reply"</span><span style="color: #007700">, </span><span style="color: #DD0000">"1"</span><span style="color: #007700">, </span><span style="color: #DD0000">"Make it so the Bot's responses are visible to everyone?n (1 = Yes, 0 = No)"</span><span style="color: #007700">, </span><span style="color: #0000BB">FCVAR_NONE</span><span style="color: #007700">, </span><span style="color: #0000BB">true</span><span style="color: #007700">, </span><span style="color: #0000BB">0.0</span><span style="color: #007700">, </span><span style="color: #0000BB">true</span><span style="color: #007700">, </span><span style="color: #0000BB">1.0</span><span style="color: #007700">);
<br />
<br /> </span><span style="color: #0000BB">AutoExecConfig_ExecuteFile</span><span style="color: #007700">();
<br /> </span><span style="color: #0000BB">AutoExecConfig_CleanFile</span><span style="color: #007700">();
<br />
<br /> if(</span><span style="color: #0000BB">g_bLateLoad</span><span style="color: #007700">)
<br /> {
<br /> </span><span style="color: #0000BB">OnConfigsExecuted</span><span style="color: #007700">();
<br /> }
<br />
<br /> </span><span style="color: #0000BB">AddCommandListener</span><span style="color: #007700">(</span><span style="color: #0000BB">OnSay</span><span style="color: #007700">, </span><span style="color: #DD0000">"say"</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">AddCommandListener</span><span style="color: #007700">(</span><span style="color: #0000BB">OnSay</span><span style="color: #007700">, </span><span style="color: #DD0000">"say_team"</span><span style="color: #007700">);
<br />}
<br />
<br />public </span><span style="color: #0000BB">void OnConfigsExecuted</span><span style="color: #007700">()
<br />{
<br /> if (</span><span style="color: #0000BB">gcv_bPluginEnabled</span><span style="color: #007700">.</span><span style="color: #0000BB">BoolValue</span><span style="color: #007700">)
<br /> {
<br /> </span><span style="color: #0000BB">InitializeADTArrays</span><span style="color: #007700">();
<br /> }
<br />}
<br />
<br />public </span><span style="color: #0000BB">Action OnSay</span><span style="color: #007700">(</span><span style="color: #0000BB">int client</span><span style="color: #007700">, const </span><span style="color: #0000BB">char</span><span style="color: #007700">[] </span><span style="color: #0000BB">command</span><span style="color: #007700">, </span><span style="color: #0000BB">int args</span><span style="color: #007700">)
<br />{
<br /> if (!</span><span style="color: #0000BB">gcv_bPluginEnabled</span><span style="color: #007700">.</span><span style="color: #0000BB">BoolValue</span><span style="color: #007700">)
<br /> {
<br /> return </span><span style="color: #0000BB">Plugin_Continue</span><span style="color: #007700">;
<br /> }
<br /> if (!</span><span style="color: #0000BB">IsValidClient</span><span style="color: #007700">(</span><span style="color: #0000BB">client</span><span style="color: #007700">))
<br /> {
<br /> return </span><span style="color: #0000BB">Plugin_Continue</span><span style="color: #007700">;
<br /> }
<br /> if (</span><span style="color: #0000BB">client </span><span style="color: #007700">== </span><span style="color: #0000BB">0</span><span style="color: #007700">)
<br /> {
<br /> return </span><span style="color: #0000BB">Plugin_Continue</span><span style="color: #007700">;
<br /> }
<br /> </span><span style="color: #0000BB">char sText</span><span style="color: #007700">[</span><span style="color: #0000BB">4096</span><span style="color: #007700">];
<br /> </span><span style="color: #0000BB">GetCmdArgString</span><span style="color: #007700">(</span><span style="color: #0000BB">sText</span><span style="color: #007700">, </span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">sText</span><span style="color: #007700">));
<br />
<br /> </span><span style="color: #0000BB">StripQuotes</span><span style="color: #007700">(</span><span style="color: #0000BB">sText</span><span style="color: #007700">);
<br />
<br /> </span><span style="color: #0000BB">Handle hData </span><span style="color: #007700">= </span><span style="color: #0000BB">CreateDataPack</span><span style="color: #007700">();
<br /> </span><span style="color: #0000BB">WritePackCell</span><span style="color: #007700">(</span><span style="color: #0000BB">hData</span><span style="color: #007700">, </span><span style="color: #0000BB">client</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">WritePackString</span><span style="color: #007700">(</span><span style="color: #0000BB">hData</span><span style="color: #007700">, </span><span style="color: #0000BB">sText</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">ResetPack</span><span style="color: #007700">(</span><span style="color: #0000BB">hData</span><span style="color: #007700">);
<br />
<br /> </span><span style="color: #0000BB">CreateTimer</span><span style="color: #007700">(</span><span style="color: #0000BB">0.3</span><span style="color: #007700">, </span><span style="color: #0000BB">Timer_Reply</span><span style="color: #007700">, </span><span style="color: #0000BB">hData</span><span style="color: #007700">, </span><span style="color: #0000BB">TIMER_FLAG_NO_MAPCHANGE</span><span style="color: #007700">);
<br />
<br /> return </span><span style="color: #0000BB">Plugin_Continue</span><span style="color: #007700">;
<br />}
<br />
<br />public </span><span style="color: #0000BB">Action Timer_Reply</span><span style="color: #007700">(</span><span style="color: #0000BB">Handle hTimer</span><span style="color: #007700">, </span><span style="color: #0000BB">Handle hData</span><span style="color: #007700">)
<br />{
<br /> </span><span style="color: #0000BB">char sText</span><span style="color: #007700">[</span><span style="color: #0000BB">4096</span><span style="color: #007700">];
<br />
<br /> </span><span style="color: #0000BB">int client </span><span style="color: #007700">= </span><span style="color: #0000BB">ReadPackCell</span><span style="color: #007700">(</span><span style="color: #0000BB">hData</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">ReadPackString</span><span style="color: #007700">(</span><span style="color: #0000BB">hData</span><span style="color: #007700">, </span><span style="color: #0000BB">sText</span><span style="color: #007700">, </span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">sText</span><span style="color: #007700">));
<br /> </span><span style="color: #0000BB">CloseHandle</span><span style="color: #007700">(</span><span style="color: #0000BB">hData</span><span style="color: #007700">);
<br />
<br /> </span><span style="color: #0000BB">char sTrigger</span><span style="color: #007700">[</span><span style="color: #0000BB">128</span><span style="color: #007700">];
<br /> </span><span style="color: #0000BB">char sResponse</span><span style="color: #007700">[</span><span style="color: #0000BB">128</span><span style="color: #007700">];
<br />
<br /> </span><span style="color: #0000BB">bool bFoundResponse </span><span style="color: #007700">= </span><span style="color: #0000BB">false</span><span style="color: #007700">;
<br /> for (</span><span style="color: #0000BB">int i </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">i </span><span style="color: #007700">< </span><span style="color: #0000BB">GetArraySize</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtExactTextsTrigger</span><span style="color: #007700">); </span><span style="color: #0000BB">i</span><span style="color: #007700">++)
<br /> {
<br /> </span><span style="color: #0000BB">GetArrayString</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtExactTextsTrigger</span><span style="color: #007700">, </span><span style="color: #0000BB">i</span><span style="color: #007700">, </span><span style="color: #0000BB">sTrigger</span><span style="color: #007700">, </span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">sTrigger</span><span style="color: #007700">));
<br /> if (</span><span style="color: #0000BB">StrEqual</span><span style="color: #007700">(</span><span style="color: #0000BB">sText</span><span style="color: #007700">, </span><span style="color: #0000BB">sTrigger</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">))
<br /> {
<br /> </span><span style="color: #0000BB">GetArrayString</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtExactTextsResponse</span><span style="color: #007700">, </span><span style="color: #0000BB">i</span><span style="color: #007700">, </span><span style="color: #0000BB">sResponse</span><span style="color: #007700">, </span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">sResponse</span><span style="color: #007700">));
<br /> if (</span><span style="color: #0000BB">StrContains</span><span style="color: #007700">(</span><span style="color: #0000BB">sResponse</span><span style="color: #007700">, </span><span style="color: #DD0000">"{NAME}"</span><span style="color: #007700">))
<br /> {
<br /> </span><span style="color: #0000BB">char sName</span><span style="color: #007700">[</span><span style="color: #0000BB">MAX_NAME_LENGTH</span><span style="color: #007700">];
<br /> </span><span style="color: #0000BB">GetClientName</span><span style="color: #007700">(</span><span style="color: #0000BB">client</span><span style="color: #007700">, </span><span style="color: #0000BB">sName</span><span style="color: #007700">, </span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">sName</span><span style="color: #007700">));
<br /> </span><span style="color: #0000BB">ReplaceString</span><span style="color: #007700">(</span><span style="color: #0000BB">sResponse</span><span style="color: #007700">, </span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">sResponse</span><span style="color: #007700">), </span><span style="color: #DD0000">"{NAME}"</span><span style="color: #007700">, </span><span style="color: #0000BB">sName</span><span style="color: #007700">);
<br /> }
<br /> if (</span><span style="color: #0000BB">gcv_bGlobalReply</span><span style="color: #007700">.</span><span style="color: #0000BB">BoolValue</span><span style="color: #007700">)
<br /> {
<br /> </span><span style="color: #0000BB">PrintToChatAll</span><span style="color: #007700">(</span><span style="color: #DD0000">"%s%s"</span><span style="color: #007700">, </span><span style="color: #0000BB">TAG</span><span style="color: #007700">, </span><span style="color: #0000BB">sResponse</span><span style="color: #007700">);
<br /> }
<br /> else
<br /> {
<br /> </span><span style="color: #0000BB">PrintToChat</span><span style="color: #007700">(</span><span style="color: #0000BB">client</span><span style="color: #007700">, </span><span style="color: #DD0000">"%s%s"</span><span style="color: #007700">, </span><span style="color: #0000BB">TAG</span><span style="color: #007700">, </span><span style="color: #0000BB">sResponse</span><span style="color: #007700">);
<br /> }
<br /> </span><span style="color: #0000BB">bFoundResponse </span><span style="color: #007700">= </span><span style="color: #0000BB">true</span><span style="color: #007700">;
<br /> break;
<br /> }
<br /> else
<br /> {
<br /> </span><span style="color: #0000BB">bFoundResponse </span><span style="color: #007700">= </span><span style="color: #0000BB">false</span><span style="color: #007700">;
<br /> }
<br /> }
<br /> if (!</span><span style="color: #0000BB">bFoundResponse</span><span style="color: #007700">)
<br /> {
<br /> for (</span><span style="color: #0000BB">int i </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">i </span><span style="color: #007700">< </span><span style="color: #0000BB">GetArraySize</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtContainTextTrigger</span><span style="color: #007700">); </span><span style="color: #0000BB">i</span><span style="color: #007700">++)
<br /> {
<br /> </span><span style="color: #0000BB">GetArrayString</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtContainTextTrigger</span><span style="color: #007700">, </span><span style="color: #0000BB">i</span><span style="color: #007700">, </span><span style="color: #0000BB">sTrigger</span><span style="color: #007700">, </span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">sTrigger</span><span style="color: #007700">));
<br /> if (</span><span style="color: #0000BB">StrContains</span><span style="color: #007700">(</span><span style="color: #0000BB">sText</span><span style="color: #007700">, </span><span style="color: #0000BB">sTrigger</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">) != -</span><span style="color: #0000BB">1</span><span style="color: #007700">)
<br /> {
<br /> </span><span style="color: #0000BB">GetArrayString</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtContainTextResponse</span><span style="color: #007700">, </span><span style="color: #0000BB">i</span><span style="color: #007700">, </span><span style="color: #0000BB">sResponse</span><span style="color: #007700">, </span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">sResponse</span><span style="color: #007700">));
<br /> </span><span style="color: #0000BB">PrintToChatAll</span><span style="color: #007700">(</span><span style="color: #DD0000">"%s%s"</span><span style="color: #007700">, </span><span style="color: #0000BB">TAG</span><span style="color: #007700">, </span><span style="color: #0000BB">sResponse</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">bFoundResponse </span><span style="color: #007700">= </span><span style="color: #0000BB">true</span><span style="color: #007700">;
<br /> break;
<br /> }
<br /> }
<br /> }
<br />}
<br />
<br />public </span><span style="color: #0000BB">void ParseKvFile</span><span style="color: #007700">()
<br />{
<br /> </span><span style="color: #0000BB">char sPath</span><span style="color: #007700">[</span><span style="color: #0000BB">PLATFORM_MAX_PATH</span><span style="color: #007700">];
<br /> </span><span style="color: #0000BB">gcv_sFilePath</span><span style="color: #007700">.</span><span style="color: #0000BB">GetString</span><span style="color: #007700">(</span><span style="color: #0000BB">sPath</span><span style="color: #007700">, </span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">sPath</span><span style="color: #007700">));
<br /> </span><span style="color: #0000BB">BuildPath</span><span style="color: #007700">(</span><span style="color: #0000BB">Path_SM</span><span style="color: #007700">, </span><span style="color: #0000BB">g_sPath</span><span style="color: #007700">, </span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">g_sPath</span><span style="color: #007700">), </span><span style="color: #0000BB">sPath</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">Handle hKeyValues </span><span style="color: #007700">= </span><span style="color: #0000BB">CreateKeyValues</span><span style="color: #007700">(</span><span style="color: #DD0000">"Chat Responder"</span><span style="color: #007700">);
<br />
<br /> if(!</span><span style="color: #0000BB">FileExists</span><span style="color: #007700">(</span><span style="color: #0000BB">g_sPath</span><span style="color: #007700">))
<br /> {
<br /> </span><span style="color: #0000BB">SetFailState</span><span style="color: #007700">(</span><span style="color: #DD0000">"Configuration file %s not found!"</span><span style="color: #007700">, </span><span style="color: #0000BB">g_sPath</span><span style="color: #007700">);
<br /> return;
<br /> }
<br />
<br /> if(!</span><span style="color: #0000BB">FileToKeyValues</span><span style="color: #007700">(</span><span style="color: #0000BB">hKeyValues</span><span style="color: #007700">, </span><span style="color: #0000BB">g_sPath</span><span style="color: #007700">))
<br /> {
<br /> </span><span style="color: #0000BB">SetFailState</span><span style="color: #007700">(</span><span style="color: #DD0000">"Improper structure for configuration file %s!"</span><span style="color: #007700">, </span><span style="color: #0000BB">g_sPath</span><span style="color: #007700">);
<br /> return;
<br /> }
<br />
<br /> if(</span><span style="color: #0000BB">KvGotoFirstSubKey</span><span style="color: #007700">(</span><span style="color: #0000BB">hKeyValues</span><span style="color: #007700">))
<br /> {
<br /> do
<br /> {
<br /> </span><span style="color: #0000BB">char sSectionName</span><span style="color: #007700">[</span><span style="color: #0000BB">128</span><span style="color: #007700">];
<br /> </span><span style="color: #0000BB">char sType</span><span style="color: #007700">[</span><span style="color: #0000BB">128</span><span style="color: #007700">];
<br /> </span><span style="color: #0000BB">char sText</span><span style="color: #007700">[</span><span style="color: #0000BB">128</span><span style="color: #007700">];
<br />
<br /> </span><span style="color: #0000BB">KvGetSectionName</span><span style="color: #007700">(</span><span style="color: #0000BB">hKeyValues</span><span style="color: #007700">, </span><span style="color: #0000BB">sSectionName</span><span style="color: #007700">, </span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">sSectionName</span><span style="color: #007700">)); </span><span style="color: #FF8000">//get name of section
<br />
<br /> </span><span style="color: #0000BB">KvGetString</span><span style="color: #007700">(</span><span style="color: #0000BB">hKeyValues</span><span style="color: #007700">, </span><span style="color: #DD0000">"response"</span><span style="color: #007700">, </span><span style="color: #0000BB">sText</span><span style="color: #007700">, </span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">sText</span><span style="color: #007700">));
<br /> </span><span style="color: #0000BB">KvGetString</span><span style="color: #007700">(</span><span style="color: #0000BB">hKeyValues</span><span style="color: #007700">, </span><span style="color: #DD0000">"type"</span><span style="color: #007700">, </span><span style="color: #0000BB">sType</span><span style="color: #007700">, </span><span style="color: #0000BB">sizeof</span><span style="color: #007700">(</span><span style="color: #0000BB">sType</span><span style="color: #007700">)); </span><span style="color: #FF8000">//call key-value by name of key and store value in variable, with default as "blah" if it doesnt exist
<br />
<br /> </span><span style="color: #007700">if (</span><span style="color: #0000BB">StrEqual</span><span style="color: #007700">(</span><span style="color: #0000BB">sType</span><span style="color: #007700">, </span><span style="color: #DD0000">"e"</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">))
<br /> {
<br /> </span><span style="color: #0000BB">PushArrayString</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtExactTextsTrigger</span><span style="color: #007700">, </span><span style="color: #0000BB">sSectionName</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">PushArrayString</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtExactTextsResponse</span><span style="color: #007700">, </span><span style="color: #0000BB">sText</span><span style="color: #007700">);
<br /> }
<br /> else if (</span><span style="color: #0000BB">StrEqual</span><span style="color: #007700">(</span><span style="color: #0000BB">sType</span><span style="color: #007700">, </span><span style="color: #DD0000">"c"</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">))
<br /> {
<br /> </span><span style="color: #0000BB">PushArrayString</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtContainTextTrigger</span><span style="color: #007700">, </span><span style="color: #0000BB">sSectionName</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">PushArrayString</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtContainTextResponse</span><span style="color: #007700">, </span><span style="color: #0000BB">sText</span><span style="color: #007700">);
<br /> }
<br /> }
<br /> while(</span><span style="color: #0000BB">KvGotoNextKey</span><span style="color: #007700">(</span><span style="color: #0000BB">hKeyValues</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">));
<br /> </span><span style="color: #0000BB">KvGoBack</span><span style="color: #007700">(</span><span style="color: #0000BB">hKeyValues</span><span style="color: #007700">);
<br /> }
<br /> else
<br /> {
<br /> </span><span style="color: #0000BB">SetFailState</span><span style="color: #007700">(</span><span style="color: #DD0000">"Can't find first subkey in configuration file %s!"</span><span style="color: #007700">, </span><span style="color: #0000BB">g_sPath</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">CloseHandle</span><span style="color: #007700">(</span><span style="color: #0000BB">hKeyValues</span><span style="color: #007700">);
<br /> return;
<br /> }
<br /> </span><span style="color: #0000BB">CloseHandle</span><span style="color: #007700">(</span><span style="color: #0000BB">hKeyValues</span><span style="color: #007700">);
<br />}
<br />
<br /></span><span style="color: #0000BB">stock void InitializeADTArrays</span><span style="color: #007700">()
<br />{
<br /> </span><span style="color: #0000BB">gh_adtExactTextsTrigger </span><span style="color: #007700">= </span><span style="color: #0000BB">CreateArray</span><span style="color: #007700">(</span><span style="color: #0000BB">64</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">gh_adtExactTextsResponse </span><span style="color: #007700">= </span><span style="color: #0000BB">CreateArray</span><span style="color: #007700">(</span><span style="color: #0000BB">128</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">ClearArray</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtExactTextsTrigger</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">ClearArray</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtExactTextsResponse</span><span style="color: #007700">);
<br />
<br /> </span><span style="color: #0000BB">gh_adtContainTextTrigger </span><span style="color: #007700">= </span><span style="color: #0000BB">CreateArray</span><span style="color: #007700">(</span><span style="color: #0000BB">64</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">gh_adtContainTextResponse </span><span style="color: #007700">= </span><span style="color: #0000BB">CreateArray</span><span style="color: #007700">(</span><span style="color: #0000BB">128</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">ClearArray</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtContainTextTrigger</span><span style="color: #007700">);
<br /> </span><span style="color: #0000BB">ClearArray</span><span style="color: #007700">(</span><span style="color: #0000BB">gh_adtContainTextResponse</span><span style="color: #007700">);
<br />
<br /> </span><span style="color: #0000BB">ParseKvFile</span><span style="color: #007700">();
<br />}
<br />
<br /></span><span style="color: #0000BB">stock bool IsValidClient</span><span style="color: #007700">(</span><span style="color: #0000BB">int client</span><span style="color: #007700">, </span><span style="color: #0000BB">bool bAllowBots </span><span style="color: #007700">= </span><span style="color: #0000BB">false</span><span style="color: #007700">, </span><span style="color: #0000BB">bool bAllowDead </span><span style="color: #007700">= </span><span style="color: #0000BB">true</span><span style="color: #007700">)
<br />{
<br /> if(!(</span><span style="color: #0000BB">1 </span><span style="color: #007700"><= </span><span style="color: #0000BB">client </span><span style="color: #007700"><= </span><span style="color: #0000BB">MaxClients</span><span style="color: #007700">) || !</span><span style="color: #0000BB">IsClientInGame</span><span style="color: #007700">(</span><span style="color: #0000BB">client</span><span style="color: #007700">) || (</span><span style="color: #0000BB">IsFakeClient</span><span style="color: #007700">(</span><span style="color: #0000BB">client</span><span style="color: #007700">) && !</span><span style="color: #0000BB">bAllowBots</span><span style="color: #007700">) || </span><span style="color: #0000BB">IsClientSourceTV</span><span style="color: #007700">(</span><span style="color: #0000BB">client</span><span style="color: #007700">) || </span><span style="color: #0000BB">IsClientReplay</span><span style="color: #007700">(</span><span style="color: #0000BB">client</span><span style="color: #007700">) || (!</span><span style="color: #0000BB">bAllowDead </span><span style="color: #007700">&& !</span><span style="color: #0000BB">IsPlayerAlive</span><span style="color: #007700">(</span><span style="color: #0000BB">client</span><span style="color: #007700">)))
<br /> {
<br /> return </span><span style="color: #0000BB">false</span><span style="color: #007700">;
<br /> }
<br /> return </span><span style="color: #0000BB">true</span><span style="color: #007700">;
<br />}
<br />
<br /></span><span style="color: #FF8000">/*
<br /> Change log
<br /> 1.0
<br /> * First release
<br />*/
<br /></span><span style="color: #0000BB"></span>
</span>
</code><!-- php buffer end -->
</div>
</code>
<hr />
</div>
</div></div>
<br /> <div style="padding:6px">
<fieldset class="fieldset">
<legend>Attached Files</legend>
<table cellpadding="0" cellspacing="3" border="0">
<tr>
<td><img class="inlineimg" src="https://forums.allie...attach/zip.gif"alt="File Type: zip" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
<td>
<a href="https://forums.allie...sponder.zip</a>(15.6 KB)
</td>
</tr>
</table>
</fieldset>
</div>
Wyświetl pełny artykuł
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
[ANY] Chat Responder [UPDATED 2/11/15]
Temat rozp. Adminek AMXX.PL, 12.02.2016 03:46
Brak odpowiedzi do tego tematu
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych