Сайт посвящен игре Stranded
Вторник, 23.04.2024
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Модератор форума: Malzar  
Форум » Создание модов Stranded II » О том как создавать моды » Скрипт, для перехода между картами. Или бесконечная карта (бесконечная карта)
Скрипт, для перехода между картами. Или бесконечная карта
SnapДата: Четверг, 23.12.2010, 19:51 | Сообщение # 1
Подполковник
Группа: Проверенные
Сообщений: 114
Репутация: 3
Статус: Offline
вот скрипт, ща распишу как все работает. (Скрипт не доделан) - не сделано телепортирование, доделаю завтра

Code
on:trigger { //при активации триггера
  local $playerposx, $playerposz, $zona; //локальные переменные
  $playerposx=getx("unit",1); //переменная $playerposx = позиции игрока по X
  $playerposz=getz("unit",1); //переменная $playerposy = позиции игрока по Z
  $zona=playerdistance(self); //переменная $zona = дистанция игрока от триггера, использует себя, для определения дистанции
  if ($zona>=512) { //проверка если $zona больше 512(если выйти за зону радиусом 512), то
  if ($playerposx>=0) {msg "на запад";} //если позиция игрока по X больше 0 то вывод сообщения-тут надо дописать скрипт телепортирования на другой остров
  if ($playerposx<=0) {msg "на восток";} //если позиция игрока по X меньше 0 то вывод сообщения-тут надо дописать скрипт телепортирования на другой остров
  if ($playerposz>=0) {msg "на юг";} //если позиция игрока по Z больше 0 то вывод сообщения-тут надо дописать скрипт телепортирования на другой остров
  if ($playerposz<=0) {msg "на север";} //если позиция игрока по Z меньше 0 то вывод сообщения-тут надо дописать скрипт телепортирования на другой остров
  }
}

для его работы нужно создать на карте область-триггер(вписать туда скрипт)
с радиусом больше карты, но не на много. Для разных размеров
карт нужно, разные радиусы, какой нужен?
например: карта 16x16 - для нее нужно в триггере установить
значение больше 512, где то 600-700
работает так, см картинку

зеленый квадратик - как поняли триггер
красная зона - это границы карты, все что дальше это бесконечное пространство
желтый - остров
С, Ю, З, В - это стороны света
Зеленый круг - это радиус триггера, он как я писал должен быть больше размера карты
Синий круг - это радиус проверки описанный в скрипте, он должен быть радиусом с карту, но меньше зеленого радиуса
Зона между радиусами помеченная салатовым цветом - это то место где осуществляется проверка, сторон света(это как бы тот самый объект который хотели на всю карту растянуть, что бы проверку осуществить), т.е. поплыв к северу и чуть ближе к западу (вам выдаст сообщение плыть на север или на запад-это надо доделать)

Пример1: Розовая стрелка это к примеру путь игрока который идет в том направлении, а шарик на стрелке это место проверки, что вы вышли за карту и хотите переплыть на другой остров, подойдя к месту проверки будет сообщение "плыть на юг или на запад?"

Пример2: Фиолетовая стрелка это (тот же текст как в первом примере) , подойдя к месту проверки будет сообщение "плыть на север или на восток?"

...... Допишу еще, время нет щас.

 
MalzarДата: Четверг, 23.12.2010, 22:20 | Сообщение # 2
Генерал-полковник
Группа: Модератор Форума мультиплеер
Сообщений: 1159
Репутация: 20
Статус: Offline
бутет воще круто smile можно будет все карты между собою связать и получитса огромный мир stranded crazy

Добавлено (24.12.2010, 02:20)
---------------------------------------------
вот такой еще вопрос а постройки, скилы, предметы и т.д. будут сохранятса?


s2maps.ucoz.org - мой сайт, на нем можно найти все мои моды и карты к Stranded 2, а также много других интересных игр в жанре выживание.

Сообщение отредактировал Malzar - Четверг, 23.12.2010, 22:21
 
PanikerДата: Четверг, 23.12.2010, 23:55 | Сообщение # 3
Лейтенант
Группа: Проверенные
Сообщений: 58
Репутация: 1
Статус: Offline
сохраняться.... ведь делать будем на основе.... и я так думаю на основе devmod... я прав? а вообще есть у меня идея со сценарием к игре.... напишу его по позже.... а вообще я присоединюсь к написанию как только аппаратуру привезут нормальную... эт гдет 27 числа будет...
 
SnapДата: Пятница, 24.12.2010, 06:58 | Сообщение # 4
Подполковник
Группа: Проверенные
Сообщений: 114
Репутация: 3
Статус: Offline
надо копаться, я начну в обед где то
 
PanikerДата: Пятница, 24.12.2010, 23:39 | Сообщение # 5
Лейтенант
Группа: Проверенные
Сообщений: 58
Репутация: 1
Статус: Offline
по форумам полазил.... нашел вот
savemap "maps\island_a1.s2
код должен сохронять остров при переезде на другой

Добавлено (25.12.2010, 03:39)
---------------------------------------------
Snap, дай свой скайп плз.... или асю....

 
SnapДата: Воскресенье, 26.12.2010, 16:51 | Сообщение # 6
Подполковник
Группа: Проверенные
Сообщений: 114
Репутация: 3
Статус: Offline
skype
vlad_snap

Добавлено (26.12.2010, 20:51)
---------------------------------------------
вот закончил вроде код для триггера

Code
on:trigger {
  local $playerposx, $playerposz, $zona;
  $playerposx=getx("unit",1);
  $playerposz=getz("unit",1);
  $zona=playerdistance(self);
  if ($zona>=512) {
  if (($playerposz<=0)&&($playerposx<=0)){
          dialogue "pNE","maps/testmap/transition.s2s","NE";}
  if (($playerposz<=0)&&($playerposx>=0)){
          dialogue "pNW","maps/testmap/transition.s2s","NW";}
  if (($playerposz>=0)&&($playerposx<=0)){
          dialogue "pSE","maps/testmap/transition.s2s","SE";}
  if (($playerposz>=0)&&($playerposx>=0)){
          dialogue "pSW","maps/testmap/transition.s2s","SW";}
   }
}

осталось доделать скрипт в текстовом документе
и решить вопрос с 4 респаутнами, для перехода из локации в локацию

 
PanikerДата: Воскресенье, 26.12.2010, 19:11 | Сообщение # 7
Лейтенант
Группа: Проверенные
Сообщений: 58
Репутация: 1
Статус: Offline
отлично.... надо попробовать....
 
WorthisДата: Вторник, 04.01.2011, 23:39 | Сообщение # 8
Генерал-майор
Группа: Проверенные
Сообщений: 387
Репутация: 12
Статус: Offline
вместо триггера можно использовать таймер, его код можно поместить в глобальный скрипт карты

Code


   on:start{ timer "self",25,0[, файл скрипта]; }

   on:timer{
     local $posX; local $posZ;
     $posX=getx("unit",1); $posZ=getz("unit",1);
     if ($posZ>512) { loadmap "maps\test\south.s2"; } // Переход на Юг
     if ($posX<-512) { if (decisionwin("Пройти на Восток?")==1) { loadmap "maps\test\east.s2"; }
       else { setpos "unit",1,0,100,0; } } // Переход на Восток, если отмена, то возврат игрока в центр карты
     if ($posX>512) { if (decisionwin("Пройти на Запад?")==1) { loadmap "maps\test\west.s2"; }  
       else { setpos "unit",1,0,100,0; } } // Переход на Запад, если отмена, то возврат игрока в центр карты
     if ($posZ<-512) { loadmap "maps\test\north.s2"; } // Переход на Север
   }

512 - карта 16х16 (1024 - 32х32, 2048 - 64х64 и т.д.).
таймер удобен тем, что можно задать периодичность срабатывания, мс (25).
код обработчика on:timer можно вынести во внешний файл, указав его в функции создания таймера.

 
SnapДата: Среда, 05.01.2011, 14:58 | Сообщение # 9
Подполковник
Группа: Проверенные
Сообщений: 114
Репутация: 3
Статус: Offline
Тригером удобнее, там обработка информации идет только на границе круга, я думаю так проще.
Осталось доделать:
1) при переходе на другой остров надо чтоб сохранялся плот или другое плавательное средство
2) когда обратно возвращаешся, хочется чтоб он был на той границе откуда уплыл, таких респов на карте к которой будут по краям другие 4 карты примыкать, надо 4 и чтоб при возвращении на этот остров с 4 респами, надо чтоб правильно респился чел
 
