ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Вопрос по скриптам. | страница 1 |
|
|
|
Космические Миры »
Канал Independence War: «Вопрос по скриптам.» |
|
|
himem
210 EGP
  Рейтинг канала: 1(5) Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
А ваще возможно наладить обмен данными с HDD в процессе ( ну там файл на диске организовать и считать потом), из pkg шки в смысле.
И еще: возможно ли добавление своих dll в bin папку( в смысле как вызвать из скрипта функцию во внешней dll ке)
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
Slant
285 EGP
   Репутация: 42 Сообщения: 1100 Откуда: Украина, г.Полтава Зарегистрирован: 01.09.2001
 |
|
Цитата: |
А ваще возможно наладить обмен данными с HDD в процессе ( ну там файл на диске организовать и считать потом), из pkg шки в смысле.
|
.pkg не имеет контакта с системой. Только с игрой. Как Java в броузере. Можно только читать из .ini и .cvs файлов. Еще можно выводить .html, и проигрывать wav и mp3. На диск писать НЕЛЬЗЯ. Но можно писать свою информацию в сейвы игры. Для этого служат глобальные переменные.
Цитата: |
И еще: возможно ли добавление своих dll в bin папку( в смысле как вызвать из скрипта функцию во внешней dll ке)
|
Насколько я знаю, .dll добавить нельзя. (без хака екзешника) Другой вопрос - зачем это нужно? Если просто, чтобы организовать библиотеку функций, то можно не заморачиваться. .pkg работает очень быстро, и даже очень тяжелый код заметно не влияет на скорость игры (я специально эксперементировал. Тормозов добился только с помощью цикла, в котором читал более сотни .ini с диска). Это не скрипты X2 - тут оно компилируется. А возможности POG и так очень велики...
|
|
|
himem
210 EGP
  Рейтинг канала: 1(5) Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
Ещё одна идея рухнула в небытие...
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
himem
210 EGP
  Рейтинг канала: 1(5) Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
2Slant
Возможен ли запуск внешнего процесса из .pkg не ломая?
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
Slant
285 EGP
   Репутация: 42 Сообщения: 1100 Откуда: Украина, г.Полтава Зарегистрирован: 01.09.2001
 |
|
Внешнего - то есть не .pkg кода? Тогда ответ - нет. (Для этого надо знать, как написаны системные dll игры - вот из них функции вызываются. Но это закрытая информация.)
Просто вызвать функцию из другой .pkg можно. Если она откомпилирована как подлежащяая экспорту.
|
|
|
himem
210 EGP
  Рейтинг канала: 1(5) Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
Как отследить расстояние до какого-нибудь объекта (в смысле глобального - типа звезды, астероида, etc.) в скрипте?
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
Slant
285 EGP
   Репутация: 42 Сообщения: 1100 Откуда: Украина, г.Полтава Зарегистрирован: 01.09.2001
 |
|
До астероида - вообще не проблема, это объект типа (h)sim со всеми вытекающими. А планеты и звезды и станции (которые есть на карте, а не добавлены скриптом) - это объекты типа hmapentity. соответственно для них существуют функции в классе iMapEntity. В частности:
prototype float iMapEntity.EntityToSimDistance( hmapentity entity, hsim sim );
Делает как раз то, что тебе надо. Кроме того, для более специфических манипуляций с этими объектами существуют еще три класса:
iBody - звезды и планеты
iHabitat - станции
iLagrangePoint - L-точки
|
|
|
himem
210 EGP
  Рейтинг канала: 1(5) Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
2Slant
Thanks
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
himem
210 EGP
  Рейтинг канала: 1(5) Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
2Slant
А что за формат шрифтов? Есть нормальный - соответствие буквам на клаве? Шрифт это .frf или .ftu/.ftc ?
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
Slant
285 EGP
   Репутация: 42 Сообщения: 1100 Откуда: Украина, г.Полтава Зарегистрирован: 01.09.2001
 |
