PDA

Просмотр полной версии : [Вопрос] ГангЗоны



ALIT13
08.04.2018, 00:37
Не загружает ганг зоны почему не пойму переводил с

forward load_gz();
public load_gz()
{
new rows;
cache_get_row_count(rows);
if(rows)
{
for(new idx = 0; idx < rows; idx++)
{
cache_get_value_name_int(idx,"id", gangzone_Info[idx][gID]);
cache_get_value_name_float(idx, "zone_x", gangzone_Info[idx][gCoords][0]);
cache_get_value_name_float(idx, "zone_y", gangzone_Info[idx][gCoords][1]);
cache_get_value_name_float(idx, "zone_xM", gangzone_Info[idx][gCoords][2]);
cache_get_value_name_float(idx, "zone_yM", gangzone_Info[idx][gCoords][3]);
cache_get_value_name_int(idx, "fraction", gangzone_Info[idx][gang_terr]);
TOTALGZ++;
GangZone[idx] = GangZoneCreate(gangzone_Info[idx][gCoords][0],gangzone_Info[idx][gCoords][1],gangzone_Info[idx][gCoords][2],gangzone_Info[idx][gCoords][3]);
ZoneOnBattle[idx] = 0;
GZSafeTime[idx] = 0;
}
}
printf("[%i штук] >> загружены gangzone", TOTALGZ);
return 1;
}

На


publics: load_gz()
{
new rows;
cache_get_row_count(rows);
if(rows)
{
for(new idx = 0; idx < rows; idx++)
{
gangzone_Info[idx][gID] = cache_get_field_content_int(idx,"id");
gangzone_Info[idx][gCoords][0] = cache_get_field_content_float(idx, "zone_x");
gangzone_Info[idx][gCoords][1] = cache_get_field_content_float(idx, "zone_y");
gangzone_Info[idx][gCoords][2] = cache_get_field_content_float(idx, "zone_xM");
gangzone_Info[idx][gCoords][3] = cache_get_field_content_float(idx, "zone_yM");
gangzone_Info[idx][gang_terr] = cache_get_field_content_int(idx, "fraction");

TOTALGZ++;
GangZone[idx] = GangZoneCreate(gangzone_Info[idx][gCoords][0],gangzone_Info[idx][gCoords][1],gangzone_Info[idx][gCoords][2],gangzone_Info[idx][gCoords][3]);
ZoneOnBattle[idx] = 0;
GZSafeTime[idx] = 0;
}
}
printf("[%i штук] >> загружены gangzone", TOTALGZ);
return 1;
}

DeimoS
08.04.2018, 00:55
Лучше вот так

publics: load_gz()
{
cache_get_row_count(TOTALGZ);
if(TOTALGZ)
{
new Float:min_x,
Float:min_y,
Float:max_x,
Float:max_y;
for(new idx = 0; idx < TOTALGZ; idx++)
{
gangzone_Info[idx][gID] = cache_get_field_content_int(idx,"id");
min_x = gangzone_Info[idx][gCoords][0] = cache_get_field_content_float(idx, "zone_x");
min_y = gangzone_Info[idx][gCoords][1] = cache_get_field_content_float(idx, "zone_y");
max_x = gangzone_Info[idx][gCoords][2] = cache_get_field_content_float(idx, "zone_xM");
max_y = gangzone_Info[idx][gCoords][3] = cache_get_field_content_float(idx, "zone_yM");
gangzone_Info[idx][gang_terr] = cache_get_field_content_int(idx, "fraction");

GangZone[idx] = GangZoneCreate(min_x, min_y, max_x, max_y);
//ZoneOnBattle[idx] = GZSafeTime[idx] = 0; // Если загружаешь зоны только при старте сервера (рестарте), то эта строка не нужна
}
}
printf("[%i штук] >> загружены gangzone", TOTALGZ);
return 1;
}
Но проблемы в коде пока не видно. Покажи логи MySQL и если в них ничего нет, залогируй данные, которые передаются в TOTALGZ (сразу после cache_get_row_count) и переменные с координатами (перед созданием гангзоны)

ALIT13
08.04.2018, 10:45
[14:03:05] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' Pohodka=0, Member=0, Leader=0, Rank=0, Mute=0 WHERE Name='Edi_Alvares'' at line 1
[14:03:06] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' Pohodka=0, Member=0, Leader=0, Rank=0, Mute=0 WHERE Name='Edi_Alvares'' at line 1
[14:03:07] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' Pohodka=0, Member=0, Leader=0, Rank=0, Mute=0 WHERE Name='Edi_Alvares'' at line 1


stock SavePlayer(playerid)
{
if(Logged[playerid] == true || IsPlayerConnected(playerid))
{
new query[500] = "UPDATE "table_account" SET ";

format(query, sizeof(query), "%s Skin=%d,", query, PlayerInfo[playerid][pSkin]);//7+3
format(query, sizeof(query), "%s Sex=%d,", query, PlayerInfo[playerid][pSex]);//6+1
format(query, sizeof(query), "%s Cash=%d,", query, PlayerInfo[playerid][pCash]);//7+11
format(query, sizeof(query), "%s Level=%d,", query, PlayerInfo[playerid][pLevel]);//8+11
format(query, sizeof(query), "%s Admin=%d,", query, PlayerInfo[playerid][pAdmin]);//8+2
format(query, sizeof(query), "%s Rasa=%d,", query, PlayerInfo[playerid][pRasa]);//7+2
format(query, sizeof(query), "%s Gorod=%d,", query, PlayerInfo[playerid][pGorod]);//7+1
format(query, sizeof(query), "%s Exp=%d,", query, PlayerInfo[playerid][pExp]);
format(query, sizeof(query), "%s AdminKey=%s,", query, PlayerInfo[playerid][pAdminKey]);

format(query, sizeof(query), "%s Pohodka=%d,", query, PlayerInfo[playerid][pPohodka]);
format(query, sizeof(query), "%s Member=%d,", query, PlayerInfo[playerid][pMember]);
format(query, sizeof(query), "%s Leader=%d,", query, PlayerInfo[playerid][pLeader]);
format(query, sizeof(query), "%s Rank=%d,", query, PlayerInfo[playerid][pRank]);
format(query, sizeof(query), "%s Mute=%d", query, PlayerInfo[playerid][pMute]);

format(query, sizeof(query), "%s WHERE Name='%s'", query, GN(playerid));//14+MAX_PLAYER_NAME
mysql_function_query(mysql_connection, query, false, "", "");
}
else printf("Îøèáêà ñîõðàí¸íèÿ.");
return true;
}

DeimoS
08.04.2018, 11:04
Спецификатор %s нужно обрамлять в апострофы, дабы запрос понимал где началась строка и где она закончилась.
И ты каждую секунду сохраняешь аккаунт что ли? О_о Да ещё и сохраняешь его для неавторизированных пользователей

