Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Наш краш-лог.
- Краш вызвался в 51 диалоге, когда игрок ввёл цифру 2.
- Краш на строке номер 21165.
- */
- [08:51:42] [debug] Run time error 4: "Array index out of bounds"
- [08:51:42] [debug] Accessing element at negative index -1
- [08:51:42] [debug] AMX backtrace:
- [08:51:42] [debug] #0 00190760 in public ac_OnDialogResponse (playerid=140, dialogid=51, response=1, listitem=-1, inputtext[]=@01353a80 "2") at C:\Users\Admin\Desktop\Flin RP\gamemodes\gm.pwn:21165
- [08:51:42] [debug] #1 0001b1d4 in public OnDialogResponse (playerid=140, dialogid=51, response=1, listitem=-1, inputtext[]=@01353a80 "2") at C:\Users\Admin\Desktop\Flin RP\pawno\include\nex-ac.inc:3635
- /*
- Из этой функции посылается информация DBizitem[playerid] в 51 диалог
- */
- stock list_delivery(playerid)
- {
- new
- string[944],
- str[944],
- num = 0;
- for(new i = 0; i < 10; i ++)
- DBizitem[playerid][i] = -1;
- strcat(str," Заказчик:\tКуда:\tЗаработок:\tСтатус заказа:\n");
- new
- vehicleid = GetPlayerVehicleID(playerid);
- if(!IsValidVehicle(vehicleid))
- return 1;
- if(veh_info[vehicleid][v_npoType] == NPO_JOB && veh_info[vehicleid][v_npoId] == JOB_DELIVERY)
- {
- new
- coef;
- if(farm_info[f_Seed] < 9000 && num == 0)
- {
- f(string, "[1]"W"Ферма [Государство]\t1000$\n");
- DBizitem[playerid][0] = 999;
- num++;
- }
- for(new h = 0; h < totalbizz; h++)
- {
- if(num >= 10)
- break;
- if(b_info[h][_zakaz] == 0)
- continue;
- coef = b_info[h][_tip] == 4 ? 2 : 6;
- f(string, "%s [%i]"W"%s\t%s\t%d$\t%s\n",
- string,
- num + 1,
- b_info[h][_owner],
- b_info[h][_name],
- b_info[h][_zakaz] * coef,
- b_info[h][_status] ? "{BE2D2D}Выполняется"W"" : "{42B02C}Свободен"W"");
- DBizitem[playerid][num] = h;
- num++;
- }
- }
- else
- {
- return SendErrorMessage(playerid, "Вы должны находиться в рабочем транспорте.");
- }
- strcat(str,string);
- if(num > 0)
- ShowPlayerDialog(playerid, 51, DIALOG_STYLE_INPUT, "Заказы", str, "Принять", "Закрыть");
- else
- SendClientMessage(playerid, error,"Заказов не найдено");
- return 1;
- }
- /*
- А вот и наш 51 диалог.
- */
- case 51:
- {
- if(response)
- {
- if(isnums(inputtext)) // Тут я, кстати, проебался с проверкой, тут должно быть if(0 == isnums(inputtext)), но, даже если так, игрока бы просто не пустило дальше.
- return SendClientMessage(playerid, COLOR_ERROR, "[Ошибка] {ffffff}Вводить нужно только цифру пункта!");
- new
- fix_listitem = strval(inputtext); // игрок ввёл цифру 2
- if(!(1 <= fix_listitem <= 10)) // проверка успешно пройдена, 1 <= 2 <= 10
- return 1;
- fix_listitem--; // 2 - 1 = 1
- new
- str[164];
- if(DBizitem[playerid][0] == 999 && fix_listitem == 0) // проверка не пройдена, fix_listitem (1) != 0
- {
- SetPVarInt(playerid, "biz_zakaz", DBizitem[playerid][0]); // IMPORTANT: А ВОТ, СОБСТВЕННО, НАША 21165 СТРОКА. wtf? Сначала идёт проверка DBizitem[playerid][0] == 999, а потом мы это же значение передаём в PVar,
- // тогда как там может быть -1?
- SetPVarInt(playerid, "zakaz", 1000);
- SetPlayerRaceCheckpoint(playerid, 1, -116.9392,-316.1367,2.7646, -116.9392,-316.1367,2.7646, 8.0);
- SetPVarInt(playerid, "biz_load",0+1);
- return 1;
- }
- if(b_info[DBizitem[playerid][fix_listitem]][_status] == 1) // b_info[DBizitem[playerid][1]][_status] == 1 - IMPORTANT: неизвестно, что у нас в DBizitem[playerid][1]
- {
- SendClientMessage(playerid, error, "Данный заказ уже выполняется кем-то");
- return list_delivery(playerid);
- }
- b_info[DBizitem[playerid][fix_listitem]][_status] = 1; // IMPORTANT: неизвестно, что у нас в DBizitem[playerid][1]
- f(str, "Вы приняли заказ "W"'%s [%d], заработок %d$'"I" загрузите сначало продукты на заводе и отправляйтесь на контрольную точку",
- b_info[DBizitem[playerid][fix_listitem]][_name], // IMPORTANT: неизвестно, что у нас в DBizitem[playerid][1]
- DBizitem[playerid][fix_listitem], // IMPORTANT: неизвестно, что у нас в DBizitem[playerid][1]
- b_info[DBizitem[playerid][fix_listitem]][_zakaz] * 3); // IMPORTANT: неизвестно, что у нас в DBizitem[playerid][1]
- SendClientMessage(playerid, info, str);
- SetPVarInt(playerid, "biz_zakaz", DBizitem[playerid][fix_listitem]);
- SetPVarInt(playerid, "zakaz", b_info[DBizitem[playerid][fix_listitem]][_zakaz]);
- SetPlayerRaceCheckpoint(playerid, 1, -116.9392,-316.1367,2.7646, -116.9392,-316.1367,2.7646, 8.0);
- SetPVarInt(playerid, "biz_load", fix_listitem + 1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement