Рассуждения: Об описании скриптовых команд
#1
Мне то-же кажется ,что под повесть нужно местечко отвести. Формат мне по-шарам в независимости от популярности какого-то страшного или ужасного или популярного языка,а база Сану нужна для конструктора скриптов.

Smile
Ответ
#2
Vasya.
Я не знаю язык Паскаль.
Я не понял, что ты хочешь сказать о названии функций у Нивала. То, что это абсолютно правильно написанные названия функций? Или мы должны продолжать идентифицировать их с ошибками, путая понятия и признаки?
Ты хочешь сказать что, например если в функцию вставить Сундук: «61 GetObjectID ( objUnit : object ): float» то, Сундук это: «objUnit»?
Может все-таки задумаешься? Или мне объяснишь поподробнее.
Ответ
#3
Конечно, можно писать и с примечанием ниже строки команды. Только выберите стиль, что бы было понятно, что это третье поле: Комментарий.
Ответ
#4
предлагаю желающим сдесь сформировать классификацию напиcания названий полей,
чтобы соблюдалась вся строгость стиля и правильность:
idUnit или UnitId или Unit_id Rolleyes
Ответ
#5
sun

Я, честно говоря, тебя тоже не понял. Smile Видимо, это судьба. Big Grin

В скриптах есть типы данных Object, Group, float, bool. Чтобы не перепутать номер игрока (типа float) с типом данных group, не стоит включать слово "group" в название переменной. Мне кажется, у Чейза все переменные очень хорошо обозначены. "nPlayerA" - "номер игрока А".

Слово Player в командах SetPlayer, GetPlayer и многих других перевести иначе, как "игрок", я не могу. И именно это слово я предлагаю использовать в названии переменной.
Ответ
#6
Да, но ведь это номер ГРУППЫ юнитов (врагов в том числе), а не только игроков.
Или я не прав?
Ответ
#7
...
Получается, что ты в переменной указываешь номер игрока в группе, а не номер группы.

И ещё…
Группа представляется как объект? Это отдельный класс?
Ответ
#8
Вообще-то, база данных в ПЗ идентифицируется несколько иначе, чем названия у функций и команд. Например: игровые объекты идентифицируются на следующие группы, это: Units и Pers. Что дословно обозначат как: Единицы и Персонажи.
Наверное, слово «Pers», понимается как синоним «Player».
Ответ
#9
sun

Игрок (player) - это, фактически, группа юнитов, для которой устанавливается единая дипломатия с другими аналогичными группами. Все юниты одного игрока всегда являются союзниками друг друга.

Каждый игрок имеет свой номер - вещественное число (на самом деле, целое неотрицательное).


Группа (group) - это отдельный тип данных. Переменная этого типа может содержать произвольное количество произвольных юнитов (по крайней мере, про ограничения пока ничего не известно).

Получить группу юнитов данного игрока можно с помощью функции GetPlayerUnits (nPlayer).
Ответ
#10
я не из вашего племени, поэтому не буду вгрызаться тут в полено, но кое-что сказать имею. есть такое понятие, как "логический игрок". оно означает группу юнитов, находящихся под управлением компа и равноправную с игроком человеческим. т.е. если передать Зака и компанию под управление компа, получится логический игрок.
Ответ
#11
Я искренне сожалею, что мы не можем прийти к общему знаменателю.

«Игрок (player) - это, фактически, группа юнитов»
Странное упорство с твоей стороны. Что значит: «…фактически»? Или группа или игрок! И незачем выдавать одно за другое? Может, в том контексте стоит хотя бы написать: «Players»? Хотя тогда потеряется смысл….

И я снова хочу тебя спросить: А если сравнить свойство дипломатии группы юнитов врагов, это тоже номер игрока?
Моё личное, субъективное мнение:
«GetPlayerUnits (nPlayer)» - Я считаю, что эта функция должна была выглядеть так: «GetGroupUnits».
Мне кажется, мы будем путаться в признаках и понятиях, если не утвердим очевидное.
Я прекрасно понимаю, что объект «Group» это собственный класс данных.

Пожалуйста, почитай внимательно, что я пишу в предыдущих сообщениях и в этом в том числе. Ты не отвечаешь на мои вопросы. Я тебе говорю, что Нивал неверно идентифицировал в названиях функций понятие Группа и Игрок. И я не хотел бы повторять дальше их ошибки – двойственного толкования. В МП играют до шести игроков, но все они принадлежат одной группе. Понятие «nPlayer» подходит для внутрегруппной идентификации, а также для номера помощника в группе игрока в сингле.

Возможно, что Нивал, первоначально задумывали, что каждой группой юнитов будут управлять другие игроки. Но это не решает теперешней проблемы. На этот момент, подобная (GetPlayerUnits) функция в своем имени содержит несколько иное понятие, нежели просто, конкретно группа юнитов.

КалбасКа, в игре бывает до девяти групп объектов юнитов.
Ответ
#12
я знаю, что их может быть до 9. это ты слегка не понимаешь Sad
я имею в виду, та группа живности, которой можно поставить дипломатию относительно другой группы живности, называется логическим игроком. логический игрок 1, логический игрок 2, и так далее.
Ответ
#13
КалбасКа.
Ну, вообще не о том...
Да причем здесь оправдания как можно представить себе нечто. У меня достаточно фантазии чтобы понять, что могут быть некие виртуальные, логические игроки.
Читай внимательно мое сообщение и задумайся по существу. Я не буду больше повторять одно и тоже….

И к вашему сведению в ПЗ существует только одно значение nPlayer – это «0».
Неужели вы не видите в теме у Чейза: «Функции для работы с группами» противоречий? Посмотрите повнимательнее….
Ответ
#14
И ещё одно уточнение nPlaeyr, по значению всегда совпадает с nGroup для Игрока. То есть Зак (и его помощники) как игрок - 0 и как Группа где он находится - тоже 0. Других игроков групп в ПЗ не существует, даже в МП на каждой машине Игрок равен 0. Если вы не измените своё понимания по отношению скриптовым командам, то столкнётесь с ошибками в идентификации и других функций.
Ответ
#15
У меня несколько вопросов и просьб:
Нам нужна база данных, а не повесть о консольных командах и процедурах. Я прошу Вас, осмысливайте каждую запись, а не переписывайте у Чейза все в подряд. Обязательно несколько раз проверяйте лично все команды. Очень хочется, чтобы небыли ошибки в нашей базе.
Итак, будем внимательными. Например, поступила проверенная функция от вас:

«GetDiplomacy ( nPlayerA : float , nPlayerB : float )»

«nPlayerA», - может быть дать имя параметру: nGroupA?
Слово «Player» - обозначает участник игры, игрок. Монстры на карте это не группы игроков, значит с группой монстров эту функцию использовать нельзя? Если нельзя то – оставить.

Стиль записи:
Если известно, что вы пишите функцию тогда, в одном стиле оформляйте, какой тип данных она возвращает. А также, идентифицируйте функцию с моим списком, чтобы получилась база данных. Запись в вашей таблице в виде Функции должна бы выглядеть так:

053 GetDiplomacy (nGroupA: float , nGroupB: float ) : float
056 GetLeader () : object



В таком виде получится таблица с двумя полями: Код из моей таблицы базы данных, и проверенная, идентифицированная команда, функция.

Затем создавайте следующий список - описания и примечаний в том же стиле:
Первое поле - код из моей таблицы базы данных, и второе поле - примечание. Например:

053 Возвращает (значение) тип(а) дипломатии: кем является игрок номер nPlayerA (группа юнитов номер nGroupA) для игрока номер nPlayerB (группы юнитов номер nGroupA).
Возможные значения (типы значения дипломатии):
____1 - союзник
____0 - нейтрал
____-1 - враг
____© CHaSE (проверено) (Совершенно необязательно засорять авторством права первой ночи: тогда ещё нужно указать, что эту функцию создала компания Nival. Можете об этом указать отдельно в конце сообщения.)

З.Ы.:
С тем списком, что вы сейчас создаете работать сложно. И кстати очень похоже на «повесть» о консольных командых и скриптовых процедурах как на сайте у Чейза.
Нам нужна база данных, которую можно будет использовать в конструкторе уровней.

[ 22 апреля 2002: Изменил: Holy Warrior ]</p>
Ответ
#16
Вопрос такой: а зачем нам база данных? Разве команды нужны не для тех, кто будет программировать различные события аддона?

В любом случае, как мне кажется, нужно и то, и другое (и база, и "повесть").
цитата
Цитата:GetDiplomacy (nGroupA: float , nGroupB: float ) : float  
Принимаем формат Паскаля, а не Си? Ну ладно, я не против, хотя Си - более популярный язык.

Группа юнитов и игрок - это совсем разные понятия (и разные типы данных). Названия процедур и функций явно дают понять, что имеется в виду в каждом конкретном случае. Например, GetPlayer : float выводит именно игрока (как можно иначе перевести слово "player"?), а GetPlayerUnits : group - группу юнитов игрока.

[ 26 января 2002: Изменил: Vasya ]</p>
Ответ
#17
sun
Ну, непонимание с моей стороны - это нормально, надо уже привыкать. Big Grin

Ладно, насчёт дипломатии. Насколько я понимаю, это свойство задаётся только тем группам, которые обозначены, как player'ы. То есть, нельзя выделить произвольную группу юнитов (например, командой UnitSee) и задать дипломатию для неё. С этим ты согласен? И разве нельзя по этому принципу разделить player и group?

Честно говоря, я не знаю, что такое "собственный класс данных", я бы сказал, что group - это контейнер класса object. (Object - тоже не лучшее название для класса, но ничего не поделаешь.) При этом, видимо, player (в ниваловском пониманиии) - это класс, ассоциированный с group по принципу 0..1 - 1. Не каждая group соответствует некоторому player, но каждому player соответствует group. У объекта класса player есть атрибут "номер", который его однозначно идентифицирует (в пределах игровой зоны), а у объекта класса group такого атрибута нет. Поэтому я не понимаю, что ты подразумеваешь под nGroup. :wacko:

<blockquote><font size="1" face="Verdana, Helvetica, sans-serif">цитата
Цитата:в ПЗ существует только одно значение nPlayer – это «0».
Это я вообще не понял. Где существует? Что значит "существует"?
<blockquote><font size="1" face="Verdana, Helvetica, sans-serif">цитата
Цитата:Неужели вы не видите в теме у Чейза: «Функции для работы с группами» противоречий?  
Стараюсь, но не вижу. Smile
Ответ
#18
У меня открылись глаза...
Я понял. Спасибо.
Smile
Ответ
#19
Ok.
Ответ
#20
Vasya.
Видимо стОит поподробнее написать…
Smile

Ты раскрыл мне глаза, что заниматься дальше объяснением моей точки зрения тебе, в форме диалога - есть бессмысленное занятие. Я заметил, что ты практически никогда не задаешь вопросов, в которых ты не компетентен, а если и задаешь, то сам же на них и отвечаешь, и к тому же даешь советы. Я ждал от тебя вопросов по существу проблемы, а ты перешел в частности. В твоем последнем сообщении, на мой взгляд, слишком много ошибок в методике классификации структуры ПЗ, да и сквозит раздражение…. Логично было, отвечая «…Стараюсь, но не вижу.» на мой вопрос, задать встречный вопрос, но этого не последовало. И мне осталось только развести руками…
У меня сложилось впечатление, что тебе психологически очень трудно признавать свои ошибки. Sad

Я попытаюсь на форме, в виде монолога, довести тебе моё виденье структуры ПЗ и классификацию терминов и понятий консольных команд, процедур и функций для скрипитов. Я обязательно буду использовать ваш опыт из темы «Разбор скриптовых команд.».
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)