geka154
Дебютант
Всем привет. Я долгое время не могу пофиксить баг с выдачей exp на фракциях кроме бандитских.
Вот скрипт
ошибка
строчка
Вот скрипт
PHP:
stock pay_day_time ( )
{
for ( new j = 0 ; j < gz_count ; j ++ )
{
if ( gz_info [ j ] [ gz_owner ] == 0 ) continue ;
f_info [ gz_info [ j ] [ gz_owner ] - 1 ] [ f_money ] += 500 ;
update_gdorm_text ( gz_info [ j ] [ gz_owner ] ) ;
}
new total_graf [ 6 ] ;
for(new i; i < CountGraffity; i++)
{
if ( graf_info [ i ] [ g_member ] == 0 ) continue ;
f_info [ graf_info [ i ] [ g_member ] - 1 ] [ f_money ] += 250 ;
update_gdorm_text ( graf_info [ i ] [ g_member ] ) ;
total_graf [ graf_info [ i ] [ g_member ] - 18 ] ++ ;
}
for ( new j = 18 ; j <= 22 ; j ++ )
{
new query_string [ 86 ];
format ( query_string, 86, "UPDATE `fractions` SET `f_money` = '%d' WHERE `f_id` = '%d' LIMIT 1",
f_info [ j - 1 ] [ f_money ], j ) ;
mysql_tquery ( sql_connection, query_string, "", "" ) ;
}
foreach(new i: logged_players)
{
switch ( p_t_info [ i ] [ p_data ] [ 1 ] )
{
case 0:
{
new newhour, newminute, newsecond ;
gettime ( newhour, newminute, newsecond ) ;
SetPlayerTime ( i, newhour, newminute ), SetPlayerWeather ( i, global_weather ) ;
}
case 1..9: SetPlayerWeather ( i, 4 ), SetPlayerTime ( i, 18, 0 ) ;
case 10:SetPlayerTime ( i, 12, 0 ), SetPlayerWeather ( i, global_weather ) ;
}
if ( GetPVarInt ( i, "p_biz_id" ) != 0 )SetPlayerWeather ( i, 4 ), SetPlayerTime ( i, 18, 0 ) ;
/*if ( p_info [ i ] [ hour_played ] + floatround ( NetStats_GetConnectedTime ( i ) / 1000 ) < 1200 )
{
SendClientMessage ( i, col_gray, "{"#cRD"}* {"#cGR"}Для получения зарплаты нужно отыграть {"#cRD"}20 минут{"#cGR"}.") ;
continue ;
}*/
if ( pl_afk_time [ i ] > 2 )
{
SendClientMessage ( i, col_gray, "{"#cRD"}* {"#cGR"}Для получения зарплаты необходимо находиться не в АФК." ) ;
continue ;
}
if ( p_info [ i ] [ member ] )
{
if ( ! gang_player ( i ) && ! mafia_player ( i ) )
{
p_info [ i ] [ salary ] += f_info [ p_info [ i ] [ member ] - 1 ] [ f_rank_salary ] [ p_info [ i ] [ rank ] - 1 ] * GetPVarInt ( i, "advert_count" ) ;
SetPVarInt ( i, "advert_count", 1 ) ;
/*if ( f_info [ p_info [ i ] [ member ] - 1 ] [ f_money ] > f_info [ p_info [ i ] [ member ] - 1 ] [ f_rank_salary ] [ p_info [ i ] [ rank ] - 1 ] )
{
p_info [ i ] [ salary ] += f_info [ p_info [ i ] [ member ] - 1 ] [ f_rank_salary ] [ p_info [ i ] [ rank ] - 1 ] ;
f_info [ p_info [ i ] [ member ] - 1 ] [ f_money ] -= f_info [ p_info [ i ] [ member ] - 1 ] [ f_rank_salary ] [ p_info [ i ] [ rank ] - 1 ] ;
}*/
if ( f_info [ p_info [ i ] [ member ] - 1 ] [ f_money ] > f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] && f_info [ p_info [ i ] [ member ] - 1 ] [ f_status_zp ] == 1 )
{
p_info [ i ] [ salary ] += f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] ;
f_info [ p_info [ i ] [ member ] - 1 ] [ f_money ] -= f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] ;
}
else if ( f_info [ p_info [ i ] [ member ] - 1 ] [ f_money ] > f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] && f_info [ p_info [ i ] [ member ] - 1 ] [ f_status_zp ] == 0 )
{
new h, m, s;
gettime(h, m, s);
if( h == 20 )
{
p_info [ i ] [ salary ] += f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] ;
f_info [ p_info [ i ] [ member ] - 1 ] [ f_money ] -= f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] ;
}
}
}
else
{
p_info [ i ] [ salary ] += f_info [ p_info [ i ] [ member ] - 1 ] [ f_rank_salary ] [ p_info [ i ] [ rank ] - 1 ] ;
if ( f_info [ p_info [ i ] [ member ] - 1 ] [ f_money ] > f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] && f_info [ p_info [ i ] [ member ] - 1 ] [ f_status_zp ] == 0 )
{
p_info [ i ] [ salary ] += f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] ;
f_info [ p_info [ i ] [ member ] - 1 ] [ f_money ] -= f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] ;
}
else if ( f_info [ p_info [ i ] [ member ] - 1 ] [ f_money ] > f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] && f_info [ p_info [ i ] [ member ] - 1 ] [ f_status_zp ] == 1 )
{
new h, m, s;
gettime(h, m, s);
if( h == 20 )
{
p_info [ i ] [ salary ] += f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] ;
f_info [ p_info [ i ] [ member ] - 1 ] [ f_money ] -= f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] ;
}
}
}
}
SendClientMessage ( i, col_white, "{"#cGN"}*** {"#cWH"}БАНКОВСКИЙ ЧЕК {"#cGN"}***") ;
new tmpintrate = 0, interest = 0, tax_player = 0 ;
new newban_count = p_info [ i ] [ bank ] + p_info [ i ] [ salary ] ;
new count_vip = floatround ( newban_count * 0.015 ) ;
if ( p_info [ i ] [ vip ] )
{
newban_count += count_vip ;
}
if ( p_info [ i ] [ vip ] )
{
tmpintrate = 3;
interest = floatround( ( p_info [ i ] [ bank ] / 1000 ) * ( 3 ) ) ;
if(interest > 100000)
{
interest = 100000;
}
}
else
{
tmpintrate = 1;
interest = floatround ( ( p_info [ i ] [ bank ] / 1000 ) * ( 1 ) ) ;
newban_count += interest ;
if(interest > 50000)
{
interest = 50000;
}
}
if ( p_info [ i ] [ salary ] > 0 )
{
tax_player += floatround ( ( ( p_info [ i ] [ salary ] * for_tax [ 6 ] ) / 100 ) / p_info [ i ] [ tax_donate ] ) ;
if ( tax_player < 1 ) tax_player = 1 ;
p_info [ i ] [ tax ] += tax_player ;
}
foreach ( new veh_id: player_vehicles[i])
{
tax_player += floatround ( ( RandomEx ( 300, 500 ) * for_tax [ 5 ] ) / p_info [ i ] [ tax_donate ] ) ;
if ( tax_player < 1 ) tax_player = 1 ;
p_info [ i ] [ tax ] += tax_player ;
}
new _t_string [ 144 ] ;
format ( _t_string, sizeof _t_string, "Чек: {"#cGN"}%i${"#cWH"}. Баланс: {"#cGN"}%i${"#cWH"}", p_info [ i ] [ salary ], p_info [ i ] [ bank ]);
SendClientMessage ( i, col_white, _t_string ) ;
format ( _t_string, sizeof _t_string, "Налог: {"#cGN"}-%i${"#cWH"}. Общая задолженность: {"#cGN"}-%i$", tax_player, p_info [ i ] [ tax ] );
SendClientMessage ( i, col_white, _t_string ) ;
format ( _t_string, sizeof _t_string, "Вклад в банке под: {"#cGN"}0.%i{"#cWH"} процентов", tmpintrate);
SendClientMessage ( i, col_white, _t_string ) ;
format ( _t_string, sizeof _t_string, "Полученные средства по банковскому вкладу: {"#cGN"}%i${"#cWH"}", interest);
SendClientMessage ( i, col_white, _t_string ) ;
if ( p_info [ i ] [ member ] )
{
if ( ! gang_player ( i ) && ! mafia_player ( i ) )
{
if ( f_info [ p_info [ i ] [ member ] - 1 ] [ f_money ] > f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] && f_info [ p_info [ i ] [ member ] - 1 ] [ f_status_zp ] == 1 )
{
format ( _t_string, 128, "Премиальные: {"#cGN"}%i${"#cWH"}", f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] ) ;
SendClientMessage ( i, col_white, _t_string ) ;
}
else if ( f_info [ p_info [ i ] [ member ] - 1 ] [ f_money ] > f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] && f_info [ p_info [ i ] [ member ] - 1 ] [ f_status_zp ] == 0 )
{
new h, m, s;
gettime(h, m, s);
if ( h == 20 )
{
format ( _t_string, 128, "Премиальные: {"#cGN"}%i${"#cWH"}", f_info [ p_info [ i ] [ member ] - 1 ] [ f_rang_zp ] [ p_info [ i ] [ rank ] - 1 ] ) ;
SendClientMessage ( i, col_white, _t_string ) ;
}
}
}
}
if(p_info [ i ] [ rent_house ] != -1)
{
for ( new h = 0 ; h < house_count ; h ++ )
{
if(p_info [ i ] [ rent_house ] == h)
{
if ( newban_count >= h_info [ h ] [ h_rent_price ] )
{
newban_count -= h_info [ h ] [ h_rent_price ];
format ( _t_string, 128, "Аренда жилого помещения: {"#cGN"}%i${"#cWH"}", h_info [ h ] [ h_rent_price ] ) ;
SendClientMessage ( i, col_white, _t_string ) ;
h_info [ h ] [ h_safe_data ] [ 1 ] += h_info [ h ] [ h_rent_price ] ;
new _text_string [ 148 ] ;
format ( _text_string, sizeof _text_string, "UPDATE `houses` SET `h_safe_data` = '%d|%d|%d|%d|%d|%d|%d|%d' WHERE `h_id` = '%d' LIMIT 1",
h_info [ h ] [ h_safe_data ] [ 0 ], h_info [ h ] [ h_safe_data ] [ 1 ],
h_info [ h ] [ h_safe_guns ] [ 0 ], h_info [ h ] [ h_safe_guns ] [ 1 ], h_info [ h ] [ h_safe_guns ] [ 2 ],
h_info [ h ] [ h_safe_guns ] [ 3 ], h_info [ h ] [ h_safe_guns ] [ 4 ], h_info [ h ] [ h_safe_guns ] [ 5 ],
h_info [ h ] [ h_id ] ) ;
mysql_tquery ( sql_connection, _text_string ) ;
}
else
{
p_info [ i ] [ rent_house ] = -1 ;
update_int_sql ( i, "u_renthouse", p_info [ i ] [ rent_house ] ) ;
SendClientMessage ( i, col_gray, "{"#cRD"}* {"#cGR"}Вы были выселены из арендуемого жилого помещения");
}
}
}
}
p_info [ i ] [ salary ] = 0 ;
if ( ( p_info [ i ] [ vip ] && p_info [ i ] [ bank ] + p_info [ i ] [ salary ] < 1000000 ) || p_info [ i ] [ bank ] + p_info [ i ] [ salary ] < 500000 )
{
p_info [ i ] [ bank ] = newban_count ;
}
else
{
SendClientMessage ( i, col_white, "" ) ;
SendClientMessage ( i, col_white, "{"#cGR"}* Лимит средств на банковском счету превышен, часть заработной платы не была переведена." ) ;
}
//SendClientMessage ( i, col_white, "{"#cYW"}-----------------------------------------------------------" ) ;
format ( _t_string, 128, "[F] В общак начислен бонус за %i граффити на районах.", total_graf [ p_info [ i ] [ member ] - 18 ] ) ;
if ( gang_player ( i ) ) SendClientMessage ( i, 0x8D8DFFFF, _t_string ) ;
p_info [ i ] [ exp ] += 1 * server_bonus ;
if ( p_info [ i ] [ level ] >= 3 && p_info [ i ] [ promocode_money ] > 0 )
{
give_money ( i, p_info [ i ] [ promocode_money ] ) ;
insert_money_log ( i, INVALID_PLAYER_ID, p_info [ i ] [ promocode_money ], "промокод бонус" ) ;
p_info [ i ] [ promocode_money ] = 0 ;
update_int_sql ( i, "u_promomoney", p_info [ i ] [ promocode_money ] ) ;
SendClientMessage ( i, col_white, "{"#cGN"}* {"#cWH"}Вы получили денежный бонус за введённый промокод." ) ;
}
if ( p_info [ i ] [ exp ] >= ( p_info [ i ] [ level ] + 1 ) * 4 )
{
p_info [ i ] [ exp ] -= ( p_info [ i ] [ level ] + 1 ) * 4 ;
p_info [ i ] [ level ] ++ ;
SetPlayerScore ( i, p_info [ i ] [ level ] ) ;
update_int_sql ( i, "u_level", p_info [ i ] [ level ] ) ;
p_info [ i ] [ donate_roulette ] += 1 ;
update_int_sql ( i, "u_droulette", p_info [ i ] [ donate_roulette ] ) ;
SendClientMessage ( i, col_white, "{"#cGN"}* {"#cWH"}Вы получили 1 очко для рулетки-удачи, введите {"#cGN"}/roulette{"#cWH"}, чтобы сыграть." ) ;
SendClientMessage ( i, col_white, "{"#cGN"}* {"#cWH"}Ваш игровой уровень повысился." ) ;
if ( p_info [ i ] [ level ] == 3 )
{
format ( _t_string, sizeof ( _t_string ), "SELECT `u_id`,`u_name` FROM `users` WHERE `u_name` IN (SELECT `u_referal` FROM `users` WHERE `u_id`='%d')",
p_info [ i ] [ id ] ) ;
mysql_tquery ( sql_connection, _t_string, "referal_bonus_callback", "i", i ) ;
}
}
format ( _t_string, sizeof ( _t_string ), "UPDATE `users` SET `u_exp` = '%d',`u_tax` = '%d',`u_bank` = '%d' WHERE `u_id` = '%i' LIMIT 1",
p_info [ i ] [ exp ], p_info [ i ] [ tax ], p_info [ i ] [ bank ], p_info [ i ] [ id ] ) ;
mysql_tquery ( sql_connection, _t_string ) ;
p_info [ i ] [ hour_played ] = 0 ;
}
return 1 ;
}
ошибка
PHP:
[11:47:12] [debug] Run time error 4: "Array index out of bounds"
[11:47:12] [debug] Attempted to read/write array element at negative index -13
[11:47:12] [debug] AMX backtrace:
[11:47:12] [debug] #0 00034b1c in pay_day_time () at C:\Users\geka\Desktop\test pawno mods\gamemodes\und.pwn:8156
PHP:
format ( _t_string, 128, "[F] В общак начислен бонус за %i граффити на районах.", total_graf [ p_info [ i ] [ member ] - 18 ] ) ;
Последнее редактирование модератором:
