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


Форум TeamX » Исследования » Spawn и fork

Переход по темам
<< Пред. След. >>
Единственная страница этой темы

 
Raven
Пользователь

Откуда: Владик
Регистрация: Февр. 2004

Всего: 408 сообщений

Помнится, летом были обнаружены функции spawn и fork. Ковырял их я. Особо не возился. Списал в утиль, так как посчитал, что порождённый скрипт не привязывается ни к какому объекту. О, как я ошибался!

Объект создаётся. Но он ... не имеет FID-а. Так за чем дело стало: используем metarule3 с флагом 107 - и всё!

Так.Чуствую, все потерялись :-) Буду медленне и по слогам.

Процедуры spawn/fork принимают один параметр - путь и имя int-файла. Они создают новый объект и привязывают к нему вызванный скрипт. В чём их прелесть и отличие от create_object_sid? В том, что они могут привязать к объекту *любой* скрипт, даже не прописаный. fork, в отличие от spawn, не прерывает выполнение родительского скрипта.

Пример. Скрипт-папа:
------------------------------
procedure start begin end

procedure talk_p_proc begin
  fork("scripts/111.int");
end
------------------------------

Компиляется, прописывается - всё как обычно.

Скрипт-сын:
------------------------------
procedure start begin end

procedure map_update_p_proc begin
  metarule3(107,self_obj,obj_art_fid(dude_obj),0);
  move_to(self_obj,tile_num(dude_obj)+1,elevation(dude_obj));
end
------------------------------

Компиляется, кладётся в scripts. Но прописывать его нигде не надо!

Запускаете, говорите с "папой". Рядом с чузом появляется его новорождённая копия :-)

Отправлено: 16:47 - 2 Марта, 2005
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Самая большая загвоздка, помнится, заключалась именно в том, что в порождённом скрипте не выполнялись никакие обработчики, кроме start. Как у тебя это работает? В маппере?


(Добавление от  17:04 - 2 Марта, 2005.)


Да... ещё одно замечание. ПИДа-то тоже нет, стало быть, нет и типа. Стало быть, как будет вызываться тот же pickup? И что с лварами? Своих-то не будет, только "родительские". В общем, пока видно больше недостатков, чем достоинств ;). Но копать продолжай ;).

Отправлено: 17:02 - 2 Марта, 2005
Raven
Пользователь

Откуда: Владик
Регистрация: Февр. 2004

Всего: 408 сообщений

Блииииин. Вот залажал. У меня тот скрипт, который я пытался спавнить уже был на карте. И metarule  move_to вызывалисьиз уже существующего скрипта. А я думал - из заспавненого. Так что заключение изначальное верно - бесполезные функции. Блин, как лажанулся, а...

Отправлено: 18:08 - 2 Марта, 2005
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Неа. Отрицательный результат - тоже результат ;).

Отправлено: 22:06 - 5 Марта, 2005
 

Переход по темам
<< Пред. След. >>
Единственная страница этой темы


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