Полная Версия: Деньги-деньги-деньги!
Aidan4
В общем, пишу маленький модик... Мне нужно отнять 100000 золотых из инвенторя при условии что они, конечно, есть...
В общем в диалогах нужная ветка стоит, где идёт проверка на то, что сказал игрок и есть ли у него 100000. При выполнении у игрока отнимаются деньги, а НеПиСяю добавляются. Я пробовал с айтемом "Gold_001", т.е.
player->removeitem "Gold_001" 100000
Но при тесте отнималось только 36 с чем то тысяч (или около того)... Я ума не приложу, почему так происходит... Может, мне цену сбить ;) Или ещё чего сделать? Честно говоря, голова уже не варит... Может вы что-нибудь посоветуете? ;)
Scorpy [ZISpel]
У меня сейчас пробелмы с директХ, не могу даже конструктор запустить. Проверь, нету ли переменной золота.
Aidan4
Я ещё не писал скриптов. Работа идёт по порядку ;) Сначала обстановка, потом НиПиСяи и диалоги, лишь потом скрипты. Поэтому переменной золота быть не должно. Или ты про другое?
Cheb
Там какое-то ограничение, большие суммы работают некорректно.
Можно попробовать отнять деньги за несколько приёмов, по 25000, например.
Aidan4
Возможно, число денег ;) (да и, наверное, любых других предметов) определяется некой таинственной переменной, вложенной в движок ТЕС:КС (а, может, и другой какой переменной). Число же корректно работающих объектов может равняться 2^15 или 32768 единиц.
Это всего лишь моя теория, которую я сейчас пойду и проверю. Точнее, попытаюсь проверить. Могу ошибаться (как и все мы ;)
Aidan4
Так... теория не была подтверждена экспериментально... корректность заканчивалась на числе 34464. С этим числом чего я только ни делал, не помогло... Возможно, пока точно не узнаем, в чём же дело придётся считать, что это глюк движка и нужно пользоваться числами до 34464. Само же это число можно временно назвать "крайней точкой". Удачных поисков закономерности, камрады! ;)

ЕДИТ: продолжил исследования... при попытке отнять 1000000 (1млн.) золотых из инвентаря отнималось только 16960. Это даже меньше, чем при попытке отнять 100000 примерно в 2 раза (в 2,0(3207547169811) раз, если быть точным). Ума не приложу, почему так происходит, а потому предлагаю пока свалить это всё на глюк движка и не переходить "крайнюю точку" в 34464 единиц объектов. По крайней мере, до того момента, пока не найдётся более-менее вразумительное объяснение сему явлению ;)
VladZ
34464=100000-65536=100000-2^16.
1000000-16960=15*2^16.
Хмм... закономерность, говорите.
Все-таки переполнение счетчика, только
при 65536. В общем, отнимать действительно
придется в несколько этапов.
Ваш ответ: