01.04.2018, 00:31
(This post was last modified: 04.06.2018, 22:47 by Profesores.)
![[Image: 56984533031919738211.png]](https://iv.pl/images/56984533031919738211.png)
How to load module:
Add to config
Code:
<module src="SQLite.dll" type="server" /> // For windows
<module src="SQLite.so" type="server" /> // For linux
Functions:
userpointer handler = sqlite3_openDB(string dBname);
bool result = sqlite3_closeDB(userpointer handler);
bool result = sqlite3_exec(userpointer handler, string query);
bool result = sqlite3_execSelect(userpointer handler, string data, string query);
string errMsg = sqlite3_errmsg(userpointer handler);
integer errCode = sqlite3_errcode(userpointer handler);
string errStr = sqlite3_errstr(integer errCode);
Callbacks:
sqlite3_onSelect(string data*, table assocTable);
Example usage:
Squirrel Script
- local db;
-
- addEventHandler("onInit", function()
- {
- initAntyCheat(true);
-
- dB = sqlite3_openDB("server.db");
- });
-
- addEventHandler("onPlayerCommand", function(pid, cmd, params)
- {
- switch(cmd)
- {
- case "saveme":
- saveAccount(pid);
- break;
-
- case "loadme":
- loadAccount(pid);
- break;
- };
- });
-
- addEventHandler("sqlite3_onSelect", function(wtfIT, assoc)
- {
- local subStrings = split(wtfIT, "_");
-
- switch(subStrings[0])
- {
- case "la":
- {
- giveItem(subStrings[1].tointeger(), Items.id(assoc["instance"]), assoc["amount"].tointeger());
- };
- };
- });
-
- function saveAccount(pid)
- {
- local equipment = getEquipment(pid); //it's function from my anty-cheat (available from forum)
-
- local result = sqlite3_exec(dB, format("%s%s';", "SELECT id FROM 'items_", getPlayerName(pid)));
-
- if(result != true)
- {
- sendMessageToPlayer(pid, 0, 255, 0, "(SQLITE3): Save EQ started..");
-
- sqlite3_exec(dB, format("CREATE TABLE 'items_%s' ( `id` INTEGER PRIMARY KEY AUTOINCREMENT, `instance` TEXT, `amount` INTEGER );", getPlayerName(pid)));
-
- foreach(k, v in equipment)
- {
- if(typeof Items.name(v[0]) == "string")
- {
- result = sqlite3_exec(dB, format("INSERT INTO 'items_%s' (`instance`, `amount`) VALUES ('%s', %d);", getPlayerName(pid), Items.name(v[0]), v[1]));
-
- if(result != true)
- {
- sendMessageToPlayer(pid, 255, 0, 0, "(SQLITE3): Unexpected error in save eq.");
-
- LogString("database", format("SQLITE3 error in save account: '%s'", getPlayerName(pid)));
-
- return 1;
- };
- }
- else
- {
- LogString("database", format("NULL VALUE IN EQ: '%s'", getPlayerName(pid)));
-
- return 1;
- };
- };
-
- sendMessageToPlayer(pid, 0, 255, 0, "(SQLITE3): Equipment has been successfully saved");
- }
- else
- {
- sendMessageToPlayer(pid, 0, 255, 0, "(SQLITE3): Save EQ started.");
-
- sqlite3_exec(dB, format("DELETE FROM 'items_%s';", getPlayerName(pid)));
-
- foreach(k, v in equipment)
- {
- if(typeof Items.name(v[0]) == "string")
- {
- result = sqlite3_exec(dB, format("INSERT INTO 'items_%s' (`instance`, `amount`) VALUES ('%s', %d);", getPlayerName(pid), Items.name(v[0]), v[1]));
-
- if(result != true)
- {
- sendMessageToPlayer(pid, 255, 0, 0, "(SQLITE3): Unexpected error in save eq.");
-
- LogString("database", format("SQLITE3 error in save account: '%s'", getPlayerName(pid)));
-
- return 1;
- };
- }
- else
- {
- LogString("database", format("NULL VALUE IN EQ: '%s'", getPlayerName(pid)));
-
- return 1;
- };
- };
-
- sendMessageToPlayer(pid, 0, 255, 0, "(SQLITE3): Equipment has been successfully saved");
- };
- };
-
- function loadAccount(pid)
- {
- local result = sqlite3_exec(dB, format("SELECT id FROM 'items_%s';", getPlayerName(pid)));
-
- if(result != true)
- {
- sendMessageToPlayer(pid, 255, 0, 0, "(SQLITE3): Your account doesn't exist in server database.");
-
- LogString("database", format("%s try to load data from doesn't exist account", getPlayerName(pid)));
- }
- else
- {
- clearInventory(pid); //it's from my AC
- callClientFunc(pid, "_clearInventory"); //it's from my AC
-
- sqlite3_execSelect(dB, "la_" + pid, format("SELECT * FROM 'items_%s';", getPlayerName(pid)));
-
- sendMessageToPlayer(pid, 0, 255, 0, "(SQLITE3): Equipment has been successfully loaded.");
- };
- };
0.2 Download:
Binares: https://bitbucket.org/Profesores/sqsqlite/downloads/
Source code: https://bitbucket.org/Profesores/sqsqlite/src
* - Data provided in the 2th argument of sqlite3_execSelect()