Перейти к содержанию

Рекомендуемые сообщения

 
 

Как сделать вывод сообщений на экран? Кто не понял, типа вот такого:

Спойлер

image.png.26288f1733d286d4ce1a9de3bf13e0d2.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Boomer Можно с помощью рестриктора, можно скриптом. 
 

Спойлер

function name (actor, npc)                     
                        news_manager.send_tip(db.actor, "new_sms_text", 10000, "ecolog", 18000, 902)
end

Спойлер

[logic]

active = sr_idle@message

[sr_idle@message]
on_info = {=actor_in_zone(название_рестриктора)} %=send_tip(название_сообщения_text)%

потом идёшь в ст_квест_локация и прописываешь эту секцию: название_сообщения_text



 

Вроде так, но с просони мог упустить. 

Изменено пользователем stalker032

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
13 часов назад, Крим сказал:

Если хочешь, чтобы мы тебе помогли, то прекрати так шутить или глупить. Конкретно и подробно все объясняй, иначе мы на твои вопросы отвечать не станем, тогда сам будешь разбираться. 

ну мне надо проверку времени которое на часах показывает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Boomer забыл. Сделай переход в пустую секцию, иначе спам будет бесконечный.
on_info = {=actor_in_zone(название_рестриктора)} sr_idle@nil %=send_tip(название_сообщения_text)% 

[ sr_idle@nil]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

stalker032 Вообще без разницы в какой .xml файл записывать по пути configs\text, ведь игра найдёт стринг сама. Но всё же, порядок лучше соблюдать, и лучше в данном случае создать строку в st_screen.xml.


Дополнено 4 минуты спустя
В 22.02.2022 в 04:33, Seraph сказал:

Проверил, есть remove_npc. Ну комон, разве это сложно найти?)

Для новичков в моддинге простительно. Нужно научиться Notepad++ и гуглом например, а не лениться потратить своё время. У меня на то, чтобы научить себя моддингу ушло около трёх лет.  И не зря.


Мне 14 лет. Программирую на C++ и Lua. Опытный в моддинге.
Мой мод Clear Sky: Reload

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Ребят, нужна помощь. Как сделать так, чтобы сквад мутантов спавнился в определённом террейне, а в случае смерти этого сквада он респавнился? Ну, как в оригинале, мутанты спавнятся на определённых смартах, а после убийства, через некоторое время респавнятся. Симуляция, типа. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

stalker032 Вот пример из оригинала:

[smart_terrain]
squad_id = 43
max_population = 1
respawn_only_smart = true
respawn_params = respawn@simulation_snork 

[respawn@simulation_snork]
spawn_snork

[spawn_snork]
spawn_squads =  simulation_snork
spawn_num = 1 

 

Изменено пользователем denis2000

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Что нужно прописать в кастом дате определённого ковера, чтобы нпс не садился на этот ковер?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

У всех НПС в определенном смарт-террейне все поломалось к херам. То есть, практически все попросту стоят на месте и ничего не делают, не выполняют логику. Просто впервые с подобным сталкиваюсь. Пожалуйста, подскажите, в чем проблема? Умоляю.

Изменено пользователем Крим

Истинное счастье невозможно без одиночества. - А. П. Чехов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Крим А после чего это произошло? Раньше работало ведь?


Дополнено 2 минуты спустя

stalker032 А у каверов есть кастом-дата, в которой можно что-то прописать? Интересно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
23 минуты назад, Seraph сказал:

А после чего это произошло? Раньше работало ведь?

По мелочи - добавил новые рестрикторы для квестов, вейпоинты и все.


Истинное счастье невозможно без одиночества. - А. П. Чехов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Крим Так. Неписи именно стоят или садятся на графпойнтах, как будто работ в смарте в принципе нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Seraph я же написал - стоят. Большинство просто стоит на месте, лишь малая часть действительно выполняют логику, стоят, где надо, делает, что нужно.


