Вход

Просмотр полной версии : [Вопрос] Проблемка с Итераторами



Kovshevoy
14.01.2018, 16:38
В общем, возникла проблемка с итераторами. Не срабатывают пикапы. Смешно конечно, но делал динамическую зону и использую с пикапами.
В общем, вот код, подскажите пожалуйста, в чем может быть проблемка
Кому удобней, может глянуть на pastebin (https://pastebin.com/022Rzd4Y)

#define MAX_AREAS 1500
else if (Iter_Contains(business_areas,used_area [ playerid ] ) )
{
for ( new t = 0; t < MAX_AREAS ; t ++ )
{
if ( b_info [ t ] [ b_area ] [ 0 ] == used_area [ playerid ] )
{
new dialog_string [ 100 + MAX_PLAYER_NAME + 7 + 32 + 1 ] ;
new dialog_header_string [ 32 + 12 ] ;
format ( dialog_header_string, sizeof ( dialog_header_string ), "{4582A1}%s", b_info [ t ] [ b_name ] ) ;

if ( b_info [ t ] [ b_owner_inc ] == -1)
{
format ( dialog_string, sizeof ( dialog_string ), "\t{FFFFFF}Бизнес продается!\n\nНазвание: {4582A1}\"%s\"\n{FFFFFF}Стоимость: {4582A1}%d$", b_info [ t ] [ b_name ], b_info [ t ] [ b_price ] ) ;
show_dialog ( playerid, d_b_buy, DIALOG_STYLE_MSGBOX, dialog_header_string, dialog_string, "Купить", "Отмена" ) ;
}
else
{
new business_status [ 19 + 1 ] = "{AA3333}Не работает" ;
if ( ! b_info [ t ] [ b_close ] ) business_status = "{33AA33}Работает" ;

format ( dialog_string, sizeof ( dialog_string ), "{FFFFFF}Бизнес {4582A1}\"%s\"{FFFFFF}\n\nВладелец: {4582A1}%s\n{FFFFFF}Продукты: {4582A1}%d\n\n{FFFFFF}Статус: %s", b_info [ t ] [ b_name ], b_info [ t ] [ b_owner_name ], b_info [ t ][ b_product ], business_status ) ;
show_dialog ( playerid, d_b_enter, DIALOG_STYLE_MSGBOX, dialog_header_string, dialog_string, "Войти", "Отмена" ) ;
}
SetPVarInt ( playerid, "p_biz_id", t + 1 ) ;
break ;
}
else if ( b_info [ t ] [ b_area ] [ 1 ] == used_area [ playerid ] )
{
new dialog_header_string [ 32 + 12 ] ;
format ( dialog_header_string, sizeof ( dialog_header_string ), "{4582A1}%s", b_info [ t ] [ b_name ] ) ;
SetPVarInt ( playerid, "p_biz_id", t + 1 ) ;
show_dialog ( playerid, d_b_exit, DIALOG_STYLE_MSGBOX, dialog_header_string, "{FFFFFF}Вы действительно хотите выйти?", "Да", "Нет" ) ;
break ;
}
}
}
else if (Iter_Contains(houses_areas,used_area [ playerid ] ) )
{
for ( new h = 0; h < MAX_AREAS ; h ++ )
{
if ( h_info [ h ] [ h_area ] [ 0 ] == used_area [ playerid ] )
{
new hint = h_info [ h ] [ h_int ] - 1 ;
new property_text [ 10 ], dialog_string [ 196 ] ;
if ( h_info [ h ] [ h_vw ] )property_text = "Квартира" ;
else property_text = "Дом" ;
if ( h_info [ h ] [ h_owner ] == -1 )
{
format ( dialog_string, sizeof dialog_string, "\t{4582A1}%s продаётся!{FFFFFF}\n\n\
Адрес:\t\t{4582A1}%s{ffffff}\n\
Стоимость:\t{4582A1}%d${FFFFFF}\n\
Комнаты:\t{4582A1}%d\n\
\n\nНажмите \"Меню\" для взаимодействия.",
property_text, h_info [ h ] [ h_address ], h_info [ h ] [ h_price ], house_int [ hint ] [ hint_rooms ] ) ;
show_dialog ( playerid, d_house, DIALOG_STYLE_MSGBOX, "{4582A1}Недвижимость", dialog_string, "Меню", "Закрыть" ) ;
SetPVarInt ( playerid, "house_dialog", 1 ) ;
}
else
{
if ( h_info [ h ][ h_rent_price ] == 0 )
{
format ( dialog_string, sizeof dialog_string, "{4582A1}\t\t%s.{FFFFFF}\n\n\
Адрес:\t\t{4582A1}%s{FFFFFF}\n\
Владелец:\t{4582A1}%s\n\
\n\nНажмите \"Меню\" для взаимодействия.",
property_text, h_info [ h ] [ h_address ], h_info [ h ] [ h_owner_name ] ) ;
SetPVarInt ( playerid, "house_dialog", 2 ) ;
show_dialog ( playerid, d_house, DIALOG_STYLE_MSGBOX, "{4582A1}Недвижимость", dialog_string, "Меню", "Закрыть" ) ;
}
else
{
format ( dialog_string, sizeof dialog_string, "\t{4582A1}%s сдаётся в аренду!\n\n\
{FFFFFF}Адрес:\t\t{4582A1}%s{ffffff}\n\
Владелец:\t{4582A1}%s{FFFFFF}\n\
Арендная плата:\t{4582A1}%d${FFFFFF}\n\
Комнаты:\t{4582A1}%d\n\
\n\nНажмите \"Меню\" для взаимодействия.",
property_text, h_info [ h ] [ h_address ], h_info [ h ] [ h_owner_name ], h_info [ h ] [ h_rent_price ],
house_int [ hint ] [ hint_rooms ] ) ;
show_dialog ( playerid, d_house, DIALOG_STYLE_MSGBOX, "{4582A1}Недвижимость", dialog_string, "Меню", "Закрыть" ) ;
SetPVarInt ( playerid, "house_dialog", 3 ) ;
}
}
SetPVarInt ( playerid, "house_id", h ) ;
break;
}
else if ( h_info [ h ] [ h_area ] [ 1 ] == used_area [ playerid ] )
{
if ( h_info [ h ] [ h_closed ] == 1 ) return GameTextForPlayer ( playerid, "~r~HOUSE CLOSED", 2000, 4 ) ;
if ( h_info [ h ] [ h_vw ] )set_pos ( playerid, h_info [ h ] [ h_pos ] [ 0 ], h_info [ h ] [ h_pos ] [ 1 ], h_info [ h ] [ h_pos ] [ 2 ], h_info [ h ] [ h_pos ] [ 3 ], 1, h_info [ h ] [ h_vw ] ) ;
else set_pos ( playerid, h_info [ h ] [ h_pos ] [ 0 ], h_info [ h ] [ h_pos ] [ 1 ], h_info [ h ] [ h_pos ] [ 2 ], h_info [ h ] [ h_pos ] [ 3 ], 0, h_info [ h ] [ h_vw ] ) ;
break ;
}
}
}

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

Забыл добавить. Вот обьявление двух пабликов.


public OnPlayerEnterDynamicArea ( playerid, areaid )
{
if ( p_t_info [ playerid ] [ p_logged ] == false ) return false ;
#if defined debug_mode
printf ( "[DEBUG] [OnPlayerEnterDynamicArea] playerid: %d | areaid:%d", playerid, areaid ) ;
#endif
used_area [ playerid ] = areaid ;
if ( ! GetPVarInt ( playerid, "freeze_status" ) ) for ( new i = 0; i < 2 ; i ++ ) TextDrawShowForPlayer ( playerid, td_alt_area [ i ] ) ;
return 1 ;
}


public OnPlayerLeaveDynamicArea ( playerid, areaid )
{
used_area [ playerid ] = - 1 ;
if ( ! GetPVarInt ( playerid, "freeze_status" ) ) for ( new i = 0; i < 2 ; i ++ ) TextDrawHideForPlayer ( playerid, td_alt_area [ i ] ) ;
return 1 ;
}

DeimoS
14.01.2018, 21:05
Прологируй значения, которые заносятся в итератор и покажи их