Назад

Магазины и функция callshop

Автор: ?????: Дата: 02.08.2011

Ок. Думал-думал, еще и не один думал... В общем два вопроса по магазинам.

1) Есть ли ограничение на количество предметов в магазине?
Сделал магазин, в нем продаются все карты кроме мвп. После запуска - в магазине отображается некоторое количество карт. Нашел последнюю отображаемую карту в скрипте и убрал все, что после нее. Точнее поставил в следующего нпц с картами. @reloadscripts - и у меня два магазина. Во втором так же отображается то же самое количество карт, а все остальные не отображаются, ничего. Таким же макаром разбил все на 4 нпц. Вот и сижу, соображаю, ограничение чтоли есть?

2) Ну... Сначала приведу весь скрипт.

prontera,162,185,4	script	Оружейник	730,{
mes "[Оружейник]";
mes "Выбери тип оружия:";
switch(select("Dagger","One-Handed Sword","Two-Handed Sword","Spear","Katar","Axe","Knuckle","Mace","Bow","Instrument","Whip","Rod&Stuff","Book","Для ганслингера","Для ниндзи")){
case 1:
close2;
callshop "Daggerz",0;
break;
case 2:
close2;
callshop "One-Handed Swordz",1;
break;
case 3:
close2;
callshop "Two-Handed Swordz",1;
break;
case 4:
close2;
callshop "Spearz",1;
break;
case 5:
close2;
callshop "Katarz",1;
break;
case 6:
close2;
callshop "Axez",1;
break;
case 7:
close2;
callshop "Knucklez",1;
break;
case 8:
close2;
callshop "Macez",1;
break;
case 9:
close2;
callshop "Bowz",1;
break;
case 10:
close2;
callshop "Instrumentz",1;
break;
case 11:
close2;
callshop "Whipz",1;
break;
case 12:
close2;
callshop "Rodz&Stuffz",1;
break;
case 13:
close2;
callshop "Bookz",1;
break;
case 14:
close2;
callshop "Gunslingerz",1;
break;
case 15:
close2;
callshop "Ninjaz",1;
break;
}
end;
}

Вот скрипт. Выбираешь любой магазин - и ничего не происходит, просто зависает скрипт (кроме самого первого, там появляется окно выбора покупки-продажи, но после выбора опять же зависает скрипт). Сами магазины стоят и нормально функционируют. ЧЯДНТ? Сам уже не соображаю, мистика какая-то.

Автор: Кеник: Дата: 02.09.2011

Хм... Ок. Переписал по образу и подобию, поменял содержимое селекта, вписал вместо брейков енды и сами магазины в этот же файл засунул. Вот что получилось:

prontera,162,185,4	script	Оружейник	730,{
mes "[Оружейник]";
mes "Выбери тип оружия:";
switch(select("Dagger:One-Handed Sword:Two-Handed Sword:Spear:Katar:Axe:Knuckle:Mace:Bow:Instrument:Whip:Rod&Stuff:Book:Для ганслингера:Для ниндзи")){
case 1:
close2;
callshop "Daggerz",0;
end;
case 2:
close2;
callshop "One-Handed Swordz",1;
end;
case 3:
close2;
callshop "Two-Handed Swordz",1;
end;
case 4:
close2;
callshop "Spearz",1;
end;
case 5:
close2;
callshop "Katarz",1;
end;
case 6:
close2;
callshop "Axez",1;
end;
case 7:
close2;
callshop "Knucklez",1;
end;
case 8:
close2;
callshop "Macez",1;
end;
case 9:
close2;
callshop "Bowz",1;
end;
case 10:
close2;
callshop "Instrumentz",1;
end;
case 11:
close2;
callshop "Whipz",1;
end;
case 12:
close2;
callshop "Rodz&Stuffz",1;
end;
case 13:
close2;
callshop "Bookz",1;
end;
case 14:
close2;
callshop "Gunslingerz",1;
end;
case 15:
close2;
callshop "Ninjaz",1;
end;
}
end;
}

