|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Меня в реализации книг бесит очень многое.
Цитата: 1. После прочтения книжка исчезает. Мы что, ее кушаем чтоли? 2. Все книги считаются разными, не предполагается, что у одного и того же номера "Пушки и Пули" может быть два абсолютно идентичных экземпляра. 3. Нельзя дать почитать напарнику. 4. Получать пользу от книг можно только до развитости скилла в 99%, дальше бесполезно. Я никогда не развивал Small Guns до тех пор, пока книжки не переставали действовать.
Багов много, я пока решил остановиться на последнем. Как исправить баг #4? Вот моя задумка:
Цитата: 1. Польза должна измеряться в Skill Points и только в них. Измерять пользу в процентах - порождать обидные читы. 2. Сделать ограничение пользы от книг зависящее не от процентов развитости умения, а от того, сколько книг прочитано ранее и только от этого.
Таким образом, можно будет читать книги когда угодно, но у вас ни за что не получиться развить умение от 50% до 300% только за счет книг. Допустим, за счет книг максимум можно сэкономить 50 Skill Points. Тогда если вы прочитаете все эти книги сначала, вы измените свой уровень от 50% до 100%, а если позже - от 180% до 190%. В этом и была вся идея, вылилась она в примерно в такой код:
Код:
/* */ /* Используется не только GVAR_BOOK_POINTS, но и следующие за ней 17 GVAR. */ /* */ #define GVAR_BOOK_POINTS (696) /* */ /* Объявлений, которые совсем не используются, но вроде как нужны для */ /* порядка. */ /* */ #define GVAR_BOOK_POINTS_SMALL_GUNS (696) #define GVAR_BOOK_POINTS_BIG_GUNS (697) #define GVAR_BOOK_POINTS_ENERGY_WEAPONS (698) #define GVAR_BOOK_POINTS_UNARMED_COMBAT (699) #define GVAR_BOOK_POINTS_MELEE (700) #define GVAR_BOOK_POINTS_THROWING (701) #define GVAR_BOOK_POINTS_FIRST_AID (702) #define GVAR_BOOK_POINTS_DOCTOR (703) #define GVAR_BOOK_POINTS_SNEAK (704) #define GVAR_BOOK_POINTS_LOCKPICK (705) #define GVAR_BOOK_POINTS_STEAL (706) #define GVAR_BOOK_POINTS_TRAPS (707) #define GVAR_BOOK_POINTS_SCIENCE (708) #define GVAR_BOOK_POINTS_REPAIR (709) #define GVAR_BOOK_POINTS_CONVERSANT (710) #define GVAR_BOOK_POINTS_BARTER (711) #define GVAR_BOOK_POINTS_GAMBLING (712) #define GVAR_BOOK_POINTS_OUTDOORSMAN (713) /* */ /* Сколько максимум Skill Points можно получить из книг. */ /* */ #define BOOK_POINTS_MAX (50) /* */ /* Максимум Skill Points из одной книги. */ /* */ #define BOOK_POINTS_STEEP (5) /* */ /* Должна переводить SkillPoints в SkillPercents. */ /* */ /* percents - начальный процент умения */ /* points - количество баллов, которые мы хотим потратить на его развитие */ /* (result bwand 511) - конечный процент умения */ /* (result/512) - количество Skill Points, которые мы перерасходовали */ /* */ procedure points_to_percents(variable percents, variable points) begin while points>0 do begin if percents<101 then points:=points-1; else if percents<126 then points:=points-2; else if percents<151 then points:=points-3; else if percents<176 then points:=points-4; else if percents<201 then points:=points-5; else points:=points-6; percents:=percents+1; end points:=-points; return (512*points+percents); end /* */ /* Игрок читает книгу. */ /* */ /* result - зря (не зря) */ /* */ procedure dude_read_book(variable skill_num) begin variable percents; variable points; /* */ /* Сколько Skill Points мы можем получить из книжки. */ /* */ if global_var(GVAR_BOOK_POINTS+skill_num)+BOOK_POINTS_STEEP>BOOK_POINTS_MAX then points:=BOOK_POINTS_MAX-global_var(GVAR_BOOK_POINTS+skill_num); else points:=BOOK_POINTS_STEEP; /* */ /* Если книжки нам все еще полезны. */ /* */ if points>0 then begin percents:=has_skill(dude_obj,skill_num); points:=points_to_percents(percents,points); percents:=(points bwand 511)-percents; points:=BOOK_POINTS_STEEP+(points/512); /* */ /* Поднимаем Skill. */ /* */ critter_mod_skill(dude_obj,skill_num,percents); /* */ /* Увеличиваем счетчик. */ /* */ set_global_var(GVAR_BOOK_POINTS+skill_num,global_var(GVAR_BOOK_POINTS+skill_num)+points); return true; end else return false; end
Конечно, самый большой недостаток - то, что если мы захотим впихнуть это в игру, то прийдется менять все прошники книг. Иначе никак, двигло корявое. Конечно, остается еще куча вопросов и ньюансов, но, согласитесь, это уже шаг? Если у кого-нибудь есть интересные идеи - приглашаю на обсуждение здесь. Лично меня в данный момент интересуют две фичи: 1. Возможность заставить читать наших партийцев (чтобы сделать это прийдестя править ихние скрипты ). 2. Возможность сделать так, чтобы книга после прочтения не улетучивалась, но свою полезность для того, кто ее прочитал, она навеки теряла. P.S. Хотелось бы услышать мнение людей, делающих обширные моды (патчи).
----- hit me, nail me, make me god
|
Отправлено: 18:30 - 2 Янв., 2006 | ИСПРАВЛЕНО: Alan Killenger - 21:39 - 2 Янв., 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Ты это проверял? Спорю, что нет. Перечислю проблемы: 1. Книги после навешивания на них скрипта перестанут складываться в стопку. 2. Увеличивает скиллпойнты не скрипт, а движок. Отменить ты это никак не сможешь. 3. Ну и на закуску: при использовании предмета из окошка инвентаря скрипт use не работает (правда, только для некоторых подтипов, для книжки, может, и сработает, но п.2 обойти не получится). Убрать исчезание "просто": удаление предметов (и ограничения на наркоту, кстати) привязано к номеру прошника.
|
Отправлено: 20:41 - 2 Янв., 2006
|
|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Бла, кто-то читает не слишком внимательно.
Цитата: Конечно, самый большой недостаток - то, что если мы захотим впихнуть это в игру, то прийдется менять все прошники книг. Иначе никак, двигло корявое.
Т.е. прийдется создавать прошник с другим номером, но с тем же описанием и картинкой и вешать на сам прототип такой скрипт. Все, кроме складывания таких прошников в стопочки (ну не задумывался), я проверял, работает замечательно.
----- hit me, nail me, make me god
|
Отправлено: 20:44 - 2 Янв., 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Я читаю очень внимательно, товаристч. Придётся изменять прошники, править все карты и скрипты всех торговцев. Окромя этого ещё вопрос про инвентарь и повышения скилла двигом. Серьёзно. Поддаётся оверрайду? Или нет?
|
Отправлено: 20:50 - 2 Янв., 2006
|
|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Нет, никакие script_overrides не помогают, как ни крути. Я и говорю, это может сделать только модификатор, кторый строит глобальный мод (патч) ;(. Вот как раз при использовании такой книжки из инвентаря все нормально и работает, но... обязательно это должен быть другой прошник.
----- hit me, nail me, make me god
|
Отправлено: 20:51 - 2 Янв., 2006 | ИСПРАВЛЕНО: Alan Killenger - 21:53 - 2 Янв., 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Вот теперь я спрашиваю: ты внимательно читал? Повторю вопрос: если ты навешиваешь скрипт на книгу, ставишь в use_p_proc script_overrides и юзаешь её из инвентаря, то скилл повышается? Да или нет?
|
Отправлено: 20:54 - 2 Янв., 2006
|
|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Да. Все равно идет двигловое повышение скилла и запись в display_msg. Легкой модераторской рукой почистишь тему, OK?
----- hit me, nail me, make me god
|
Отправлено: 20:57 - 2 Янв., 2006 | ИСПРАВЛЕНО: Alan Killenger - 22:00 - 2 Янв., 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Зачем чистить? Итак, если от повышения скилла движком не помогает оверрайд, то идею не сможет реализовать никто. Кроме Mynah'а . И дело тут не в прошниках.
|
Отправлено: 21:01 - 2 Янв., 2006
|
|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Почему? И почему дело не в прошниках, когда вопрос именно в них. Точнее в муторной работе по замене номеров прошников. Оверрайд не помогает от повышения скилла при использовании прошника оригинальной книги, но если создать новый прошник, кинуть ему описание и картинку ориг. книги и присобачить свой скрипт - все будет тип топ. Это так, если меня все-таки неправильно трактовали.
----- hit me, nail me, make me god
|
Отправлено: 21:11 - 2 Янв., 2006
|
|
Mynah
Модератор
Откуда: Пермь Регистрация: Окт. 2004
Всего: 469 сообщений
|
Убрать двиговое повышение скилла не так уж сложно. Самый "узкий" момент - стопочки. Когда пройдёт похмелье и кончаться праздники - подумаю над этим. ЗЫ: Имхо, надо реализовывать так: -Чузен читает книгу -В инвентарь добавляется итем: начатая книга. -Её можно юзать до определённого уровня скилла (на следующее прочтение можно поставить различные условия. прошедшее время, навык должен быть больше, etc.) -Когда скилл достигнет определённого уровня, при юзании книжки будет выводится сообщение, а-ля: для того чтобы усвоить дальнейший материал, вы должны попрактиковаться в уже пройденном. -После достижения следующего порога, книжку можно юзать вновь. -Все остальные книжки такого же типа будут складываться в стопку и, при попытке почитать такой "стопочный" вариант будет выводится что-то типа такого: "вы не можете найти страницу, на которой остановились, лучше почитать вариант с закладкой" Основная грабля - на стопочном варианте тоже должен висеть скрипт. Но именно над этим я буду думать, когда приду в состояние стояния:) [EDIT] Alan Killenger, Замена всех прошников на свои мне кажется не элегантным и громоздким решением. Это ж сколько такой патч будет весить, с учётом изменения всех карт и кучи скриптов? Плюс - несовместимость с модами.
----- Scio me nihil scire
|
Отправлено: 21:29 - 2 Янв., 2006 | ИСПРАВЛЕНО: Mynah - 23:36 - 2 Янв., 2006
|
|
|
|