Союз | Union

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Союз | Union » Картостроение и скриптовка » Скрипты


Скрипты

Сообщений 1 страница 30 из 345

1

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

Код:
function LR(x) 
LandReinforcement(x) 
end 

function Rad(x) 
local z = RandomInt(x) 
return z 
end 

function Inital_Reinf() 
for i = 0, max_player do 
if IsPlayerPresent(i) == 1 then 
if Init_count < max_init then 
if (GetNUnitsInScriptGroup(i + 1) + GetNUnitsInScriptGroup((i + 1) * 10)) < min_init then 
pre_lr = (i + 1) * 10 
LR(pre_lr) 
Init_count = Init_count + 1 
end 
end 
end 
end 

end 

function Check_Player() 
local sas = 0 
local sae = sps - 1 
local sbs = sps 
local sbe = max_player 

-- Vorschleife 
seite_d = 0 
while sas <= sae do 
if IsPlayerPresent(sas) == 1 then 
seite_d = seite_d + 1 
end 
sas = sas + 1 
end 
seite_u = 0 
while sbs <= sbe do 
if IsPlayerPresent(sbs) == 1 then 
seite_u = seite_u + 1 
end 
sbs = sbs + 1 
end 
-- Vorschleife Ende 
sas = 0 
sae = sps - 1 
sbs = sps 
sbe = max_player 
tmpd = 1000 
tmpu = 1000 
for z = 0, max_player do 
if IsPlayerPresent(z) == 0 then 
if z < sps then 
if seite_d > 0 then 
while sas <= sae do 
if IsPlayerPresent(sas) == 1 then 
if GetNUnitsInPlayerUF(sas) < tmpd then 
tmpd = GetNUnitsInPlayerUF(sas) 
min_ply_d = sas 
end 
end 

sas = sas + 1 
end 
sp_min_d = min_ply_d + 1 
reinf_d = sp_min_d * 100 + std_reinf 
LR(reinf_d) 
end 
else 
if seite_u > 0 then 
while sbs <= sbe do 
if IsPlayerPresent(sbs) == 1 then 
if GetNUnitsInPlayerUF(sbs) < tmpu then 
tmpu = GetNUnitsInPlayerUF(sbs) 
min_ply_u = sbs 
end 
end 

sbs = sbs + 1 
end 
sp_min_u = min_ply_u + 1 
reinf_u = sp_min_u * 100 + std_reinf 
LR(reinf_u) 
end 
end 
end 
end 

std_reinf = std_reinf + 1 
if std_reinf > max_reinf then 
std_reinf = 0 
end 
end 

function factory() 
local sw = 0 
local spa = 120 
local spb = 130 
for n = 0, max_player do 
if sw == sps then 
sw = 0 
end 
if IsPlayerPresent(n) == 1 then 
if (GetNUnitsInArea(n, "office_1") > 0) and (GetObjectHPs(1000) > 100 ) and (GetObjectHPs(1100 + sw) > 100 ) then 
if Office1[n] == reinf_fac then 
LR(spa + Rad(rd)) 
Office1[n] = 0 
end 
Office1[n] = Office1[n] + 1 
end 
if (GetNUnitsInArea(n, "office_2") > 0) and (GetObjectHPs(2000) > 100 ) and (GetObjectHPs(2100 + sw) > 100 ) then 
if Office2[n] == reinf_fac then 
LR(spb + Rad(rd)) 
Office2[n] = 0 
end 
Office2[n] = Office2[n] + 1 
end 
end 
sw = sw + 1 
spa = spa + 100 
spb = spb + 100 
end 
end 

function factory_inf() 
local sw = 0 
local spa = 140 
local spb = 150 
for m = 0, max_player do 
if sw == sps then 
sw = 0 
end 
if IsPlayerPresent(m) == 1 then 
if (GetNUnitsInArea(m, "office_3") > 0) and (GetObjectHPs(3000) > 100 ) and (GetObjectHPs(3100 + sw) > 100 ) then 
if Office3[m] == reinf_fac then 
LR(spa) 
Office3[m] = 0 
end 
Office3[m] = Office3[m] + 1 
end 
if (GetNUnitsInArea(m, "office_4") > 0) and (GetObjectHPs(4000) > 100 ) and (GetObjectHPs(4100 + sw) > 100 ) then 
if Office4[m] == reinf_fac then 
LR(spb) 
Office4[m] = 0 
end 
Office4[m] = Office4[m] + 1 
end 
end 
sw = sw + 1 
spa = spa + 100 
spb = spb + 100 
end 
end 

function Reinf() 
local SC_ID = 100 
local num = {} 
for y = 0, max_player do 
if IsPlayerPresent(y) == 1 then 
num[y] = SC_ID + std_reinf 
LR(num[y]) 
end 
SC_ID = SC_ID + 100 
end 
RunScript("Check_Player",20000,1) 
end 

function Init() 

max_reinf = 5 -- Maximale Verstдrkungen 
max_player = 4 -- Maximale Spieler Zahl 
max_init = 4 -- Wieviel Initial Verstдrkung kommen soll 
min_init = 4 -- Ab wann Initial Verstдrkung kommt 
reinf_fac = 0 -- Bis wie weit gezдhlt wird 
rd = 3 -- Random for Factory 

------------------------------------------------------- 
-- Nicht diesen Block дndern -- Not change the block -- 
sps = max_player / 2 
std_reinf = 0 
max_player = max_player - 1 
Init_count = {} 
Office1 = {} 
Office2 = {} 
Office3 = {} 
Office4 = {} 
for e = 0, max_player do 
Init_count[e] = 0 
Office1[e] = 0 
Office2[e] = 0 
Office3[e] = 0 
Office4[e] = 0 
end 
------------------------------------------------------- 
RunScript("Info0", 10000) 
RunScript("Info1", 20000) 
RunScript("Info2", 30000) 
RunScript("Info3", 50000) 
RunScript("Info4", 60000) 
RunScript("Inital_Reinf",30000) 
RunScript("Reinf",600000) --600000-- 
-- RunScript("factory",12500) 
-- RunScript("factory_inf",10000) 

end

+1

2

это код целиком ?

-1

3

ну да,начало я убрал,там текстовые сообщения,не имеют некакова отношения к делу

0

4

в принципе начало понятно

seite_d - это получается объвили переменную чтоль
local sas = 0
local sae = sps - 1
local sbs = sps
local sbe = max_player
это тоже переменные ?

+1

5

наверно,паэтому я и спрашиваю :)

0

6

таварисчи,ну памагите хоть ченить разабрать,оч нужно :)

0

7

Вопрос знающим людям. проблема такая хочу добиться что бы нейтральный юнит стал моим
зделал зону на карте - а4 поставил в центр нейтральный юнит со скриптовым номером 240 и он должен стать моим при условии что в эту зону заедет мой юнит с номером 260
Не работает (
вот сам скрипт

function ChangePlayer()
if (GetNScriptUnitsInArea (260, "a4") > 0 ) then
ChangePlayer(240, 0);
Suicide();
end;
end;

причём если заменить строчку ChangePlayer(240, 0); на  например Win(0); - то скрипт срабатывает.

0

8

эмм... а имя функции не пробывал менять?)) тобишь с ChangePlayer() на xXxXx какой нибудь, может бага собственно только в этом?:D

0

9

ты точно задал юниту номер 240?

0

10

Zigfrid написал(а):

ты точно задал юниту номер 240?

ну да вроде сто раз всё перепроверил, ну да ладно, ещё помучаю :)

0

11

SturmgeschurtzIII написал(а):

а имя функции не пробывал менять?))

Вот после твоего поста, попробовал и всё заработало :)   спасиб.

0

12

Вопрос знающим людям? можно ли сделать так, что бы на карте, изначально были юниты с повреждёнными траками. ( вроде в какой то мисии такое было)
и пример скрипта в студию если возможно. :)

0

13

Вряд-ли. Можно просто пставить его на вражескую мину и он сразу подорвется - вот и повреженнная гусеница.

0

14

Zigfrid написал(а):

Вряд-ли. Можно просто пставить его на вражескую мину и он сразу подорвется - вот и повреженнная гусеница.

Попробовал так сделать, в итоге заметил такую странность - нейтральный юнит на вражеских минах не рвётся (хотя изездил всё минное поле) зато после таго как он стал моим(см.пост№7) -всё как положено, на первой же мине.

0

15

Ничего удивтельного. На своих минах тоже никто не взрывается. А уж тем более нейтральный юнит.

0

16

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

0

17

Команды юнитам
46 — сменить тип снарядов

Попробуй. Сам никогда не пробовал, но может что-то нащупаеш.

Отредактировано Zigfrid (2008-02-28 19:56:02)

0

18

Ок.Ща попробую.А откуда это взято?

0

19

Может пригодиться

Издательство “Запрещенная литература”
Неофициальный справочник по языку сценариев Lua, стартовым командам и редактору ресурсов для игры Блицкриг
(версия 1.6).
Автор: Константин Jukov (player@serov.info)
Если найдёте ошибки или что-нибудь, чего нет в справочнике, просьба сообщить мне на мыло.

Команды юнитам

0, № юнита, x, y — перемеситься на позицию
1, № атакующего, № атакуемого — атаковать юнита (только одного!)
3, № атакующего, x, y — следовать в боевой готовности к точке x, y
4, № взвода, № машины или танка — посадить взвод
5, № машины или танка, x, y — высадить взвод. Если к машине прицеплена пушка, то высаживаются артиллеристы. Пушка остается прицепленной
6, № взвода, № здания или окопа — войти в здание/окоп
7, № взвода, x, y — покинуть здание/окоп
8, № юнита, x, y — развернуться
9, № юнита — отставить все действия
10, № взвода – сменить боевой порядок пехоты на “действовать по ситуации”
11, № саперной машины, x, y – закладывать противопехотные мины
14, № юнита — устроить засаду
15, № орудия, x, y — пристреляться
16, № орудия, x, y — вести постоянный огонь
17, № орудия – подготовить орудие к бою
18, № юнита – подготовить орудие к транспортировке. Работает, даже если нет расчёта. Хорошая команда для катюши
19, № юнита, № стороны, x, y — вызвать бомбардировщики
20, № юнита, № стороны, x1, y1, x2, y2,…xn,yn — вызвать истребители
21, № юнита, № стороны, x1, y1, x2, y2,…xn,yn — вызвать самолет-разведчик
22, № юнита, № стороны, x, y — вызвать десантные самолеты; о том, как задать № юнита для парашютистов см. оператор SetIGlobalVar
29, № юнита, x, y — наблюдать в бинокль
31, № машины, № орудия — подцепить орудие
32, № машины, x, y — развернуть орудие на позиции
34, № взвода — расформировать взвод
35, № юнита — взвод выстраивается в соответствии с заранее заданной ему формой
36, № юнита, № стороны, x1, y1, x2, y2,…xn,yn — вызвать штурмовики
39, № ведомого, № ведущего — следовать
43 — пополнить личный состав
45 — окопаться
46 — сменить тип снарядов
50, № юнита — держать позицию

Некоторые команды могут вызвать зависание компьютера, если юниты расположены близко к краям карты. Управлять самолётом можно прямо во время полёта через команду №0.

Стартовые команды войскам

Ambush — затаиться (в окопе не работает)
Art_Bombard – обстрел позиции из пушки (САУ)
Clearmine — саперы разминируют минные поля
Deploy_Artillery — развертывание артиллерии прицепленной к машине.
Disband_Formation — группа пехоты распускается
Entrench_Self – окапаться
Guard – движение к точке и разворот на север
Heal_Infantry — санитарные войска лечат солдат
Move_to — движение/марш к позиции (X, Y)
Place_Antitank — инженерные войска строят противотанковые заграждения
Placemine — инженерные войска закладывают мины. Параметр=0 – противопехотные мины, =1 – противотанковые
Range_Area – обстрелять зону из гаубицы или миномёта
Repair — инженерные войска ремонтируют юниты
Resupply — на грузовиках к частям подвозятся боеприпасы
Resupply_Humans — на грузовиках к частям подвозится личный состав
Rotate_To — вращение в направлении (X,Y)
Stand_Ground — держать позицию
Stop — отмена всех приказов
Swarm_to — наступление в направлении (X,Y)
Use_spyglass — разведка с помощью бинокля

Содержание
Команды сценариев миссий    IsPlayerPresent(iPlayer)    11
AddIronMan(iScript)        4 IsStandGround(iScript)    11
AskClient("GetSelectedUnits()")    4 IsUnitUnderSupply(iScript)    11
AskClient(“HighlightControl(n)”)    4 IsWarehouseConnected(iScriptID)    11
AskClient(“HighlightIndicator(n)”)    4 KillScript(“Name”)        11
AskClient(“SetCamera(x,y)”)    5 LandReinforcement(iReinfID)    11
CallAssert        5 Loose()        11
ChangeSelection(iScript, bSelect)    5 ObjectiveChanged(iObjNum, iState) 11
ChangeFormation(iScript, iFormation) 5 Password(“Name”)        11
ChangePlayer(iScript, iParty)    5 RandomFloat()        11
ChangeWarFog(iParty)    5 RandomInt(n)        11
DamageObject(iScript, fDamage)    5 ReserveAviationForTimes(iParty,iTtime) 11
DeleteReinforcement(iScript)    5 ReturnScriptIDs        11
DiableAviation,        RunScript(Name,iPeriod[,iRepetitions]) 12
DisableAviation(iParty, iAviationType) 5 SetDifficultyLevel(iLevel),
DisplayTrace(“strText” [, params…])    6 SetCheatDifficultyLevel(iLevel)    12
Draw()            6 SetGameSpeed(iSpeed)    12
EnableAviation(iParty, iAviationType) 6 SetIGlobalVar, SetFGlobalVar,
GetActiveShellType(iScript)    6 SetSGlobalVar(“Name”,iVar)    12
GetAviationState(iPlayer)    6 ShowActiveScripts()        12
GetFrontDir(iScript)        6 Suicide()        12
GetIGlobalVar, GetFGlobalVar,    SwitchWeather(iState)    12
GetSGlobalVar(“Name”,0)    6 SwitchWeatherAutomatic(iState)    12
GetMapSize()        6 Trace(“Text” [,params…])    12
GetNAmmo(iScript)        7 ViewZone(“Name”, iParam)    12
GetNAntitankInScriptArea(“Name”) 7 Win(iParty)        12
GetNAPFences(“Name”)    7 Команды сценариев глав
GetNMinesInScriptArea(“Name”)    7 AddBaseUpgrade("юнит")    13
GetNScriptUnitsInArea(iScript,”Name”) 7 AddMedal("путь к медали", №слота) 13
GetNTrenchesInScriptArea(“Name”) 7 AddNewSlot("юнит")    13
GetNUnitsInArea(iPlayer, “Name”)    7 AddUpgrade        13
GetNUnitsInCircle(iPlayer, X, Y, Radius) 7 ChangeCurrent("old unit","new unit") 13
GetNUnitsInParty(iPlayer)    7 ChangeDefault("old unit","new unit") 13
GetNUnitsInPartyUF(iParty)    7 EnableChapter("путь к главе")    13
GetNUnitsInPlayerUF(iPlayer)    7 EnableMission("путь к миссии")    13
GetNUnitsInScriptGroup(iScript[,iPlayer]) 7 FinishCampaign()        13
GetNUnitsInSide(iParty)    8 GetNumMissions        13
GetNUnitsOfType(“iType”,iParty)    8 GetSGlobalVar, GetFGlobalVar,
GetObjCoord(iScript)        8 GetIGlobalVar("Имя", 0)    14
GetObjectHPs(iScript)    8 GetStatisticsValue        14
GetPartyOfUnits(iScript)    9 GetUserProfileVar        14
GetPlayersMask()        9 HasMedal("путь к медали")    14
GetScriptAreaParams(“Name”)    9 IsBitSet        14
GetSquadInfo(iScript)        9 OutputStringValue        14
GetUnitMorale(iScript)    9 RandomFloat        14
GetUnitState(iScript)        9 RemoveBaseUpgrade("юнит")    14
GiveCommand, Cmd        10 SetSGlobalVar, SetFGlobalVar,
GiveQCommand, QCmd    10 SetIGlobalVar("Имя",iVar)    14
God(iParty, iMode)        10 SetUserProfileVar, Sqrt(n)    14
IsEntrenched(iScript)        10 Краткое руководство по Lua    15
IsFollowing(iScript)        10 Редактор ресурсов        19
Команды сценариев миссий