prontera,227,77,7 shop Bookz 71,1573:1,1551:1,1550:1,1568:1,1571:1,1569:1,1570:1,1564:1,1558:1,1561:1,1565:1,1559:1,1572:1,1560:1,1552:1
prontera,212,77,5 shop Bowz 732,1713:1,1715:1,1722:1,1727:1,1703:1,1701:1,1702:1,1730:1,1704:1,1705:1,1710:1,1711:1,1741:1,1736:1,1724:1,1732:1,1731:1,1716:1,1733:1,1708:1,1726:1,1737:1,1723:1,1725:1,1740:1,1734:1,1721:1,1720:1
prontera,212,74,5 shop Daggerz 747,13011:1,13033:1,1235:1,1231:1,1228:1,1246:1,1241:1,1205:1,1214:1,1242:1,13038:1,13000:1,1226:1,13034:1,1211:1,13030:1,1233:1,1249:1,1223:1,13019:1,1220:1,13006:1,1237:1,13015:1,1244:1,1230:1,13017:1,13039:1,13008:1,13009:1,1247:1,1229:1,1202:1,1225:1,1208:1,13027:1,1234:1,13013:1,1248:1,13016:1,13035:1,1217:1,13018:1,1224:1,13028:1,1238:1
prontera,212,71,5 shop One-Handed Swordz 745,1108:1,1140:1,13405:1,1135:1,13400:1,1132:1,13414:1,1137:1,1105:1,1133:1,1149:1,1128:1,1145:1,1131:1,1141:1,1138:1,1130:1,1124:1,1111:1,1125:1,1127:1,1144:1,1114:1,1136:1,1148:1,1102:1,1139:1,1147:1,1120:1,13413:1,13412:1
prontera,212,68,5 shop Two-Handed Swordz 728,1155:1,1175:1,1182:1,1162:1,1172:1,1186:1,1166:1,1169:1,1179:1,1117:1,1170:1,1165:1,1164:1,1176:1,1167:1,1178:1,1152:1,1181:1,1158:1,1188:1,1185:1,1168:1
prontera,212,65,5 shop Spearz 733,1421:1,1415:1,1413:1,1422:1,1402:1,1420:1,1408:1,1417:1,1405:1,1416:1,1478:1,1485:1,1470:1,1484:1,1476:1,1474:1,1455:1,1452:1,1464:1,1471:1,1483:1,1411:1,1469:1,1458:1,1477:1,1461:1,1468:1
prontera,212,62,5 shop Axez 726,1302:1,1304:1,1309:1,1306:1,1307:1,1375:1,1352:1,1363:1,1358:1,1370:1,1371:1,1364:1,1369:1,1355:1,1376:1,1377:1,1366:1,1365:1,1368:1,1361:1,1384:1
prontera,212,59,5 shop Katarz 725,1271:1,1265:1,1270:1,1261:1,1266:1,1269:1,1255:1,1251:1,1253:1,1256:1,1259:1,1257:1,1258:1,1262:1,1260:1,1264:1,1263:1,1268:1
prontera,212,56,5 shop Knucklez 746,1822:1,1814:1,1810:1,1820:1,1812:1,1808:1,1815:1,1825:1,1819:1,1804:1,1818:1,1806:1,1821:1,1802:1
prontera,212,53,5 shop Macez 484,1520:1,1502:1,1511:1,1539:1,1528:1,1525:1,1544:1,1505:1,1514:1,1541:1,1527:1,1508:1,1538:1,1532:1,1517:1,1548:1,1531:1
prontera,227,74,7 shop Instrumentz 741,1919:1,1920:1,1925:1,1917:1,1916:1,1908:1,1912:1,1910:1,1926:1,1915:1,1906:1,1904:1,1922:1,1902:1
prontera,227,71,7 shop Whipz 719,1969:1,1974:1,1964:1,1972:1,1971:1,1973:1,1967:1,1966:11962,1970:1,1957:1,1965:1,1951:1,1980:1,1968:1,1979:1,1959:1,1953:1,1955:1
prontera,227,68,7 shop Rodz&Stuffz 64,1611:1,2001:1,1637:1,1615:1,1629:1,1631:1,1622:1,1646:1,1624:1,1613:1,1625:1,1630:1,1602:1,1472:1,1608:1,2000:1,1626:1,1620:1,1618:1,1636:1,1605:1,1614:1,1616:1,1643:1,1473:1
prontera,227,65,7 shop Gunslingerz 894,13102:1,13103:1,13104:1,13105:1,13106:1,13101:1,13108:1,13107:1,13150:1,13152:1,13153:1,13166:1,13170:1,13164:1,13155:1,13156:1,13167:1,13154:1,13173:1,13168:1,13169:1,13159:1,13157:1,13160:1,13161:1,13162:1
prontera,227,62,7 shop Ninjaz 804,13300:1,13301:1,13302:1,13303:1,13304:1
prontera,227,59,7 shop Ammoz Tools 478,1750:0,1751:0,1752:0,1753:0,1754:0,1755:0,1756:0,1757:0,1758:0,1759:0,1760:0,1761:0,1762:0,1763:0,1764:0,1765:0,1766:0,1767:0,1768:0,1769:0,1770:0,1771:0,1772:0,13200:0,13201:0,13202:0,13203:0,13204:0,13205:0,13206:0,13207:0,13250:0,13251:0,13252:0,13253:0,13254:0,13255:0,13256:0,13257:0,13258:0,13259:0,7521:0,7522:0,7523:0,7524:0
prontera,212,83,5 shop Accessoryz 438,2743:1,2656:1,2627:1,2747:1,2655:1,2619:1,2671:1,2727:1,2605:1,2625:1,2617:1,2607:1,2746:1,2730:1,2616:1,2728:1,2732:1,2729:1,2613:1,2602:1,2622:1,2703:1,2604:1,2624:1,2701:1,2652:1,2702:1,2726:1,2719:1,2716:1,2749:1,2618:1,2648:1,2649:1,2650:1,2651:1,2603:1,2623:1,2647:1,2745:1,2717:1,2601:1,2621:1,2678:1,2679:1,2680:1,2608:1,2626:1,2615:1,2677:1,2744:1,2644:1,2620:1,2659:1,2660:1,2661:1,2662:1


