[MySQL] Ошибка с /gzcolor

Статус
В этой теме нельзя размещать новые ответы.

Seeka

Интересующийся
Пользователь
Регистрация
14 Дек 2018
Сообщения
42
Реакции
0
Доброго времени суток, столкнулся с проблемой, что при перекраски территории красится другая территория
То есть, в игре красится все хорошо, в базу данных переносится на другой ID и после рестарта если я покрасил на зону 54, то она красится на 55
Вот сама команда -
CMD:gzcolor(playerid, params[])
{
if(GetPlayerAdminEx(playerid) < 4) return 1;

extract params -> new gang_id; else return SendClientMessage(playerid, 0xCECECEFF, "Используйте: /gzcolor [id банды] (0-Свободная зона, 1-Grove Gang, 2-Vagos Gang, 3-Ballas Gang, 4-Aztecas Gang)");

if(!(0 <= gang_id <= 4))
return SendClientMessage(playerid, 0xCECECEFF, "Банды: 0-Свободная зона, 1-Grove Gang, 2-Vagos Gang, 3-Ballas Gang, 4-Aztecas Gang");

new gang_zone_id;

for(new idx; idx < g_gangzone_loaded; idx ++)
{
if(!IsPlayerInDynamicArea(playerid, GetGangZoneData(idx, GZ_AREA))) continue;

gang_zone_id = idx;
break;
}

if(gang_zone_id == 1)
return SendClientMessage(playerid, 0xCECECEFF, "Вы должны находиться на нужной территории");

SetGangZoneData(gang_zone_id, GZ_GANG, gang_id);
SaveGangZone(gang_zone_id);

GangZoneShowForAll(GetGangZoneData(gang_zone_id, GZ_ZONE), gang_zone_colors[ GetGangZoneData(gang_zone_id, GZ_GANG) ]);

new fmt_text[75];

SendClientMessage(playerid, -1, "Вы изменили банду, владеющую данной территорией");

format(fmt_text, sizeof fmt_text, "[A] %s[%d] изменил банду у территории №%d на %d", GetPlayerNameEx(playerid), playerid, gang_zone_id, gang_id);
SendMessageToAdmins(fmt_text, 0xCECECEFF);

format(fmt_text, sizeof fmt_text, "Изменил банду у территории №%d на %d", gang_zone_id, gang_id);
SendLog(playerid, LOG_TYPE_ADMIN_ACTION, fmt_text);

return 1;
}
 

igor_chupin

Специалист
Пользователь
Регистрация
3 Мар 2012
Сообщения
601
Реакции
292
SetGangZoneData(gang_zone_id, GZ_GANG, gang_id);
SaveGangZone(gang_zone_id);

И загрузку скинь
 

Seeka

Интересующийся
Пользователь
Регистрация
14 Дек 2018
Сообщения
42
Реакции
0
public: LoadGangZones()
{
new idx;
new Cache: result, rows;

result = mysql_query(mysql, "SELECT * FROM gangzone", true);
rows = cache_num_rows();

if(rows > MAX_GZ)
{
rows = MAX_GZ;
print("[GangZones]: DB rows > MAX_GZ");
}

if(rows)
{
for(idx = 0; idx < rows; idx ++)
{
SetGangZoneData(idx, GZ_MIN_X, cache_get_field_content_float(idx, "min_x"));
SetGangZoneData(idx, GZ_MIN_Y, cache_get_field_content_float(idx, "min_y"));
SetGangZoneData(idx, GZ_MAX_X, cache_get_field_content_float(idx, "max_x"));
SetGangZoneData(idx, GZ_MAX_Y, cache_get_field_content_float(idx, "max_y"));

SetGangZoneData(idx, GZ_GANG, cache_get_field_content_int(idx, "fraction"));

// ----------------------------------------------------------------------------------
gangzone[idx][GZ_ZONE] = GangZoneCreate
(
GetGangZoneData(idx, GZ_MIN_X),
GetGangZoneData(idx, GZ_MIN_Y),
GetGangZoneData(idx, GZ_MAX_X),
GetGangZoneData(idx, GZ_MAX_Y)
);

// ----------------------------------------------------------------------------------
gangzone[idx][GZ_AREA] = CreateDynamicRectangle
(
GetGangZoneData(idx, GZ_MIN_X),
GetGangZoneData(idx, GZ_MIN_Y),
GetGangZoneData(idx, GZ_MAX_X),
GetGangZoneData(idx, GZ_MAX_Y)
);
}
}

g_gangzone_loaded = rows;
cache_delete(result);

printf("[GangZones]: Гангзон загружено: %d", g_gangzone_loaded);
}

stock SaveGangZone(idx)
{
new query[55];

mysql_format(mysql, query, sizeof query, "UPDATE gangzone SET fraction=%d WHERE id=%d", GetGangZoneData(idx, GZ_GANG), idx + 1);
mysql_query(mysql, query, false);
}

#define GetGangZoneData(%0,%1) gangzone[%0][%1]
#define SetGangZoneData(%0,%1,%2) gangzone[%0][%1] = %2
 

Seeka

Интересующийся
Пользователь
Регистрация
14 Дек 2018
Сообщения
42
Реакции
0
В базе данных все нормально, все расставлено как и в загрузке
 

bogdasha12

Участник форума
Пользователь
Регистрация
1 Фев 2019
Сообщения
105
Реакции
2
В сейве есть idx +1, попробуйте убрать +1.
 

Seeka

Интересующийся
Пользователь
Регистрация
14 Дек 2018
Сообщения
42
Реакции
0
Не помогло
 

bogdasha12

Участник форума
Пользователь
Регистрация
1 Фев 2019
Сообщения
105
Реакции
2
Когда вызываешь сохранение сделай -1.
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи онлайн

Реклама

Сверху