AddIronMan (iScriptID)
Запрещает искусственному интеллекту снабжать юнит(ы) со сценарной группой iScriptID (подвозить боеприпасы, людей, ремонтировать технику).

AskClient("GetSelectedUnits()")
Отслеживает выделенные игроком юниты и передаёт их через функцию:
function GetSelectedUnitsFeedBack(n)
тело фунции (переменная n содержит № юнита);
end;
Если юнитов несколько, то фунция GetSelectedUnitsFeedBack автоматически вызывается несколько раз и передаёт номера всех выделенных игроком юнитов.

AskClient (“HighlightControl(n)”)
Кратковременно подсвечивает контрольную кнопку с номером n:
20001 – следовать;
20002 – атаковать;
20003 – следовать в боевой готовности;
20006 – развернуть;
20010 – затаиться;
20012 – пристреляться;
20013 – вести постоянный огонь;
20016 – окопаться;
20017 – держать позицию;
20022 – разминировать;
20026 – чинить;
20029 – ежи;
20030 – бомбардировщики;
20031 – истребители;
20032 – самолёт-разведчик;
20033 – десантный самолёт;
20034 – бинокль;
20035 – штурмовики;
20036 – пополнить людей;
20050 – действовать по ситуации;
20051 – на марше;
20052 – ползком;
20053 – бегом;
20054 – скрытно;
20055 – штатные снаряды;
20057 – дымовая завеса;
20070 – построить;
20071 – минировать;
20072 – сменить боевой порядок;
20073 – сменить снаряды;

AskClient (“HighlightIndicator(n)”)
Подсвечивает на время индикатор № n:
10 – живучесть;
11 – боезапас основного вооружения;
12 – боезапас дополнительного вооружения;
13 – боевой опыт.

AskClient (“SetCamera(x, y)”)
Установить точку обзора с координатами x,y

CallAssert
Неизвестная команда.

ChangeSelection (iScriptID, bSelect)
Выбор юнитов. Можно последовательно указать сразу несколько юнитов с разным iScriptID. bSelect=1 – выбрать; bSelect=0-снять выбор.

ChangeFormation (iScriptID, iFormation)
Переключает взвод со сценарной группой iScriptID в боевой порядок iFormation. Число и типы боевых порядков специфичны для каждого типа подразделения. Заставить снайпера перемещаться скрытно нельзя, только ползком. Но если снайперу, передвигающемуся ползком дать команду затаиться, он станет малозаметен для противника. Возможен еще один вариант: игрок даёт снайперу команду “перемещаться скрытно”, после чего скрипт отдаёт снайпера компьютеру.
0 – по ситуации (DEFAULT)
1 – на марше (MOVEMENT)
2 – ползком (DEFENSIVE)
3 – бегом (OFFENSIVE)

ChangePlayer (iScriptID, iParty)
Меняет владельца юнита(ов) со сценарной группой iScriptID на игрока iParty.
Пример: ChangePlayer (1000, 2); — дать юнит с iScriptID = 1000 игроку 2.

ChangeWarFog (iParty)
Дается туман игрока iParty. Отладочная функция. Требует ввода пароля перед использованием.

DamageObject (iScriptID, fDamage)
Наносит ущерб fDamage объекту или юниту со сценарной группой iScriptID. Если fDamage = 0, то объект (юнит) уничтожается. Если fDamage отрицательный, то объект (юнит) лечится.

DeleteReinforcement (iScriptID)
Удаляет с карты все юниты со сценарной группой iScriptID.

DiableAviation, DisableAviation (iParty, iAviationType)
Запрещает игроку iParty использование авиации типа iAviationType. iAviationType может быть:
0 — самолет-разведчик
1 — истребитель
2 — десантный самолет
3 — бомбардировщик
4 — штурмовик
-1 — все виды авиации, после этого разрешить можно лишь всю авиацию сразу.
Авиацию можно выключать только тогда, когда в небе нет ни одного самолета стороны iParty.

DisplayTrace (“strText” [, params…])
Отладочная функция. Выводит на экран форматированную строку strText. В качестве необязательных дополнительных параметров params могут быть переменные с плавающей запятой.
Пример: DisplayTrace ("У меня %g яблок из %g", 2, 3); Выведет “У меня 2 яблок из 3”.

Draw ()
Сетевая игра: ничья для всех игроков.

EnableAviation (iParty, iAviationType)
Разрешает игроку iParty использование авиации типа iAviationType. iAviationType может быть:
0 — самолет-разведчик
1 — истребитель
2 — десантный самолет
3 — бомбардировщик
4 — штурмовик
-1 — все виды авиации
Чтобы штурмовики вылетали автоматически необходимо задать на карте обороняемые области (зелёного цвета) в AI Setting редактора карт. Бомбардировщики вылетают на любую цель.

GetActiveShellType (iScriptID)
Возвращает текущий тип боеприпасов артиллерии iScriptID.
0 – обычные снаряды
2 – дымовые шашки

GetAviationState (iPlayer)
Возвращает тип последнего вызванного самолета игрока iPlayer:
0 — самолет-разведчик
1 — истребитель
2 — десантный самолет
3 — бомбардировщик
4 — штурмовик
-1 – никого ещё не вызывал