|
Вот со шрифтами я сам до конца не разобрался. Но вот парочка фактов. Во первых - шрифт, это графический файл с нарисоваными буквами. Во вторых - знакомест там менее 128 - только на один алфавит - латинский. Отсюда все проблемы с переводом. То есть при переводе делают, например, заглавные русскими, а строчные оставляют латинскими... При этом, у разных русских переводов, разные раскладки.
По идее, шрифт можно как-то загружать из скрипта (именно загружать, а не только выбирать один из системных), но как это делается я разобраться не успел.
Расширение файла шрифта сейчас не скажу - игра не установлена.
|
|
|
himem
210 EGP
  Рейтинг канала: 1(5) Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
А формат заголовков есть? Ну типа там размер букв и др. данные они в файле должны быть прописаны? А системные любые (UNICODE& etc?)
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
himem
210 EGP
  Рейтинг канала: 1(5) Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
2Slant
Слуш! Нужна помоч! Или я уже совсем отупел - как отследить момент стыковки с чем нибудь - т.о. чёбы в момент стыковки (после него ) запускались различные скрипты в зав-ти от того к кому стыкуешься - task - не получается
Кста шрифты я всетаки расколол
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
MeLeK
1010 EGP
   Рейтинг канала: 1(8) Репутация: 289 Сообщения: 3168 Заблокирован Откуда: Хабаровск (GMT+10) Зарегистрирован: 08.05.2003
 |
