PDA

Просмотр полной версии : [Вопрос] Загрузка домов.



Dimon_Fanat
18.05.2020, 21:15
Всем добрый вечер. Проблема появилась с загрузкой домов на сервер.
Создаю дома, в базу данных заносятся, перезапускаю сервер, пишет загружено 2 дома как и надо, но как только захожу на сервер их нет.

Мод пишется с 0


enum Hinfo
{
hID,
hOwned,
hOwner[MAX_PLAYER_NAME],
hInt,
Float:hEnter[3],
Float:hExit[3],
hMIcon,
hPickup[2],
Text3D:hLabel,
}
new HouseInfo[MAX_HOUSES][Hinfo];
new HOME;


mysql_tquery(database,"SELECT * FROM houses ORDER BY houses.id ASC","LoadHouses","");


publics LoadHouses()
{
new rows,string[126];
cache_get_row_count(rows);
if(rows)
{
for(new id = 1; id <= rows; id++)
{
cache_get_value_name_int(id-1,"ID",HouseInfo[id][hID]);
cache_get_value_name_int(id-1,"Owned",HouseInfo[id][hOwned]);
cache_get_value_name(id-1,"Owner",HouseInfo[id][hOwner], MAX_PLAYER_NAME);
cache_get_value_name_float(id-1,"Enter1",HouseInfo[id][hEnter][0]);
cache_get_value_name_float(id-1,"Enter2",HouseInfo[id][hEnter][1]);
cache_get_value_name_float(id-1,"Enter3",HouseInfo[id][hEnter][2]);
cache_get_value_name_float(id-1,"Exit1",HouseInfo[id][hEnter][0]);
cache_get_value_name_float(id-1,"Exit2",HouseInfo[id][hEnter][1]);
cache_get_value_name_float(id-1,"Exit3",HouseInfo[id][hEnter][2]);
if(HouseInfo[id][hOwned] == 0)
{
format(string,sizeof(string),"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n{33CCFF}Уровень: {FFFF00}Нет\n{33CCFF}Цена: {FFFF00}$0",id);
HouseInfo[id][hMIcon] = CreateDynamicMapIcon(HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2],31,0xFFFFFFAA,0,-1,-1,400.0);
HouseInfo[id][hPickup][0] = CreateDynamicPickup(1273,23,HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2],-1);
HouseInfo[id][hPickup][1] = CreateDynamicCP(HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2],1.0,-1,-1,-1,3.0);
}
else if(HouseInfo[id][hOwned] == 1)
{
format(string,sizeof(string),"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n{33CCFF}Владелец: {00FF00}Нет",id);
HouseInfo[id][hMIcon] = CreateDynamicMapIcon(HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2],32,0xFFFFFFAA,0,-1,-1,400.0);
HouseInfo[id][hPickup][0] = CreateDynamicPickup(19522,23,HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2],-1);
HouseInfo[id][hPickup][1] = CreateDynamicCP(HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2],1.0,-1,-1,-1,3.0);
}
HouseInfo[id][hLabel] = Create3DTextLabel(string,0xFFFFFFFF,HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],HouseInfo[id][hEnter][2]+1,20.0,0,1);
HOME++;
}
}
printf("Загружено [%i] домов.",HOME);
return 1;
}

Pa4enka
19.05.2020, 01:21
publics LoadHouses()
{
new rows;
cache_get_row_count(rows);

if( !rows )
return true;

new string[ 126 ];
for(new id; id < rows; id++)
{
cache_get_value_name_int(id, !"ID", HouseInfo[id][hID]);
cache_get_value_name_int(id, !"Owned", HouseInfo[id][hOwned]);
cache_get_value_name(id, !"Owner", HouseInfo[id][hOwner], MAX_PLAYER_NAME);
cache_get_value_name_float(id, !"Enter1", HouseInfo[id][hEnter][0]);
cache_get_value_name_float(id, !"Enter2", HouseInfo[id][hEnter][1]);
cache_get_value_name_float(id, !"Enter3", HouseInfo[id][hEnter][2]);
cache_get_value_name_float(id, !"Exit1", HouseInfo[id][hEnter][0]);
cache_get_value_name_float(id, !"Exit2", HouseInfo[id][hEnter][1]);
cache_get_value_name_float(id, !"Exit3", HouseInfo[id][hEnter][2]);

if(HouseInfo[id][hOwned] == 0)
{
format(string, sizeof string,
"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n\
{33CCFF}Уровень: {FFFF00}Нет\n{33CCFF}Цена: {FFFF00}$0",
id
);
}
else
{
format(string,sizeof(string),"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n\
{33CCFF}Владелец: {00FF00}Нет",
id
);
}

HouseInfo[id][hMIcon] = CreateDynamicMapIcon(HouseInfo[id][hEnter][0], HouseInfo[id][hEnter][1],
HouseInfo[id][hEnter][2], !HouseInfo[id][hOwned] ? 31 : 32, 0xFFFFFFAA, 0
);
HouseInfo[id][hPickup][0] = CreateDynamicPickup(!HouseInfo[id][hOwned] ? 1273 : 19522, 23,
HouseInfo[id][hEnter][0], HouseInfo[id][hEnter][1], HouseInfo[id][hEnter][2], -1
);
HouseInfo[id][hPickup][1] = CreateDynamicCP(HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],
HouseInfo[id][hEnter][2], 1.0, -1, -1, -1, 3.0
);
HouseInfo[id][hLabel] = Create3DTextLabel(string, 0xFFFFFFFF,
HouseInfo[id][hEnter][0], HouseInfo[id][hEnter][1], HouseInfo[id][hEnter][2]+1, 20.0, 0, 1
);

HOME++;
}

printf("Загружено [%i] домов.",HOME);
return 1;
}

Dimon_Fanat
19.05.2020, 19:10
publics LoadHouses()
{
new rows;
cache_get_row_count(rows);

if( !rows )
return true;

new string[ 126 ];
for(new id; id < rows; id++)
{
cache_get_value_name_int(id, !"ID", HouseInfo[id][hID]);
cache_get_value_name_int(id, !"Owned", HouseInfo[id][hOwned]);
cache_get_value_name(id, !"Owner", HouseInfo[id][hOwner], MAX_PLAYER_NAME);
cache_get_value_name_float(id, !"Enter1", HouseInfo[id][hEnter][0]);
cache_get_value_name_float(id, !"Enter2", HouseInfo[id][hEnter][1]);
cache_get_value_name_float(id, !"Enter3", HouseInfo[id][hEnter][2]);
cache_get_value_name_float(id, !"Exit1", HouseInfo[id][hEnter][0]);
cache_get_value_name_float(id, !"Exit2", HouseInfo[id][hEnter][1]);
cache_get_value_name_float(id, !"Exit3", HouseInfo[id][hEnter][2]);

if(HouseInfo[id][hOwned] == 0)
{
format(string, sizeof string,
"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n\
{33CCFF}Уровень: {FFFF00}Нет\n{33CCFF}Цена: {FFFF00}$0",
id
);
}
else
{
format(string,sizeof(string),"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n\
{33CCFF}Владелец: {00FF00}Нет",
id
);
}

HouseInfo[id][hMIcon] = CreateDynamicMapIcon(HouseInfo[id][hEnter][0], HouseInfo[id][hEnter][1],
HouseInfo[id][hEnter][2], !HouseInfo[id][hOwned] ? 31 : 32, 0xFFFFFFAA, 0
);
HouseInfo[id][hPickup][0] = CreateDynamicPickup(!HouseInfo[id][hOwned] ? 1273 : 19522, 23,
HouseInfo[id][hEnter][0], HouseInfo[id][hEnter][1], HouseInfo[id][hEnter][2], -1
);
HouseInfo[id][hPickup][1] = CreateDynamicCP(HouseInfo[id][hEnter][0],HouseInfo[id][hEnter][1],
HouseInfo[id][hEnter][2], 1.0, -1, -1, -1, 3.0
);
HouseInfo[id][hLabel] = Create3DTextLabel(string, 0xFFFFFFFF,
HouseInfo[id][hEnter][0], HouseInfo[id][hEnter][1], HouseInfo[id][hEnter][2]+1, 20.0, 0, 1
);

HOME++;
}

printf("Загружено [%i] домов.",HOME);
return 1;
}

Так же пишет что загрузились дома 2 штуки, именно столько их сейчас в базе данных. Но на сервере совсем ничего нет в этих местах.

Pawn.Dima
21.05.2020, 11:13
А почему idx-1у тебя? В загрузке

- - - Добавлено - - -

А лучше есть тема как лучше реализовать загрузку домов на iterator и сделай так будет на много лучше

Dimon_Fanat
22.05.2020, 15:42
А почему idx-1у тебя? В загрузке

- - - Добавлено - - -

А лучше есть тема как лучше реализовать загрузку домов на iterator и сделай так будет на много лучше

idx-1 это от того что я уже загружал и 0 и 1 и idx+1 думал в чем проблема)

Pa4enka
23.05.2020, 16:57
Крашдетект молчит?

Dimon_Fanat
26.05.2020, 01:09
Крашдетект молчит?

Я разобрался в чем была проблема.
А она была вот тут)


Float:hEnter[3],

Dimon_Fanat
27.05.2020, 17:02
Еще такой вопрос. При покупке дома №1 у меня в базе данных не обновляется дом под номером 1, а когда покупаю дом 2 то в базе данных сохраняется дом 1. Можно ли как-то сделать чтоб такой каши не было. Без всяких +id или -


mysql_tquery(database,"SELECT * FROM houses ORDER BY `ID`","LoadHouses","");


publics LoadHouses()
{
new string[126];
new rows;
cache_get_row_count(rows);
if(!rows)return 1;
for(new i; i < rows; i++)
{
cache_get_value_name_int(i,!"ID",HouseInfo[i][hID]);
cache_get_value_name(i,!"Owner",HouseInfo[i][hOwner],MAX_PLAYER_NAME);
cache_get_value_name_float(i,!"Enter1",HouseInfo[i][hEnterX]);
cache_get_value_name_float(i,!"Enter2",HouseInfo[i][hEnterY]);
cache_get_value_name_float(i,!"Enter3",HouseInfo[i][hEnterZ]);
cache_get_value_name_float(i,!"Exit1",HouseInfo[i][hExitX]);
cache_get_value_name_float(i,!"Exit2",HouseInfo[i][hExitY]);
cache_get_value_name_float(i,!"Exit3",HouseInfo[i][hExitZ]);
if(GetString(HouseInfo[i][hOwner],"The State"))
{
format(string,sizeof(string),"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n{33CCFF}Уровень: {FFFF00}Нет\n{33CCFF}Цена: {FFFF00}$0",HouseInfo[i][hID]);
HouseInfo[i][hMIcon] = CreateDynamicMapIcon(HouseInfo[i][hEnterX], HouseInfo[i][hEnterY],HouseInfo[i][hEnterZ],31,0xFFFFFFAA,0,-1,-1,400.0);
}
else
{
format(string,sizeof(string),"{00FF00}Дом №%d\n{33CCFF}Класс: {FFFF00}Нет\n{33CCFF}Владелец: {00FF00}%s",HouseInfo[i][hID],HouseInfo[i][hOwner]);
}
HouseInfo[i][hPickup][0] = CreateDynamicPickup(GetString(HouseInfo[i][hOwner],"The State") ? 1273 : 19522, 23,HouseInfo[i][hEnterX],HouseInfo[i][hEnterY],HouseInfo[i][hEnterZ],-1);
HouseInfo[i][hPickup][1] = CreateDynamicCP(HouseInfo[i][hEnterX],HouseInfo[i][hEnterY],HouseInfo[i][hEnterZ],1.0,-1,-1,-1,3.0);
HouseInfo[i][hText] = Create3DTextLabel(string,0xFFFFFFFF,HouseInfo[i][hEnterX],HouseInfo[i][hEnterY],HouseInfo[i][hEnterZ]+1,20.0,0,1);
HOME++;
}
printf("Загружено [%d] домов.",HOME);
return 1;
}


CMD:h(playerid,params[])
{
if(params[0] == 0)
{
SendClientMessage(playerid,0xFFFFFFAA,"У вас нет дома.");
}
if(sscanf(params,"s[32]",params[0]))return 1;
else if(strcmp(params[0],"buy",true) == 0)
{
for(new id; id < HOME; id++)
{
if(IsPlayerInRangeOfPoint(playerid,0.8,HouseInfo[id][hEnterX],HouseInfo[id][hEnterY],HouseInfo[id][hEnterZ]))
{
if(!GetString(HouseInfo[id][hOwner],"The State"))return SendClientMessage(playerid,0xFFFFFFAA, "Дом занят!");
strmid(HouseInfo[id][hOwner],Player[playerid][pName],0,strlen(Player[playerid][pName]),MAX_PLAYER_NAME);
sql_str[0] = EOS;
mysql_format(database,sql_str,sizeof(sql_str),"UPDATE houses SET Owner = '%s' WHERE ID = %d LIMIT 1",HouseInfo[id][hOwner],id);
mysql_tquery(database,sql_str);

SetPlayerInterior(playerid,HouseInfo[id][hInt]);
SetPlayerVirtualWorld(playerid,HouseInfo[id][hID]);
SetPlayerPos(playerid,HouseInfo[id][hExitX],HouseInfo[id][hExitY],HouseInfo[id][hExitZ]);

UpdateHouse(id);
}
}
}
return 1;
}

Dimon_Fanat
27.05.2020, 21:23
Решил. Можно закрывать.