|
DREDDus
Пользователь
Откуда: Россия, Красноярск Регистрация: Янв. 2005
Всего: 38 сообщений
|
Помнится в Fallout первом была такая приблуда: умер от жажды - не взял с собой фляжек. Это была версия от какой-то компании, не помню какой. Точно не Фаргус. Ещё сходил я один раз в свечение, наглотался радиации и умер по дороге домой. Сначала не понял, почему. Потом дошло, что от радиации. Разве нельзя сделать таково же с едой? И вообще, зачем нужны всякие Игуаны? Не для еды - ли?
----- Мы все - жители 13-го
|
Отправлено: 19:52 - 30 Янв., 2005
|
|
tracktor
Пользователь
Откуда: Москва Регистрация: Март 2004
Всего: 183 сообщения
|
Цитата: Quote: from DREDDus on 19:52 - 30 Янв., 2005 Помнится в Fallout первом была такая приблуда: умер от жажды - не взял с собой фляжек. Это была версия от какой-то компании, не помню какой. Точно не Фаргус. Ещё сходил я один раз в свечение, наглотался радиации и умер по дороге домой. Сначала не понял, почему. Потом дошло, что от радиации.
Это движок... Исходников же пока ни у кого нет.
Цитата:
Разве нельзя сделать таково же с едой? И вообще, зачем нужны всякие Игуаны? Не для еды - ли?
А жратва немного здоровье повышает
|
Отправлено: 22:54 - 30 Янв., 2005
|
|
DREDDus
Пользователь
Откуда: Россия, Красноярск Регистрация: Янв. 2005
Всего: 38 сообщений
|
Кроме фруктов, ни за какой больше едой не замечал такого.
----- Мы все - жители 13-го
|
Отправлено: 20:03 - 2 Фев., 2005
|
|
Aman
Пользователь
Откуда: Киев Регистрация: Апр. 2005
Всего: 208 сообщений
|
Вот решил пополнить эту темку на предмет "stomach'a" в obj_dude.int(SSL). Подробностей по этому делу нигде не нашёл, а так может кому-то будет интересно. Ковырять "желудок" гемор страшный, но вот что получается: "Желудок" имеет наполненность от 0 до 100 (на maximum влияет endurance). Значение наполненности хранит 104 гвара, при старте принимает значение 75, что при беглом взгляде видно в command.h. Но для того чтоб это дело хоть как-то начало работать, надо подкорректировать макрос в command.h, меняем #define dude_eat_food(amt) inc_global_var(GVAR_DUDE_STOMACH, amt); // такой кажись оригинал ? на #define dude_eat_food(amt) inc_global_var_amt(GVAR_DUDE_STOMACH, amt); Тобиш в оригинале в "желудок" всё время добавлялось 1 с ограничением не больше 100 и дальнейшие "фишки" по этому делу не имели смысла. Едем дальше - стартанули, получили свои начальные 75 пищи, тут вроде всё нормально. Теперь procedure map_update_p_proc каждые 3 мин отнимает от наполненности какое-то число (за час 20), то есть за 4-5 часов dude голодный (вроде с алгоритмом всё нормально, но таки есть где-то ошибка - смотреть ниже). Чтоб наполнять желудок исправим макросы #define pid_is_drink_pid(x) ((obj_pid(x)==PID_NUKA_COLA) or (obj_pid(x)==PID_BEER)... ну и так дальше для pid_is... Теперь паримся с procedure use_obj_on_p_proc: тут такой алгоритм - если НА dude было использована скажем, бутылка пива, то в "желудок" добавляется +5. Теперь начинаются разные но: чтоб добавить +5, надо положить сабж в слот, кликать на слот, потом на себя (тобиш из рюкзака юзать не выйдет - в оригинале нет такого алгоритма, здесь надо как-то завязать на use_p_proc). Второе "но": сабж должен быть юзабельный, что катит не для всех предметов пищи (например BOX_OF_NOODLES - макароны). Надо править PRO. Тут у меня возникала проблема: при достижении 104й гвары 0 (dude голодный) макрос dude_eat_food как-то неправильно работал - ничего не прибавлялось, при значении > 0 всё нормально , с этим я обломался пока разбираться, в общем это не проблема. На этом оригинальный скрипт заканчивается и, увы, нет никакого алгоритма что-то делающего при голоде, НО имеем нереализованные макросы: dude_stomach_full и dude_stomach_hungry они просто возвращают значения TRUE, FALSE проверяя процентную наполненность желудка. К примеру, я вставлял в map_update_p_proc такое: if dude_stomach_full then display_mstr(170); if dude_stomach_hungry then display_mstr(175); и в obj_dude.msg добавляем к примеру {170}{}{Вы сыты и довольны жизнью.} {175}{}{Вы голодны - надо есть, а то долго не протянешь!}. Делаем, запускаем, получаем через каждые 25 секунд раздражающие надписи . Это конечно грубый набросок. Два макроса в command.h (касательно "желудка" ) вообще нигде не используются, я тоже не знаю куда их можно приспособить (dude_can_eat(x) и dude_can_eat_food(amt) - одинаковые). Остальные (типа pid_is_medium_meal(x)) можно задействовать наклепав парочку новых ПРОшэк, но это не критично. В игре макрос(ы) "желудка" есть ещё только в скрипте dcmom.int (ресторан-мамы). Можно попробовать добавить уменьшение жизни, характеристик при голоде. Вот сейчас возникла "сумашедшая" идея по поводу управления здоровьем чуза при движении по warldmap'у: введём алгоритм проверяющий наличие еды в инвентаре при ВЫХОДЕ "в мир", сделаем серию ПРОшэк-наркотиков которыми алгоритм соответстенно пичкал бы чуза на выходе (то есть динамически при выходе создаём энное кол-во наркотиков и use_obj_on_obj). Действия наркотиков ведь обрабатываются при востлэндиньи ? В ПРОшках указывается время различных модификаций характеристик. По-моему должно получится. Хотелось бы услышить комментарии, особенно по идее с наркотиками-регуляторами и завязке сабжей на use_p_proc. Пробные тесты жизни с едой в фоле показались мне интересными.
|
Отправлено: 1:13 - 26 Апр., 2005
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
А чего тут комментировать... Вот ошибка: pid_is_drink_pid(obj_being_used_with) obj_being_used_with возвращает указатель, а pid_is_drink_pid хочет ПИД. Ещё один затык - невозможно контролировать юзание предметов из инвентаря. Факты известные, сто раз обсуждались.
|
Отправлено: 10:34 - 26 Апр., 2005
|
|
Aman
Пользователь
Откуда: Киев Регистрация: Апр. 2005
Всего: 208 сообщений
|
С PID заменив макрос на #define pid_is_drink_pid(x) (obj_pid(x)==PID_NUKA_COLA) проблем нет. После препроцессора получаем obj_pid(obj_being_used_with)==(106). Нашёл причину ошибки возникавшей у меня (упорно державшаяся на 0 гвара GVAR_DUDE_STOMACH). В оригинале очки пищи отбирались каждый раз при срабатывании map_update_p_proc. Стоило начать играть, выйти в деревню, отдохнуть с помощью будильника и эта процедура вызывается очень часто (юзнул что-нибудь, сразу map_update_p_proc), чтобы то что есть в оригинале, работало надо: procedure map_update_p_proc begin variable x; variable days_since_exposed; //вара MUTATION CODE // digest food if (game_time - local_var(LVAR_Last_Digest_Time) > (ONE_GAME_MINUTE * 3)) then begin x := amt_food_digested_in_time(local_var(LVAR_Last_Digest_Time)); dude_eat_food(-x); set_local_var(LVAR_Last_Digest_Time,game_time); // будет работать лет 7 end //дальше идёт MUTATION CODE Теперь всё что было задействано в оригинале у меня работает (еда из СЛОТА при отсутствии эффектов при голоде). Вопрос немного не по теме: use_p_proc ну никак нельзя использовать для еды из инвентаря ??
|
Отправлено: 1:11 - 28 Апр., 2005
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
2Aman Пока проблема не решена. ЗЫ Все технические трудности лучше обсуждать в Техподдержке.
|
Отправлено: 11:12 - 28 Апр., 2005
|
|
|
|