ALIT13
08.04.2018, 11:06
в начале format(query, sizeof(query), "%s Skin=%d,",

Так

stock SavePlayer(playerid)
{
if(Logged[playerid] == true)
{
new query[500] = "UPDATE "table_account" SET ";

format(query, sizeof(query), "%s `Skin` = '%d',", query, PlayerInfo[playerid][pSkin]);//7+3
format(query, sizeof(query), "%s `Sex` = '%d',", query, PlayerInfo[playerid][pSex]);//6+1
format(query, sizeof(query), "%s `Cash` = '%d',", query, PlayerInfo[playerid][pCash]);//7+11
format(query, sizeof(query), "%s `Level` = '%d',", query, PlayerInfo[playerid][pLevel]);//8+11
format(query, sizeof(query), "%s `Admin` = '%d',", query, PlayerInfo[playerid][pAdmin]);//8+2
format(query, sizeof(query), "%s `Rasa` = '%d',", query, PlayerInfo[playerid][pRasa]);//7+2
format(query, sizeof(query), "%s `Gorod` = '%d',", query, PlayerInfo[playerid][pGorod]);//7+1
format(query, sizeof(query), "%s `Exp` = '%d',", query, PlayerInfo[playerid][pExp]);
format(query, sizeof(query), "%s `AdminKey` = '%s',", query, PlayerInfo[playerid][pAdminKey]);

format(query, sizeof(query), "%s `Pohodka` = '%d',", query, PlayerInfo[playerid][pPohodka]);
format(query, sizeof(query), "%s `Member` = '%d',", query, PlayerInfo[playerid][pMember]);
format(query, sizeof(query), "%s `Leader` = '%d',", query, PlayerInfo[playerid][pLeader]);
format(query, sizeof(query), "%s `Rank` = '%d',", query, PlayerInfo[playerid][pRank]);
format(query, sizeof(query), "%s `Mute` = '%d'", query, PlayerInfo[playerid][pMute]);

format(query, sizeof(query), "%s WHERE Name = '%s'", query, GN(playerid));//14+MAX_PLAYER_NAME
mysql_function_query(mysql_connection, query, false, "", "");
}
else printf("Ошибка сохранёния.");
return true;
}

В базе записывает всё а ошибка выдаётся в логах мускл


[14:03:05] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' Pohodka=0, Member=0, Leader=0, Rank=0, Mute=0 WHERE Name='Edi_Alvares'' at line 1
[14:03:06] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' Pohodka=0, Member=0, Leader=0, Rank=0, Mute=0 WHERE Name='Edi_Al

DeimoS
08.04.2018, 11:35
Эмм, это ошибка не с этого запроса, если вообще не старая ошибка. По форматированию посмотри

ALIT13
08.04.2018, 12:11
Всё усёк , ну с гангзонами не пойму не загружает всё же в логах не чего нету

DeimoS
08.04.2018, 12:16
Ну так логирование сделай, как сказал

ALIT13
08.04.2018, 12:23
перед cache_get_row_count(TOTALGZ); ?
printf("%i запись создания", TOTALGZ);

DeimoS
08.04.2018, 12:29
publics: load_gz()
{
cache_get_row_count(TOTALGZ);
printf("\n\n\nTOTALGZ = %d", TOTALGZ);
if(TOTALGZ)
{
new Float:min_x,
Float:min_y,
Float:max_x,
Float:max_y;
for(new idx = 0; idx < TOTALGZ; idx++)
{
gangzone_Info[idx][gID] = cache_get_field_content_int(idx,"id");
min_x = gangzone_Info[idx][gCoords][0] = cache_get_field_content_float(idx, "zone_x");
min_y = gangzone_Info[idx][gCoords][1] = cache_get_field_content_float(idx, "zone_y");
max_x = gangzone_Info[idx][gCoords][2] = cache_get_field_content_float(idx, "zone_xM");
max_y = gangzone_Info[idx][gCoords][3] = cache_get_field_content_float(idx, "zone_yM");
gangzone_Info[idx][gang_terr] = cache_get_field_content_int(idx, "fraction");

printf("%d) %f, %f, %f, %f", idx, min_x, min_y, max_x, max_y);
GangZone[idx] = GangZoneCreate(min_x, min_y, max_x, max_y);
//ZoneOnBattle[idx] = GZSafeTime[idx] = 0; // Если загружаешь зоны только при старте сервера (рестарте), то эта строка не нужна
}
}
printf("[%i штук] >> загружены gangzone", TOTALGZ);
return 1;
}

ALIT13
08.04.2018, 12:36
TOTALGZ = 0
[15:36:00] [0 штук] >> загружены gangzone

DeimoS
08.04.2018, 13:16
Ну так значит в таблице с гангзонами нет строк, не?
Покажи как запрос отправляешь и содержимое таблицы заскринь

ALIT13
08.04.2018, 13:49
http://ihost.pro-pawn.ru/image.php?di=0GFP
http://ihost.pro-pawn.ru/image.php?di=5A7H

pawnoholic
08.04.2018, 13:52
А макрос publics и table_gangzone?

P.S в конце не обязательно ставить пустые кавычки ""

И включи LOG_ALL

ALIT13
08.04.2018, 14:02
#define publics:%0(%1) forward %0(%1); public %0(%1)


#define table_gangzone "gangzone"

DeimoS
08.04.2018, 14:31
mysql_log(LOG_ALL);
в начало OnGameModeInit добавь и после запуска сервера скинь содержимое mysql_log

ALIT13
08.04.2018, 14:43
[17:42:28] [DEBUG] mysql_connect - host: "localhost", user: "root", database: "1ns1de", password: "****", port: 3306, autoreconnect: true, pool_size: 2
[17:42:28] [DEBUG] CMySQLHandle::Create - creating new connection..
[17:42:28] [DEBUG] CMySQLHandle::CMySQLHandle - constructor called
[17:42:28] [DEBUG] CMySQLHandle::Create - connection created (id: 1)
[17:42:28] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[17:42:29] [DEBUG] CMySQLConnection::Connect - connection was successful
[17:42:29] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[17:42:29] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[17:42:29] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[17:42:29] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[17:42:29] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM gangzone", callback: "load_gz", format: "(null)"
[17:42:29] [DEBUG] mysql_errno - connection: 1
[17:42:30] [DEBUG] CMySQLConnection::Connect - connection was successful
[17:42:30] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[17:42:30] [DEBUG] CMySQLConnection::Connect - connection was successful
[17:42:30] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[17:42:30] [DEBUG] CMySQLConnection::Connect - connection was successful
[17:42:30] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[17:42:30] [DEBUG] CMySQLQuery::Execute[load_gz] - starting query execution
[17:42:30] [DEBUG] CMySQLQuery::Execute[load_gz] - query was successfully executed within 2.362 milliseconds
[17:42:30] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[17:42:30] [DEBUG] Calling callback "load_gz"..
[17:42:30] [DEBUG] cache_get_row_count - connection: 0
[17:42:30] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called

DeimoS
08.04.2018, 14:47
А ты точно данные хранишь на локальном сервере, а не на хосте?
Скрин содержимого с локального хоста делал?

ALIT13
08.04.2018, 14:53
Не понял , я её вырезал с готового мода систему в Localhost

DeimoS
08.04.2018, 14:55
В общем, покажи пусть до таблицы с гангзонами в базе данных.
Ты, похоже, подключаешься не к той базе данных

ALIT13
08.04.2018, 14:57
http://ihost.pro-pawn.ru/image.php?di=M589

pawnoholic
08.04.2018, 15:05
#define table_gangzone "gangzone"

Навряд ли поможет, но мало ли...


#define table_gangzone "`gangzone`"

А вообще для начала стоило бы обновить MySQL плагин до последней версии

ALIT13
08.04.2018, 15:06
Мне с r39-4 Нравится работать

DeimoS
08.04.2018, 17:39
Повторяю ещё раз: к той ли ты базе данных подключаешься, в какой смотришь данные через браузер. Все запросы нормальные

ALIT13
08.04.2018, 18:11
В той подключаюсь Lovalhost же как может он подключаться к другой базе ? данные же вписаны от локалки

DeimoS
08.04.2018, 21:29
Ну выполни запрос

SELECT * FROM gangzone
в phpmyadmin


Возможно (это, собственно, последний из вариантов, если ты не перепутал БД), причина в том, что, судя по логам, у тебя несколько раз терялась связь с базой

[17:42:29] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[17:42:29] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[17:42:29] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[17:42:30] [DEBUG] CMySQLConnection::Connect - connection was successful
[17:42:30] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[17:42:30] [DEBUG] CMySQLConnection::Connect - connection was successful
[17:42:30] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[17:42:30] [DEBUG] CMySQLConnection::Connect - connection was successful
[17:42:30] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
Но так как ты на старой версии плагина сидишь, я не могу подсказать тебе в чём проблема.

pawnoholic
08.04.2018, 21:51
https://i.imgur.com/0IphadF.png?1

Источник: Хабрахабар

ALIT13
09.04.2018, 14:22
Проблему решил перевёл мод полностью на R41 и ГАНЗОНЫ ПОЯВИЛИСЬ ОШИБКИ ИСЧЕЗЛИ