» TeamX (Архив Форума)«


Форум TeamX » Тех. поддержка » Скрипты (Все вопросы по скриптингу - сюда)

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 ] Все собщения

 
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
 

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 ] Все собщения


Powered by Ikonboard 2.1.9 RUS
Modified by RU.Board Team
© 2000 Ikonboard.com