|
Ray
Модератор
Откуда: Донецк,Украина Регистрация: Янв. 2004
Всего: 746 сообщений
|
Следует чётко понимать, что есть прототип. В нём описываются значения(характеристики) персонажа. Как то повреждения, спец. возможности, причасность к команде, жизнь и т.д. Каждому критеру соответствуют свои прошки. Вопрос заключается в другом. Ты можешь взять двух одинаковых криттеров(с одинаковыми прошками) и прицепить к ним разные скрипты. Тогда поведение у них будет разное, но характеристики одни. Но при необходимости создаются отдельные прошки под спец. криттеров. Например, если тебе без разницы, что в городе у тебя несколько одинаковых перс. ты исспользуешь одинаковых криттеров(наркоманы). А если тебе нужен кто-то отдельно со своими личными хар. (главный Босс), то создаются отдельно.
----- Не бывает невозможных задач – бывает мало времени.
|
Отправлено: 17:56 - 8 Апр., 2005
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
2Jager Настоятельнейше рекомендую сходить сюда и почитать вот это, а также всё, что лежит в разделе "Скриптинг". И не говорить больше, что roll_vs_skill ничего не возвращает. Функция описана очень подробно.
|
Отправлено: 13:02 - 9 Апр., 2005
|
|
Jager
Пользователь Регистрация: Март 2005
Всего: 38 сообщений
|
А я, простите, что, говорил, что она ничего не возвращает? Я хотел понять, можно ли сказать, что при такой величине скилла, вероятность каждого из четырех значений такая-то. Точного ответа, наверное нет. Кстати, если какая-то ссылка на документы проскакивает, я всегда читаю. И вообще, мои вопросы все "по материалам лекций".
|
Отправлено: 18:52 - 9 Апр., 2005
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Цитата: А какими-нибудь числами можно подкрепить? Я вот знаю, что есть число - текущее значение скилла. А как там кидается? Ни одного числа эта операция не выдает...
Ноу комментс. ЗЫ Ещё раз прошу обратиться к докам. И сделать контекстный поиск по исходникам от БИС, чтобы увидеть процесс, так сказать, в действии.
|
Отправлено: 9:22 - 10 Апр., 2005
|
|
Jager
Пользователь Регистрация: Март 2005
Всего: 38 сообщений
|
Обратился. Результат поиска, например procedure Node027 begin if (is_success(roll_vs_skill(dude_obj,SKILL_CONVERSANT,0))) then begin Reply(263); NOption(264,Node999,004); end else begin ............................. Что написано в справочнике (извините за перепечатывание) int roll_vs_skill(ObjectPtr who, int skill, int modifier) - выполняет "бросок кубика" на умения (skill) Аргументы: who - указатель на объект skill - номер проверяемого умения (см. Приложение) указанного объекта modifier - модификатор значения умения, отрицательное значение уменьшает вероятность успеха, положительное - увеличивает Возвращаемое значение: ROLL_CRITICAL_FAILURE (0) ROLL_FAILURE (1) ROLL_SUCCESS (2) ROLL_CRITICAL_SUCCESS (3) Что касается из_саксесс, то boolean is_success(int val) - проверяет, является ли результат "броска кубика" успешным Аргументы: val - результат "броска кубика" Возвращаемое значение: TRUE - если результат успешный (val == ROLL_SUCCESS или val == ROLL_CRITICAL_SUCCESS), иначе - FALSE В свете этого, не могли бы Вы все же ответить на уже заданый вопрос (или показать, где в том, что я перепечатал из доки на него ответ), а именно Я хотел понять, можно ли сказать, что при такой то величине скилла, вероятность каждого из четырех возвращаемых занчений roll_vs_skill такая-то. Или текущее значение скилла никак не влияет на выход roll_vs_skill?
|
Отправлено: 12:27 - 11 Апр., 2005
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Подскажите пожалуйста,где здесь неправильный синтаксис? #define NAME 1387 #define Reply(x) gsay_reply(NAME,x) #define Option(x,y) gsay_option(NAME,x,y,-1) procedure Node001; procedure Node002; procedure Node999; procedure Node003; procedure Node004; procedure Node005; procedure Node006; procedure Node007; procedure Node008; procedure Node009; procedure Node010; procedure party_member_count; procedure start begin end procedure talk_p_proc begin Start_gDialog(NAME,self_obj,-1,-1,-1); GSay_Start; call Node001; call Node008; GSay_End; End_Dialogue; end procedure Node001 begin Reply(1); Option(2,Node002); Option(3,Node999); end procedure Node002 begin if party_member_count<3 then party_add(self_obj); else procedure Node010 begin Reply(15); Option(13,Node999); end end procedure party_add begin procedure Node008 begin Reply(4); Option(5,Node003); Option(14,Node009); Option(10,Node999); end procedure Node003 begin Reply(6); Option(7,Node004); Option(8,Node005); Option(9,Node006); Option(11,Node007); Option(10,Node999); end procedure Node004 begin Reply(12); Option(11,Node007) Option(13,Node999) end procedure Node007 begin procedure Node008 begin end end procedure Node005 begin ............//Здесь процедура (неважно какая) end procedure Node006 begin inven_unwield(self_obj); end procedure Node009 begin Reply(13); party_remove(self_obj); end end//Конец процедуры party_add
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 18:31 - 11 Апр., 2005
|
|
Perceptron
Модератор
Откуда: Ivanovo Регистрация: Май 2003
Всего: 502 сообщения
|
2 Jager: >Я хотел понять, можно ли сказать, что при такой то величине скилла, вероятность каждого из четырех возвращаемых занчений roll_vs_skill такая-то. >Или текущее значение скилла никак не влияет на выход roll_vs_skill? Скилл, конечно, влияет. Функция возвращает значения в пределах от 0 до 3. Мат. ожидание равно (предположительно) 1+skill/100. Закон распределения, опять же продположительно, нормальный. is_sucess возвращает 1, если значение лежит в пределах от 1 до 2, is_critical - от 0 до 1 и от 2 и выше. Вероятность прикинь сам. (Добавление от 23:37 - 11 Апр., 2005.) 2 binyan: #define NAME 1387 #define Reply(x) gsay_reply(NAME,x) #define Option(x,y) gsay_option(NAME,x,y,-1) procedure Node001; procedure Node002; procedure Node999; procedure Node003; procedure Node004; procedure Node005; procedure Node006; procedure Node007; procedure Node008; procedure Node009; procedure Node010; procedure party_member_count; // Где объявленные процедуры - Node999, party_member_count? procedure start begin end procedure talk_p_proc begin Start_gDialog(NAME,self_obj,-1,-1,-1); GSay_Start; call Node001; call Node008; GSay_End; End_Dialogue; end procedure Node001 begin Reply(1); Option(2,Node002); Option(3,Node999); end procedure Node002 begin if party_member_count<3 then party_add(self_obj); else // Что else? procedure Node010 begin Reply(15); Option(13,Node999); end end // Что за end? procedure party_add begin // Где объявлена party_add? // Почему собственная процедура названа как одна из стандартных? // Где end? procedure Node008 begin Reply(4); Option(5,Node003); Option(14,Node009); Option(10,Node999); end procedure Node003 begin Reply(6); Option(7,Node004); Option(8,Node005); Option(9,Node006); Option(11,Node007); Option(10,Node999); end procedure Node004 begin Reply(12); Option(11,Node007) Option(13,Node999) // Где точка с запятой? end procedure Node007 begin // Где end? procedure Node008 begin end // Почему Node008 встречается два раза? end // Что за end? procedure Node005 begin ............//Здесь процедура (неважно какая) end procedure Node006 begin inven_unwield(self_obj); end procedure Node009 begin Reply(13); party_remove(self_obj); end end//Конец процедуры party_add // Что за end? ============================================== А теперь то, что скомпилировалось у меня (только почему-то упорно не хотела компилироваться inven_unwield(self_obj); ): #define NAME 1387 #define Reply(x) gsay_reply(NAME,x) #define Option(x,y) gsay_option(NAME,x,y,-1) procedure Node001; procedure Node002; procedure Node003; procedure Node004; procedure Node006; procedure Node005; procedure Node007; procedure Node008; procedure Node009; procedure Node010; procedure Node999; procedure party_member_count; procedure start begin end procedure talk_p_proc begin Start_gDialog(NAME,self_obj,-1,-1,-1); GSay_Start; call Node001; call Node008; GSay_End; End_Dialogue; end procedure Node001 begin Reply(1); Option(2,Node002); Option(3,Node999); end procedure Node002 begin if party_member_count<3 then party_add(self_obj); end procedure Node010 begin Reply(15); Option(13,Node999); end procedure Node008 begin Reply(4); Option(5,Node003); Option(14,Node009); Option(10,Node999); end procedure Node003 begin Reply(6); Option(7,Node004); Option(8,Node005); Option(9,Node006); Option(11,Node007); Option(10,Node999); end procedure Node004 begin Reply(12); Option(11,Node007); Option(13,Node999); end procedure Node999 begin end procedure Node005 begin end procedure Node006 begin end procedure Node007 begin end procedure party_member_count begin end procedure Node009 begin Reply(13); party_remove(self_obj); end ============================================== Советую внимательно относиться к синтаксису, искать ошибки самостоятельно и запомнить, что одна процедура внутри другой объявляться не может. (Отредактировал(а) Perceptron - 23:42 - 11 Апр., 2005)
----- Into The New Year - With A New Vision! Документация по скриптам, туториал по скриптам, вопросы по скриптам, FAQ по моддингу, "Утилиты", fallmods-tutor.
|
Отправлено: 23:02 - 11 Апр., 2005
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
#define NAME 1387 #define Reply(x) gsay_reply(NAME,x) #define Option(x,y) gsay_option(NAME,x,y,-1) procedure Node001; procedure Node002; procedure Node003; procedure Node004; procedure Node006; procedure Node005; procedure Node007; procedure Node008; procedure Node009; procedure Node010; procedure Node999; procedure party_member_count; //Где обьявляется парти_эдд?Почему не обьявляется? procedure start begin end procedure talk_p_proc begin Start_gDialog(NAME,self_obj,-1,-1,-1); GSay_Start; call Node001; call Node008; GSay_End; End_Dialogue; end procedure Node001 begin Reply(1); //Сабж говорит Option(2,Node002); Option(3,Node999); //Варианты моих ответов end procedure Node002 begin /Если выбираю первый вариант,то начинается эа процедура if party_member_count<3 then /Если членов в команде меньше трёх,то party_add(self_obj);// сабж присоединяется,к команде.А иначе?Он должен что-то сказать.. end procedure Node010 begin //Эти процедуры нацинаются только тогда,когда процедура парти_эдд начинается.Где блок? Reply(15); Option(13,Node999); end procedure Node008 begin Reply(4); Option(5,Node003); Option(14,Node009); Option(10,Node999); end procedure Node003 begin Reply(6); Option(7,Node004); Option(8,Node005); Option(9,Node006); Option(11,Node007); Option(10,Node999); end procedure Node004 begin Reply(12); Option(11,Node007); Option(13,Node999); end procedure Node999 begin//Зачем для них бегин энд?Они же уже в опциях присутствуют.Или для каждой процеуры нужно делать бегин энд? end procedure Node005 begin end procedure Node006 begin end procedure Node007 begin end procedure party_member_count begin end procedure Node009 begin Reply(13); party_remove(self_obj); end Вы уж извините,если я чего-то не понимаю.Всё-таки паскаль отличается от си шарп.
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 11:34 - 12 Апр., 2005
|
|
Perceptron
Модератор
Откуда: Ivanovo Регистрация: Май 2003
Всего: 502 сообщения
|
party_add добавь сам. Только не забудь ее переименовать во что-нибудь другое. >/Если выбираю первый вариант,то начинается эа процедура if party_member_count<3 then /Если членов в команде меньше трёх,то // сабж присоединяется,к команде.А иначе?Он должен что-то сказать.. А почему ты после этого иначе написал следующее: procedure Node010 begin Reply(15); Option(13,Node999); end Зачем внутри одной процедуры объявлять другую? В чем смысл? Или в C# так принято? Достаточно написать это: begin Reply(15); Option(13,Node999); end >//Эти процедуры нацинаются только тогда,когда процедура парти_эдд начинается.Где блок? Повторяю в третий раз, что внутри одной процедуры другую объявлять нельзя. >/Зачем для них бегин энд?Они же уже в опциях присутствуют.Или для каждой процеуры нужно делать бегин энд? begin end - обычные операторные скобки. Присутствуют во всех языках программирования. Для процедуры обязательны. Я тебе уже говорил про fallmods-tutor?
----- Into The New Year - With A New Vision! Документация по скриптам, туториал по скриптам, вопросы по скриптам, FAQ по моддингу, "Утилиты", fallmods-tutor.
|
Отправлено: 12:17 - 12 Апр., 2005
|
|
Jager
Пользователь Регистрация: Март 2005
Всего: 38 сообщений
|
Perceptron, спасибо. (Отредактировал(а) Jager - 14:16 - 12 Апр., 2005)
|
Отправлено: 14:16 - 12 Апр., 2005
|
|
|
|