Истинное счастье невозможно без одиночества. - А. П. Чехов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Крим откатись назад, если делал копии gamedata и вноси правки постепенно, и найдёшь ошибки.


Мне 14 лет. Программирую на C++ и Lua. Опытный в моддинге.
Мой мод Clear Sky: Reload

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Крим Если они стоят - значит они выполняют какую-то другую логику, либо что-то мешает им из неё переключиться. Что за рестрикторы и вэйпойнты ты ставил? Могли они повлиять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Крим слухай, если ещё не исправил ошибку. У меня подобная тема была с коверами. Я их называл как хотел, и нпс ничего не делали. Потом я взял название смарт террейна и добавил через нижнее подчеркивание что хотел - всё заработало. По типу: название_смарт_терейна_animpoint_11. Если не то ответил, или ляпнул чушь, то извиняюсь. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Как сделать функцию, чтобы у актера забрали все имеющиеся деньги? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Boomer function ??? ()
db.actor:give_money(-db.actor:money())
end


Мне 14 лет. Программирую на C++ и Lua. Опытный в моддинге.
Мой мод Clear Sky: Reload

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Игре не будет плохо если не забрать инфопорцию от квеста? То есть я выдаю поршень, который активирует квест, и по его окончанию не заберу поршень, и он будет так висеть с игроком всегда.


...))))...))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Добрый вечер.  Добавил в игру вертолет.

Спойлер

 

[170]

; cse_abstract properties
section_name = helicopter
name = mar_a4_heli_1
position = 710.799987792969, 120, -960.900024414063
direction = 0, 0.785398185253143, 0
id = 65535
version = 128
script_version = 12
spawn_id = 167

; cse_alife_object properties
game_vertex_id = 0
level_vertex_id = 115941
object_flags = 0xffffffb2
custom_data = <<END
[story_object]
story_id = mar_a4_heli_1

[logic]
cfg = scripts\marsh\mar_a4_heli_1.ltx
END

; cse_visual properties
visual_name = dynamics\vehicles\mi24\veh_mi24_u_02

; cse_motion properties

; cse_ph_skeleton properties
skeleton_name = idle

; cse_alife_helicopter properties
cse_alife_helicopter__unk1_sz = idle
engine_sound = vehicles\helicopter\helicopter

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

[mar_a4_heli_1_start]
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = 700,120,-940.099975585938
p0:game_vertex_id = 10320
p0:level_vertex_id = 4294967295


[mar_a4_heli_1_task]
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = 349.630004882813,122,-137.449996948242
p0:game_vertex_id = 7
p0:level_vertex_id = 363400


[mar_a4_heli_1_way_1]
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = 650,120,-900
p0:game_vertex_id = 10320
p0:level_vertex_id = 4294967295


[mar_a4_heli_1_way_2]
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = 334.690002441406,122,-96.9800033569336
p0:game_vertex_id = 7
p0:level_vertex_id = 352390

 

Спойлер

 

[logic]
active = heli_move

[heli_move]
path_move = mar_a4_heli_1_start
path_look = mar_a4_heli_1_way_1
max_velocity = 100
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
engine_sound = false
on_info = {+mar_a4_heli_1_start_task} heli_move@1


[heli_move@1]
path_move = mar_a4_heli_1_task
path_look = mar_a4_heli_1_way_2
max_velocity = 100
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true

 

При заходе на локацию с вертолетом имею жука

stack trace:
[error][      87]    : Параметр задан неверно.

 

В чем может быть причина?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Сергей Шубин Привет. Для начала неплохо бы проверить, спавнится ли вертолёт, а потом уже подключать к нему логику. Если спавнится - будет хотя бы ясно, что проблема в логике. Если нет... Ну, могу посоветовать не заниматься некрофилией и установить СДК)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Добро. А можно скриптом поставить игру на паузу? А также выйти из паузы скриптом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Neptun 
if not device():is_paused() then
device():pause(true) --true - поставить игру на паузу, false - выйти из паузы
end


