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

to Tim

Пути надо ставить в кавычки только если они содержат пробелы. Т.е. в том батнике, который был в моём посте они не нужны. Но если ты напишешь
set FP=C:\Program Files\BlackIsle\Fallout2\Data

то у тебя вылезет
cannot find C:\Program
или что-то подобное.

Проблемы с DOS4GW скорее всего вызваны отсутствием DOS в WinXP. Я XP не трогал никогда и ничего конкретного сказать не могу. Попробуй поиграть с режимами совместимости. Если есть возможность - поставь 98 (95, чистый DOS) рядом. В Win2000 все работает.

Ещё попробуй просто закинуть dos4gw и compile в диру со скриптом, запустить cmd.exe, перейти в эту диру и просто напечатать
dos4gw compile имя_скрипта.ssl
Если будет таже ошибка - значит дело точно не в батнике а в Оси.

Про переименовывание wcc в cpp - я ж это просто для удобства и большей логичности делал :-) Это совсем не обязательно.

Кстати, по поводу
Error! E1073: invalid option '-i="c:\fallout2\mapper\scripts\"headers'
Ошибка, скорее всего - это кавычки перед и после c:\fallout2\mapper\scripts\
Поменяй
set FP="C:\Fallout2\Data\Scripts" на set FP=C:\Fallout2\Data\Scripts

Моя версия Ватки таких ошибок не выдавала...

to Garold

Да, скорее всего тебе проще завести вару. Но, опять же, если группу критеров можно объеденить в один team в мапере - то можно и так.

Если хочешь облегчить *.i файл - воспользуйся програмкой grep. Она вырезает из файла строки, совпадающие с определённым шаблоном. Например, ты хочешь вырезать из файла все пустые строки и строки, начинающиеся с # (i.e. #line 21). Пишешь что то типа (зависит от производителя grep`а):

grep ^[A-Za-z_0-9]* имя_исходного_файла > имя_конечного_файла

Т.е. ты вырезаешь все строки начинающиеся со строчных или прописных букв, цифр или знака подчёркивания и пишешь их в другой файл. Ничего лишнего. Очень удобно.

Хороших версий grep`а под винды нет. Всё хорошее такого рода - в юнихах :-) Но есть порты юниховых утилит под вынь. Я пользуюсь подсказанным Абелем msys`ом. Весить 2,5 мега, взять можно здесь:
http://www.mingw.org/msys.shtml
Тыкнешь там в Files и выбери msys package (не gcc, binutils или что-то подобное, именно msys) - имя файла

MSYS-1.0.11-2004.03.30-1.exe

Когда распакуешь - получишь кучу утил, в т.ч. и grep. Скопируй msys.dll из Msys\bin\ в winnt\system32, grep в mapper\scripts\tools - и можно использовать его в батниках.

Отправлено: 6:40 - 25 Апр., 2004
GaroldPredator
Пользователь

Откуда: Military Base
Регистрация: Апр. 2004

Всего: 52 сообщения

2 Raven
Насчет охраны я привел просто не существующий пример, так что не надо зацикливаться на ней.
Если хочешь на чём-то зациклиться, вот НАСТОЯЩИЙ пример:
Я поболтал с компом, и в зависимости от ответа, на меня или нападают турели на нескольких локациях, или комп дает мне несколько предметов.
С предметами я разобрался, а вот с турелями не догоняю.
Здесь ведбь надо использовать GVAR, потому, что несколько локаций с турелями, так?
Кстати, у меня не работают эти самые GVAR, MVAR и LVAR.
Наверное что-то не доделываю...
Подскажи, ПЛИИЗ!

-----
В мире есть две точки зрения: неправильная и моя.

Отправлено: 9:12 - 25 Апр., 2004
Tim
Пользователь

Откуда: Санкт-Петербург
Регистрация: Май 2003

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

2All
Спасибо всем, разобрался... просто лишние " убрал...

-----
Ядерному взрыву - да! да! да!
Солнечному миру - нет! нет! нет!

Отправлено: 12:41 - 25 Апр., 2004
Raven
Пользователь

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

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

to Garold
>>Насчет охраны я привел просто не существующий пример, так что не надо зацикливаться на ней.

???

>>Здесь ведбь надо использовать GVAR, потому, что несколько локаций с турелями, так?

Да. За примерами смотри Navarro (GVAR_NAVARRO_BASE_ALERT) - там если поднял тревогу - на тебя на всех картах налетают.

>>Кстати, у меня не работают эти самые GVAR, MVAR и LVAR.
Наверное что-то не доделываю...

А как ты скрипты тестишь? Кнопкой F8? Тогда GVAR у тебя вообще не заработают.
В Мапере во время тестинга не работают GVAR (MVAR вроде бы тоже - точно не знаю), timed events и ещё по мелочам. Поэтому тестить надо в Фоле. По CTRL+R тестить тоже не получится - там вообще ничего кроме дверей не обрабатывается. Поэтому вначале надо тестить скрипты на artemple.map а потом переносить их в нужную локацию. Можно сделать сейв рядом с нужным местом. Но если ты менял число GVARs (i.e. добавил квест) - сейвы работать перестанут! Самая надоедливая недоработка...

Отправлено: 2:12 - 26 Апр., 2004
GaroldPredator
Пользователь

Откуда: Military Base
Регистрация: Апр. 2004

Всего: 52 сообщения

Все равно не работает!
Пли-и-и-из, объясни все конкретно и приведи пример!

-----
В мире есть две точки зрения: неправильная и моя.

Отправлено: 17:28 - 26 Апр., 2004
Gatling
Пользователь

Откуда: БОМЖ
Регистрация: Февр. 2004

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

А не проще ли комунибудь выложиь батник, и не мучатся... Батник с пояснением...

-----
"Гизмо...Гизмо-кака!" Gremlin.

Отправлено: 19:27 - 28 Апр., 2004
Raven
Пользователь

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

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

По многочисленным просьбам :-)

Использование GVARs.

GVARы нужны для сохранения информации, которая должна быть доступна из разных локаций. Если вы хотите, чтобы действие персонажа на одной локации (скажем, убийство мэра в западной части города) влияло на объекты, расположенные в другой локации (отношение NPC к Чузену в восточной части города), то вам не обойтись без использования GVARs.

GVAR - это 32-битная переменная (т.е. она способна хранить значения от 0 до 4.294.967.296). Всего GVARs в Фолауте 695 штук. Из них свободны (зарезервированы разработчиками ) 60 (на самом деле больше, т.к. есть неиспользуемые GVARs - напр. репутация игрока в локациях Abbey, EPA и т.д., которые не вошли в игру. Их можно использовать для своих нужд).

Все GVARs сохраняются в сейв-файле (причём, дважды). В скриптах GVARs принято обозначать с помощью префикса GVAR_. Значения GVAR устанавливаются с помощью процедуры
set_global_var(имя_переменной,значение)

Читаются с помощью
global_var(имя_переменной)

Объявления глобальных переменных (т.е. сопоставление define-сокращений номерам переменных) производятся в файле headers\global.h. Как понятно из названия, любая глобальная переменная может быть прочитана/установлена из любого скрипта без каких-либо предварительных действий.

GVARs не работают в Мапере, проверить их работу можно только в самой игре.

Приведём пример скрипта, использующего GVAR (для случая Garold`а). Сделаем подобие псионика-супер-мутаната с заброшенной военной базы. Т.е. у нас должны быть Pet Master и Pets. В роли Pet Master возьмём Клинта, в качестве Pets - 2-3 крыс (чтобы игрок мог отбиться в начале игры). Напишем скрипты petmaster.ssl и pet.ssl (листинги см. ниже). Скомпилируем, пропишем в scripts.lst. Откроем в Мапере artemple.map, поменяем Клинту скрипт на petmaster.int, добавим пару крыс со скриптом pet.int. Сохраняем artemple. Открываем arcaves, размещяем там несколько криттеров (крыс или муравьев), также со скриптом pet.int. Сохраняем. Запускаем игру. Начинаем новую, берём чара. Бродим рядом с крысами - они ничего не делают. Оскорбляем Клинта-Мельхиора - вуаля! Быстро-быстро убегаем.

Листинги скриптов:
petmaster.ssl
--------------------------------------------
//Стандартные инклюды
#include <command.h>
#include <define.h>

//Для хранения нашей вары мы будем использовать одну из незанятых вар в Фоле:
//#define GVAR_TOWN_REP_ABBEY                 (63)
#define GVAR_say_fuck   (63)

//Для простоты
#define Option(x,y)   gsay_option(-1,x,y,-1)

//Для использования макроса Reply. Можно указать любое число, т.к. мы не используем msg-файл
#define NAME 1407

//Объявления процедур
procedure start;
procedure talk_p_proc;
procedure Node_Begin;
procedure Node_Attack;
procedure Node_End;

procedure start begin
end

procedure talk_p_proc begin
 start_dialogue(self_obj,-1);
 gsay_start;
   call Node_Begin;
 gsay_end;
 end_dialogue;
end

procedure Node_Begin begin
 Reply("Hello, Chosen One.");
 Option("Fuck off, motherfucker.",Node_Attack);
end

procedure Node_Attack begin
 Reply("My mighty pets! Attack this creature! [He points at you]");
 set_global_var(GVAR_say_fuck,1);
 Option("O-ops",Node_End);
end

procedure Node_End begin
end
--------------------------------------------
pet.ssl
--------------------------------------------
#define GVAR_say_fuck(63)

procedure start begin
end

procedure critter_p_proc begin
 //Примитивный вариант. Желательно устанавливать LVAR_Hostile флаг.
 if global_var(GVAR_say_fuck) and obj_can_see_obj(self_obj,dude_obj) then attack(dude_obj);
end
--------------------------------------------


(Отредактировал(а) Raven - 14:19 - 29 Апр., 2004)

Отправлено: 7:03 - 29 Апр., 2004
Jo Jim
Пользователь

Регистрация: Март 2004

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

Где можно посмотреть какими значениями иницализирутся LVAR для определенного скрипта?

Отправлено: 16:04 - 29 Апр., 2004
Gatling
Пользователь

Откуда: БОМЖ
Регистрация: Февр. 2004

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

Наверно в самих скриптах...


(Добавление от 19:07 - 29 Апр., 2004.)


Кстати, кто и как диалгои делает? Подскажите...

-----
"Гизмо...Гизмо-кака!" Gremlin.

Отправлено: 18:14 - 29 Апр., 2004
GaroldPredator
Пользователь

Откуда: Military Base
Регистрация: Апр. 2004

Всего: 52 сообщения

to Gatling
Во-первых:
Между прочим, твой скрипт уменя НЕ РАБОТАЕТ!!!
Во-вторых:
Ещё раз между прочим, я научился использовать GVARы ПО ДРУГОМУ!!!
Теперь я буду работать с этими переменными только через БИТЫ!!!
всё очень просто, нужно просто создать свой хеадер и прописать в нём пару строчек.
Как ты уже сам сказал, в GVARе 32 БИТА, то есть, 32 квеста в каждом GVARе (в смысле 32 простеньких квеста: не сделан, сделан)!!!!!!  

Упс, загон!
Пршу прщения, но не to Gatling, а to Raven!
Так, я думаю будет правильнее!

(Отредактировал(а) GaroldPredator - 17:31 - 30 Апр., 2004)

-----
В мире есть две точки зрения: неправильная и моя.

Отправлено: 20:50 - 29 Апр., 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