Решил вопрос с этой штукой, отдельное спасибо за наводку Schatten, она мне тоже помогла!
Минигайд, если кому интересно:
@Extdb3\extdb3-conf.ini - настраиваем
[Main]
Version = 1
Randomize Config File = false
;; Randomizes Config File after loading.
;; Recommend to turn on, if you have enabled filepatching on arma.
Allow Reset = false
;; Allows 9:RESET, usefull for development work
Thread = 0;
;; Option to force number of worker threads for extDB3.
;; Min = 2, Max = 6
[Log]
Flush = true;
;; Flush logfile after each update.
;; Option really only usefull if running DEBUG BUILD
[!!!!!]
IP = 127.0.0.1
Port = 3306
Username = ИмяПользователяSQL
Password = ПарольПользователяSQL
Database = !!!!!
Внимание! Там где восклицательные знаки, должно быть название вашей БД, причем обязательно с учетом регистра (Так же как в SQL)
Примерно так:
[MyDBNaMe]
IP = 127.0.0.1
Port = 3306
Username = arma
Password = 12345
Database = MyDBNaMe
Предположим создали таблицы и все дела....
Теперь из консоли Армы:
1. Надо установить соединение с БД -
"Extdb3" callExtension "9:ADD_DATABASE:BDNaMe";
Там где BDNaMe имя вашей базы данных, учитывая регистр (обязательно).
2. Теперь надо создать протокол, допустим 777 -
"Extdb3" callExtension "9:ADD_DATABASE_PROTOCOL:DBNaMe:SQL_CUSTOM:777:config.ini"
Тут внимание, у вас уже должен быть ini файл, некий шаблон команд.
И путь к нему должен быть такой @Extdb3\sql_custom\config.ini
PS: свой шаблон прикреплю ниже.
3. И только теперь можем оперировать с ДБ, с помощью сформированных в шаблоне команд.
В моем случае используем loadPlayer.
"Extdb3" callExtension "0:777:loadPlayer:ТутGUIDИгрокаЦифрами".
Мой шаблон, в котором как раз тот самый loadPlayer:
[Default]
Version = 1
;; Used incase there is ever a breaking change, or to inform user in log about a new feature.
;; ----------------------------------------------
;; If set to false, uses SQL instead of Prepared Statement
;; ----------------------------------------------
;; Prepared Statement = true
;; ----------------------------------------------
;; Returns InsertID, Instead of returning [1,[]] It returns [1,[<INSERTID>,[]]]
;; ----------------------------------------------
;; Return InsertID = false
; ----------------------------------------------
; 0 = Strip Bad Chars, 1 = Strip + Log Bad Chars, 2 = Return Error & Log Bad Chars
; Note: Logging on works when sending data to database.
; ----------------------------------------------
Strip Chars Mode = 0
Strip Chars = "/\|;{}<>'`"
; --------------------------------------------------------------------------------
; PLAYER SAVING AND LOADING
; --------------------------------------------------------------------------------
[newPlayer]
Return InsertID = false
Prepared Statement = true
SQL1_1 = INSERT INTO
SQL1_2 = spmc_players (p_steam64, p_money, p_name, p_stats, p_equipment, p_skills, p_experience, p_lastloc, p_joindate, p_lastactive)
SQL1_3 = VALUES
SQL1_4 = (?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)
SQL1_INPUTS = 1,2,3,4,5,6,7,8
[loadPlayer]
Return InsertID = false
Prepared Statement = true
SQL1_1 = SELECT
SQL1_2 = p_money,
SQL1_3 = p_stats,
SQL1_4 = p_equipment,
SQL1_5 = p_skills,
SQL1_6 = p_experience,
SQL1_7 = p_lastloc
SQL1_8 = FROM
SQL1_9 = spmc_players
SQL1_10 = WHERE
SQL1_11 = p_steam64 = ?
SQL1_12 = LIMIT 1
SQL1_INPUTS = 1
[saveMoney]
Return InsertID = false
Prepared Statement = true
SQL1_1 = UPDATE
SQL1_2 = spmc_players
SQL1_3 = SET
SQL1_4 = p_money = ?,
SQL1_5 = p_lastactive = CURRENT_TIMESTAMP
SQL1_6 = WHERE
SQL1_7 = p_steam64 = ?
SQL1_8 = LIMIT 1
SQL1_INPUTS = 1,2
[saveLocation]
Return InsertID = false
Prepared Statement = true
SQL1_1 = UPDATE
SQL1_2 = spmc_players
SQL1_3 = SET
SQL1_4 = p_lastloc = ?,
SQL1_5 = p_lastactive = CURRENT_TIMESTAMP
SQL1_6 = WHERE
SQL1_7 = p_steam64 = ?
SQL1_8 = LIMIT 1
SQL1_INPUTS = 1,2
[updatePlayerName]
Return InsertID = false
Prepared Statement = true
SQL1_1 = UPDATE
SQL1_2 = spmc_players
SQL1_3 = SET
SQL1_4 = p_name = ?,
SQL1_5 = p_lastactive = CURRENT_TIMESTAMP
SQL1_6 = WHERE
SQL1_7 = p_steam64 = ?
SQL1_8 = LIMIT 1
SQL1_INPUTS = 1,2
[savePlayerStats]
Return InsertID = false
Prepared Statement = true
SQL1_1 = UPDATE
SQL1_2 = spmc_players
SQL1_3 = SET
SQL1_4 = p_stats = ?,
SQL1_5 = p_lastactive = CURRENT_TIMESTAMP
SQL1_6 = WHERE
SQL1_7 = p_steam64 = ?
SQL1_8 = LIMIT 1
SQL1_INPUTS = 1,2
[savePlayerEquipment]
Return InsertID = false
Prepared Statement = true
SQL1_1 = UPDATE
SQL1_2 = spmc_players
SQL1_3 = SET
SQL1_4 = p_equipment = ?,
SQL1_5 = p_lastactive = CURRENT_TIMESTAMP
SQL1_6 = WHERE
SQL1_7 = p_steam64 = ?
SQL1_8 = LIMIT 1
SQL1_INPUTS = 1,2
[saveSkills]
Return InsertID = false
Prepared Statement = true
SQL1_1 = UPDATE
SQL1_2 = spmc_players
SQL1_3 = SET
SQL1_4 = p_experience = ?,
SQL1_5 = p_skills = ?,
SQL1_6 = p_lastactive = CURRENT_TIMESTAMP
SQL1_7 = WHERE
SQL1_8 = p_steam64 = ?
SQL1_9 = LIMIT 1
SQL1_INPUTS = 1,2,3
[saveExperience]
Return InsertID = false
Prepared Statement = true
SQL1_1 = UPDATE
SQL1_2 = spmc_players
SQL1_3 = SET
SQL1_4 = p_experience = ?,
SQL1_5 = p_lastactive = CURRENT_TIMESTAMP
SQL1_6 = WHERE
SQL1_7 = p_steam64 = ?
SQL1_8 = LIMIT 1
SQL1_INPUTS = 1,2
[savePlayerFull]
Return InsertID = false
Prepared Statement = true
SQL1_1 = UPDATE
SQL1_2 = spmc_players
SQL1_3 = SET
SQL1_4 = p_name = ?,
SQL1_5 = p_stats = ?,
SQL1_6 = p_equipment = ?,
SQL1_7 = p_money = ?,
SQL1_8 = p_skills = ?,
SQL1_9 = p_experience = ?,
SQL1_10 = p_lastloc = ?,
SQL1_11 = p_lastactive = CURRENT_TIMESTAMP
SQL1_12 = WHERE
SQL1_13 = p_steam64 = ?
SQL1_14 = LIMIT 1
SQL1_INPUTS = 1,2,3,4,5,6,7,8
Надеюсь это кому-то поможет.))
Если читая мой "Гуйд" ладонь ложиться на лицо, прошу простить, хотел как лучше))
PS если надо подробнее, пишите в ЛС
Edited by ReXcOr, 09 January 2018 - 17:13.