|
Помогите пожалуйста разобраться.
За основу взят код из сценария challange_cource, и сделан маленький новый. Цель - построить в ряд кольца, при этом их названия должны отображаться в контакт-листе.
Код: |
package melek;
uses String, INIFile, iShip, Sim,
iFaction, iScriptedOrders, Task, Math, iFormation, iShipCreation, iComms,
Object, State, iInventory, iAI, iPilotSetup, iUtilities, iConversation, Text,
iLagrangePoint, Group, Object, iMissionTracker, iCutsceneUtilities,
iHUD, iGame, iRemotePilot, iDirector, iLoadout, iGUI, Config, iMultiplay, Input, iRegion;
provides Main, ScenarioMain;
prototype Main();
prototype ScenarioMain();
ScenarioMain()
{
iGame.SetGameType( IGT_Mod );
iGame.StartNewGame( "map:/geog/badlands/hoffers_wake", "melek" );
}
// Create waypoints for rings
hgroup setup_waypoints ( hsim location )
{
hgroup waypoints = Group.Create();
hsim temp;
temp = iUtilities.CreateWaypointRelativeTo ( location, 2000, 0, 0 );
iUtilities.RenameSim ( temp, "Waypoint 1" );
Group.AddSim ( waypoints, temp );
temp = iUtilities.CreateWaypointRelativeTo ( location, 4000, 0, 0 );
iUtilities.RenameSim ( temp, "Waypoint2" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 6000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint3" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 8000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint4" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 10000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint5" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 12000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint6" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 14000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint7" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 16000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint8" );
iUtilities.MakeWaypointVisible( temp, true, "Waypoint8" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 18000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint9" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 20000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint10" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 22000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint11" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 24000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint12" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 26000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint13" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 28000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint14" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 30000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint15" );
Group.AddSim ( waypoints, temp);
temp = iUtilities.CreateWaypointRelativeTo ( location, 32000, 0, 0);
iUtilities.RenameSim ( temp, "Waypoint16" );
Group.AddSim ( waypoints, temp);
return waypoints;
}
// create rings
hgroup create_rings ( hgroup waypoints )
{
hsim ring;
hsim last_ring;
hgroup rings = Group.Create();
int number_of_waypoints = Group.SimCount ( waypoints );
int l;
for ( l = number_of_waypoints-1; l >= 0; --l )
{
ring = Sim.Create ( "ini:/sims/ships/utility/training_ring", String.Join ( "Ring", String.FromInt ( l +1 ) ) );
Group.AddSim ( rings, ring);
Sim.PlaceAt ( ring, Group.NthSim ( waypoints, l ));
//Sim.AttachChild ( ring, Group.NthSim ( waypoints, l ) );
iSim.SetSensorVisibility ( iSim.Cast ( Group.NthSim (rings, l ) ),true );
if ( l != number_of_waypoints -1 ) Sim.PointAt (ring, last_ring );
last_ring = ring;
}
return rings;
}
// --------main--------
Main()
{
hship player_ship;
hsim grounds_waypoint;
hsim temp;
hgroup waypoints, rings;
int l;
int templ;
//-----------create player ship and ground_point----------------------------
player_ship = iShip.Create( "ini:/sims/ships/player/fast_attack_prefitted", "Advanced Patcom" );
grounds_waypoint = iUtilities.CreateWaypointRelativeTo ( iMapEntity.FindByName ( "Lucrecia's Base" ), 24 km, 0, 0 );
iUtilities.MakeWaypointVisible ( grounds_waypoint, true, "melek_test_point" );
Sim.PlaceRelativeTo ( player_ship, grounds_waypoint, 0, 0, -50 );
Sim.PointAt ( player_ship, grounds_waypoint );
iShip.InstallPlayerPilot(player_ship);
//----------- end ----------------------------
// Setup rings
waypoints = setup_waypoints ( grounds_waypoint );
create_rings ( waypoints);
}
/*
player_ship = iShip.Create( "ini:/sims/ships/corporate/maas_cutter", "Melek_clone" );
iPilotSetup.Marauder( player_ship);
Sim.PlaceNear(player_ship, grounds_waypoint,5000);
*/ |
1) В create_rings отчетливо устанавливаем, что каждое кольцо должно быть видным в контакт-листе
Код: |
iSim.SetSensorVisibility ( iSim.Cast ( Group.NthSim (rings, l ) ),true );
|
При этом ничего не отображается.
Как аналог:
Код: |
iSim.SetSensorVisibility ( iSim.Cast ( ring ),true );
|
Результат тот же.
2) В setup_waypoints устанавливаем точки, к которым потом будут привязаны кольца. Устанавливаем через равные отрезки, все по одной оси. Как мне казалось, кольца должны были выстроиться в линию, но вместо этого на экране они раскиданы с виду как попало.
|
|
|
himem
210 EGP
  Рейтинг канала: 1(5) Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
Не знаю... А зачем ваще с сенсорами связываться... У мя всё получается располагать и без этого... Или ты как сценарий делаешь? Если да - то ничем помочь не могу - со сценариями еще не сязывался.
ЗЫ Slant'а нашла? У него спроси - мне он здорово помог...
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
MeLeK
1010 EGP
   Рейтинг канала: 1(8) Репутация: 289 Сообщения: 3168 Заблокирован Откуда: Хабаровск (GMT+10) Зарегистрирован: 08.05.2003
 |
|
Да тут сценарии различаются гмм, одним небольшим куском кода:
Код: |
ScenarioMain()
{
iGame.SetGameType( IGT_Mod );
iGame.StartNewGame( "map:/geog/badlands/hoffers_wake", "melek" );
}
|
В сценарии есть обязательно функция ScenarioMain(), с помощью которой мы оказыаемся не сразу в космосе, а можем сделать нечто вроде менюшки, запуск в космос осуществляется этими строками:
Код: |
iGame.SetGameType( IGT_Mod );
iGame.StartNewGame( "map:/geog/badlands/hoffers_wake", "melek" );
|
Так что со сценариями даже легче эскперементировать...
himem
Я не знаю как там - сенсорами или не сенсорами, но факт в том, что кольца есть, а на радаре при этом пусто. Что делать - не знаю.
|
|
|
himem
210 EGP
  Рейтинг канала: 1(5) Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