Проблема так и не решилась. Единственное - у нпцов есть спрайты (то бишь они не невидимые) и на них можно ткнуть в другом месте. Не думаю, что это влияет. Еще мысли, господа?

Автор: dimjke: Дата: 02.09.2011

Правильно так:

- shop One-Handed Swordz 139,1108:1,1140:1,13405:1,1135:1,13400:1,1132:1,13414:1,1137:1,1105:1,1133:1,1149:1,1128:1,1145:1,1131:1,1141:1,1138:1,1130:1,1124:1,1111:1,1125:1,1127:1,1144:1,1114:1,1136:1,1148:1,1102:1,1139:1,1147:1,1120:1,13413:1,13412:1

Автор: Кеник: Дата: 02.09.2011

То есть не получится использовать существующий магазин?

Автор: dimjke: Дата: 02.09.2011

Цитата Кеник;33076:
То есть не получится использовать существующий магазин?

Нет

Автор: Кеник: Дата: 02.09.2011

Спасибо. Проблема решена. Вопрос про ограничения остается открытым...

Автор: Jarek: Дата: 02.09.2011

Цитата Кеник;33076]То есть не получится использовать существующий магазин?

Пруф:
The callshop function calls a invisible shop (view -1) as if the player clicked on it.


[QUOTE=Кеник;33051]Вот и сижу, соображаю, ограничение чтоли есть?


static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const char* start, const char* buffer, const char* filepath)
{
//TODO: could be rewritten to NOT need this temp array [ultramage:

#define MAX_SHOPITEM 100

Автор: Кеник: Дата: 02.09.2011

Если там поменять на 600 допустим и скопмилить - ограничение увеличится?

Автор: Jarek: Дата: 02.09.2011

100 джеллопи и 1 гарлет, итог:
http://img132.imageshack.us/img132/3408/screeneathena013w.jpg
Но я ставил 200, на 600 надо уточнять

Ну я попробовал...
Как я понял слишком длинная строка, он её обрезал и стал ругаться на неправильный синтаксис.
Так что слишком много все равно не получится

Автор: Кеник: Дата: 02.09.2011

Ну пусть так, разобью на отдельных нпц) Спасибо.