Мне 14 лет. Программирую на C++ и Lua. Опытный в моддинге.
Мой мод Clear Sky: Reload

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
8 часов назад, Seraph сказал:

Ну, могу посоветовать не заниматься некрофилией и установить СДК

У меня установлен SDK. Но я не спавню вертушку через него. Зачем? Чтобы сидел где-то под локацией и "жрал" ресурсы на обработку его логики?

Все делается скриптом.

В логике рестриктора в нужный момент вызываем спавн вертушки.

function spawn_esc_heli( actor, npc )
    spawn_net_objects.spawn_helicopter("esc_a5_heli_dawn", "[logic]\ncfg = scripts\\escape\\esc_helicopter_1.ltx")
end

В файле spawn_net_objects. script пишем функцию спавна

Спойлер

 

function spawn_helicopter( path, logic )
        if not level.patrol_path_exists( path ) then
            return
        end
        local logic_helicopter = logic
        local ptr = patrol( path )
        local position = ptr:point( 0 )
        local lv_id = ptr:level_vertex_id( 0 )
        local gv_id = ptr:game_vertex_id( 0 )
        local section = "helicopter"
        local s_obj = alife():create( section, position, lv_id, gv_id )

    local packet = net_packet()
    packet:w_begin( 0 )
    s_obj:STATE_Write( packet )
    packet:r_seek( 2 )
    local game_vertex_id = packet:r_u16()
    local distance = packet:r_float()
    local direct_control = packet:r_s32()
    local level_vertex_id = packet:r_s32()
    local object_flags = packet:r_s32()
    local custom_data = packet:r_stringZ()
    local story_id = packet:r_s32()
    local spawn_story_id = packet:r_s32()
    local visual_name = packet:r_stringZ()
    local visual_flags = packet:r_u8()
    local motion_name = packet:r_stringZ()
    local skeleton_name = packet:r_stringZ()
    local skeleton_flags = packet:r_u8()
    local source_id = packet:r_u16()
    local startup_animation = packet:r_stringZ()
    local engine_sound = packet:r_stringZ()
    custom_data = logic_helicopter
    motion_name = "idle"
    skeleton_name = "idle"
    startup_animation = "idle"
    visual_name = "dynamics\\vehicles\\mi24\\veh_mi24_u_01"
    engine_sound = "vehicles\\helicopter\\helicopter"
    packet:w_begin( 0 )
    packet:w_u16( game_vertex_id )
    packet:w_float( distance )
    packet:w_s32( direct_control )
    packet:w_s32( level_vertex_id )
    packet:w_s32( object_flags )
    packet:w_stringZ( custom_data )
    packet:w_s32( story_id )
    packet:w_s32( spawn_story_id )
    packet:w_stringZ( visual_name )
    packet:w_u8( visual_flags )
    packet:w_stringZ( motion_name )
    packet:w_stringZ( skeleton_name )
    packet:w_u8( skeleton_flags )
    packet:w_u16( source_id )
    packet:w_stringZ( startup_animation )
    packet:w_stringZ( engine_sound )
    packet:r_seek( 2 )
    s_obj:STATE_Read( packet, packet:w_tell() )
end

 

Ну и логика вертушки , как видно из вызова функции,  в файле scripts\escape\esc_helicopter_1.ltx

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

С вертушкой разобрался.  Сначала взял не ту модель.  Теперь она красиво гудит и летает.  Встала задача - НПС должен завалить её из РПГ.  Выдал НПС РПГ.  Вертушка у него над головой висит.  И НПС палит не по вертушке, а куда то вдаль.

Спойлер

 

[logic]
active = remark

[remark]
anim    = threat_fire
target = story | mar_a4_heli_1
invulnerable = true
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false
on_info = {=dist_to_actor_ge(90)} nil %=destroy_object%
on_info2 = {!actor_friend} %=actor_friend%

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   1 пользователь онлайн