Сайт посвящен игре Stranded
Пятница, 24.11.2017
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Многопользовательская онлайн игра 'Герои битвы'
Страница 1 из 11
Модератор форума: Malzar 
Форум » Создание модов Stranded II » О том как создавать моды » Руководство к модификации игровых файлов
Руководство к модификации игровых файлов
111Дата: Пятница, 12.03.2010, 18:24 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 8
Репутация: 0
Статус: Offline
Думаю у каждого возникало желание после некоторого времени проведенного в игре, что - либо там изменить, но большинство сталкивалось с проблемой "А как?",эта тема создана только для написания руководств, с примерами , как и что менять\добавлять.На форуме подробной темы не нашел, так что создаю эту.Пожалуйста не флудите в теме если вам нечего сказать дельного.

Добавлено (12.03.2010, 21:14)
---------------------------------------------
Рассмотрим конкретный пример из файла game.inf
//Planting - посадка
on:useground { //на событие посадка
local $x,$y,$z,$id,$item; //заводим локальные переменные
$x=use_x(); //вот по юз точно сказать немогу вероятнее всего дает координату х в месте "соприкосновения" линии взгляда и земли
$y=use_y();//тоже самое только у
$z=use_z();//только z
$item=getplayerweapon();// присваиваем переменной значение ид того что игрок держит в руках

if (count_stored("unit",1,$item)>0){// если количество больше 0 (того что в руках)

//Grain - пшеница а не солома вовсе посмотрел бы я как вы солому жрать пошли
if ($item==42){ //как раз идет проверка пшеница ли это у нее ид = 42
if ($y>0){ //если у > 0
if (freespace($x,$y,$z,20,1,0,0,0)){ // если свободное пространство
freestored "unit",1,42,1;// насколько понял убираем у юнита 1(т.е. это игрок) 42 ид вещь(пшеница) в кол - ве 1 шт
$id=create("object",121,$x,$z); //вот как все неоднозначно =) присваиваем переменной значения: это обьект с идентификатором 121 - это модель посаженной пшеницы, с координатами х и з
event "plant","object",$id;//инициируем событие посадка обьекта с указанными выше хар-ами
if (skillvalue("plant")>=400){//еслискилл посадки больше или равно 400
process "planting grain",500;//растим 500 милисек
}else{//иначе
process "planting grain",2000;//растим 2000 милисек
}
play "dig.wav";//проигрываем звук копания
play "mat_leaf1.wav";//звук листвы
event "iskill_plant","global";//событие посадки
}else{//иначе относительно условия того что есть место свободное
speech "negative";//речь "никак нет еперный вас за ногу"
msg "Here is not enough space!",3;//выводим месагу для глухих что никак...
}
}else{//иначе относительно y>0 (btw у=0 это граница воды,поясняю еще яснее если у<0 это ниже уровня воды, автоматически - в воде
speech "negative";//никак нет!
msg "Grain does not grow in water!",3;//месага: "в воде не растет"
}

Добавлено (12.03.2010, 22:07)
---------------------------------------------
//Sleeping спанье =)
on:sleep { //на событие спать
if (getplayervalue(4)>5){ //если величина 4 игрока больше 5 (это усталость)
local $y; //создаем лок переменную
$y=gety("unit",1); //присваиваем ей значения текущей высоты игрока(у)
if ($y>0){ // если высота больше 0 те мы не в море решили поспать =)
if (playerspotted()==0){//если игрок не замечен животными я понимаю так
//Exhaustion
consume 0,-35,-35,100; //консум вобще интересная вещь зачем то сделали отдельную функцию для стандартных вобщем то переменных что делает: меняет 4 главных хар - ки игрока на указанные велечины тут : здоровье не трогает, голод и жажду уменьшает на 35, сон увеличивает на 100 нажрались вобщем мы если я ничего не напутал

//Alcohol Stuff ихааа бухлооо ля ля ля
if ($s2g_alc>200){$s2g_alc=200;} //если $s2g_alc больше 200,приравниваем к 200 я так понимаю это отдельная зарезервированная переменная под опьянение
$s2g_alc-=60;//уменьшаем опьянение 60
if ($s2g_alc<0){$s2g_alc=0;} //если опьянение падает ниже 0 равняем 0 чтоб не получилось того что мы накапливаем запас трезвости и выжрем хатем 6 бутылок водяры разом без эффекта happy

//Free States
freestate "unit",1,"dizzy"; //вот стэйтс это состояния диззи головокружение
freestate "unit",1,"fuddle";//хз поищите вродена сайте был список состояний

//Damage if there is no Cover бьет нам по башне если спим под открытым небом =)
if (count_behaviourinrange("object","cover")==0){ //если число обьектов укрытие равно 0 вот бехавиор ранж спорный вопрос я бы приравнял к "если в радиусе"
$damage=random(10,20);//рандомный дмг в размере от 10 до 20 хп, блин люблю си подобные языки где захотел там переменную и воткнул
damage "unit",1,$damage;//дмгим на полученный рандом перса
freevar $damage;//освобождаем переменную дмг "а то как бы что"
}else{
//Treehouse Recover восстановление в домике на дереве
if (count_inrange("object",190)>0){//если количество укрытий обьект 190 - это домик на дереве больше чем 0
consume 5,10,10,0;//тот же консум но с другими результатами
//Hut Recover
}elseif (count_inrange("object",206)>0){
consume 10,15,15,0;//аналогично 1,2,3,4 - главные параметрыи игрока
}
}

//Plague? чума?
if (count("object",121)>$s2g_plagues){//если количество "соломы" блин, больше чем в зарезервированной переменной,он где то выше вроде
if (skillvalue("plant")>40){//если скилл посадки больше 40
if (random(1,3)==1){//если хм, кубик с тремя сторонами xD выпал на одну из них(ну не знаю я как рандом на примере обьяснить)
$tmp=0;//о господи накал возрастает, равняем 0
$tmp2=random(5,7);//вторую рандомим это как я предвижу определит кол во саранчи
loop ("objects",121){//к сожалению функцию луп ненаю есть подозрение что это цикл ибо присутствует счетчик в виде 1 переменной
$tmp++;//инкреминируем(это не понтовое слово тако а название увелечения чего либо) на 1
if ($tmp>=$tmp2){//если 1 большеравно 2
$tmp=0;//о господи мы обнуляем первую переменную что то будет!
$id=loop_id();// присваеваем переменной значение того что вернул луп,все таки это цикл разобрался)
$x=getx("object",$id);//получаем координату хэ
$z=getz("object",$id);// у
create "unit",43,$x,$z;//создаем О я же говорил мы все умрееем, юнита 43-понмаю так саранча в координатах ху
}
}
freevar $id,$x,$z;//освобождаем от резервации, "о как" ненужные нам более переменные.
}
}
}/

//Autosave автосейв он и есть автосей польза для нас какая:можем включать в любой другой скрипт куда нам захочется
autosave;

msg "You slept",4;//пишем месагу 4 шрифтом
msg "Saved (Autosave)",1;//аналогично 1

}else{
speech "negative";//иначе грим "негатив,файр ин а хол!"
msg "I should not sleep now!",3;//месага для глухих 3 шрифтом
skipevent;//выходим из события
}
}else{
speech "negative";//аналог
msg "Sleeping in the water?",3;//ты че чел я те бубка гоп чтоль под водой спать?
msg "Not a good idea...",3;//ну ты трындец упорный не буду!
skipevent;//выходим
}
freevar $y;//разрезервируем у
}else{
speech "negative";//=up=
msg "I'm not tired enough!",3;//=up=
skipevent;//=up=
}
}//усе!

Добавлено (12.03.2010, 22:15)
---------------------------------------------
//Make Fire фигачим огонек
on:barkbranchfire2 {//на событие пум пурум чего то там, но я понял что это событие создания огня из коры и ветви
$tmp=random(1,100);//рандомим от 1 до 100
if ($barkbranchfire==0){//если пременная хм хм хм где они ее резервируют то?равна 0 а наверн это глоб переменка, равнятся 1 на некоторое время когда происходит событие кора + ветвь
speech "negative";//нет!
msg "I need a dry fireplace!",3; //нет!
}else{
if ($tmp<=$s2g_firesuccess){//ох... рандом они задумали, но! если наша рандомка меньше глоб переменной успех огня см начало гейм инф
if (addstate("object",$barkbranchfire,"fire")==1){//лобавляем состояние обьекту ахем вот собственно и место где равняем 1 то что огонь создан
statevalue "object",$barkbranchfire,"fire",0;//жиганули и резко поставили на 0 чтоб мы не бегали и не палили лес)
speech "positive";//уря!
msg "Fire started",4;//уря!
freestored "unit",1,107,1;//уладаляем у обьекта перс ид 107 обьект в кол-ве 1 шт
freestored "unit",1,24,1;//удаляем у обьекта перс ид 24 обьект в кол-ве 1 шт
}else{
speech "negative";//нет!
msg "It's too wet!",3; //нет!
}
}else{
speech "negative";//нет!
msg "It does not work...",3;//нет!
msg "I have to try it again!",3; //нет!
freestored "unit",1,107,1;//и хоть и не получилось один фиг обьекты удаляем
freestored "unit",1,24,1;//2 обьект
}
}
}//усе!

Добавлено (12.03.2010, 22:24)
---------------------------------------------
//Skillstuff ох ты чтоб вас за ногу а...вермишель с тефтелями, т.е. я имею в виду скиллы

on:skill_wood { msgbox "Skill Info","sys/skillinfos/wood.inf"; }//на событие вот кстати не оч понял где оно выводит, мб это просмотр скиллов в рюкзаке?вывод делаю тк затронут файл скилинфос в котором ничего кроме описания нет.
on:iskill_wood {//на использование скилла
incskill "wood",1,"Lumbering";//увеличиваем скилл лесоруб на 1
$tmp=skillvalue("wood");//присваиваем переменной значение скилла текущее в
if ($tmp==25){ event "skillup","global"; unlockcombi "branch"; }//вообщем тут и ниже в зависимости от значения скила выдаются различны плюшки
if ($tmp==50){ event "skillup","global";}//происходит глоб событие лвл ап скилла+ как вариант открывается новая комбинация
if ($tmp==100){ event "skillup","global";}
if ($tmp==200){ event "skillup","global";}
if ($tmp==400){ event "skillup","global";}
if ($tmp==800){ event "skillup","global";}
}

on:skill_fish { msgbox "Skill Info","sys/skillinfos/fish.inf"; }//абсолютно все тоже только с рыбалкой
on:iskill_fish {
incskill "fish",1,"Fishing";
$tmp=skillvalue("fish");
if ($tmp==25){ event "skillup","global";}
if ($tmp==50){ event "skillup","global"; unlockbuilding 9; }//вот тут замете открываем здание с ид 9
if ($tmp==100){ event "skillup","global";}
if ($tmp==200){ event "skillup","global";}
if ($tmp==500){ event "skillup","global";}
}

on:skill_hunt { msgbox "Skill Info","sys/skillinfos/hunt.inf"; }//охота
on:iskill_hunt {
incskill "hunt",1,"Hunting";
$tmp=skillvalue("hunt");
if ($tmp==25){ event "skillup","global";}
if ($tmp==50){ event "skillup","global";}
if ($tmp==100){ event "skillup","global"; unlockbuilding 10; }
if ($tmp==200){ event "skillup","global";}
}

on:skill_plant { msgbox "Skill Info","sys/skillinfos/plant.inf"; }//посадка
on:iskill_plant {
incskill "plant",1,"Planting";
$tmp=skillvalue("plant");
if ($tmp==50){ event "skillup","global";}
if ($tmp==100){ event "skillup","global"; unlockbuilding 14;}
if ($tmp==200){ event "skillup","global";}
if ($tmp==400){ event "skillup","global";}
if ($tmp==800){ event "skillup","global";}
}

on:skill_dig { msgbox "Skill Info","sys/skillinfos/dig.inf"; }//землекоп
on:iskill_dig {
incskill "dig",1,"Digging";
$tmp=skillvalue("dig");
if ($tmp==25){ event "skillup","global";}
if ($tmp==50){ event "skillup","global";}
if ($tmp==100){ event "skillup","global";}
if ($tmp==200){ event "skillup","global";}
if ($tmp==500){ event "skillup","global";}
}

on:skillup {//а вот собственно и событие при повышении скилла
msg "Skill improved!",1;//месага скилл улучшен!
play "fx_spell.wav";//играем музончик
corona getx("unit",1),getz("unit",1),40,255,250,0;//не скажу не знаю даже не подозреваю, но видя цифры 255 250 0 очень похоже что это эффект искорок вокруг нас,я просто не помню есть он в игре или нет)
}
script=end//конец совсем совсем.

Сообщение отредактировал 111 - Пятница, 12.03.2010, 18:07
 
devi409Дата: Пятница, 12.03.2010, 18:59 | Сообщение # 2
Царь
Группа: Администраторы
Сообщений: 633
Репутация: 45
Статус: Offline
На сайте в каталоге статей имеется раздел скриптинг и модинг, там имеются начальные сведения о том как писать скрипты и модификации к игре.

И еще один важный момент. Выше написан огромный код, читать проблемотично.

Не хочу обидеть автора но хотелось бы увидеть.
Тема:
Цель:
Функция:
Где писать скрипт:
Что изменяет написанный или модифицированный скрипт:

Столько много кода а что собственно делает то??? Этот код меняет глобально игру или его некоторые части и какие?

ЗЫ: Был вопрос о том какие события имеются в игре. Пока я не перевел на русский язык все команды но в англо-немецком сайте они все имеются и там можно любую команду найти. Недостаток того сайта - много непонятного к примеру на сайте имеется команда currentid а как применять не написано. Практически выяснено что нужно делать так: $id=currentid() на сайте ни о переменной ни о скобках написано не было.

http://stranded.unrealsoftware.de/s2_commands.php?list=all

 
111Дата: Пятница, 12.03.2010, 19:09 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 8
Репутация: 0
Статус: Offline
далеко не каждый хорошо владеет немецким=)статья представляет подробное описание всех используемых в оригинальных файлах функций, полезна тем кто не может даже определить где и что менять то, не говоря уж о б том как.Описания команд конечно хорошо только не всякий сможет правильно использовать их, да и вообще структурировать скрипт, на примере же куда как проще, опять же можно будет просто попробовать поменять конкретные параметры и сразу быть уверенным что они поменяют в игре.Написано для совсем новичков, вот и вся цель.по поводу куррент ид КО как бы говорит что возвращается ид обьекта используемого в данном скрипте.

Сообщение отредактировал 111 - Суббота, 13.03.2010, 14:46
 
devi409Дата: Пятница, 12.03.2010, 20:15 | Сообщение # 4
Царь
Группа: Администраторы
Сообщений: 633
Репутация: 45
Статус: Offline
Думаю нужно делать вот так

http://devi409.ucoz.ru/publ/skripty/komandy/5-1-0-25

 
batiscaffДата: Пятница, 12.03.2010, 23:22 | Сообщение # 5
Подполковник
Группа: Проверенные
Сообщений: 147
Репутация: 13
Статус: Offline
Команды вывода текстовых окон.

add "Text"
Группа: interface

Добавляет строку в текстовый буфер.

clear
Группа: interface

Очищает текстовый буфер

msgbox "Title", ["Text"]
Группа: interface

Показывает окно с текстом.
Title - заголовок окна;
Text - текст выводимый в окне;
Если параметр Text не указан, то выводится содержимое текстового буфера.

Пример:

Code
// Скрипт подвешенный на отмычку из первой карты Adventure
on:drop {
      clear;    // Очищаем буфер
      // Заполняем буфер двумя строчками
      add "Ээй... Что-то мне подсказывает, что эта штука мне ещё пригодится! Пожалуй, я её оставлю.";
      add "Думаю, на этом острове есть что-то, что этой штуковиной можно открыть. Нужно просто найти!";
      msgbox "Не выбрасывай!";   // Выводим содержимое буфера в окне
      skipevent; // Останавливает событие drop, чтобы не выкинуть отмычку
}


Сообщение отредактировал batiscaff - Пятница, 12.03.2010, 23:22
 
111Дата: Суббота, 13.03.2010, 10:46 | Сообщение # 6
Рядовой
Группа: Проверенные
Сообщений: 8
Репутация: 0
Статус: Offline
on:Event { Commands }
Categories: basic
C помощью команды "on", вы выбираете секцию скрипта выполнятся будет только в этом событии.
пример: on:start {msg "sdsad"}//на старт карты (не загрузку игры сохраненной а именно на начало новой игры) выведет сообщение
Вообще встречается повсеместно, так что пример можете найти практически в любом скриптовом файле.

events //собственно события
start - старт новой карты
load - загрузка или старт новой
presave - перед сохранением
postsave - послесохранения
create - на создание (обьекта,юнита,...) но не в случае с загрузкой а именно на создание
use - на кнопку использования(е), или в случае с вещами на кнопку использовать в инвентаре
hit - на любые повреждения нанесенные игроком(нужно оговорится, сачок к примеру бьет на 0 , но это тоже считается) фактически - на удар
kill - когда уничтоженно/убито
collect - когда вещь подобранна с помощью(е) хотя я понимаю что в случае добавления с помощь юскрипта чего то в инвентарь событие это же
drop - когда выброшена вещь
trigger - когда условия инфо триггера совпадают(триггер активируется)
changeday - во время смены дня(00:00 часов)
sleep - во время сна
dig -когда игрок использует лопату(роет) (behaviour=spade)
fish - когда использует удочку(ловит рыбу) (behaviour=fishingrod)
useground - когда использует землю
usesea - когда использует пресную воду\море
impact - столкновение метательного\огнестрельного снаряда с обьектом
timer - когда таймер окончился(0)
getoff - слезть с "ездабельного =)" животного или с техники
attack1 - если вещь в руке используется с помощью левой кнопки
attack2 - если вещь в руке используется с помощью правой кнопки
ai_attack - когда игрок атакован враждебным юнитом
ai_idle1 - когда анимация 1 для юнитов проигрывается
ai_idle2 - когда анимация 2 для юнитов проигрывается
ai_idle3 - когда анимация 3 для юнитов проигрывается
nodeXXXX - когда юнит двигающийся по пути достигает точки пути(инфо) с ID XXXX
reach - когда юнит двигающийся по пути достигает инфо(как правило это начало\конец(если зациклен) пути)
selectplace - когда кликаем на землю в режиме размещения
cracklock_success - когда успешно ломаем замок
cracklock_failure - когда не получается сломать замок
build_setup - когда здание выбрано из списка задний
build_start - когда установлено место постройки
build_finish - когда здание построено
keyhitXX - когда клавиша скрипта нажата??? (only in the script from game.inf)
keydownXX - когда удерживается скриптовая клавиша (only in the script from game.inf)
keyreleaseXX - когда отпущенна(именно момент отпускания) скрипт клавиша (only in the script from game.inf)
spawn - когда создается у spawn-info(спаунится)
addstate - на добавление статуса
freestate - на удаление статуса
seperate - when an attached item is hit
edset - когда объект размещен в редакторе
inhand - when an item is drawn
noammo - на попытку стрельбы\метания без патронов

skipevent//пропуск события(выход из него)
Categories: basic
для некоторых событий, Stranded II автоматически предпринимает действия в случае вашего с ними взаимодейтсвия. к примеру вещи лежащие на острове(камни, листья, палки т.д.), их всегда можно будет пообрать когда вы нажмете использовать - даже если это не описывается в скрипте.
Skipevent позволяет миновать,отключить,пропустить , простые функции для некоторых событий.команда может быть помещена где угодно в скобках события.

поддерживаемые события
collect - вещь не будет подобрана
combine (only for scripts in combinations.inf) - комбинация не будет успешной
use - действие относительно вещей,окружения,мертвых животных будет недоступно
drop - вещь не будет выброшена
getoff - игрок не слезет с животного\техники
attack1 - атаки не будет
attack2 - не будет дополнительного действия
build_setup - игра не переключится в режим размещения зданий
build_start - строительство на выбранном участке не начнется
separate - на удар вещь не отделится от обьекта которому принадлежит

Сообщение отредактировал 111 - Воскресенье, 14.03.2010, 10:57
 
devi409Дата: Суббота, 13.03.2010, 18:59 | Сообщение # 7
Царь
Группа: Администраторы
Сообщений: 633
Репутация: 45
Статус: Offline
О!!! хорошее дело. надо оформить в статью!
 
batiscaffДата: Воскресенье, 14.03.2010, 00:45 | Сообщение # 8
Подполковник
Группа: Проверенные
Сообщений: 147
Репутация: 13
Статус: Offline
Команды создания ролика и управления камерой

seqstart [Blend] [,Skipable]
Группа: sequences

Запускает режим ролика
Blend - чёрные полосы сверху и снизу экрана
0 - выключены
1 - включены (по умолчанию)
Skipable - указывает, можно ли остановить показ ролика клавишей Escape
0 - нельзя
1 - можно (по умолчанию)

seqend Time
Группа: sequences

Останавливает ролик
Time - время через которое ролик будет остановлен (в милисекундах).

seqmsg Time, "Text" [,Font] [,Position]
Группа: sequences

Выводит текстовое сообщение в режиме ролика
Time - момент времени от начала ролика, в который должно появиться сообщение
Text - текст сообщения
Font - номер шрифта
Position - позиция сообщения на экране:
0 - внизу
1 - вверху
2 - по центру

seqmsgclear Time [,Position]
Группа: sequences

Очищает заданную текстовую позицию в режиме ролика
Time - момент времени от начала ролика, в который нужно произвести очистку
Position - позиция сообщения на экране, которую нужно очистить

seqsound Time, "File" [,Volume] [,Pan] [,Pitch]
Группа: sequences

Воспроизводит звуковой файл.
Time - момент времени от начала ролика, в который нужно начать воспроизведение
File - путь к звуковому файлу
Volume - громкость звука ( от 0 до 10, возможны дробные значения )
Pan - баланс между стерео-потоками.
-1 - левый поток
0 - равномерно между обоими потоками
1 - правый поток
Pitch - высота тона воспроизведения (зависит от воспроизводимого файла)

seqbar Time, Mode
Группа: sequences

Показывает или прячет чёрные полосы сверху и снизу экрана.
Time - момент времени от начала ролика
Mode - режим показа
0 - спрятать полосы
1 - показать полосы

hidebar Time
Группа: sequences

Прячет чёрные полосы (всё равно что 'seqbar Time, 0;')

showbar Time
Группа: sequences

Показывает чёрные полосы (всё равно что 'seqbar Time, 1;')

setcam Time, ID
или
sc Time, ID
Группа: sequences

Устанавливает камеру в позицию, указанную с помощью идентификатора контрольной точки (info) в указанный момент времени.
Time - момент времени от начала ролика
ID - идентификатор контрольной точки (info)

movecam Time, Targettime, ID
Группа: sequences

Перемещает камеру в позицию, указанную с помощью идентификатора контрольной точки (info) к указанному моменту времени
Time - момент начала движения
Targettime - момент остановки
ID - идентификатор конечной точки (info)

Добавлено (14.03.2010, 04:42)
---------------------------------------------
campath Time, Steptime, ID ... [,ID]
Группа: sequences

Премещает камеру вдоль пути образованного несколькими контрольными точками (info).
Time - момент начала движения
Steptime - время перехода от одной точки к другой
ID - идентификаторы контрольных точек (info), количество не ограничено.

timedcampath Time, Steptime, ID ... [,Steptime, ID]
Группа: sequences

Премещает камеру вдоль пути образованного несколькими контрольными точками (info), но в отличии от campath,
время перемещения от точки к точке задаётся индивидуально.
Time - момент начала движения
Steptime - время перехода от текущей точки до следующей
ID - идентификаторы контрольных точек (info)
Количество пар [,Steptime, ID] не ограничено.

seqflash Zeit [,Red] [,Green] [,Blue] [,Speed] [,Alpha]
Группа: sequences

Выполняет цветную вспышку в указанный момент времени
Time - момент времени от начала ролика
Red, Green, Blue - красная, зелёная и синяя составляющие цвета вспышки
Speed - скорость вспышеки (по умолчанию - 0.05)
Alpha - прозрачность заливки (по умолчанию - 1.1)

seqfade StartTime, EndTime [,R] [,G] [,B] [,Mode]
Группа: sequences

Вызывает затухание или проявление экрана
StartTime - момент начала затухания (проявления)
EndTime - момент окончания затухания (проявления)
R, G, B - красная, зелёная и синяя составляющие цвета заливки
Mode - режим
0 - затухание и последующее проявление (удобно использовать для перехода между сценами)
1 - затухание
2 - проявление

seqevent Time, "Event" [,"Class", ID]
Группа: sequences

Запускает событие в указанный момент времени. Если Class и ID указаны, то событие выполняется только на указанном объекте,
иначе выполнится на всех объектах игры.
Time - момент времени от начала ролика
Event - название события
Class - класс объекта
ID - идентификатор объекта

seqscript Time, "Source"
Группа: sequences

Запускает внешний в указанный момент времени
Time - момент запуска
Source - путь к файлу скрипта

cammode Time, Mode [,"Class", ID]
Группа: sequences

В указанный момент меняет режим вращения камеры.
Time - момент времени от начала ролика
Mode - режим вращения
0 - камера всё время смотрит в центр карты (по умолчанию)
1 - камера следт за объектом указанным с помощью Class и ID
2 - камера плавно меняет ориентацию в зависимости от ориетации контрольных точек (info), между которыми она движется,
(при ориентировании камеры в редакторе она будет смотреть в сторону синей направляющей оси)
3 - камера не вращается
4 - камера находится в свободном режиме, можно менять ориетацию мышью
Следующие параметры игнорируются вовсех режимах кроме №1.
Class - класс объекта, на который направлена камера
ID - идентификатор объекта

Добавлено (14.03.2010, 04:43)
---------------------------------------------
camfollow Time, "Class", ID, X, Y, Z
Группа: sequences

Прикрепляет камеру к объекту
Time - момент времени от начала ролика
Class - класс объекта, к которому прикрепляется камера
ID - идентификатор объекта
X,Y,Z - координаты камеры относительно объекта

Например, чтобы следить за черепахой, нужно сделать так
camfollow 0, "unit", 100, 0, 50, -50;
В этом случае камера окажется выше черепахи и позади неё на 50 см, и будет направлена прямо на неё.
При этом режим вращения камеры автоматически меняется на 1 (см. cammode), но его в любой момент можно сменить, при этом камера
продолжит двигаться за объектом, но уже будет смотреть в сторону, определённую в cammode.

seqcls Time, Mode [,R] [,G] [,B]
Группа: sequences

В указанный момент включает или выключает режим чистого экрана
Time - момент включения/выключения режима
Mode -
0 - отключение режима
1 - включение режима
R, G, B - красная, зелёная и синяя составляющие цвета заливки

seqhideplayer Time [,Hidden]
Группа: sequences

В указанный момент прячет или показывает модель игрока.
Time - момент времени
Hidden - 0 - показать игрока, 1 - спрятать (по умолчанию 1)

seqimage Time, "Picture" [,Mask]
Группа: sequences

В указанный момент показывает изображение в центре экрана. Если изображение уже имеется - заменяет его на новое.
Time - момент времени
Picture - путь к файлу изображения (начиная от папки мода)
Mask - указывает накладывать или нет маску на изображение
0 - не накладывать (по умолчанию)
1 - накладывать ( розовые пиксели с RGB 255,0,255 становятся прозрачными )
Команду удобно использовать в сочетании с seqcls, чтобы залить однородным фоном оставшиеся участки экрана.
seqflash и seqfade на картинке не отражаются

seqimagetext Time, "Text", X, Y [,Font] [,Align]
Группа: sequences

В указанный момент выводит текст поверх изображения загруженного с помощью seqimage (seqimage должна быть выполнена заранее).
Time - момент времени
Text - выводимый текст
X, Y - координаты текста на изображении
Font - номер шрифта
Align - выравнивание текста относительно точки X, Y
0 - по левому краю
1 - по центру
2 - по правому краю

seqtimemode Mode [,Absolut]
Группа: sequences

Меняет режим отсчёта времени в ролике.
Mode - множитель на который домножается стандартный временной интервал (1 милискунда)
Рекомендуемые значения:
1 - милисекунды
10 - сотые доли секунды
100 - десятые доли секунды
1000 - секунды
Absolut - указывает как вести отсчёт времени
1 - абсолютное время, относительно момента начала ролика (по умолчанию)
0 - относительно предыдущей команды
Эта команда влияет только на временные параметры стоящие первыми в списке, второй параметр надо всегда указывать в милисекундах

Добавлено (14.03.2010, 04:45)
---------------------------------------------
Пример: (взят из скрипта map01_intro.s2s карты Adventure)

Code
on:intro {
     //.....
     // setup intro sequence
     seqstart 1,1; // Запускаем ролик. Отображаем чёрные полосы по краям экрана и разрешаем прервать ролик клавишей Escape
     seqtimemode 1000,1; // Устанавливаем временной интервал - 1 секунда, отсчёт времени ведём от начала ролика
     cammode 0,1,"unit",100; // Выбираем режим вращения камеры, следящий за кораблём

     // scene 1
     setcam 0,2; // Выбираем камеру №2
     seqfade 0,1500,0,0,0,2; // Включаем проявление экрана.
     seqmsg 6,"Я помню всё, как будто это было вчера.",5; // На 6-й секунде выводим сообщение, используя шрифт №5
     seqsound 6,"speech\intro_a.ogg"; // На 6-й секунде запускаем звуковой файл
     seqfade 8,10000,0,0,0,0; // С 8-й по 10-ю секунды выполняем затухание-проявление экрана.
                    //Как видите, время начала затухания указано в секундах, а время окончания в милисекундах (10000)
     seqmsg 9,"Я только что купил новую яхту и бла бла бла...",5; // Текст

     // scene 2
     seqevent 9,"scene2a";    // На 9-й секунде запускаем событие "scene2a"
     setcam 9,4;                      // и переключаемся на камеру №4
     seqevent 12,"scene2b"; // На 12-й секунде запускаем событие "scene2b"
     seqmsg 14,"Я был так рад... бла бла бла",5;
     seqsound 14,"speech\intro_b.ogg"; // На 14-й секунде запускаем очередную звуковую дорожку
     seqmsg 20,"Шторм сбил меня с курса...",5;
     seqfade 24,26000,0,0,0,0; // Затухание-проявление с 24-й по 26-ю секунду

     // scene 3
     seqevent 25,"scene3a";  // На 25-й секунде запускаем событие "scene3a"
     setcam 25,5;                    // и переключаемся на камеру №5
     movecam 25,30000,6;    // Двигаем камеру по направлению к точке обозначенной info №6
     seqevent 30,"scene3b";   // Событие "scene3b"
     seqmsgclear 24;               // Очищаем текстовое сообщение
     seqmsg 26,"Молния ударила в яхту... Начался пожар...",5;
     seqsound 25,"speech\intro_c.ogg"; // Очередноая звуковая дорожка
     seqfade 34,36000,0,0,0,0;               // Очередное затухание-проявление

     // Далее ничего особо интересного

}
 
SlepoiДата: Суббота, 17.07.2010, 09:51 | Сообщение # 9
Рядовой
Группа: Пользователи
Сообщений: 3
Репутация: 0
Статус: Offline
ты лучше скажи батискаф а как сделать так чтоб с 1 куска мяса животные приручались

Добавлено (17.07.2010, 13:39)
---------------------------------------------
делается это в item edible в куску мяса тока я не пойму что менять

Добавлено (17.07.2010, 13:50)
---------------------------------------------
могу помочь на счет модификаций как там что начну с файла item edible

Добавлено (17.07.2010, 13:51)
---------------------------------------------
тока я сначала на текстовый а потом уже сюды

 
batiscaffДата: Суббота, 17.07.2010, 17:49 | Сообщение # 10
Подполковник
Группа: Проверенные
Сообщений: 147
Репутация: 13
Статус: Offline
Вот кусок кода:
Code
on:ai_eat {
    local $eater,$var;
    $eater=ai_eater();
    $var=type("unit",$eater);
    $var=defparam("unit",$var,"tameable");
    if ($var==1) {
       $var=getlocal("unit",$eater,"tameness"); // Параметр "tameness" записанный в $var, определят на сколько приручён зверь
       $var+=2;
       setlocal "unit",$eater,"tameness",$var;
       if (($var>9)&&(gotstate("unit",$eater,"tame")==0)){ // Если параметр больше 9 и зверь ещё не приручён, то приручаем его
          if(type("unit",$eater)==207) { if($dog_tameable==0) { skip; } }
          addstate "unit",$eater,"tame";
          corona getx("unit",$eater),getz("unit",$eater),20,255,70,100;
          msg "Я приручил это!",4;
       }
    }
}

Следовательно надо цифру 9 в условии заменить на 1.
Вроде бы так...


Сообщение отредактировал batiscaff - Суббота, 17.07.2010, 17:50
 
SlepoiДата: Среда, 21.07.2010, 07:12 | Сообщение # 11
Рядовой
Группа: Пользователи
Сообщений: 3
Репутация: 0
Статус: Offline
не неполучилось мы с деви так уже делали
 
batiscaffДата: Среда, 21.07.2010, 10:11 | Сообщение # 12
Подполковник
Группа: Проверенные
Сообщений: 147
Репутация: 13
Статус: Offline
Хорошо, поэкспериментирую smile
 
MalzarДата: Понедельник, 13.02.2012, 11:33 | Сообщение # 13
Генерал-полковник
Группа: Модератор Форума мультиплеер
Сообщений: 1159
Репутация: 20
Статус: Offline
Подскажите как сделать так чтобы после выполнения комбинации через некоторое время у игрока появлялось состояния?
Например после комбинации лист + лиана (уберает кровотечение) , проходило время и кровотечение появлялось опять?


s2maps.ucoz.org - мой сайт, на нем можно найти все мои моды и карты к Stranded 2, а также много других интересных игр в жанре выживание.
Моя страничка ВКонтакте
 
batiscaffДата: Понедельник, 13.02.2012, 11:47 | Сообщение # 14
Подполковник
Группа: Проверенные
Сообщений: 147
Репутация: 13
Статус: Offline
Вероятно надо использовать таймер (описание здесь)
Только не надо ими злоупотреблять, а то они систему сильно грузят.
 
Форум » Создание модов Stranded II » О том как создавать моды » Руководство к модификации игровых файлов
Страница 1 из 11
Поиск:

Copyright MyCorp © 2017