Я делал iSim.Create - и все появлялось не тока на экране, но и в списке контактов...
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
MeLeK
1010 EGP
   Рейтинг канала: 1(8) Репутация: 289 Сообщения: 3168 Заблокирован Откуда: Хабаровск (GMT+10) Зарегистрирован: 08.05.2003
 |
|
Есть идея создания мода. Никто не хочет подключиться?
Мод-сценарий, в принципе. Можно сказать, что расширенная версия известного challange_courcа.
(Пока все без названий)
Итак, мы запускаем сценарий и оказываемся рядом с одной очень известной базой во всем Кластере Гагарина. Этот центр представляет собой крупнейший центр по тестированию бойцов. Ежедневно там тестируют свои способности сотни бойцов. Списки лучших давно висят на почетной доске.
В моде нужно будет создать нечто вроде площадки для тестирования. Там будут и кольца, которые надо пройти в определенном порядке, и очень уязвимые кольца, взрывающиеся при малом контакте с кораблем. Специальные полые астероиды, боевые боты, с которыми надо успеть расправиться, разрушенная станция, вход в которую граничит с размерами корабля и входить в станцию нужно очень осторожно, специальные платформы, к которым нужно побыстрее пристыковаться, траектория мертвой петли (вся траектория усыпана очень мелкими реагентами-сенсорами на окружающую среду, благодаря чему измеряется точность траектории корабля и умение вести и управлять им ровно по заданной траектории.
Так вот это огромную арену нужно пройти. За ваше прохождение даются очки. Чем больше очков, тем выше уровень мастерства. Как даются очки?
За успешно пройденную точку можно начислять по очку - за каждое соприкосновению с поверхностью вычитать по очку, за точность стрельбы добавлять, либо вычитать по очку, также и с прохождением траектории. Ну, плюс изначально можно задать начальные 240 очков, то есть ровно за четыре минуты нужно уложиться (ну или больше). Каждая секунда будет отнимать по очку.
Таким образом, можно создать целую систему тестирования способностей пилота, измеряющую меткость стрельбы, ловкость и др. навыки пилота.
Чем больше очков зарабатываешь - тем лучше твои навыки.
В онлайне играть проблематично и не посоревнуешься особо, зато такая оффлайновая система может реально дать возможность сравнить проф. способности игроков .
Лучшие результаты в будущем даже можно будет публиковать.
Не думаю, что это очень сложно будет сделать. SDK лежит тут: ссылка
Хоть он и на английском, но там особо не нужно знаний английского. На готовых примерах, того же challange_courcа, становится все довольно понятным. Может кто-нибудь присоединится? В игре заложены большие возможности для создания различных модов.
З.Ы. himem согласится, я знаю :P, но вдвоем мы не справимся. Присоединяйтесь кто-нибудь! В ПОГе нет ничего архисложного! .
|
|
|
himem
210 EGP
  Рейтинг канала: 1(5) Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
Канешно! Давненько руки чешутся....
(ЗЫ Готов присоедениться, но не координатором - времени крайне не хватает )
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
MeLeK
1010 EGP
   Рейтинг канала: 1(8) Репутация: 289 Сообщения: 3168 Заблокирован Откуда: Хабаровск (GMT+10) Зарегистрирован: 08.05.2003
 |
|
Ага, так как все-таки кольца в один ряд расположить яко туннель?
|
|
|
himem
210 EGP
  Рейтинг канала: 1(5) Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
Ну дык наерно кромя указания координат нады ыщо и направление указывать.... В lws точно есть - пробовал
Вижу у тя всё на етом буксуеть...
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
|
|
|
Космические Миры ->
Канал Independence War: «Вопрос по скриптам.» |
|
К списку каналов | Наверх страницы |
Цитата не в тему: Жена в малых дозах - лекарство. В больших - ЯД! (так думает Mercenary)
|
» Вопрос по скриптам. | страница 1 |
|