WorthisДата: Среда, 05.01.2011, 22:27 | Сообщение # 10
Генерал-майор
Группа: Проверенные
Сообщений: 387
Репутация: 12
Статус: Offline
Можно использовать глобальные переменные, в них хранить: тип плота, координаты и т.д., сохранять данные в них перед каждым переходом на другую карту (т.е. эти координаты будут использованы при возвращении игрока на эту карту), для каждой карты - свои переменные, объявлять в глобальном скрипте.
В обработчике on:load карты перемещать плот и игрока в необходимую точку.
 
SnapДата: Среда, 19.01.2011, 00:58 | Сообщение # 11
Подполковник
Группа: Проверенные
Сообщений: 114
Репутация: 3
Статус: Offline
да вот надо это осуществить только, попробуй напиши.

Добавлено (19.01.2011, 04:58)
---------------------------------------------
меня в страндеде поражает то что все координаты перевернуты, когда карту рисуешь то она слева на право отражена)

 
LLI@M@HДата: Среда, 19.01.2011, 18:06 | Сообщение # 12
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 1
Статус: Offline
Хм... Думаю неплохо было бы реализовать подобную идейку не только на множестве островов, но и на одном большом. Ибо я так понял игра загружает один остров целиком без всяких подгрузок и при его увеличении процессор просто не выдержит. Тем же самым можно будет решить проблемму массового истребления улиток. biggrin Вобщем, нужно сделать область загрузки.
P.S. Виноват если немножко не по теме. smile

Добавлено (19.01.2011, 22:06)
---------------------------------------------
Ой, только вник в суть темы, прошу прощения. Я так понял при переходе на другую границу карты жизнь идти не будет?

 
SnapДата: Четверг, 20.01.2011, 02:45 | Сообщение # 13
Подполковник
Группа: Проверенные
Сообщений: 114
Репутация: 3
Статус: Offline
Ну а зачем ей идти?) там ведь токо живность бегать будет, а не люди) можно при возвращении на остров с которого уплыл сделать + 4-7 дней, чтоб растения выросли.
 
WorthisДата: Воскресенье, 23.01.2011, 20:14 | Сообщение # 14
Генерал-майор
Группа: Проверенные
Сообщений: 387
Репутация: 12
Статус: Offline
довольно проблемно реализовать сохранение карт: так как игрок может в любое время сохранить игру через меню, и будет сохранена только текущая карта и соответственно через меню будет загружена тоже отдельная карта wacko может возникнуть путаница с сохранением остальных карт, если игрок на них побывал, но из меню загрузил сохранение, когда он не был на других картах wacko вот как-то так...

надо сделать, чтобы состояния отдельных карт сохранялись в специальную папку, и скорее всего придется отказаться от стандартного способа сохранения/загрузки игры через меню.
можно сделать некоторый предмет (идол) на основной карте, сделать не сложный квест, после которого можно будет сохранять/загружать игру в любое время, но только у этого идола (что несколько усложнит игру, лишив возможности сохраняться когда угодно biggrin )

создать некоторую буферную карту, на которую игрок будет попадать в начале приключения, где может выбрать: начать новую игру, либо продолжить начатую, для того, чтобы можно было играть нескольким игрокам - придумать чтото вроде профилей (по сути это будет подпапка в которую будут сохраняться карты)


Последняя версия моего патча для Stranded II здесь
 
SnapДата: Среда, 02.02.2011, 19:29 | Сообщение # 15
Подполковник
Группа: Проверенные
Сообщений: 114
Репутация: 3
Статус: Offline
вот и новые "подводные камни", да мудерно чето)
 
Форум » Создание модов Stranded II » О том как создавать моды » Скрипт, для перехода между картами. Или бесконечная карта (бесконечная карта)
  • Страница 1 из 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск:

Copyright MyCorp © 2024