GetFrontDir (iScriptID)
Возвращает текущее направление юнита в диапазоне [0, 65535], что соответствует диапазону [0, 360] градусов. Если возвращает -1, то юнит не существует или это не юнит. 0 соответствует направлению на северо-восток. Значение возрастает против часовой стрелки.
Пример: angle = GetFrontDir (1100) / 65536 * 360;

GetIGlobalVar (“Name”, 0), GetFGlobalVar (“Name”, 0), GetSGlobalVar (“Name”, 0)
Возвращает значение глобальной переменной с именем Name. SetIGlobalVar использует целочисленный параметр. SetFGlobalVar использует параметр с плавающей запятой. SetSGlobalVar использует строковый параметр. Вместо нуля вторым параметром может быть любое число, которое будет возвращать функция, если данной переменной не присвоено какое-либо значение. Если глобальная переменная "Mission.Current.ObjectiveShown" равна нулю, то игрок ознакомился с заданием миссии и закрыл окно.

GetMapSize ()
Возвращает размер карты в сценарных (SCRIPT) точках.
Пример: sizex, sizey = GetMapSize();
GetNAmmo (iScriptID)
Возвращает количество боеприпасов юнита со сценарной группой iScriptID через список.
Пример: primary_ammo, secondary_ammo = GetNAmmo (1000);

GetNAntitankInScriptArea (“Name”)
Возвращает число ежей в сценарной области Name.

GetNAPFences (“Name”)
Возвращает колючую проволоку в сценарной области Name.

GetNMinesInScriptArea (“Name”)
Возвращает число мин в сценарной области Name.

GetNScriptUnitsInArea (iScriptID, ”Name”)
Возвращает количество юнитов с iScriptID сценарной группой в сценарной области Name, заданной в редакторе карт.

GetNTrenchesInScriptArea (“Name”)
Возвращает число окопов в сценарной области Name.

GetNUnitsInArea (iPlayer, “Name”)
Возвращает количество юнитов игрока iPlayer в сценарной области Name, заданной в редакторе карт. Если несколько зон с одним именем, то функция работает только с первой зоной.

GetNUnitsInCircle (iPlayer, X, Y, Radius)
Возвращает количество юнитов игрока iPlayer в круге с центром (X, Y) и радиусом Radius. Координаты и радиус задаются в сценарных точках (SCRIPT в редакторе).

GetNUnitsInParty (iPlayer)
Возвращает количество имеющихся у игрока iPlayer юнитов. Пехотинцы учитываются индивидуально (один взвод = количество пехотинцев во взводе).

GetNUnitsInPartyUF (iParty)
Сетевая игра: возвращает количество имеющихся юнитов у стороны iParty. Пехотинцы учитываются взводами (один взвод = один юнит).

GetNUnitsInPlayerUF (iPlayer)
Сетевая игра: возвращает количество имеющихся юнитов у игрока iPlayer. Пехотинцы учитываются взводами (один взвод = один юнит).

GetNUnitsInScriptGroup (iScriptID [, iPlayer])
Возвращает количество юнитов в сценарной группе iScriptID. Используя необязательный параметр iPlayer, можно получать количество юнитов в сценарной группе iScriptID игрока iPlayer. Второй параметр полезно использовать, когда в сценарную группу входят пушки (в случае отстрела всего расчета пушка становится нейтральной).
Пример: a = GetNUnitsInScriptGroup(102, 1); — получить кол-во юнитов игрока 1 в сценарной группе 102.

GetNUnitsInSide (iParty)
Возвращает количество имеющихся юнитов у стороны iParty. Пехотинцы учитываются индивидуально (один взвод = количество пехотинцев во взводе).

GetNUnitsOfType (“iType”, iParty)
Возвращает количество юнитов типа iType у стороны iParty. Выдает 0, если объекта нет на карте. Узнать тип техники можно из XML – файла в папке Blitzkrieg\data\units в ресурсах игры.
Типы юнитов:
arm_heavy – тяжелобронированная техника;
аrm_light – легкобронированная техника;
arm_medium – среднебронированная техника;
arm_super – сверхтяжелая техника;
art_aagun – зенитка или самоходная зенитка;
art_gun – противотанковое орудие;
art_heavy_mg – пулемёт;
art_howitzer – гаубица;
art_mortar – миномёт;
art_rocket – РСЗО;
art_super – супер артиллерия (мортира Карл)
avia_attack – штурмовики;
avia_bomber – бомбардировщики;
avia_fighter - истребители;
avia_lander – десантные;
avia_scout – разведчики;
avia_super – супер самолёт;
spg_antiair – противовоздушная САУ;
spg_antitank – противотанковая САУ;
spg_assault – самоходная гаубица;
spg_super – супер САУ;
train_armor – бронепоезд;
train_cargo – тендер с углём;
train_carrier – тележка;
train_locomotive – простой паровоз;
train_super – корабельное орудие на тележке;
trn_carrier – тягач;
trn_medicine – медпомощь;
trn_military_auto – легковой автомобиль;
trn_support – ремонтный автомобиль;
transport_tractor – тягач;

GetObjCoord (iScriptID)
Возвращает координаты объекта или юнита. Возвращает координаты (-1, -1) если объект не существует. Если солдаты сели в машину, то независимо от местонахождения машины будет выдавать координаты точки посадки солдат в машину. Если несколько юнитов с одним iScriptID, то после убийства одного, автоматически выдаёт координаты следующего.
Пример: x, y = GetObjCoord (2002);

GetObjectHPs (iScriptID)
Возвращает хит-пойнты объекта (для юнитов не работает!) со сценарной группой iScriptID.

GetPartyOfUnits (iScriptID)
Возвращает номер владельца юнита(ов) со сценарной группой iScriptID.

GetPlayersMask ()
Возвращает битовую маску игроков участвующих в игре. 0 бит соответствует 1 игроку, 1 бит – второму и т.д. Если бит равен 1, игрок присутствует в игре. Последний бит всегда принадлежит нейтральному игроку. Вместо этой команды проще использовать IsPlayerPresent().

GetScriptAreaParams (“Name”)
Возвращает параметры сценарной области (script area). Для прямоугольной области возвращает координаты центра (x, y) и половины размеров (halflength, halfwidth). Для круглой области возвращает координаты центра (x, y) и радиус (radius).
Пример: x, y, half-length, half-width = GetScriptAreaParams ("Zone1");
x, y, radius = GetScriptAreaParams ("Zone2");

GetSquadInfo (iScriptID)
Возвращает текущий боевой порядок взвода:
-3 - взвод не существует.
-2 - это не взвод.
-1 - взвод распущен на отдельных пехотинцев
0 - по обстоятельствам
1 - на марше
2 - ползком или скрытное перемещение для снайпера
3- бегом

GetUnitMorale (iScriptID)
Не реализована. Должна была возвращать моральный дух юнита. По мысли авторов, мораль должна была увеличиваться, если рядом с юнитом появлялась штабная машинка.

GetUnitState (iScriptID)
Возвращает текущее состояние (текущий приказ) юнита. Если возвращает -1, то юнит не существует или это не юнит. Если возвращает 0, то состояние неизвестно. Если отряд расформирован, возвращает 0.
Пехота:
1 – ничего;
3 – сидят на танке или в машине;
5 – бегут, чтобы сесть на танк или в машину;
6 – бегут в здание;
7 – бегут в окоп;
8 – сидят в здании;
9 – сидят в окопе;
11 – бегут с атакой;
13 – бегут атаковать цель;
15 – затаились (если затаились в окопе возвращает 9);
21 – стреляют по цели;
27 - летят с парашютом;
32 – идут;
33 – смотрят в бинокль;
45 – захватывают пушку;
Танк или машина:
0 – окапывается;
1 – ничего;
2 – если садится пехота;
4 – если высаживает пехоту;
11 – едет с атакой;
15 – затаился;
21 – атакует цель;
32 – едет;
43 – поворачивается;
Гаубица:
0 – окапывается/цепляется к пушке;
1 – просто стоит;
15 - затаилась;
16 – прицельный огонь;
21 – атакует юнита/подавляет вражескую артиллерию;
24 – прицеплена к машине;
34 – постоянный огонь;
43 – поворачивается.

GiveCommand (iAction, iScriptID [, params ...])
Дает команду iAction юниту со сценарной группой iScriptID. Необходимые параметры params должны быть перечислены через запятую. Cmd — синоним GiveCommand. Команда отдается юниту сразу же. См. значения команд в разделе «Команды юнитов». Все координаты выдаются в сценарных (SCRIPT) точках.
Пример: GiveCommand (9, 1002); Cmd (3, 1001, 2756, 9678);

GiveQCommand (iAction, iScriptID [, params ...])
Добавляет команду iAction в список команд юниту со сценарной группой iScriptID. Необходимые параметры params должны быть перечислены через запятую. QCmd — синоним GiveQCommand. Функция GiveQCommand может вызываться «пачкой», например, для составления промежуточных точек пути, по которому будет перемещаться юнит. В начале такой пачки должна быть функция GiveCommand, чтобы команда отдалась юниту сразу же. См. значения команд в разделе «Команды юнитов». Все координаты выдаются в сценарных (SCRIPT) точках. С помощью GiveQCommand (QCmd) можно добавлять команды в пул стартовых команд юнитов.
Пример: QCmd (3, 200, 1700, 2530); QCmd (3, 200, 1900, 2530);

God (iParty, iMode)
Отладочная функция. Требует предварительного ввода пароля. Устанавливает особый режим:
0 - снять режим бога полностью
1 - неуязвимость
2 - неуязвимость и поражение противника с первого раза
3 - поражение противника с первого раза
4 - снять только неуязвимость
5 - снять только поражение противника с первого раза

IsEntrenched (iScriptID)
Проверяется состояние юнита на окопанность. Возвращает 1, если юнит окопан и 0 в противном случае.

IsFollowing (iScriptID)
Если возвращает 1, то юнит следует за другим юнитом. Если возвращается 0, то юнит не следует ни за кем. Если возвращает -1, то юнит не существует или это не юнит.
IsPlayerPresent (iPlayer)
Сетевая игра: возвращает 1, если игрок iPlayer присутствует в игре, иначе 0.

IsStandGround (iScriptID)
Проверяется, держит ли юнит позицию. Возвращает 1, если юнит держит позицию и 0 в противном случае.

IsUnitUnderSupply (iScriptID)
Функция не реализована. Должна была определять: снабжается юнит, или нет. Если юнит убит, или это объект, то возвращает номер iScriptID. Если юнит жив, то возвращает 1.

IsWarehouseConnected (iScriptID)
Проверяет, кто владелец полевого склада:
0 – враг, 1 – игрок. Работает правильно, даже если склад разрушен.

KillScript (“Name”)
Убивает активный (хотя бы раз вызванный) сценарий с названием Name.

LandReinforcement (iReinfID)
Высаживает подкрепление с номером iReinfID созданное в редакторе карт (в разделе Groups). В качестве подкрепления может быть вызван даже неживой объект, но на миникарте он будет присутствовать постоянно. Если в качестве подкрепления использовать несгораемый склад, то автоматическое снабжение войска будет осуществляться только при появлении склада на карте.

Loose ();
Однопользовательская игра: поражение.

ObjectiveChanged (iObjNum, iState)
Изменяет состояние задачи с номером iObjNum в iState. iState может быть:
0 — задача выдана
1 — задача выполнена
2 — задача провалена

Password (“Panzerklein”)
Необходимо вводить этот пароль перед использованием отладочных функций God, ChangeWarFog.

RandomFloat ()
Возвращает случайное число с плавающей запятой в диапазоне [0, 1].

RandomInt (n)
Возвращает целое число в диапазоне [0, n - 1].

ReserveAviationForTimes (iParty, iTtime)
Команда не реализована. Должна была изменять время вылета авиации.

ReturnScriptIDs
Команда не реализована. Попытка её использования вызывает зависание компьютера.

RunScript (“Name”, iPeriodicity [, iNumberOfRepetitions])
Запускает сценарную функцию с именем Name каждые iPeriodicity миллисекунд. Необязательным параметром iNumberOfRepetitions можно указать число повторений вызовов.
Пример: RunScript ("Objective12", 3000, 3);

SetDifficultyLevel (iLevel), SetCheatDifficultyLevel (iLevel)
Устанавливает уровень сложности игры: 0-лёгкий, 1-норма, 2-сложный. Может быть изменен пользователем из меню настроек.
SetGameSpeed (iSpeed)
Скорость игры от -10 до 10.

SetIGlobalVar (“Name”, iVar), SetFGlobalVar (“Name”, fVar),
SetSGlobalVar (“Name”, strVar)
Устанавливает значения глобальной переменной с именем Name. SetIGlobalVar использует целочисленный параметр. SetFGlobalVar использует параметр с плавающей запятой. SetSGlobalVar использует строковый параметр. Глобальные переменные передаются от одной миссии к другой, сохраняются при перезагрузках и при переигрывании миссии. Чтобы гарантированно иметь чистую переменную в начале игры следует задавать её в виде “temp.имя_переменной”. Также используется для изменения внутренних переменных игры, имеющих фиксированные имена, например
SetIGlobalVar(“ParadropSquad.ScriptID”, iScriptID) присваивает парашютистам iScriptID.

ShowActiveScripts ()
Выдается список активных сценариев. Отладочная функция.

Suicide ()
Если Suicide вызывается в теле функции, вызванной через RunScript, то после её выполнения функция больше не вызовется.

SwitchWeather (iState)
Включает погоду при iState = 1. Выключает погоду при iState = 0.

SwitchWeatherAutomatic (iState)
Разрешает автоматическое случайное включение погоды при iState = 1. Запрещает при iState = 0.

Trace (“Text” [, params ...])
Отладочная функция. Выводит в консоль (клавиша ~) форматированную строку Text. В качестве необязательных дополнительных параметров params могут быть переменные с плавающей запятой.
Пример: Trace ("У меня %g яблок из %g", 2, 3);

ViewZone (“Name”, iParam)
При iParam = 1 открывает туман в области круглой[!] сценарной зоны Name. При iParam = 0 закрывает туман.

Win (iParty)
Однопользовательская игра: победа для игрока с номером iParty. Сетевая игра: победа для стороны iParty. Поражение автоматически выдается другой стороне.

Команды сценариев глав

AddBaseUpgrade("юнит")
Добавляет юнита в список апгрейда. Здесь и далее имя юнита берётся из файла Blitzkrieg/Data/object.xml, поле "name".
Пример:
AddBaseUpgrade("Pz_Kpfw_III_Ausf_E")

AddMedal("путь к медали", №слота)
Добавляет медаль в слот. Слоты нумеруются последовательно с нуля до пяти, сверху вниз, справа налево.
Пример:
AddMedal("Medals\\German\\ krest5\\1", 5)

AddNewSlot("юнит")
Добавляет один слот.
Пример:
AddNewSlot("10_5mmLeFh18")

AddUpgrade
Неизвестная команда.

ChangeCurrent("старый юнит","новый юнит")
Заменяет устаревшие юниты в слотах на новые.
Пример:
ChangeCurrent("Pz_38t_Ausf_A", "Pz_Kpfw_III_Ausf_E") - т.к. Pz38 в Африке не было, заменяем его на PzIII.

ChangeDefault("юнит","юнит")
Пример:
ChangeDefault("Pz_Kpfw_II_Ausf_F", "Pz_Kpfw_III_Ausf_E")

EnableChapter("путь к главе")
Включает главу.
Пример:
EnableChapter("scenarios\\chapters\\german\\barbarossa\\1")

EnableMission("путь к миссии");
Включает миссию.
Пример:
EnableMission("scenarios\\scenariomissions\\german\\africa\\1")

FinishCampaign();
Команда завершающая кампанию или главу.

GetNumMissions(0, 0)
Неизвестная команда.

GetSGlobalVar, GetFGlobalVar, GetIGlobalVar("Name", 0)
Возвращают значения глобальных переменных аналогично сценарию миссий.

GetStatisticsValue(1, 0)
Неизвестная команда.

GetUserProfileVar
Пример:
GetUserProfileVar( "ScenarioTutorial.Passed", 0 ) == 1 - включаем историческую миссию, иначе intro

HasMedal("путь к медали")
Возвращает 0, если данной медали игрок не получал.
Пример:
HasMedal("Medals\\German\\krest2\\1")

IsBitSet
Неизвестная команда.

OutputStringValue
Неизвестная команда.

RandomFloat
Не проверена.

RemoveBaseUpgrade("юнит")
Убрать юнит из списка апгрейда.
Пример:
RemoveBaseUpgrade("Pz_38t_Ausf_A")

SetSGlobalVar, SetFGlobalVar, SetIGlobalVar("Name", n)
Устанавливает значения глобальных переменных аналогично сценарию миссий. Можно получать значения глобальных переменных из сценария миссии, но при этом нельзя использовать переменные, начинающиеся с “temp.”
Системные переменные:
Chapter.IsFirst == 0 - игрок начал игру впервые и первой должна быть обучающая миссия (intro)
== 1 - уже играл
template.hunted.killed

SetUserProfileVar
Пример:
SetUserProfileVar( "ScenarioTutorial.Passed", 1 ); - после прохождения intro миссии

Sqrt(n)
Вычисляет квадратный корень числа n.
Пример:
local a=Sqrt(4) - в результате переменная "a" будет равна 2.

Краткое руководство по LUA

Оператор присвоения локальной переменной:
Обращение к локальной переменной по имени возможно только внутри функции, в которой она была объявлена.
local имя_переменной [= значение];
Переменная может равняться числу, массиву (перечислить данные через запятую и заключить в фигурные скобки) или стрингу (заключить в кавычки). Массивы могут быть глобальные и локальные, одномерные и многомерные. Перед использованием переменной её обязательно надо объявить.
Примеры:
local a=100;
local b={};
local b={0,1,2,3,4,5,6,7};
local c=”Ленинград”;
local a,b;
Отсчёт элементов массива начинается с 1. При обращении к какому-либо элементу массива его номер заключают в квадратные скобки.
Пример:
local b={6,8,4};
local a=b[2]; – в результате a=8.

Неправильно:
local a,b=10; или
local a=10,b=10;
Правильно:
local a=10;
local b=10; или
local a,b;
a=10; b=10;

Присвоение какого-либо значения глобальной переменной:
Нельзя называть одним и тем же именем локальную и глобальную переменную или массив. Объявление глобальной переменной аналогично локальной, но указывать ключевое слово local не нужно. Может присваиваться перед объявлением функций или внутри них. Переменная может быть числом, стрингом или массивом.
Внимание! При загрузке ранее сохраненной игры глобальные переменные (речь не идёт о глобальных переменных, устанавливаемых с помощью команды SetGlobalVar) обнуляются! Поэтому практически их можно использовать для установки факта перезагрузки игры или в сетевой игре.

Многомерные массивы
Имя_массива={{имя_1_ряда=значение, имя_2_ряда=значение},{имя_1_ряда=значение, имя_2_ряда=значение},…}
Обращение к n-ой ячейке массива m-го ряда: Имя_массива[n].m
Пример:
local coord={{x=2,y=3},{x=4,y=5},{x=6,y=7}};
a=coord[1].x;
В результате a=2
a=coord[3].y;
В результате a=7

Обычная функция:
function “имя_функции” ([параметры…])
тело функции;
end;
В качестве параметров могут быть переменные, разделенные запятыми, которые передаются в функцию. При вызове функции достаточно указать её имя и скобки, в которых могут быть передаваемые в функцию данные. Функция обязательно должна заканчиваться оператором end;.
Пример:
function “Script1”(a)
local b;
b=a;
end;

function Init()
Script1(10);
end;

В результате локальной переменной b будет присвоено значение 10.

Функция, возвращающая значение:
function “имя_функции” (…)
тело функции;
return возвращаемое_значение;
end;

В качестве возвращаемого значения может быть либо переменная, либо число. В саму функцию переменные передаются через массив arg[номер_аргумента].

Оператор цикла repeat until:
repeat
тело_цикла;
[break;]
until условие
end;
Тело цикла будет повторно выполнятся до тех пор, пока условие не будет выполнено. Команда break служит для немедленного выхода из цикла.

Примеры:
local i=2;
repeat
DisplayTrace("%g",i);
i=i+1;
until i>5
В результате увидим на экране числа 2,3,4,5.

local i=2;
repeat
DisplayTrace("%g",i);
i=i+1;
if i==4 then break; end;
until i>5
В результате увидим на экране числа 2 и 3.
Оператор цикла for:
for имя_переменной=начальное значение, конечное значение, приращение do
тело_цикла;
[break;]
end;

Тело цикла будет повторно выполнятся, пока переменная не достигнет своего максимального значения. По умолчанию приращение равно единице. Если конечное значение переменной меньше начального, то приращение должно быть отрицательным. Если начальное значение равно конечному, цикл выполнится один раз. Команда break служит для немедленного выхода из цикла.
Пример:
for a=0,-10,-2 do
DisplayTrace("%g",a);
end;
В результате увидим на экране числа 0,-2,-4,-6,-8,-10.

Оператор цикла while:
while условие do
тело_цикла;
[break;]
end;
Тело цикла будет повторно выполнятся пока условие истинно, если условие изначально ложно - не будет выполнено ни одного цикла. Условие может быть только одно. Команда break служит для немедленного выхода из цикла.

Пример:
local a=0;
while a<10 do
a=a+1;
end;
В результате a=9.

Комментарии:
Могут быть вначале или в конце строки. Маркер комментария два или более дефиса.
Пример:
-- Это ремарка

Логические функции:
== - равно
~= - не равно
> - больше
< - меньше
<= - меньше или равно
>= - больше или равно
and – логическое и
or – логическое или
not – логическое не
.. – сложить стринг со стрингом или с числом

Примеры:
a=”Блиц”..”криг”;
В результате a=”Блицкриг”
a=”Шёл ”..1942..” год”;
В результате a=”Шёл 1942 год”
Арифметические действия следует заключать в скобки:
a=”Мне ”..((10+2)*2)..” года”;
В результате a=”Мне 24 года”
Вместо числа может быть и переменная.

Оператор сравнения:
if условие then операторы_условие_выполняется; [else] операторы_условие_не_выполняется; end;
В качестве условия могут быть несколько логически связанных условий.
Пример:
if a>b then b=a; else a=b; end;
Если a>b, то b=a, иначе a=b.
if a==b then b=1; end;
Если a=b, то b=1.

Редактор ресурсов

Список ключевых переменных официального редактора ресурсов. В квадратных скобках имена переменных в скомпилированном xml-файле. Эти имена также отображаются в редакторе Bk-tools Unit Editor. Сокращения в скобках: $-форма представления в виде строки, 0.1 – десятичная дробь, 123 – ряд натуральных чисел, T/F – флажок (правда/ложь или 0/1), //-путь к файлу.

