Кое-что хотел подправить и добавить, а лимит времени на правку поста истёк"Хель" писал(а):
Вопрос, а как сделать переход между локациями?
Пример переезда между локациями r5m1 и sin (Земли Сэма и Свободная земля)
Он подходит как для Меридиана, так и для Махины
Ниже показано, что в какой хемуль требуется дописать.
Можно брать "блоки" прямо отсюда и вставлять в свои файлы.
Естественно, имена меняете на свои, соблюдая регистр (большие имена на большие, малые на малые).
Например у вас две карты: map1 и map2
В таком случае ниже меняете:
ToSIN на ToMAP1
FromSIN на FromMAP1
sin на map1
FromR5M1 на FromMAP2
triggerExitToMapSIN на triggerExitToMapMAP1
RolikExitToMapSIN на RolikExitToMapMAP1
и т.д. и т.п.
Бдоки для локаций (в dynamicscene.xml) вставляем с любыми координатами.
По окончании заходим в редактор, находим их и перемещаем их на нужные места.
Либо можно сначала создать локации в редакторе, а уже потом подправить в хемуле имена.
########################################################################
########################## Папка data\maps\r5m1 #################################
########################################################################
========================
====== файл dynamicscene.xml
========================
<Object
Name="ToSIN"
Belong="1100"
Prototype="genericLocation"
Pos="3514.534 446.024 1821.404"
Radius="50.000"
PassageAddress="sin FromR5M1"
PassageActive="0" />
<Object
Name="FromSIN"
Belong="1100"
Prototype="genericLocation"
Pos="3436.814 450.908 1813.775"
Radius="10.000"
ExitLocation="ToSIN" />
-----------------------------------------------------------------------------------------
Name="ToSIN" ----- ToSIN добавить в object_names.xml для названия переезда на миникарте
Pos= ----------------- Координаты локаций (выставляются позже в редакторе)
========================
====== файл triggers.xml
========================
<trigger Name="triggerExitToMapSIN" active="1">
<event eventid="GE_OBJECT_ENTERS_LOCATION" ObjName="ToSIN" />
<script>
local Plf = GetPlayerVehicle()
Plf:SetThrottle( 0 )
Plf:SetCustomLinearVelocity( 0 )
local PlfID = GetPlayerVehicleId()
local PlfCoor = Plf:GetPosition()
PlfCoor.y = PlfCoor.y + 25*0.74
PlfCoor.z = PlfCoor.z + 25*0.74
if IsQuestTaken("r5m1_FindRemontnik") then
local b = SpawnMessageBox(8801)
if b == 1 then
PassToMap("sin", "FromR5M1", -1 )
GetPlayerVehicle():AddModifier( "fuel", "- "..random(0.5*GetPlayerFuel()) )
else
SaveAllToleranceStatus(RS_NEUTRAL)
FlyAround(1, 0, 25, 2, PlfCoor, PlfID, 1, 1 )
StartCinematic()
TActivate ("RolikExitToMapSIN")
TActivate ("RolikENDExitToMapSIN")
end
else
SaveAllToleranceStatus(RS_NEUTRAL)
FlyAround(1, 0, 25, 6, PlfCoor, PlfID, 1, 1 )
StartCinematic()
AddCinematicMessage( 8802, 0.25 )
TActivate ("RolikExitToMapSIN")
TActivate ("RolikENDExitToMapSIN")
end
</script>
</trigger>
<trigger Name="RolikExitToMapSIN" active="0">
<event eventid="GE_CINEMATIC_ENTER_FADE_IN" ObjName="Player1" />
<script>
trigger:Deactivate()
RuleConsole("g_postEffect NoiseOn")
RotationPlayerByPoints(CVector(getPos("ToSIN")), CVector(getPos("FromSIN")))
GetPlayerVehicle():SetGamePositionOnGround(CVector(getPos("FromSIN")))
</script>
</trigger>
<trigger Name="RolikENDExitToMapSIN" active="0">
<event eventid="GE_END_CINEMATIC" ObjName="Player1" />
<event eventid="GE_SKIP_CINEMATIC" ObjName="Player1" />
<script>
trigger:Deactivate()
RuleConsole("g_postEffect NoiseOff")
RestoreAllToleranceStatus()
SetCameraBehindPlayerVehicle()
</script>
</trigger>
-----------------------------------------------------------------------------------------
if IsQuestTaken("r5m1_FindRemontnik") then ----- r5m1_FindRemontnik - имя квеста (в data\if\diz\dialogsglobal.xml) после выполнения которого откроется переезд
local b = SpawnMessageBox(8801) ---------------- 8801 - текст (в strings.xml) выводимый при запросе согласия на переезд
AddCinematicMessage( 8802, 0.25 ) --------------- 8802 - субтитры (в strings.xml) выводимые при проигрывания ролика при закрытом переезде
==================================================
======== файл strings.xml
==================================================
<string
id="8801"
value="Вы желаете покинуть эту область?"
numButtons="2" />
<string
id="8802"
modelName="NewHero_mask"
value="БРОДЯГА|Я не знаю, куда ведет эта дорога, поэтому останусь здесь."
sound="data\sounds\Speech\r5m1\r5m1_8802_nomad.ogg"
time="5" />
-----------------------------------------------------------------------------------------
sound="data\sounds\Speech\r5m1\r5m1_8802_nomad.ogg" ----- путь к звуковому файлу (для Меридиана)
для Махины меняем на sound="data\sounds\Speech\r3m1\r3m1_8802_hero.ogg"
==================================================
========= файл object_names.xml
==================================================
<Object Name = "ToSIN" FullName = "Дорога в Свободную землю" />
########################################################################
########################## Папка data\maps\r5m1 #################################
########################################################################
========================
======= файл dynamicscene.xml
========================
<Object
Name="ToR5M1"
Belong="1100"
Prototype="genericLocation"
Pos="1110.631 325.434 1865.254"
Radius="50.000"
PassageAddress="R5M1 Fromsin"
PassageActive="0" />
<Object
Name="FromR5M1"
Belong="1100"
Prototype="genericLocation"
Pos="1159.014 322.615 1796.352"
Radius="10.000"
ExitLocation="ToR5M1" />
-----------------------------------------------------------------------------------------
Name="ToR5M1" ----- ToR5M1 - (в object_names.xml) для названия переезда на миникарте
Pos= ----------------- Координаты локаций (выставляются позже в редакторе)
========================
====== файл triggers.xml
========================
<trigger Name="triggerExitToMap51" active="1">
<event eventid="GE_OBJECT_ENTERS_LOCATION" ObjName="ToR5M1" />
<script>
local Plf = GetPlayerVehicle()
Plf:SetThrottle( 0 )
Plf:SetCustomLinearVelocity( 0 )
local PlfID = GetPlayerVehicleId()
local PlfCoor = Plf:GetPosition()
PlfCoor.y = PlfCoor.y + 25*0.74
PlfCoor.z = PlfCoor.z + 25*0.74
if IsQuestTaken("r5m1_FindRemontnik") then
local b = SpawnMessageBox(8801)
if b == 1 then
PassToMap("r5m1", "FromSIN", -1 )
GetPlayerVehicle():AddModifier( "fuel", "- "..random(0.5*GetPlayerFuel()) )
else
SaveAllToleranceStatus(RS_NEUTRAL)
FlyAround(1, 0, 25, 2, PlfCoor, PlfID, 1, 1 )
StartCinematic()
TActivate ("RolikExitToMap51")
TActivate ("RolikENDExitToMap51")
end
else
SaveAllToleranceStatus(RS_NEUTRAL)
FlyAround(1, 0, 25, 6, PlfCoor, PlfID, 1, 1 )
StartCinematic()
AddCinematicMessage( 8802, 0.25 )
TActivate ("RolikExitToMap51")
TActivate ("RolikENDExitToMap51")
end
</script>
</trigger>
<trigger Name="RolikExitToMap51" active="0">
<event eventid="GE_CINEMATIC_ENTER_FADE_IN" ObjName="Player1" />
<script>
trigger:Deactivate()
RuleConsole("g_postEffect NoiseOn")
RotationPlayerByPoints(CVector(getPos("ToR5M1")), CVector(getPos("FromR5M1")))
GetPlayerVehicle():SetGamePositionOnGround(CVector(getPos("FromR5M1")))
</script>
</trigger>
<trigger Name="RolikENDExitToMap51" active="0">
<event eventid="GE_END_CINEMATIC" ObjName="Player1" />
<event eventid="GE_SKIP_CINEMATIC" ObjName="Player1" />
<script>
trigger:Deactivate()
RuleConsole("g_postEffect NoiseOff")
RestoreAllToleranceStatus()
SetCameraBehindPlayerVehicle()
</script>
</trigger>
-----------------------------------------------------------------------------------------
if IsQuestTaken("r5m1_FindRemontnik") then ----- r5m1_FindRemontnik - имя квеста (в data\if\diz\dialogsglobal.xml) после выполнения которого откроется переезд
local b = SpawnMessageBox(8801) ---------------- 8801 - текст (в strings.xml) выводимый при запросе согласия на переезд
AddCinematicMessage( 8802, 0.25 ) --------------- 8802 - субтитры (в strings.xml) выводимые при проигрывания ролика при закрытом переезде
==================================================
======== файл strings.xml
==================================================
<string
id="8801"
value="Вы желаете покинуть эту область?"
numButtons="2" />
<string
id="8802"
modelName="NewHero_mask"
value="БРОДЯГА|Я не знаю, куда ведет эта дорога, поэтому останусь здесь."
sound="data\sounds\Speech\r5m1\r5m1_8802_nomad.ogg"
time="5" />
-----------------------------------------------------------------------------------------
sound="data\sounds\Speech\r5m1\r5m1_8802_nomad.ogg" ----- путь к звуковому файлу (для Меридиана)
для Махины меняем на sound="data\sounds\Speech\r3m1\r3m1_8802_hero.ogg"
==================================================
========= файл object_names.xml
==================================================
<Object Name = "ToR5M1" FullName = "Дорога в Земли Сэма" />
########################################################################
########################## Папка data\if\strings #################################
########################################################################
==================================================
========= файл objectdiz.xml
==================================================
<string
id="r5m1_ToSIN_diz"
value="Дорога в Свободную землю." />
<string
id="sin_ToR5M1_diz"
value="Дорога в Земли Сэма." />
########################################################################
Если всё сделано правильно, переезд будет закрыт и сработает видео ("Я не знаю, куда ведет эта дорога, поэтому останусь здесь.")
И только после того, как возьмёте на выполнение указанный квест, переезд откроется и будет выведено меню ("Вы желаете покинуть эту область?")
Квест берёте любой (из data\if\diz\dialogsglobal.xml), после взятия которого вы хотите, чтбы переезд открылся.
Если же вам нужно, чтобы переезд был открыт всегда, со старта игры,
тогда в настройке локации (в dynamicscene.xml) измените PassageActive="0" на PassageActive="1"
"kto" писал(а):
Apocalypse007, а что не вышло?
Вылетает или что?
"kto" писал(а):
Напиши что делал.
"kto" писал(а):
Напиши что делал.
"Хель" писал(а):
Town.xml трогал или нет?
"kto" писал(а):
"Хель" писал(а):
Town.xml трогал или нет?
Проверь лог на предмет ошибок + попробуй просто подменить другую тачку меридиановскими моделями.
Если не проканает - значил модели не подходят.
E PrototypeManager.cpp[0113]13/09 16:13:28 Error: No prototype 'truckWheel01r' registered
E PrototypeManager.cpp[0113]13/09 16:13:28 Error: No prototype 'truckWheel01l' registered
E PrototypeManager.cpp[0113]13/09 16:13:28 Error: No prototype 'truckWheel02r' registered
E PrototypeManager.cpp[0113]13/09 16:13:28 Error: No prototype 'truckWheel02l' registered
E PrototypeManager.cpp[0113]13/09 16:13:28 Error: No prototype 'truckWheel02r' registered
E PrototypeManager.cpp[0113]13/09 16:13:28 Error: No prototype 'truckWheel02l' registered
E DynamicScene.cpp[1605]13/09 16:13:59 Error: unknown prototype in DynamicScene.xml: 'TruckForSale'
E GeomRepositoryItem.cpp[0147]13/09 16:13:59 Error: invalid repository item in save file, prototype = 'TruckForSale'
<model
id="truckChassis"
file="data\models\vehicles\truck\shassis.sam"
shadow="1"
shadowVolume="1"
windwavy="0"
trans="0">
<action
name="DEATH1"
skin="8">
<lp
id="w"
effect_id="ET_PS_VEH_EXP_SHASSIS_BIG"
restartOnAnimationChange="0"
ImmediateRemove="0" />
</action>
<action
name="DEATH2"
skin="8">
<lp
id="w"
effect_id="ET_PS_VEH_EXP_SHASSIS1_BIG"
restartOnAnimationChange="0"
ImmediateRemove="0" />
</action>
</model>
<model
id="truckCab"
file="data\models\vehicles\truck\сab_01.sam"
shadow="1"
shadowVolume="1"
windwavy="0"
trans="0">
<action
name="DEATH1"
skin="8" />
<action
name="DEATH2"
skin="8" />
<action
name="STAND1">
</action>
<action
name="MOVE1">
<lp
id="LP_EXH01"
effect_id="ET_PS_EXHAUST_POW_SMOKE1_SMALL"
restartOnAnimationChange="0"
ImmediateRemove="0" />
<lp
id="LP_EXH02"
effect_id="ET_PS_EXHAUST_POW_SMOKE1_SMALL"
restartOnAnimationChange="0"
ImmediateRemove="0" />
</action>
<action
name="MOVE2">
<lp
id="LP_EXH01"
effect_id="ET_PS_EXHAUST_POW_SMOKE1_SMALL"
restartOnAnimationChange="0"
ImmediateRemove="0" />
<lp
id="LP_EXH02"
effect_id="ET_PS_EXHAUST_POW_SMOKE1_SMALL"
restartOnAnimationChange="0"
ImmediateRemove="0" />
<lp
id="LP_GLOW01"
effect_id="ET_PS_GLOW"
restartOnAnimationChange="0" />
<lp
id="LP_GLOW02"
effect_id="ET_PS_GLOW"
restartOnAnimationChange="0" />
</action>
<action
name="RESERVED2">
<lp
id="LP_LIGHT01"
effect_id="ET_PS_HLIGHT"
restartOnAnimationChange="0" />
<lp
id="LP_LIGHT02"
effect_id="ET_PS_HLIGHT"
restartOnAnimationChange="0" />
<lp
id="LP_GLOW03"
effect_id="ET_PS_HLIGHT"
restartOnAnimationChange="0" />
<lp
id="LP_GLOW04"
effect_id="ET_PS_HLIGHT"
restartOnAnimationChange="0" />
<lp
id="LP_PROJECTOR"
effect_id="ET_PS_PROJECTOR_SCOUT_CAB01"
restartOnAnimationChange="0" />
</action>
</model>
<model
id="truckWheel01l"
file="data\models\vehicles\truck\whell_left_01.sam"
shadow="1"
shadowVolume="1"
windwavy="0"
trans="0">
<action
name="DEATH1"
skin="8">
<lp
id="8"
effect_id="ET_PS_VEH_EXP_WHEEL_MED"
restartOnAnimationChange="1"
ImmediateRemove="0" />
</action>
</model>
<model
id="truckWheel02l"
file="data\models\vehicles\truck\whell_left_02.sam"
shadow="1"
shadowVolume="1"
windwavy="0"
trans="0">
<action
name="DEATH1"
skin="8">
<lp
id="8"
effect_id="ET_PS_VEH_EXP_WHEEL_MED"
restartOnAnimationChange="1"
ImmediateRemove="0" />
</action>
</model>
<model
id="truckWheel01r"
file="data\models\vehicles\truck\whell_right_01.sam"
shadow="1"
shadowVolume="1"
windwavy="0"
trans="0">
<action
name="DEATH1"
skin="8">
<lp
id="8"
effect_id="ET_PS_VEH_EXP_WHEEL_MED"
restartOnAnimationChange="1"
ImmediateRemove="0" />
</action>
</model>
<model
id="truckWheel02r"
file="data\models\vehicles\truck\whell_right_02.sam"
shadow="1"
shadowVolume="1"
windwavy="0"
trans="0">
<action
name="DEATH1"
skin="8">
<lp
id="8"
effect_id="ET_PS_VEH_EXP_WHEEL_MED"
restartOnAnimationChange="1"
ImmediateRemove="0" />
</action>
</model>]
<Item
id="truckChassis"
file="data\models\AnimModels.xml" />
<Item
id="truckCab"
file="data\models\AnimModels.xml" />
<Item
id="truckWheel01l"
file="data\models\AnimModels.xml" />
<Item
id="truckWheel01r"
file="data\models\AnimModels.xml" />
<Item
id="truckWheel02l"
file="data\models\AnimModels.xml" />
<Item
id="truckWheel02r"
file="data\models\AnimModels.xml" />
<Type Name="TRUCK_CHASSIS" />
<Type Name="TRUCK_CABIN" />
<Prototype
Class = "Vehicle"
Name = "Truck"
ResourceType = "VEHICLE"
DiffRatio = "9.0"
MaxEngineRpm = "15000"
LowGearShiftLimit = "5000"
HighGearShiftLimit = "7000"
SteeringSpeed = "0.5"
DriftCoeff = "0.0"
HornSound = "ET_S_HORN08"
AdditionalWheelsHover = "0.2"
DecisionMatrix = "vehiclemain.lua"
HitForce = "10"
SteeringN = "1.4"
SteeringTime = "4.0"
MinNotIdleRpm = "500"
IdleEngineSoundSpeed = "0.5"
EngineRpmForNormalSound = "3000"
LookRadius = "250.0"
IntersectionRadius = "4.5"
TakingRadius = "30.0"
ForMultiplayer = "true"
MassSize = "4 3 9"
MassTranslation = "0 -0.9 -0.2"
DestroyEffectPiercing = "ET_PS_VEH_EXP1_MED"
DestroyEffectBlast = "ET_PS_VEH_EXP2_MED"
DestroyEffectEnergy = "ET_PS_VEH_EXP3_MED"
DestroyEffectWater = "ET_PS_VEH_EXP2_MED"
WheelSpringCoeffSmall = "5000.0"
WheelSpringCoeffBig = "7000.0"
WheelUpDampingCoeff = "400.0f"
WheelDownDampingCoeff = "700.0f"
WheelSuspensionRange = "0.4"
WheelCriticalSuspensionDelta = "0.3"
AllowedRoles = "roleMeat roleBarrier"
Abstract = "true" >
<MainPartDescription id = "CHASSIS" partResourceType = "TRUCK_CHASSIS" >
<PartDescription id = "CABIN" partResourceType = "TRUCK_CABIN" lpName = "LP_CAB01" >
<PartDescription id = "CABIN_BIG_GUN_1" partResourceType = "BIG_GUN" lpName = "LP_BIG02" />
<PartDescription id = "CABIN_BIG_GUN_2" partResourceType = "BIG_GUN" lpName = "LP_BIG01" />
</PartDescription>
</MainPartDescription>
<Parts>
<Part id = "CHASSIS" Prototype = "truckChassis" />
</Parts>
<Wheels>
<Wheel Prototype = "truckWheel01r" steering = "correct" />
<Wheel Prototype = "truckWheel01l" steering = "correct" />
<Wheel Prototype = "truckWheel02r" />
<Wheel Prototype = "truckWheel02l" />
<Wheel Prototype = "truckWheel02r" />
<Wheel Prototype = "truckWheel02l" />
</Wheels>
</Prototype>
<Prototype
Class = "Chassis"
Name = "truckChassis"
ModelFile = "truckChassis"
ResourceType = "TRUCK_CHASSIS"
NodeScale = "1 1 1"
Mass = "300.0"
Price = "40000"
RepairCoef = "14"
MaxHealth = "1200"
MaxFuel = "560"
BrakingSound ="ET_S_BRAKE01"
PneumoSound ="ET_S_PNEUMO_BRAKE01"
GearShiftSound ="ET_S_GEAR_SHIFT01"
LoadPoints = "LP_CAB01 LP_BSK01" >
<GroupsHealth
Main = "10000"
/>
</Prototype>
<Prototype
Class = "Cabin"
Name = "truckCab"
ModelFile = "truckCab"
ResourceType = "TRUCK_CABIN"
NodeScale = "1 1 1"
Durability = "120"
DurCoeffsForDamageTypes = "13 5 0"
Mass = "1.0"
MaxPower = "300"
MaxTorque = "105"
EngineHighSound = "ET_S_ENGINE_BEETLE_3_HIGH"
BlowEffect = "ET_PS_VEH_PART_BLOW_SMALL_CAB"
Price = "20000"
RepairCoef = "0.5"
FuelConsumption = "0.08"
MaxSpeed = "225.0"
LP_Scales = "LP_THORN2 0.8, LP_THORN1 0.8, LP_THORN3 0.8, LP_THORN4 0.8, LP_THORN7 0.8, LP_THORN8 0.8, LP_THORN6 0.8, LP_THORN5 0.8, LP_THORN11 0.8, LP_THORN12 0.8, LP_THORN10 0.8, LP_THORN9 0.8"
LoadPoints = "LP_BIG01 LP_BIG02" >
<GadgetDescription>
<Slot
ResourceType = "GADGET_COMMON"
MaxAmount = "3" />
<Slot
ResourceType = "GADGET_WEAPON"
MaxAmount = "3" />
</GadgetDescription>
<GroupsHealth
Main = "0"
/>
</Prototype>
<Prototype
Class = "Wheel"
Name = "truckWheel01l"
ModelFile = "truckWheel01l"
NodeScale = "1 1 1"
Mass = "9"
SuspensionModelFile = "uralSusp01"
SuspensionCFM = "0.0013"
SuspensionERP = "0.25"
SuspensionRange = "1.0"
mU = "1.0"
EffectType = "BIGWHEEL" />
<Prototype
Class = "Wheel"
Name = "truckWheel01r"
ModelFile = "truckWheel01r"
NodeScale = "1 1 1"
Mass = "9"
SuspensionModelFile = "uralSusp01"
SuspensionCFM = "0.0013"
SuspensionERP = "0.25"
SuspensionRange = "1.0"
mU = "1.0"
EffectType = "BIGWHEEL" />
<Prototype
Class = "Wheel"
Name = "truckWheel02l"
ModelFile = "truckWheel02l"
NodeScale = "1 1 1"
Mass = "9"
SuspensionModelFile = "uralSusp02"
SuspensionCFM = "0.0013"
SuspensionERP = "0.25"
SuspensionRange = "1.0"
mU = "1.0"
EffectType = "BIGWHEEL" />
<Prototype
Class = "Wheel"
Name = "truckWheel02r"
ModelFile = "truckWheel02r"
NodeScale = "1 1 1"
Mass = "9"
SuspensionModelFile = "uralSusp02"
SuspensionCFM = "0.0013"
SuspensionERP = "0.25"
SuspensionRange = "1.0"
mU = "1.0"
EffectType = "BIGWHEEL" />
"Apocalypse007" писал(а):
Прописал в animmodels.xml
"Apocalypse007" писал(а):
Прописал в servers.xml
"Apocalypse007" писал(а):
Прописал в resourcetypes.xml:
"Apocalypse007" писал(а):
Прописал прототип в vehicles.xml
"Apocalypse007" писал(а):
Прописал шасси, кабину, колеса в vehicleparts.xml
Скорее всего (если кругом модель прописал) забыл прописать её в servers.xml самой карты, поэтому и "ящик"."Apocalypse007" писал(а):
Так. Вот что получилось
Уменьш средний (вторая цифра) параметр Mass Translation (только без фанатизма ) и будет тебе счастье."Apocalypse007" писал(а):
Только у него проблемы с физикой, при повороте падает на бок...
"K@b@l" писал(а):
Что такое node scale? 1 1 1? Не врубаюсь! Надо попробовать, может это скин???
"bat13" писал(а):
Скорее всего (если кругом модель прописал) забыл прописать её в servers.xml самой карты, поэтому и "ящик".
"kto" писал(а):
</model>] - лишний ]
Параметры брал с другой тачки? или из аркады?
"kto" писал(а):
И ты не создал прототип тачки.
"kto" писал(а):
Судя по коду - использовал параметры других тачек, верно?
"kto" писал(а):
По поводу скринов - что это за мутазоид?
"kto" писал(а):
Сделай так: чистая игра, на ней ВМЕСТО первой кабины того же Молоковоза подсовываешь кабину этой тачки.
То есть не в параметрах, а физически, вместо файла cab01.sam Молоковоза ставишь файл кабины из Аркады, переименовав его в cab01.sam.
"Apocalypse007" писал(а):
А зачем в карте? Это же авто, там вообще нигде ничего про авто не прописано...
"bat13" писал(а):
Уменьш средний (вторая цифра) параметр Mass Translation (только без фанатизма ) и будет тебе счастье.
(Если он в нуле, делай в минус).