» 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 ] Все собщения

 
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
 

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 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