Basic info (базовая информация)
Name [KeyName] ($) – имя юнита (отображается в редакторе карт)
Type [-//-] ($) – тип юнита (см. оператор GetNUnitsOfType, с.8)
AI class [AIClass] ($) – класс AI (halftrack, human, track, wheel – полугусеничный, человек, гусеничный, колёсный)
Picture (//) – картинка с изображением юнита
Health [MaxHP] (0.1) - живучесть
Repair cost [RepairCost] (0.1) – стоимость ремонта
Camouflage [-//-] (0.1) - камуфляж
Speed [-//-] (0.1) - скорость
Passibility [-//-] (0.1) – способность проходить по грязи
Pulling power [TowingForce] (0.1) – тяговое усилие (для грузовиков)
Uninstall rotate time [UninstallRotate] (0.1) – время разворота для пушек
Uninstall transport time [UninstallTransport] (0.1) – время установки для пушек
Weight [-//-] (0.1) – вес в кг
Crew [-//-] (123) – численность экипажа
Passengers [-//-] (123) – количество пассажиров
Priority [-//-] (123) – приоритет движения (кто кому уступает дорогу)
Rotate Speed [-//-] (0.1) – скорость поворота башни
Bound tile radius [BoundTileRadius] (123) - радиус занимаемых боевой единицей тайлов
Turn radius [TurnRadius] (0.1) – радиус разворота
Silhouette [SmallAABBCoeff] (0.1) - коэффициент вероятности попадания в боевую единицу
AI price [Price] (0.1) – цена для AI, определяет порядок, в котором будут обстреливаться юниты
Sight [-//-] (0.1) - дальность
Sight power [SightPower] (0.1)– сила обзора

Aviation property (свойства авиации)
Maximal flight height [MaxHeight] (0.1) – максимальная высота полёта
Diving angle [DivingAngle] (0.1) – угол поворота самолёта (от 0 до 90). Чем больше угол, тем быстрее самолёт поворачивается
Climb angle [ClimbAngle] (0.1) - угол набора высоты (при выходе из пикирования)
Tilt angle [TiltAngle] (0.1) – угол с которым самолёт ложится на крыло
Tilt ratio [TiltRatio] (0.1) –

Tracks (следы)
Does leave tracks? [LeavesTracks] (T/F) – флаг, показывает, оставляет ли следы техника true/false [1/0]
Relative width [TrackWidth] (0.1) – относительная ширина
Relative offset [TrackOffset] (0.1) –
Relative start [TrackStart] (0.1) – относительное начало
Relative end [TrackEnd] (0.1) – относительный конец
Intensity [TrackIntensity] (0.1) – интенсивность
Life Time [TrackLifetime] (123) – время жизни следа

Acknowledgments (реплики) [AcksRefs]
Acks set (//)
Acks set 2 (//)

Effects (эффекты)
Effect diesel (//)
Effect smoke (//)
Effect wheel dust (//)
Effect shot dust (//)
Fatality effect (//)
Disappear effect (//)
Start move sound (//) – звук при начале движения
Cycle move sound (//) – зацикленный звук при движении
Stop move sound (//) – звук при окончании движения

Localization
Name (//) – имя юнита, которое будет выводится в игре
Description (//) – описание юнита
Statistics (//) – не используется

Action
Available action (123) – команды, которые могут быть выполнены игроком

Exposures
Available exposures (123) – команды, которые могут быть выполнены из скрипта или как стартовые команды войскам

Defenses (броня)
Front - спереди
Left - слева
Right - справа
Back - сзади
Top - сверху
Bottom – снизу
Для каждой стороны задаются два параметра:
Min armor – минимальная толщина брони
Max armor – максимальная толщина брони

Joggings (качание при выстреле)
X Jogging (0.1)
Y Jogging (0.1)
Z Jogging (0.1)
Period 1 (0.1)
Period 2 (0.1)
Amplitude 1 (0.1)
Amplitude 2 (0.1)
Phase 1 (0.1)
Phase 2 (0.1)

Platforms
Base
    Guns
Shoot point (123) – номер точки, откуда будет стрельба
Shoot part (123)
Weapon (//) – имя оружия
Gun priority (123) – приоритет оружия на другими орудиями, установленными на юниты. Чем меньше, тем приоритет выше.
Recoil flag (T/F)
Recoil time (123)
Recoil shake time (123)
Recoil shake angle (0.1)
Ammo count (123) – количество боеприпасов
Reload cost (0.1)

Turret

Guns

Graphics info (графическая информация)
3D model combat (//) – модель в походном положении
3D model install (//) – модель подготавливается к транспортировке (для пушек)
3D model transport (//) – модель в походном положении (для пушек)
Alive summer texture (//) – текстура живого юнита летом
Alive winter texture (//) – текстура живого юнита зимой
Alive afrika texture (//) – текстура живого юнита в Африке
Dead summer texture (//) – текстура уничтоженного юнита летом
Dead winter texture (//) - текстура уничтоженного юнита зимой
Dead afrika texture (//) - текстура уничтоженного юнита в Африке

Death craters/Craters directory – кратеры разрушенных юнитов

Locators (локаторы)
Танки и САУ.
a.Гусеницы. Анимированная текстура. Tracks.
b.Корпус. Basis.
c.Башня. Turret.
d.Ствол. MainBarrel.
e.Броневая маска. ArmouredMantlet.
f.BoundingBox. AABB. Центр совпадает с центром гусениц. Ориентирован по осям. Сверху прямоугольный.
g.Локаторы:
i.Точки выстрелов:
    1.Пушка. MainGun.
    2.Пулемет. MachineGun.
    a.MachineGun_Turret_Coax – спаренный с пушкой.
    b.MachineGun_Turret_Back – сзади на башне.
    c.MachineGun_Turret_Cupola – на командирской башенке.
    d.MachineGun_Basis – курсовой пулемет на корпусе.
ii.Точки попадания - взрыв. Explosion.
iii.Точки дымления. Smoke.
iv.Точки дымления fatality. Fatality_Smoke.
v.Точки выхлопа. Exhaust.
h.Constraints:
i.угол поворота башни горизонтальный от –360 до 360
ii.Угол вертикального позиционирования броневой маски.
iii.Длина отката ствола от 0 до –n
iv.Просаживание корпуса в виде поворота от –n до +n
02.Автомобили.
a.Корпус. Basis.
b.Рама. Chasis.
c.Колеса задние. Колеса вращаются.  RearWheels.
d.Колеса передние. Колеса вращаются. FrontWheels.
e.BoundingBox. AABB. Центр совпадает с центром гусениц. Ориентирован по осям. Сверху прямоугольный.
f.Локаторы:
    i.Точки попадания - взрыв. Explosion.
    ii.Точки дымления. Smoke.
    iii.Точки выхлопа. Exhaust.
    iv.Точки буксировки. TowingPoint.
    v.Точки захода людей. People.
g.Constraints:
    i.Передние колеса от –n до +n
    ii.Просаживание корпуса в виде поворота от –n до +n
03.Самолеты.
a.Корпус. Basis.
b.Стрелковая башня. Turret.
c.BoundingBox. AABB. Ориентирован по осям. Сверху прямоугольный.
d.Бомбы. Bomb.
e.Локаторы:
    i.Точки выстрелов:
    1.Бомболюк. MainGun.
    2.Пулемет. MachineGun.
    3.Пушка. Cannon.
    ii.Точки дымления. Smoke.
    iii.Точки выхода людей. People.
04.Пушки.
a.Станина. Basis.
b.Колеса. Колеса вращаются. RearWheels.
c.Сошники. Trail.
d.Платформа. Turret.
e.Лафет. GunCarriage.
f.Ствол. MainBarrel.
g.BoundingBox. AABB. Ориентирован по осям. Сверху прямоугольный.
h.Локаторы:
    i.Точки выстрелов:
    1.Пушка. MainGun.
    ii.Точки попадания - взрыв. Explosion.
    iii.Точки дымления. Smoke.
    iv.Точки буксировки. TowingPoint.
    v.Точки расположения людей. Gunner.
    vi.Точки расположения ящиков со снарядами. Ammo.
i.Constraints:
    i.угол поворота башни горизонтальный от –360 до 360
    ii.Угол вертикального позиционирования броневой маски.
    iii.Длина отката ствола от 0 до –n
05.Поезда.
a.Корпус. Basis.
b.Башня. Turret. (у бронепоезда)
c.Ствол. MainBarrel. (у бронепоезда)
d.BoundingBox. AABB. Центр совпадает с центром гусениц. Ориентирован по осям. Сверху прямоугольный.
e.Локаторы:
    i.Точки выстрелов:
    1.Пушка. MainGun.  (у бронепоезда)
    2.Пулемет. MachineGun. (у бронепоезда)
        a.MachineGun_Turret_Coax – спаренный с пушкой.
        b.MachineGun_Turret_Back – сзади на башне.
        c.MachineGun_Turret_Cupola – на командирской башенке.
        d.MachineGun_Basis – курсовой пулемет на корпусе.
    ii.Точки дымления. Smoke.
    iii.Точки дымления fatality. Fatality_Smoke.
    iv.Точки выхлопа. Exhaust. (у паровозов пар по бокам)
    v.Точки сцепки впереди TowingPoint.
    vi.Точки сцепки сзади HookPoint.
    vii.Центры осей передних колес FrontWheel.
    viii.Центры осей задних колес BackWheel.
    ix.Точки захода людей. People.
    x.Дым из трубы паровоза Steam.
f.Constraints (у бронепоезда):
    i.угол поворота башни горизонтальный от –360 до 360
    ii.Угол вертикального позиционирования броневой маски.
    iii.Длина отката ствола от 0 до –n
    iv.Просаживание корпуса в виде поворота от –n до +n

Редактор оружия Weapon

Dispersion – распределение
Aiming Time – время прицеливания
AmmoPerBurst – длина очереди
RangeMin, RangeMax - минимальное и максимальное расстояния стрельбы;
Ceiling - максимальная высота, актуальна для зенитных орудий;
DeltaAngle – угол обстрела

То, к какой скриптовой пушке цепляется какая машинка определяется в файле context

Отредактировано panzer1941 (2008-02-29 19:45:46)

+1

20

43 — пополнить личный состав
45 — окопаться
46 — сменить тип снарядов

Хех у меня такойже фак но этого там нед))Я его еще на портал залил сразу)

0

21

Аналагично, кстати 45-окопаться у меня не срабатывает.

0

22

Annnton75 написал(а):

Аналагично, кстати 45-окопаться у меня не срабатывает.

Такие-то простые команды можно и редакторе карт указать - ENTRENCH_SELF, необязательно все скриптовать  :glasses:

Отредактировано panzer1941 (2008-03-01 01:49:13)

0

23

Не неработают эти каманды 46 45 43.Придется обламываться.

0

24

panzer1941 написал(а):

Такие-то простые команды можно и редакторе карт указать - ENTRENCH_SELF, необязательно все скриптовать

Согласен, огород городить конечно не зачем.  но есть один маленкий нюанс, тогда они запустятся сразу с начала миссии.
А так к примеру можно было попытаться сделать чтобы враг начал окапываться когда у него останется мало юнитов.

по ходу дела вопрос, сколько команд можно надавать юниту в редакторе и чем это всё грозит?

0

25

Смотря какие команды давть, вообще юнит их выполняет по порядку, т.е. например даешь команду DEPLOY_ARTILLERY и указываешь тягачу место где он должен отцепить орудие, затем даешь команду RESUPPLY этому же грузовику, и он начинает снабжение этой пушки.
Если сделать наоборот, то орудие он не отцепит
Для танков есть команда SWARM_TO, т.е юниты атакуют едут в боевой готовности в эту точку - это удобно применять когда юниты появляются вместе с подкрепами, и сразу идут в атаку (это разумеется для AI своими то юитами ты сам командуешь)
Вообще после некоторых команд юниты перестают дальше выполнять команды, например той же ENTRENCH_SELF

А вообще пробуй, я то в основном пользовался указанными выше командами, чисто для себя :rolleyes:

+1

26

Чего то, не могу понять - выставляю время задержки - 20000 милесекунд (20 сек), а подкрепления поевляется или сразу после срабатывания скрипта же или секунд через 40, короче каждый раз по разному, но только не через 20. Ни кто с подобным не встречался? или это нормально?

0

27

Annnton75 написал(а):

Чего то, не могу понять - выставляю время задержки - 20000 милесекунд (20 сек), а подкрепления поевляется или сразу после срабатывания скрипта же или секунд через 40, короче каждый раз по разному, но только не через 20. Ни кто с подобным не встречался? или это нормально?

На карте про котрую выше писали или вообще свое чего -то?

0

28

Ruslan32 написал(а):

На карте про котрую выше писали или вообще свое чего -то?

своя карта, под чистый блиц.

0

29

без кода гадать можно сколько угодно ))), может "где-то чего не дожал"? как говорил мой бывший шеф.

0

30

вот скрипт

function Reinf3()
if (GetNScriptUnitsInArea (120, "a1") > 0 ) then
LandReinforcement(3);
Suicide();
end;
end;

function Init()
RunScript( "Reinf3",20000);
end;

0


Вы здесь » Союз | Union » Картостроение и скриптовка » Скрипты