Просмотр полной версии : [Вопрос] Крашь диалога
Всем привет, помогите мне с диалогами!!! Почему крашит.
if(listitem == 4)
{
if (House_PlayerIsOwner(playerid, HouseID) == 1)
{
for (CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
if (AHouseData[HouseID][VehicleIDs][CarSlot] != 0)
HouseHasCars = true;
if (HouseHasCars == true)
{
for (CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if(AHouseData[HouseID][VehicleIDs][CarSlot] == 0)
{
BuyableCarIndex = VehicleBuyable_GetIndex(GetVehicleModel(AHouseData[HouseID][VehicleIDs][CarSlot]));
format(VehicleList, 500, "%s{00FF00}%s: $%i{FFFFFF}\n", VehicleList, ABuyableVehicles[BuyableCarIndex][CarName], ABuyableVehicles[BuyableCarIndex][Price] / 2);
}
else format(VehicleList, 500, "%s{FFFFFF}Ñëîò ïóñò{FFFFFF}\n", VehicleList);
} ShowPlayerDialog(playerid, 5558, DIALOG_STYLE_LIST, "Âûáåðèòå àâòîìîáèëü, ÷òîáû ïðîäàòü:", VehicleList, "Âûáðàòü", "Îòìåíà");
}
else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Ýòîò äîì íå èìååò òðàíñïîðòíûõ ñðåäñòâ");
}
else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Òîëüêî âëàäåëåö äîìà ìîæåò èñïîëüçîâàòü ýòîò ïàðàìåòð");
}
Если честно, я ничего не понял. Распишите подробнее, в чём проблема-то? И код бы следовало сделать опрятнее.
$continue$
04.08.2014, 16:05
Что крашит то? Сервер дилогом через "%d, %s и т.д"
Или pawno от кода?
Когда вводишь команду для вызова меню дома, то крашиться диалог, именно из-за этого кода, а убрать я его не могу, он нужен, мне нужно как то его переделать!
if(listitem == 4)
{
if (House_PlayerIsOwner(playerid, HouseID) == 1)
{
for (CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
if (AHouseData[HouseID][VehicleIDs][CarSlot] != 0)
HouseHasCars = true;
if (HouseHasCars == true)
{
for (CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if (AHouseData[HouseID][VehicleIDs][CarSlot] != 0)
{
BuyableCarIndex = VehicleBuyable_GetIndex(GetVehicleModel(AHouseData[HouseID][VehicleIDs][CarSlot]));
format(VehicleList,500,"%s{00FF00}%s:$%i{FFFFFF}\n",VehicleList,ABuyableVehicles[BuyableCarIndex[CarName], ABuyableVehicles[BuyableCarIndex][Price] / 2);
}
else format(VehicleList, 500, "%s{FFFFFF}Слот пуст{FFFFFF}\n", VehicleList);
} ShowPlayerDialog(playerid, 5558, DIALOG_STYLE_LIST, "Выберите автомобиль, чтобы продать:", VehicleList, "Выбрать", "Отмена");
}
else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Этот дом не имеет транспортных средств");
}
else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Только владелец дома может использовать этот параметр");
}
- - - Добавлено - - -
Это говорит лог
[16:35:10] [debug] Run time error 3: "Stack/heap collision (insufficient stack size)"
[16:35:10] [debug] Stack pointer (STK) is 0x763324, heap pointer (HEA) is 0x7633E0
[16:35:10] [debug] AMX backtrace:
[16:35:10] [debug] #0 ???????? in public OnDialogResponse () from RSDS.amx
[16:35:13] [debug] Run time error 3: "Stack/heap collision (insufficient stack size)"
[16:35:13] [debug] Stack pointer (STK) is 0x763324, heap pointer (HEA) is 0x7633E8
[16:35:13] [debug] AMX backtrace:
[16:35:13] [debug] #0 ???????? in public OnDialogResponse () from RSDS.amx
[16:35:16] [part] _Dizel_ has left the server (0:1)
А окно просто выключатся!
Сам вряд ли помогу,но вот ребятки вам нормально читабельный код.
if(listitem == 4)
{
if(House_PlayerIsOwner(playerid, HouseID) == 1)
{
for(CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if(AHouseData[HouseID][VehicleIDs][CarSlot] != 0)
HouseHasCars = true;
if(HouseHasCars == true)
{
for(CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if(AHouseData[HouseID][VehicleIDs][CarSlot] != 0)
{
BuyableCarIndex = VehicleBuyable_GetIndex(GetVehicleModel(AHouseData[HouseID][VehicleIDs][CarSlot]));
format(VehicleList,500,"%s{00FF00}%s:$%i{FFFFFF}\n",VehicleList,ABuyableVehicles[BuyableCarIndex[CarName], ABuyableVehicles[BuyableCarIndex][Price] / 2);
}
else format(VehicleList, 500, "%s{FFFFFF}Слот пуст{FFFFFF}\n", VehicleList);
}
ShowPlayerDialog(playerid, 5558, DIALOG_STYLE_LIST, "Выберите автомобиль, чтобы продать:", VehicleList, "Выбрать", "Отмена");
}
else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Этот дом не имеет транспортных средств");
}
}
else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Только владелец дома может использовать этот параметр");
}
[16:35:10] [debug] Run time error 3: "Stack/heap collision (insufficient stack size)"
[16:35:10] [debug] Stack pointer (STK) is 0x763324, heap pointer (HEA) is 0x7633E0
[16:35:10] [debug] AMX backtrace:
[16:35:10] [debug] #0 ???????? in public OnDialogResponse () from RSDS.amx
[16:35:13] [debug] Run time error 3: "Stack/heap collision (insufficient stack size)"
[16:35:13] [debug] Stack pointer (STK) is 0x763324, heap pointer (HEA) is 0x7633E8
[16:35:13] [debug] AMX backtrace:
[16:35:13] [debug] #0 ???????? in public OnDialogResponse () from RSDS.amx
[16:35:16] [part] _Dizel_ has left the server (0:1)
А окно просто выключатся!
Что и следовало ожидать. Покажите инициализацию массива VehicleList.
Не в этом ли проблема?
if(listitem == 4)
{
if(House_PlayerIsOwner(playerid, HouseID) == 1)
{
for(CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if(AHouseData[HouseID][VehicleIDs][CarSlot] != 0)
HouseHasCars = true;
if(HouseHasCars == true)
{
for(CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if(AHouseData[HouseID][VehicleIDs][CarSlot] != 0)
{
BuyableCarIndex = VehicleBuyable_GetIndex(GetVehicleModel(AHouseData[HouseID][VehicleIDs][CarSlot]));
format(VehicleList,500,"%s{00FF00}%s:$%i{FFFFFF}\n",VehicleList,ABuyableVehicles[BuyableCarIndex[CarName], ABuyableVehicles[BuyableCarIndex][Price] / 2);
}
else format(VehicleList, 500, "%s{FFFFFF}Слот пуст{FFFFFF}\n", VehicleList);
}
ShowPlayerDialog(playerid, 5558, DIALOG_STYLE_LIST, "Выберите автомобиль, чтобы продать:", VehicleList, "Выбрать", "Отмена");
}
else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Этот дом не имеет транспортных средств");
}
}
else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Только владелец дома может использовать этот параметр");
}
- - - Добавлено - - -
У него циклы не бесконечные будут?
Ну так что?
Покажите инициализацию массива VehicleList.
Вы посты читаете?
new VehicleList[?];
Там где вопросительный знак, что там у вас?
Вы посты читаете?
Скажи что нужно! Я не понял! :dash2:
for(CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if(AHouseData[HouseID][VehicleIDs][CarSlot] != 0)
замените на:
for(CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if(strlen(VehicleList) > sizeof(VehicleList) - 1)
break;
if(AHouseData[HouseID][VehicleIDs][CarSlot] != 0)
for(CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if(AHouseData[HouseID][VehicleIDs][CarSlot] != 0)
замените на:
for(CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if(strlen(VehicleList) > sizeof(VehicleList) - 1)
break;
if(AHouseData[HouseID][VehicleIDs][CarSlot] != 0)
Все так же
for (CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if(AHouseData[HouseID][VehicleIDs][CarSlot] == 0)
{
также замените на
for (CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if(strlen(VehicleList) > sizeof(VehicleList) - 1)
break;
if(AHouseData[HouseID][VehicleIDs][CarSlot] == 0)
{
for (CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if(AHouseData[HouseID][VehicleIDs][CarSlot] == 0)
{
также замените на
for (CarSlot = 0; CarSlot < AHouseData[HouseID][CarSlots]; CarSlot++)
{
if(strlen(VehicleList) > sizeof(VehicleList) - 1)
break;
if(AHouseData[HouseID][VehicleIDs][CarSlot] == 0)
{
Глухо
А если
new VehicleList[500];
допустим, на
new VehicleList[300];
и каждые
format(VehicleList, 500
на
format(VehicleList, 300
?
А если
new VehicleList[500];
допустим, на
new VehicleList[300];
и каждые
format(VehicleList, 500
на
format(VehicleList, 300
?
Попробую
- - - Добавлено - - -
[20:14:33] [debug] Run time error 4: "Array index out of bounds"
[20:14:33] [debug] Accessing element at negative index -1
[20:14:33] [debug] AMX backtrace:
[20:14:33] [debug] #0 0009d3e4 in public OnDialogResponse (0x00000000, 0x000015af, 0x00000001, 0x00000004, 0x007633ac) from RSDS.amx
- - - Добавлено - - -
Теперь такой крашь!
Получите строку, на которой происходит ошибка, как это сделать написано здесь: Тык (http://pro-pawn.ru/showthread.php?2991) ( параметр -d3 ).
Кстати, по-моему уже догадываюсь где ошибка: HouseID.
if (House_PlayerIsOwner(playerid, HouseID) == 1)
Попробуйте заменить на
if (HouseID > -1 && House_PlayerIsOwner(playerid, HouseID) == 1)
Ну что?
- - - Добавлено - - -
Получите строку, на которой происходит ошибка, как это сделать написано здесь: Тык (http://pro-pawn.ru/showthread.php?2991) ( параметр -d3 ).
Кстати, по-моему уже догадываюсь где ошибка: HouseID.
if (House_PlayerIsOwner(playerid, HouseID) == 1)
Попробуйте заменить на
if (HouseID > -1 && House_PlayerIsOwner(playerid, HouseID) == 1)
Не каких изминений!
underwoker
04.08.2014, 21:01
Ну что?
- - - Добавлено - - -
Не каких изминений!
Эм, вам сказали же "Получите строку, на которой ошибка"
Почему вы не читаете что вам пишут?
Эм, вам сказали же "Получите строку, на которой ошибка"
Почему вы не читаете что вам пишут?
Я всё вижу что пишут!!!!
И я написал не каких изменений нет, значит их нет! Вот лог:
[21:20:27] [debug] AMX backtrace:
[21:20:27] [debug] #0 000b1888 in ?? (0x00000000, 0x00000001) from RSDS.amx
[21:20:27] [debug] #1 0009c4d4 in public OnDialogResponse (0x00000000, 0x000015af, 0x00000001, 0x00000001, 0x007633ac) from RSDS.amx
[21:20:34] [debug] Run time error 3: "Stack/heap collision (insufficient stack size)"
[21:20:34] [debug] Stack pointer (STK) is 0x763428, heap pointer (HEA) is 0x7633F0
underwoker
04.08.2014, 22:17
Я всё вижу что пишут!!!!
И я написал не каких изменений нет, значит их нет! Вот лог:
Значит вы не сделали то что от вас просили, (-d3)
Вам должно было вывести строку с ошибкой.
Значит вы не сделали то что от вас просили, (-d3)
Вам должно было вывести строку с ошибкой.
и -d3 тоже сделал!
underwoker
05.08.2014, 00:17
и -d3 тоже сделал!
Таак, пойдем сложным путем. Что как вы сделали -d3? Все действия опишите.
Таак, пойдем сложным путем. Что как вы сделали -d3? Все действия опишите.
Зашёл в павно(папку), открыл settings, ввел так
Params=-d3
underwoker
05.08.2014, 17:35
Зашёл в павно(папку), открыл settings, ввел так
А теперь прочтите что написано в мануале по CrashDetect и сравните, что сделали вы, и что там написано:
1.Открыть блокнот и ввести "-d3" (без кавычек).
2.Сохранить файл как "pawn.cfg" (под именем указать параметр "Все файлы") в папку с Pawno.
3.Заново скомпилировать мод.
А теперь прочтите что написано в мануале по CrashDetect и сравните, что сделали вы, и что там написано:
1.Открыть блокнот и ввести "-d3" (без кавычек).
2.Сохранить файл как "pawn.cfg" (под именем указать параметр "Все файлы") в папку с Pawno.
3.Заново скомпилировать мод.
Что открыть?
underwoker
05.08.2014, 18:09
Что открыть?
Блокнот
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot