Текущее время: Ср 27 ноя 2024 9:51

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 527 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 18  След.
Автор Сообщение
 Сообщение Чт 9 ноя 2006 18:31
Профиль  
Механоид 4 поколения
Сообщения: 556
Откуда: Самара
Зарегистрирован: Ср 12 окт 2005 16:11
Razum писал(а):
Хотя первую угрозу может быть и испоню, благо файл карты не очень сложно устроен, хотя его структура несколько странновата.

Ты лучше вот это напиши, люди будут благодарны


 Сообщение Пт 10 ноя 2006 19:19
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Gray писал(а):
вот это напиши

Ага, тебе смешно, а у меня функции не выполняются! Как я мод без скриптов-то напишу? В чем там дело-то?
Кстати, хоть у кого-то скрипты работали? (кроме разработчиков)


 Сообщение Пт 10 ноя 2006 21:44
Профиль  
Механоид 5 поколения
Сообщения: 1163
Откуда: Омск
Зарегистрирован: Вс 14 май 2006 17:42
Смотря что. RANDOMQ.cpp на раз переделался, и пошло почти сразу.

Злой у меня мод получился. Грохают там на раз, даже меня ( :roll: :oops: :mrgreen: ), так как теперь у Игрока преимущество перед NPC стало заметно меньшим. И решил я убитому Игроку отнимать Рейтинг, выдавать GFG_STARTUP вместо бывшей машины, ЭК не отбирать, восстанавливать в Секторе, где погиб, за исключением Болот и Подземки (тогда - в Пустыне), для чего приспособить событие OnDie, используя proc Resurrect(...) . Залез в Scripts\Events\Die.src , вписал там на пробу вызов Resurrect("location5"), скомпильнул всё, начал игру и полетел помирать. И ни фига не воскрес. Почему - мой пост ниже. :wink:


Последний раз редактировалось Ark Вс 12 ноя 2006 0:06, всего редактировалось 2 раз(а).

 Сообщение Пт 10 ноя 2006 21:54
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Значит, что-то все же работает... вот я скока ни пытался запустить EnterSensor, ничего не получилось OnEnterLocation - единственное, что у меня срабатывает.


 Сообщение Сб 11 ноя 2006 22:32
Профиль  
Механоид 1 поколения
Аватара пользователя
Сообщения: 116
Зарегистрирован: Пн 6 фев 2006 19:26
Цитата:
И ни фига не воскрес. :roll: Попробовал там же вместо PlayVideo ("Data\Video\Die.bik") сделать ("Data\Video\Down.bik") - "посмертный экран с помехами" остался, как и был. То есть этот bik запускается из основного кода, а proc OnDie(...) вообще не отрабатывает.


Где-то уже писали, что чтобы изменить стандартные скрипты надо их засунуть в pac архив.

Цитата:
Если вы поменяли что-то в оригинальных скриптах(это касается и всех остальных упакованных ресурсов), то чтобы игра смогла "подцепить" именно вашу версию файла можно:
Вариант №1:
распаковать соответствующий архив игры и удалить его, тогда игра будет обращаться к файлам и вы сможете заменить любой из них на свой
Вариант №2(рекомендуется :mrgreen: ):
Создать дополнительный архив - заархивировать с помощью PackerNET ваши файлы, игра будет изначально искать ресурсы начиная с архивов более поздней даты создания.


Добавлено спустя 45 секунд:

Razum писал(а):
Значит, что-то все же работает... вот я скока ни пытался запустить EnterSensor, ничего не получилось OnEnterLocation - единственное, что у меня срабатывает.


OnEnterSensr у меня работало, не работало только OnLeaveSensor


 Сообщение Сб 11 ноя 2006 23:33
Профиль  
Трёхмерный
Аватара пользователя
Сообщения: 3622
Зарегистрирован: Пн 17 янв 2005 19:23
Что сделал для еэтого? Т.е. как сделал ? Покажи скрипт. :cry:

_________________
https://sites.google.com/site/intelligencecells
http://www.youtube.com/user/IntelligenceCells


 Сообщение Сб 11 ноя 2006 23:40
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Если менять разрабовские скрипты, то может это и работает, а вот если делать с нуля для собственной карты, тоже новой, - ничеuj, кроме EnterLocation, не срабатывает. Как с этим бороться?


 Сообщение Сб 11 ноя 2006 23:52
Профиль  
Механоид 5 поколения
Сообщения: 1163
Откуда: Омск
Зарегистрирован: Вс 14 май 2006 17:42
Ёлы-палы. :oops: :bug: Я ж когда новый RANDOMQ.cpp сравнивал с тем, что было, AIMBIN.bak (переобозвал, чтоб не мешал), вернул прежнее расширение .pak , а потом обратно bakом сделать забыл. Нда, если б я воскрес, это б по разряду чудес пошло. :roll:


 Сообщение Вс 12 ноя 2006 17:27
Профиль  
Механоид 5 поколения
Сообщения: 1163
Откуда: Омск
Зарегистрирован: Вс 14 май 2006 17:42
А вот теперь воскрес. Но :arrow: .
То, что получилось в результате воскрешения, частично выпало из системы взаимоотношений глайдеров. На воскрешённого Игрока никто не нападёт специально, можно обстреливать кого-нибудь - он покраснеет/синеет, но ответить и не подумает. Остальное осталось, как было, вот только отключенный щит при включении восстанавливается мгновенно.Подобрать убитого себя можно, вот только толку от находки... Хотя глюк с щитом исчезает, и сдать себя можно. Если уйти на другую локацию - там всё будет ok (пока не убьют уже на той локации). Если на локации Игрок помер хотя бы раз - "полупризраком" на ней он и останется, даже если уйти на другую локацию и затем вернуться.

:?: Как воскресить Игрока полноценно (возможно, для этого, кроме самой proc Resurrect(...) , нужно ещё что-то) ? Если возможно.


 Сообщение Вс 12 ноя 2006 20:01
Профиль  
Механоид 1 поколения
Аватара пользователя
Сообщения: 116
Зарегистрирован: Пн 6 фев 2006 19:26
Razum писал(а):
Если менять разрабовские скрипты, то может это и работает, а вот если делать с нуля для собственной карты, тоже новой, - ничеuj, кроме EnterLocation, не срабатывает. Как с этим бороться?


У меня работало на абсолютно новых скриптах.

В objects.ini написал:
В objects.ini писал(а):
CENTER_BASE=Locations\L14\center_base.src


(CENTER_BASE - Идентификатор моей базы)

В Locations\L14\center_base.src:

В center_base.src писал(а):
#include "include\AIM.cpp"

void proc OnEnterSensor(char item)
{
Text("Отойдите от строения");
SetVar("AIM.TIMER.DEAD", 10);
SetVar("AIM.TIMER.DEAD.NEAR", 1);
SetTimer("time1", 0.003);
}


 Сообщение Вс 12 ноя 2006 20:23
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
А каковы условия срабатывания "OnEnterSensor" и "EnterLoc"?
Лев, а ты попробуй добавить еще одну процедуру в свой скрипт, я уверен на 95%, что она срабатывать не будет. У меня подозрения, что из всего скрипта тока первая процедура срабатывает.


Последний раз редактировалось Razum Вс 12 ноя 2006 20:31, всего редактировалось 2 раз(а).

 Сообщение Вс 12 ноя 2006 20:29
Профиль  
Трёхмерный
Аватара пользователя
Сообщения: 3622
Зарегистрирован: Пн 17 янв 2005 19:23
А можеш сделать так :

1. Начинаеш игру, перед тобой создаётся стрелка.
2. Наехав на стрелку она проподает а рядом создаются две-три другие стрелки и появляется пушка или бомбы.

Если можеш то ты крутой чувак!

_________________
https://sites.google.com/site/intelligencecells
http://www.youtube.com/user/IntelligenceCells


 Сообщение Вс 12 ноя 2006 21:05
Профиль  
Механоид 5 поколения
Сообщения: 1163
Откуда: Омск
Зарегистрирован: Вс 14 май 2006 17:42
Razum писал(а):
А каковы условия срабатывания "OnEnterSensor" и "EnterLoc"?

void proc OnEnterSensor(char itemID)
Срабатывает при входе в зону с энным радиусом возле указателя точки, в itemID будет имя указателя, например "B_L5_BASE1".
OnLeaveSensor - Аналогично при покидании этой зоны. Можно в Locations\L5\Base1.src глянуть. Кстати, в Locations\L13\Points.src есть место, где itemID вообще не опрашивается (там один-единственный указатель на всю локацию, и так ясно, что этот - нужный).

void proc OnEnterLocation(char locID)
При перемещении на локацию, в locID будет имя локации, например "location1"


 Сообщение Пн 13 ноя 2006 1:35
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Ark писал(а):
OnEnterLocation(char locID)

Это я и сам знаю, ты мне лучше про "EnterLoc" скажи.
Ark писал(а):
void proc OnEnterSensor(char itemID)
Срабатывает при входе в зону с энным радиусом возле указателя точки, в itemID будет имя указателя, например "B_L5_BASE1".

Во-первых, ни разу не срабатывает (проверялось так: создавалась карта, на ней три хелпера "конус", на один из них давался пеленг, и я обезжал все три указателя, ни на одном из них скрипт не выполнился.) Во-вторых, если посмотреть в редакторе скриптов скрипт для тренировочной карты, то будет заметно, что там должно происходить определенное событие при въезде в любой "сенсор", однако на деле событие происходит при въезде в какой-то один сенсор, и не происходит при въезде в любой другой. Срабатывание события для "другого" сенсора включается только после посещения первого. То-есть эти сенсоры как-то включаются и выключаются...


 Сообщение Пн 13 ноя 2006 9:32
Профиль  
Механоид 4 поколения
Сообщения: 556
Откуда: Самара
Зарегистрирован: Ср 12 окт 2005 16:11
Razum писал(а):
если посмотреть в редакторе скриптов скрипт для тренировочной карты, то будет заметно, что там должно происходить определенное событие при въезде в любой "сенсор", однако на деле событие происходит при въезде в какой-то один сенсор, и не происходит при въезде в любой другой. Срабатывание события для "другого" сенсора включается только после посещения первого. То-есть эти сенсоры как-то включаются и выключаются...

Я объяснял smt, что работа непосредственно с каким-то конкретным объектом происходит по игровому идентификатору (уникальному имени на данной локации), который задаётся редакторе локаций, в поле ввода в правом верхнем углу. Если ты присмотришься, то в упомянутом тобой скрипте "train.src" как раз идёт анализ среагировавшего игрового идентификатора:
void proc OnEnterSensor(char item)
{
switch (item)
{
case "TR_POINT1":
{
.
.
.
}
case "TR_POINT2":
.
.
.
}
}

Из твоего вопроса я могу судить, что либо smt не понял что ему писали, либо понял, но не смог объяснить тебе. Вы уж ребят вместе как-нибудь разберитесь прежде чем вопросы на белый свет выносить.


 Сообщение Пн 13 ноя 2006 9:38
Профиль  
Механоид 5 поколения
Сообщения: 1163
Откуда: Омск
Зарегистрирован: Вс 14 май 2006 17:42
Понял. EnterLoc в тренировочной вызывается по срабатыванию таймера. Там в теле proc OnEnterLocation есть вызов
SetTimer("EnterLoc", 0.01); - с него.


 Сообщение Пн 13 ноя 2006 9:42
Профиль  
Механоид 4 поколения
Сообщения: 556
Откуда: Самара
Зарегистрирован: Ср 12 окт 2005 16:11
Razum писал(а):
Во-первых, ни разу не срабатывает (проверялось так: создавалась карта, на ней три хелпера "конус", на один из них давался пеленг, и я обезжал все три указателя, ни на одном из них скрипт не выполнился.)

А вызывается или не вызывается ваша функция советую проверить лучше вот так:
void proc OnEnterSensor(char item)
{
Text("MSG_ACCEPT");
}


 Сообщение Пн 13 ноя 2006 18:36
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Gray писал(а):
void proc OnEnterSensor(char item)
{
Text("MSG_ACCEPT");
}

Так у меня примерно тоже самое и было, тока вместо MSG_ACCEPT был мой личный, подготовленный в редакторе текстов текст, плюс еще несколько действий.

Gray писал(а):
void proc OnEnterSensor(char item)
{
switch (item)
{
case "TR_POINT1":
{
.
.
.
}
case "TR_POINT2":
.
.
.
}
}


Что это все означает, я как раз таки понял. Но тут надо кое-что уточнить. Насколько я понимаю, вышеприведенная конструкция должна работать так:
1)Вызывается OnEnterSensor с параметром item(типа, она вроде должна вызываться при заезде в любой "сенсор", а в функцию передается идентификатор этого сенсора - item).
2)Начинает выполняться оператор switch. Он поступает так: смотрит, какой параметр ему подсунули, и сверяет его со списком вариантов, что у него там есть. Где он находит совпадение, тот оператор и выполняет. Так вот, получается, если я заеду в любую активную точку(хелперы - то уже на карте установлены, стало быть все активные точки существуют), должно произойти какое-то действие (что там в switch указано), правильно? А на деле что происходит?
Я начал тренировочную миссию, посмотрел, где появляются стрелки, перезапустил ее, и поехал сначала не в ту стрелку, которая появилась, а в другую, которая должна появится позднее, после посещения первой. И - о чудо!!! При заезле в не указанную еще зону ниче не происходит, а если посетить сначала первую стрелку, то все срабатывает и в этой зоне... Вопрос - как так получилось, switch же должен в любом случае срабатывать, или он не так, как в си действует?


 Сообщение Пн 13 ноя 2006 19:10
Профиль  
Механоид 4 поколения
Сообщения: 556
Откуда: Самара
Зарегистрирован: Ср 12 окт 2005 16:11
Razum писал(а):
Я начал тренировочную миссию, посмотрел, где появляются стрелки, перезапустил ее, и поехал сначала не в ту стрелку, которая появилась, а в другую, которая должна появится позднее, после посещения первой.

Я конечно понятия не имею во внутреннем устройстве скриптов и в чём-то могу ошибаться, но, бегло взглянув, как раз здесь то всё мне кажется прозрачным:
case "TR_POINT1":
{
...
SetSensor("TR_POINT2");
...
CreateObjectAt("ARROW_P2", "ST_ARROW", "TR_POINT2");
}

Второй сенсор появляется после посещения первого. Как же по твойму он должен срабатывать до посещения первого ? Где тут логика ?

Добавлено спустя 18 минут 7 секунд:

Razum писал(а):
хелперы - то уже на карте установлены, стало быть все активные точки существуют

нет существуют вспомогательные "точки", но они не являются сенсорами как таковыми, во-первых они не знают на кого они должны реагировать, во-вторых должны они быть включены или нет. Сенсорами они становятся только после вызова
SetSensor или SetSensorNPC


 Сообщение Пн 13 ноя 2006 19:11
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Gray писал(а):
Второй сенсор появляется после посещения первого. Как же по твойму он должен срабатывать до посещения первого ? Где тут логика ?

Как где? Я так понял, что дело не в том, что стрелка появилась, а в том, что на самом деле там стоит хелпер "конус", и срабатывает OnEnterSensor тогда, когда игрок подезжает к конусу, который не виден, а не к стрелке. А эти конусы, они уже по всей карте расставлены.
Но так как разраб ты, то тебе видней, тогда еще два вопроса возникают - как создать "активную" зону в "чистом поле".


 Сообщение Пн 13 ноя 2006 19:53
Профиль  
Механоид 1 поколения
Аватара пользователя
Сообщения: 116
Зарегистрирован: Пн 6 фев 2006 19:26
Функция SetSensor(); создаёт "активную зону", ей в пареметр надо передать точку, где создавать например так:
Gray писал(а):
SetSensor("TR_POINT2");


 Сообщение Пн 20 ноя 2006 0:05
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Как создать контейнер с чем-либо, в частности с энергокристаллами?


 Сообщение Ср 28 фев 2007 18:14
Профиль  
Механоид 5 поколения
Сообщения: 1163
Откуда: Омск
Зарегистрирован: Вс 14 май 2006 17:42
А почему proc DeleteMech в скриптах оригинальной игры не вызывается ни разу? Вместо неё за неким чёртом применяется proc HideGlider, удаления Глайдера не вызывающая, а делающая его невидимым. :hm: За DeleteMech что - какие-то "грешки" водятся? :?: В смысле - не приводит ли применение DeleteMech к багам?


 Сообщение Ср 28 фев 2007 18:30
Профиль  
Механоид 4 поколения
Сообщения: 556
Откуда: Самара
Зарегистрирован: Ср 12 окт 2005 16:11
Ark писал(а):
А почему proc DeleteMech в скриптах оригинальной игры не вызывается ни разу?

А зачем она будет вызываться ? Она же будет убивать механоида, а не глайдер. Это почти что "перенос".
Ark писал(а):
За DeleteMech что - какие-то "грешки" водятся? В смысле - не приводит ли применение DeleteMech к багам?

Знает об этом только один Сплайн, но он всегда очень занят. С виду она - вроде похожа на правду.


 Сообщение Ср 28 фев 2007 18:40
Профиль  
Ограничитель
Аватара пользователя
Сообщения: 7028
Откуда: От верблюда!
Зарегистрирован: Ср 11 май 2005 9:48
Ark писал(а):
А почему proc DeleteMech в скриптах оригинальной игры не вызывается ни разу? Вместо неё за неким чёртом применяется proc HideGlider, удаления Глайдера не вызывающая, а делающая его невидимым. За DeleteMech что - какие-то "грешки" водятся? В смысле - не приводит ли применение DeleteMech к багам?

Это, наверно, удаление всей группы. А в м2 группы это все пяточки, Наутилус, органический мод и Считающие.
Удалять их нет смысла.
ИМХО

_________________
Земля, Земля - я Юпитер!
Зарисовка в стиле AIM - https://www.youtube.com/watch?v=JiWtIz9g3Uw


 Сообщение Ср 28 фев 2007 19:11
Профиль  
Механоид 5 поколения
Сообщения: 1163
Откуда: Омск
Зарегистрирован: Вс 14 май 2006 17:42
Gray писал(а):
А зачем она будет вызываться ? Она же будет убивать механоида, а не глайдер. Это почти что "перенос".

"Бездушных" типа Платформ и невооружённых Глайдеров по завершении Рандомных Квестов, по идее, именно ею и удалять бы.
Gray писал(а):
С виду она - вроде похожа на правду.

Ага. :yes: Я её тестил на тренировочной Локации. Там все механоиды - "Бездушные", созданные proc CreateMech . Удаляются, исчезают на глазах у меня безо всяких видимых глюков - всё в норме. Просто мало ли... может, она что с list-ом механоидов творит не то (имеется в виду связный список из описаний механоидов на Локации. Когда механоидов много)...


 Сообщение Чт 1 мар 2007 19:23
Профиль  
Трёхмерный
Аватара пользователя
Сообщения: 3622
Зарегистрирован: Пн 17 янв 2005 19:23
Проблема в том что после повторного влёте в здание, не выполняется выделенный скрипт. Почему 222222 не появляется ?
Если в MechMod.src SetVar("int_q_test_mel", 2); то 1111111 не появляется при повторном влёте в здание. 000000 всегда выводится.

int_quest.src
#include "Include\AIM.src"
//=== Переменные ===
int int_q_test_mel; //--- переменная скрипта


MechMod.src
#include "Include\AIM.src"
#include "MechMod\int_quest.src" //--- подключаем файл с переменными
#include "MechMod\q_test_mel.src"

void proc OnEnterLocation(char locID)
{
//----------------------------------
SetTimer("EnterLoc", 0.001);
}
void proc EnterLoc(char item)
{
//--- обнуляем переменные ---
SetVar("int_q_test_mel", 0);
}
void proc OnEnterSensor(char item) //--- начало игры ---
{
switch (item)
{
//--------------------
}
}
}

//=== Выбор квеста ===
void proc q_test_mel_0 (char item) //--- вызывается в с помощью текста...
{
SetVar("int_q_test_mel", 1);
}


q_test_mel.src
#include "Include\AIM.src"
#include "MechMod\int_quest.src" //--- подключаем файл с переменными
#include "MechMod\MechMod.src"

void proc OnEnterBuild(char item)
{
Text("000000");
//----------
if (("BLD_TEST_ISL1") && (GetVar("int_q_test_mel") == 2))
{
Text("222222");
};


if (("BLD_TEST_ISL1") && (GetVar("int_q_test_mel") == 1))
{
Text("111111");
SetVar("int_q_test_mel", 2);
};
}


Если не совсем понятно то могу прокомментировать подробнее.

_________________
https://sites.google.com/site/intelligencecells
http://www.youtube.com/user/IntelligenceCells


 Сообщение Чт 1 мар 2007 19:30
Профиль  
Ограничитель
Аватара пользователя
Сообщения: 7028
Откуда: От верблюда!
Зарегистрирован: Ср 11 май 2005 9:48
На счётэ того непонятно:
smt005 писал(а):
if (("BLD_TEST_ISL1") && (GetVar("int_q_test_mel") == 2))
{
Text("222222");
};

Поясни.

_________________
Земля, Земля - я Юпитер!
Зарисовка в стиле AIM - https://www.youtube.com/watch?v=JiWtIz9g3Uw


 Сообщение Чт 1 мар 2007 19:48
Профиль  
Трёхмерный
Аватара пользователя
Сообщения: 3622
Зарегистрирован: Пн 17 янв 2005 19:23
Это название здания.

_________________
https://sites.google.com/site/intelligencecells
http://www.youtube.com/user/IntelligenceCells


 Сообщение Чт 1 мар 2007 19:51
Профиль  
Механоид 4 поколения
Сообщения: 556
Откуда: Самара
Зарегистрирован: Ср 12 окт 2005 16:11
smt005 писал(а):
if (("BLD_TEST_ISL1")

Где проверка на item? В голове ? А компу кто это будет объяснять что у вас в голове ?
Ты с чем вообще сравниваешь идентификатор может разъяснишь ? Вообще удивительно что с единицами текст выводится - это, так сказать, из-за примитивности скриптового движка.


Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 527 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 18  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB