Cześć,
zmieniam zapis z nVault na SQL w codmodzie (Przekładam zapis od R3X ) i napotkałem sie z pewna przeszkodą.
Mianowicie tworzą mi sie tylko 2 tabelki zamiast 3.
if(!gTuple){ gTuple = loadConnectionTuple(); return; } new error, szError[128]; new Handle:hConn = SQL_Connect(gTuple, error, szError, 127); if(error){ log_amx("Error: %s", szError); return; } new Handle:query; query = SQL_PrepareQuery(hConn, "CREATE TABLE IF NOT EXISTS `players`( \ pid INT UNSIGNED AUTO_INCREMENT, \ name VARCHAR(32) NOT NULL, \ steamid VARCHAR(32) NOT NULL, \ ip VARCHAR(32) NOT NULL, \ PRIMARY KEY(pid) \ )"); SQL_Execute(query); SQL_FreeHandle(query); query = SQL_PrepareQuery(hConn, "CREATE TABLE IF NOT EXISTS `classes`( \ cid INT UNSIGNED AUTO_INCREMENT, \ name VARCHAR(32), \ PRIMARY KEY(cid) \ )"); SQL_Execute(query); SQL_FreeHandle(query); copy(gszQuery, charsmax(gszQuery), "CREATE TABLE IF NOT EXISTS `player_data`( \ pid INT UNSIGNED NOT NULL, \ cid INT UNSIGNED NOT NULL, \ xp INT UNSIGNED NOT NULL DEFAULT 0, \ level INT UNSIGNED NOT NULL DEFAULT 1, \ PRIMARY KEY(pid, cid), "); add(gszQuery, charsmax(gszQuery), "intelligence INT UNSIGNED NOT NULL DEFAULT 0, \ health INT UNSIGNED NOT NULL DEFAULT 0, \ strength INT UNSIGNED NOT NULL DEFAULT 0, \ stamina INT UNSIGNED NOT NULL DEFAULT 0, \ dmg INT UNSIGNED NOT NULL DEFAULT 0, \ exp INT UNSIGNED NOT NULL DEFAULT 0, \ kasa INT UNSIGNED NOT NULL DEFAULT 0, \ kryt INT UNSIGNED NOT NULL DEFAULT 0, \ rege INT UNSIGNED NOT NULL DEFAULT 0, \ grav INT UNSIGNED NOT NULL DEFAULT 0, "); add(gszQuery, charsmax(gszQuery), "INDEX (pid), \ FOREIGN KEY (pid) \ REFERENCES `players`(pid) \ ON UPDATE CASCADE \ ON DELETE CASCADE, \ INDEX (cid), \ FOREIGN KEY (cid) \ REFERENCES `classes`(cid) \ ON UPDATE CASCADE \ ON DELETE CASCADE \ )"); query = SQL_PrepareQuery(hConn, gszQuery); SQL_Execute(query); SQL_FreeHandle(query); SQL_FreeHandle(hConn); //Mass cids load SQL_ThreadQuery(gTuple, "handleSelectClasses", "SELECT * FROM `classes`"); } stock SQL_PrepareString(const szQuery[], szOutPut[], size){ copy(szOutPut, size, szQuery); replace_all(szOutPut, size, "'", "\'"); replace_all(szOutPut,size, "`", "\`"); } stock SQL_FormatQuery(const szQuery[], ...){ vformat(gszQuery, charsmax(gszQuery), szQuery, 2); } Handle:loadConnectionTuple(){ static szFile[196]; get_configsdir(szFile, 195); add(szFile, 195, "/cod-mysql.ini"); new szHost[32] = "localhost"; new szUser[32] = "root"; new szPass[32] = "root" new szDB[32] = "codmod"; new szKey[32]; new fp = fopen(szFile, "rt"); if(fp) while(!feof(fp)){ fgets(fp, szFile, 195); trim(szFile); if(szFile[0] == ';') continue; parse(szFile, szKey, 31, szFile, 64); trim(szKey); trim(szFile); if(equali(szKey, "host")) copy(szHost, 31, szFile); else if(equali(szKey, "user")) copy(szUser, 31, szFile); else if(equali(szKey, "pass")) copy(szPass, 31, szFile); else if(equali(szKey, "db")) copy(szDB, 31, szFile); } return SQL_MakeDbTuple(szHost, szUser, szPass, szDB);
Nie powstaje tabelka player_data chyba że usune nowe statystyki wtedy owszem powstaje lecz jest pusta tylko tabela sie tworzy.
Czy ma ktoś jakiś pomysł ?