<div>Hello! Want to release my new plugin, which will help you to optimize network oriented queries.<br /><br />Installation:<br />1. Put folder from `dbpp.zip` to root folder of game (Example: tf2/ csgo/).<br />2. Add in databases.cfg this one:<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: #DD0000">"dbpp"<br /></span><span style="color: #007700">{<br /> </span><span style="color: #DD0000">"driver" "mysql"<br /> "host" "your_ip"<br /> "database" "your_db"<br /> "user" "your_user"<br /> "pass" "your_password"<br /></span><span style="color: #007700">}
<br /></span><span style="color: #0000BB"></span>
</span>
</code><!-- php buffer end -->
</div>
</code>
<hr />
</div>
</div>3. Test and write your own plugins!<br /><br />How to use this API?<br />1. Analyze this example<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">#include <sourcemod><br />#include <dbplusplus><br /><br />#pragma semicolon 1<br />#pragma newdecls required<br /><br /></span><span style="color: #007700">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">"[DB++] Test Plugin"</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">author </span><span style="color: #007700">= </span><span style="color: #DD0000">"Jake"</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">description </span><span style="color: #007700">= </span><span style="color: #DD0000">"-"</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">version </span><span style="color: #007700">= </span><span style="color: #DD0000">"0.1 beta"</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">url </span><span style="color: #007700">= </span><span style="color: #DD0000">"http://ezplay.pro/"<br /></span><span style="color: #007700">};<br /><br /></span><span style="color: #FF8000">/**<br /> * We're creating datapack <br /> * to identify query<br /> * and send some data<br /> **/<br /></span><span style="color: #0000BB">DataPack gDataPackConnections</span><span style="color: #007700">[</span><span style="color: #0000BB">MAXPLAYERS</span><span style="color: #007700">];<br /> <br />public </span><span style="color: #0000BB">void OnPluginStart</span><span style="color: #007700">()<br />{<br /> </span><span style="color: #FF8000">/* Create datapack for each player */<br /> </span><span style="color: #007700">for (</span><span style="color: #0000BB">int i </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">; </span><span style="color: #0000BB">i </span><span style="color: #007700"><= </span><span style="color: #0000BB">MaxClients</span><span style="color: #007700">; </span><span style="color: #0000BB">i</span><span style="color: #007700">++)<br /> </span><span style="color: #0000BB">gDataPackConnections</span><span style="color: #007700">[</span><span style="color: #0000BB">i</span><span style="color: #007700">] = new </span><span style="color: #0000BB">DataPack</span><span style="color: #007700">();<br />}<br /><br /></span><span style="color: #FF8000">/* Player has joined and transaction is ready */<br /></span><span style="color: #007700">public </span><span style="color: #0000BB">void DBPP_PlayerJoin</span><span style="color: #007700">(</span><span style="color: #0000BB">int iClient</span><span style="color: #007700">, const </span><span style="color: #0000BB">char</span><span style="color: #007700">[] </span><span style="color: #0000BB">sSteam</span><span style="color: #007700">, </span><span style="color: #0000BB">Transaction hTransaction</span><span style="color: #007700">)<br />{<br /> </span><span style="color: #FF8000">/* We want to send nick, so let get it */<br /> </span><span style="color: #0000BB">char sNick</span><span style="color: #007700">[</span><span style="color: #0000BB">64</span><span style="color: #007700">];<br /> </span><span style="color: #0000BB">GetClientName</span><span style="color: #007700">(</span><span style="color: #0000BB">iClient</span><span style="color: #007700">, </span><span style="color: #0000BB">sNick</span><span style="color: #007700">, </span><span style="color: #0000BB">64</span><span style="color: #007700">);<br /> <br /> </span><span style="color: #0000BB">ReplaceString</span><span style="color: #007700">(</span><span style="color: #0000BB">sNick</span><span style="color: #007700">, </span><span style="color: #0000BB">64</span><span style="color: #007700">, </span><span style="color: #DD0000">"`"</span><span style="color: #007700">, </span><span style="color: #DD0000">""</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">ReplaceString</span><span style="color: #007700">(</span><span style="color: #0000BB">sNick</span><span style="color: #007700">, </span><span style="color: #0000BB">64</span><span style="color: #007700">, </span><span style="color: #DD0000">"'"</span><span style="color: #007700">, </span><span style="color: #DD0000">""</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">ReplaceString</span><span style="color: #007700">(</span><span style="color: #0000BB">sNick</span><span style="color: #007700">, </span><span style="color: #0000BB">64</span><span style="color: #007700">, </span><span style="color: #DD0000">"""</span><span style="color: #007700">, </span><span style="color: #DD0000">""</span><span style="color: #007700">);<br /><br /> </span><span style="color: #FF8000">/* Time of connection */<br /> </span><span style="color: #0000BB">int iTime </span><span style="color: #007700">= </span><span style="color: #0000BB">GetTime</span><span style="color: #007700">();<br /> <br /> </span><span style="color: #FF8000">/* Formatting query */<br /> </span><span style="color: #0000BB">char sQuery</span><span style="color: #007700">[</span><span style="color: #0000BB">256</span><span style="color: #007700">];<br /> <br /> </span><span style="color: #FF8000">/* Just insert data in MySQL */<br /> /* For Example: */<br /> <br /> /* INSERT INTO `table` (`field`) VALUES (`data`); */<br /> </span><span style="color: #0000BB">FormatEx</span><span style="color: #007700">(</span><span style="color: #0000BB">sQuery</span><span style="color: #007700">, </span><span style="color: #0000BB">256</span><span style="color: #007700">, </span><span style="color: #DD0000">"INSERT INTO `connections` (`steam`, `nick`, `time`) VALUES ('%s', '%s', '%d');"</span><span style="color: #007700">, <br /> </span><span style="color: #0000BB">sSteam</span><span style="color: #007700">, </span><span style="color: #0000BB">sNick</span><span style="color: #007700">, </span><span style="color: #0000BB">iTime</span><span style="color: #007700">);<br /><br /> </span><span style="color: #FF8000">/* Clearing data from datapack */<br /> </span><span style="color: #0000BB">gDataPackConnections</span><span style="color: #007700">[</span><span style="color: #0000BB">iClient</span><span style="color: #007700">].</span><span style="color: #0000BB">Reset</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /> <br /> </span><span style="color: #FF8000">/* Writing new data */<br /> </span><span style="color: #0000BB">gDataPackConnections</span><span style="color: #007700">[</span><span style="color: #0000BB">iClient</span><span style="color: #007700">].</span><span style="color: #0000BB">WriteString</span><span style="color: #007700">(</span><span style="color: #0000BB">sNick</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">gDataPackConnections</span><span style="color: #007700">[</span><span style="color: #0000BB">iClient</span><span style="color: #007700">].</span><span style="color: #0000BB">WriteCell</span><span style="color: #007700">(</span><span style="color: #0000BB">iTime</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">gDataPackConnections</span><span style="color: #007700">[</span><span style="color: #0000BB">iClient</span><span style="color: #007700">].</span><span style="color: #0000BB">WriteString</span><span style="color: #007700">(</span><span style="color: #0000BB">sQuery</span><span style="color: #007700">);<br /> <br /> </span><span style="color: #FF8000">/* Ok, we are ready to */<br /> /* add query in transaction */<br /> <br /> /* 1st param - query */<br /> /* 2nd param - datapack */<br /> </span><span style="color: #0000BB">hTransaction</span><span style="color: #007700">.</span><span style="color: #0000BB">AddQuery</span><span style="color: #007700">(</span><span style="color: #0000BB">sQuery</span><span style="color: #007700">, </span><span style="color: #0000BB">gDataPackConnections</span><span style="color: #007700">[</span><span style="color: #0000BB">iClient</span><span style="color: #007700">]);<br />}<br /><br /></span><span style="color: #FF8000">/* Ok, we have a result, so let's log it out */<br /></span><span style="color: #007700">public </span><span style="color: #0000BB">void DBPP_PlayerJoin_Results</span><span style="color: #007700">(</span><span style="color: #0000BB">int iClient</span><span style="color: #007700">, const </span><span style="color: #0000BB">char</span><span style="color: #007700">[] </span><span style="color: #0000BB">sSteam</span><span style="color: #007700">, </span><span style="color: #0000BB">int iQuery</span><span style="color: #007700">, </span><span style="color: #0000BB">DBResultSet hResultSet</span><span style="color: #007700">, </span><span style="color: #0000BB">DataPack dPack</span><span style="color: #007700">)<br />{<br /> </span><span style="color: #0000BB">LogConnection</span><span style="color: #007700">(</span><span style="color: #0000BB">iClient</span><span style="color: #007700">, </span><span style="color: #0000BB">dPack</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">);<br /> <br /> </span><span style="color: #FF8000">/* Don't forget: */<br /> /* Result sets will be deleted automaticly */<br /></span><span style="color: #007700">}<br /><br /></span><span style="color: #FF8000">/* Something goes wrong, but we still can log data */<br /></span><span style="color: #007700">public </span><span style="color: #0000BB">void DBPP_PlayerJoin_Fail</span><span style="color: #007700">(</span><span style="color: #0000BB">int iClient</span><span style="color: #007700">, const </span><span style="color: #0000BB">char</span><span style="color: #007700">[] </span><span style="color: #0000BB">sSteam</span><span style="color: #007700">, </span><span style="color: #0000BB">int iFailedQuery</span><span style="color: #007700">, </span><span style="color: #0000BB">DataPack dPack</span><span style="color: #007700">)<br />{<br /> </span><span style="color: #0000BB">LogConnection</span><span style="color: #007700">(</span><span style="color: #0000BB">iClient</span><span style="color: #007700">, </span><span style="color: #0000BB">dPack</span><span style="color: #007700">, </span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #0000BB">void LogConnection</span><span style="color: #007700">(</span><span style="color: #0000BB">int iClient</span><span style="color: #007700">, </span><span style="color: #0000BB">DataPack dPack</span><span style="color: #007700">, </span><span style="color: #0000BB">bool bFailure</span><span style="color: #007700">)<br />{<br /> </span><span style="color: #FF8000">/* Checking for needed query */<br /> /* If false - it's not our query */<br /> </span><span style="color: #007700">if (</span><span style="color: #0000BB">dPack </span><span style="color: #007700">!= </span><span style="color: #0000BB">gDataPackConnections</span><span style="color: #007700">[</span><span style="color: #0000BB">iClient</span><span style="color: #007700">])<br /> return;<br /> <br /> </span><span style="color: #FF8000">/* Reset position in datapack */<br /> </span><span style="color: #0000BB">dPack</span><span style="color: #007700">.</span><span style="color: #0000BB">Reset</span><span style="color: #007700">();<br /> <br /> </span><span style="color: #FF8000">/* Read data and log it. Simple. */<br /> </span><span style="color: #0000BB">char sNick</span><span style="color: #007700">[</span><span style="color: #0000BB">64</span><span style="color: #007700">];<br /> </span><span style="color: #0000BB">dPack</span><span style="color: #007700">.</span><span style="color: #0000BB">ReadString</span><span style="color: #007700">(</span><span style="color: #0000BB">sNick</span><span style="color: #007700">, </span><span style="color: #0000BB">64</span><span style="color: #007700">);<br /> <br /> </span><span style="color: #0000BB">int iTime </span><span style="color: #007700">= </span><span style="color: #0000BB">dPack</span><span style="color: #007700">.</span><span style="color: #0000BB">ReadCell</span><span style="color: #007700">();<br /> <br /> </span><span style="color: #0000BB">char sTime</span><span style="color: #007700">[</span><span style="color: #0000BB">32</span><span style="color: #007700">];<br /> </span><span style="color: #0000BB">FormatTime</span><span style="color: #007700">(</span><span style="color: #0000BB">sTime</span><span style="color: #007700">, </span><span style="color: #0000BB">32</span><span style="color: #007700">, </span><span style="color: #DD0000">"%d/%m/%y %H:%M:%S"</span><span style="color: #007700">, </span><span style="color: #0000BB">iTime</span><span style="color: #007700">);<br /> <br /> </span><span style="color: #0000BB">LogMessage</span><span style="color: #007700">(</span><span style="color: #DD0000">"[DB++] Player %s joined at %s"</span><span style="color: #007700">, </span><span style="color: #0000BB">sNick</span><span style="color: #007700">, </span><span style="color: #0000BB">sTime</span><span style="color: #007700">);<br /> <br /> </span><span style="color: #FF8000">/* Our query was failure */<br /> </span><span style="color: #007700">if (</span><span style="color: #0000BB">bFailure </span><span style="color: #007700">== </span><span style="color: #0000BB">true</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #0000BB">char sQuery</span><span style="color: #007700">[</span><span style="color: #0000BB">256</span><span style="color: #007700">];<br /> </span><span style="color: #0000BB">dPack</span><span style="color: #007700">.</span><span style="color: #0000BB">ReadString</span><span style="color: #007700">(</span><span style="color: #0000BB">sQuery</span><span style="color: #007700">, </span><span style="color: #0000BB">256</span><span style="color: #007700">);<br /> <br /> </span><span style="color: #0000BB">LogMessage</span><span style="color: #007700">(</span><span style="color: #DD0000">"[DB++] Failed query: %s"</span><span style="color: #007700">, </span><span style="color: #0000BB">sQuery</span><span style="color: #007700">);<br /> }<br />}
<br /></span><span style="color: #0000BB"></span>
</span>
</code><!-- php buffer end -->
</div>
</code>
<hr />
</div>
</div>2. Write your own (Tutorial will be later :D)<br /><br />You can change config source code of API<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">// Config name in `databases.cfg`<br />#define CONFIG_NAME "dbpp"<br /><br />// Charset, which is used in database<br />// (be careful when you change it)<br />#define CONFIG_CHARSET "utf8"<br /><br />// Auth ID<br />// (change if you know what you do)<br />#define CONFIG_AUTHID AuthId_Steam2<br /><br />// Auth ID Length<br />// (not necessary to change it)<br />#define CONFIG_STEAMLENGTH 32<br /><br />// Database Priorities<br />// (please don't set all to high if you don't need)<br />#define CONFIG_DBPRIO_JOIN DBPrio_Normal<br />#define CONFIG_DBPRIO_LEAVE DBPrio_Normal<br />#define CONFIG_DBPRIO_EVENT DBPrio_Low<br /><br />// Comment line below if loading of player data on plugin start is not needed<br />#define CONFIG_LOAD_PLAYERS_ON_INIT
<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...8">dbpp.zip</a>(18.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] DB++ (Optimized way to use queries)
Temat rozp. Adminek AMXX.PL, 07.09.2016 11:24
Brak odpowiedzi do tego tematu
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych