PDA

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



vovandolg
11.01.2016, 19:29
Вот допустим у меня 2 кода есть они похожи немного вначале загрузка бизнесов и заправок,
суть одна и та же должна быть, и в БД таблицы построены тоже схожим методом:

publics: LoadSBizz()
{
static rows, fields;
cache_get_data(rows, fields);
new temp[64],string2[360],i=0;
if(rows)
{
for(new he = 0;he < rows; he++)
{
cache_get_row(he, 0, temp), SBizzInfo[he][sID] = strval(temp);
cache_get_row(he, 1, temp), SBizzInfo[he][sOwned] = strval(temp);
cache_get_row(he, 2, temp), strmid(SBizzInfo[he][sOwner], temp, 0, strlen(temp), 255);
cache_get_row(he, 3, temp), strmid(SBizzInfo[he][sMessage], temp, 0, strlen(temp), 255);
cache_get_row(he, 4, temp), SBizzInfo[he][sEntranceX] = floatstr(temp);
cache_get_row(he, 5, temp), SBizzInfo[he][sEntranceY] = floatstr(temp);
cache_get_row(he, 6, temp), SBizzInfo[he][sEntranceZ] = floatstr(temp);
cache_get_row(he, 7, temp), SBizzInfo[he][sBuyPrice] = strval(temp);
cache_get_row(he, 8, temp), SBizzInfo[he][sLocked] = strval(temp);
cache_get_row(he, 9, temp), SBizzInfo[he][sPrice] = strval(temp);
cache_get_row(he, 10, temp), SBizzInfo[he][sBenz] = strval(temp);
cache_get_row(he, 11, temp), SBizzInfo[he][sPriceBenz] = strval(temp);
cache_get_row(he, 12, temp), SBizzInfo[he][sTill] = strval(temp);
i++;
if(SBizzInfo[he][sOwned] == 0)
{
format(string2, sizeof(string2), "{FFFF00}%s\n{FFFFFF}Цена: {32CD32}%d{FFFFFF} вирт\n\n\n[{FF0000}Заправка не работает{FFFFFF}]",SBizzInfo[he][sMessage],SBizzInfo[he][sBuyPrice]);
SBizzInfo[he][sLocked] = 1;
}
else
{
if(SBizzInfo[he][sLocked] == 0) format(string2, sizeof(string2), "{FFFF00}%s\n{FFFFFF}Владелец: {32CD32}%s\nБензин: %d/10000\nСтоимость: %d вирт.\n\n{FFFFFF}[{32CD32}Заправка работает{FFFFFF}]",SBizzInfo[he][sMessage],SBizzInfo[he][sOwner],SBizzInfo[he][sBenz],SBizzInfo[he][sPriceBenz]);
else format(string2, sizeof(string2), "{FFFF00}%s\n{FFFFFF}Владелец: {32CD32}%s\nБензин: %d/10000\nСтоимость: %d вирт.\n\n{FFFFFF}[{FF0000}Заправка не работает{FFFFFF}]",SBizzInfo[he][sMessage],SBizzInfo[he][sOwner],SBizzInfo[he][sBenz],SBizzInfo[he][sPriceBenz]);
}
SBizzInfo[he][sLabel] = Create3DTextLabel(string2,COLOR_YELLOW,SBizzInfo[he][sEntranceX], SBizzInfo[he][sEntranceY], SBizzInfo[he][sEntranceZ],20.0,0,1);
SBizzInfo[he][sIcon] = CreateDynamicMapIcon(SBizzInfo[he][sEntranceX], SBizzInfo[he][sEntranceY], SBizzInfo[he][sEntranceZ], 42, COLOR_WHITE, 0, -1, -1, 50.0);
}
printf("[ %d ] Заправки успешно загружены.",i);
}
else printf("Заправки не загружены.");
return true;
}
И вот вопрос почему при данной загрузке меняется положение заправок и их владельцы,
я читал про strmid и так не чего не понял, так как в подобной загрузке бизнесов так же построен код,
но там всё кашерно без всяких смен владельцев грузится и на своих местах они стоят.

Роуди.
11.01.2016, 21:37
Так конечно, вы координаты округляете для чего-то..

Для чего Вам использовать floatstr & strlen(inputtext)? Если можно напрямую из БД выгрузить значение Float (перейти (http://wiki.sa-mp.com/wiki/MySQL/R33#cache_get_field_content_float)), а так же и с целым числом (перейти (http://wiki.sa-mp.com/wiki/MySQL/R33#cache_get_field_content_int))

И если вы используете версию R9 +, то мне кажется так удобней и практичней загружать значения

for(new = he; he <= rows; he++)
{
SBizzInfo[he][sID]= cache_get_field_content_int(he, "Название_в_базе_данных");
// etc

}