|
Raven
Пользователь
Откуда: Владик Регистрация: Февр. 2004
Всего: 408 сообщений
|
1. Переименовываем wcc386.exe в cpp.exe 2. Кладём cpp.exe в Mappers\Scripts\Tools 3. Кладём свой скрипт в Mappers\Scripts\New 4. Создаём файл comp.bat. Пишем в него: --------------------------- @echo off REM Впиши свои пути set MP="C:\Fallout2\Mapper\Scripts" set FP="C:\Fallout2\Data\Scripts" ..\Tools\cpp.exe -i=%MP%\Headers /w /pc /fo=%1.i %1.ssl %MP%\Dos4Gw.exe %MP%\compile.exe %1.i copy %1.int %FP% ----------------------------------- Примитив, конечно, но работать должно. Теперь для компиляции скрипта my_script.ssl: 5. Запускаем консоль, переходим в Mapper\Scripts\New 6. Пишем: comp my_script т.е. без расширения. 7. Если компилер выдаст ошибку на строке xxx - открывай my_script.i и смотри строку xxx. Как поймёшь причину - исправляй её в my_script.ssl и запускай опять. 8. Можно сделать comp_my_script.bat: comp.bat my_script и компилировать всё дабл-кликом.
|
Отправлено: 9:01 - 21 Апр., 2004
|
|
GaroldPredator
Пользователь
Откуда: Military Base Регистрация: Апр. 2004
Всего: 52 сообщения
|
Никто не знает, как в диалоге в реплику Чузена или в реплику NPC вставить имя Чузена? P.S. 2 Raven Спасибо, нормально откомпилировал свой скрипт! Правда, он всё ещё не работает, но это скорее всего мои ошибки!
----- В мире есть две точки зрения: неправильная и моя.
|
Отправлено: 17:24 - 21 Апр., 2004
|
|
Tehnokrat
Модератор
Откуда: Новосибирск Регистрация: Окт. 2003
Всего: 489 сообщений
|
>> Никто не знает, как в диалоге в реплику Чузена или в реплику NPC вставить имя Чузена? Очень просто: obj_name(dude_obj)
----- Прошлое можно узнать, но нельзя изменить. Будущее можно изменить, но нельзя узнать.
|
Отправлено: 23:22 - 21 Апр., 2004
|
|
Raven
Пользователь
Откуда: Владик Регистрация: Февр. 2004
Всего: 408 сообщений
|
>>Никто не знает, как в диалоге в реплику Чузена или в реплику NPC вставить имя Чузена? Чуть более подробно: Допустим, ты хочешь чтобы NPC говорил "Привет, Имя_Чузена. Как дела?" В скрипте пишешь: Reply("Привет, "+obj_name(dude_obj)+". Как дела?"); Если хочешь делать через msg-файл, то всё усложняется. Ты ведь не знаешь как подключать msg-шки к игре? Тогда слушай. 1. В начале скрипта пишешь: --------------------------------------- #define NAME 1304 //Можно больше, но не меньше ... Reply(mstr(xxx)+obj_name(dude_obj)+mstr(yyy)); ... --------------------------------------- 2. Потом создаёшь msg-файл - имя_скрипта.msg (формат, я думаю, понятен?). Пишешь туда: --------------------------------------- ... {xxx}{}{Привет, } {yyy}{}{. Как дела?} ... --------------------------------------- 3. Потом открываешь Data\Text\English\Game\scrname.msg Добавлешь строчку: --------------------------------------- {1404}{}{Имя_NPC}# имя_скрипта.int ; Описание_NPC --------------------------------------- При вызове obj_name(self_obj) или просто взгляде на этого NPC будет выдаваться именно Имя_NPC Соответственно, если писал #define NAME 1305 здесь пишешь {1405} и т.д. 4. Теперь надо добавить в игру сам скрипт. Открываем Data\Scripts\Scripts.lst. Добавляем последней строкой: --------------------------------------- имя_скрипта.int ; Описание_скрипта # local_vars=0 --------------------------------------- Про local_vars потом. Пока пиши 0. После добавления строки не жми Enter (т.е. не добавляй пустой строки) - иначе в мапере появятся баги - не серъёзные, но неприятные. 5. Уф. Вроде всё. Радует, что эту процедуру не надо повторят при перекомпиляциях - один раз добавил строчки и всё. 6. Можешь открыть мапер, добавить критера и привязать ему свой скрипт. Выбрал, E,S, выбрал свой скрипт, Esc, F8 - можно тестить. Вставить имя во варианты ответа можно точно так же. И напоследок. Пример работающего скрипта с диалогом: ------------------------------ #define NAME 1304 #define My_Option(x,y) gsay_option(NAME,x,y,-1) #include <command.h> procedure start; procedure talk_p_proc; procedure NodeBegin; procedure NodeEnd; procedure start begin end procedure talk_p_proc begin Start_gDialog(NAME,self_obj,-1,-1,-1); GSay_Start; call NodeBegin; GSay_End; End_Dialogue; end procedure NodeBegin begin Reply("А, "+obj_name(dude_obj)+". Приятно познакомиться, я "+obj_name(self_obj)+"."); My_Option("Извини, "+obj_name(self_obj)+", мне некогда",NodeEnd); end procedure NodeEnd begin end ------------------------------ Спрашивай о том, что не понятно. По идее, из предыдущих постингов ты должен здесь почти всё знать. Процедуры смотри в доке от fgeck`а. В качестве Д/З :-) 1. Добавь скрипт в игру. 2. Сделай вызов сообщений ч/з msg-файл Млин, все точки с запятыми в смайлы превратились.... Отключаем. (Отредактировал(а) Raven - 12:27 - 22 Апр., 2004)
|
Отправлено: 5:24 - 22 Апр., 2004
|
|
GaroldPredator
Пользователь
Откуда: Military Base Регистрация: Апр. 2004
Всего: 52 сообщения
|
Между прочим, я не такой глупый, кк ты думаешь! Конечно, я ЧАЙНИК, но не настолько же! Я знаю про MSG-шники и использую этот самый NAME! НО конечно без этого форума и умных людей, которые в нём сидят я бы не справился! ТАК ЧТО, СПАСИБО! З.Ы. Скрипт в игру я уже добавил, работает отлично (за исключением имён, щас буду пробовать)! (Отредактировал(а) GaroldPredator - 15:53 - 22 Апр., 2004) (Добавление от 16:04 - 22 Апр., 2004.) Про эти самые local_vars!!! Я хочу сделать так, чтобы после определённой фразы Чузена, на неё реагировал не только self_obj, но и другие объекты! Например Я посылаю охранника на три буквы, и вся охрана атакует меня. Как это сделать?
----- В мире есть две точки зрения: неправильная и моя.
|
Отправлено: 15:31 - 22 Апр., 2004
|
|
Raven
Пользователь
Откуда: Владик Регистрация: Февр. 2004
Всего: 408 сообщений
|
to Garold No offence. Мой пост был формально обращён к тебе, но ведь на форуме есть и другие люди, которых это может заинтересовать. В идеале форум должен стать базой знаний. Т.е. новички должны спрашивать, остальные им отвечать. Потом на базе этих постов составляется FAQ. Потом FAQ плавно перетекает в How-To - доки. Так что если я пишу что-то, что ты уже знаешь - просто не читай. Но если новичок задаст такой вопрос, скажи ему "Была уже такая тема. Поищи в Тех. Поддержке". Теперь содержательная часть. >>Я посылаю охранника на три буквы, и вся охрана атакует меня. Как это сделать? Вариантов много: 1. Можно забрить всю охрану в одну команду. Team прописывается в свойствах критера в Mapper`е. Тогда в скрипте одного из охранников в одной из веток диалога вызываешь attack - и вся команда NPC-ей атакует чуза. 2. Завести MVAR_say_fuck и вставить в скрипты всех охранников, например, такой кусок: --------------------- procedure critter_p_proc begin if map_var(MVAR_say_fuck) then begin set_local_var(LVAR_Hostile,1); attack(dude_obj); end ... end --------------------- и завести в диалоге Node под это дело: --------------------- procedure NodeFuckOff begin set_map_var(MVAR_say_fuck,1); end --------------------- Ещё надо добавить в имя_карты.h #define MVAR_say_fuck (x) 3. Самый извращённый способ - делать это ч/з импорт/экспорт указателей. В скрипте каждого из нужных криттеров пишем: --------------------- export variable ptr_npc_xxx; procedure start begin ptr_npc_xxx:=self_obj; end --------------------- В скрипте карты, на котрой всё расположено, пишем: --------------------- import variable ptr_npc_xxx; import variable ptr_npc_xxy; import variable ptr_npc_xxz; ... --------------------- В скрипте критера, с которым будет говорить Чуз, пишем тоже, что и для карты: --------------------- import variable ptr_npc_xxx; import variable ptr_npc_xxy; import variable ptr_npc_xxz; ... procedure Node_Say_Fuck begin attack_setup(ptr_npc_xxx,dude_obj); attack_setup(ptr_npc_xxy,dude_obj); attack_setup(ptr_npc_xxz,dude_obj); end --------------------- Муторно, конечно, - зато ты полностью контролируешь кто конкретно и при каких случаях будет атаковать игрока. (Отредактировал(а) Raven - 14:15 - 23 Апр., 2004)
|
Отправлено: 6:54 - 23 Апр., 2004
|
|
GaroldPredator
Пользователь
Откуда: Military Base Регистрация: Апр. 2004
Всего: 52 сообщения
|
Цитата:
Между прочим, я не такой глупый, кк ты думаешь! Конечно, я ЧАЙНИК, но не настолько же! Я знаю про MSG-шники и использую этот самый NAME!
Извиняюсь, был не прав, исправлюсь!
Цитата:
Я посылаю охранника на три буквы, и вся охрана атакует меня. Как это сделать?
Насчет охраны я просто пример привел! Я имел ввиду, что мне нужно, чтобы на меня реагировал не только персонаж с данным скриптом, но и другие криттеры. Насколько я понимаю, это пункт 2 в твоем сообщении:Завести MVAR_say_fuck. Я правильно понял? (Отредактировал(а) GaroldPredator - 18:17 - 23 Апр., 2004)
----- В мире есть две точки зрения: неправильная и моя.
|
Отправлено: 16:42 - 23 Апр., 2004
|
|
Tim
Пользователь
Откуда: Санкт-Петербург Регистрация: Май 2003
Всего: 265 сообщений
|
2GaroldPredator Спасибо что выслал что я просил... 2All Ну блин я уже запарился с этими скриптами... ну блин некомпилится и все тут... Так, поставил Фолл на C:\Fallout2 Мэппер C:\Fallout2\Mapper Создал в папке C:\Fallout2\Mapper\scripts папку tools положил туда файлы: wcc386 wcc wccd386.dll wccd.dll Создал в C:\Fallout2\Mapper\scripts папку new, положил туда скрипт XSComp.ssl(работает у GaroldPredator'a ) Создал файл с расширением comb.bat .... @echo off set MP="C:\Fallout2\Mapper\Scripts" set FP="C:\Fallout2\Data\Scripts" ..\Tools\wcc386.exe -i=%MP%\Headers /w /pc /fo=%1.i %1.ssl %MP%\Dos4Gw.exe %MP%\compile.exe %1.i copy %1.int %FP% Положил его в C:\Fallout2\Mapper\scripts\NEW В ком. строке зашел в папку new написал comb XSComp Получаю: Watcom запустился... Error! E1073: invalid option '-i="c:\fallout2\mapper\scripts\"headers' потом запустился DOS/4GW и DOS/4GW fatal error (1007): can't find file \DOS4GW.EXE to load Еще если wcc386.exe переимен. в cpp.exe тогда он не нах. свою библиотеку... В итоге создается файл XSComp.i (весит 143кб) ЛЮДИ ПОМОГИТЕ!!! Я уже начинаю сильно нервничать... Винда XP........
----- Ядерному взрыву - да! да! да! Солнечному миру - нет! нет! нет!
|
Отправлено: 19:36 - 24 Апр., 2004
|
|
GaroldPredator
Пользователь
Откуда: Military Base Регистрация: Апр. 2004
Всего: 52 сообщения
|
Не психуй. Для начала, нужно переименовать wcc386.dll в cppd.dll тогда watcom станет ее видеть. Дальше, XSComp.i - это файл, в котором все includы переделаны в заголовочные файлы, а все definы уже заменены (в смысле: #define one two исчезает и пишется вместо one , two). А весит этот файл до дури, потому, что в *.h куча комментариев, которые она (watcom) благополучно пишет у тебя в скрипте (ЗАРАЗА!). *.i открывается всем, чем угодно: хоть f-geckом, хоть блокнотом. Далее, нужно откомпилировать *.i в *.int, для этого нужны dos4gw и compile.exe. В принципе, в обычной коммандной строке dos4gw почему-то не работает (в windows commander, в пуск\выполнить). НО ЗАТО ОН ПОЧЕМУ-ТО РАБОТАЕТ В VOLCOV COMMANDERе! Я лично нормально компилирую скрипты ТОЛЬКО в VC! Вывод: или нужно всем дружно преобретать VOLCOV COMMANDER, или компилятор работает во многих других менеджерах! P.S. В DOS-е же он работает, ведь так?! P.P.S. to Tim Я забыл, я тебе msg-шник кинул на мыло или нет!? P.P.P.S. Надеюсь, ты в каталог new comp.bat, dos4gw.exe и compile.exe кинул?! P.P.P.P.S. Кстати, ты знаешь,что дефайн учитывает регистр, т.е. One и one не одно и тоже!
----- В мире есть две точки зрения: неправильная и моя.
|
Отправлено: 20:51 - 24 Апр., 2004
|
|
Tim
Пользователь
Откуда: Санкт-Петербург Регистрация: Май 2003
Всего: 265 сообщений
|
2GaroldPredator 1) Msg-шник кинул... 2)Взял твой bat, только пути поменял @echo off set MP="C:\Fallout2\Mapper\scripts set FP="C:\Fallout2\data\Scripts ..\Tools\cpp.exe -i=%MP%\Headers /w /pc /fo=%1.i %1.ssl Dos4Gw.exe compile.exe %1.i copy %1.i %FP% 3)Положил в new Dos4Gw.exe compile.exe 4)Переименовал wccd386.dll в cppd.dll wcc386.exe в cpp.exe 5) В Volkove зашел в папку new и написал comp xscomp 6) Пишет что недостаточно памяти для переменных среды Environment Ватком выдает ERROR E1138 Filename required on command line... P.S.Даже файл с расшир *.i не создается так... И заметь у тебя в bat ковычки только в начеле пути... а у Raven пути выдел. в ковычки... Не ну если файл с расш. i получился.... ватком пашет? И осталось только Dos4Gw.exe compile.exe? Значит дело в этом? Может 98виндоз поставить... Не ну я щас повешусь....
----- Ядерному взрыву - да! да! да! Солнечному миру - нет! нет! нет!
|
Отправлено: 23:38 - 24 Апр., 2004
|
|
|
|