Скриптование - Страница 14 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

 
 

Stalkerin. Там есть много хороших статей касательно данной темы.
Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения.

 

Справочное руководство по языку Lua 5.1
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
Справочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены.

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

 

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

 

Вопросы которые будут удалятся, следовательно их задавать не нужно:
-- Где находится та или иная функция?
Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;
-- Как сделать что-то/то-то?
С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;
-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.
-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.
Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов?
В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос.

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий
https://www.amk-team.ru/forum/topic/6185-skriptovanie/

Помогите кто нибудь.Этот all.spawn от ТЧ 1.0004 не распаковывается acdc'ом от бардака, но распаковываются от модов к ТЧ.Пишет шото про "died line 766".

 

кровоSTALKER да не и без скобок идёт. У тя может в chimera_mod.script где-нить ошибка или там end пропущен, проверь луа чекером.

Ну а так всё нормал, вот я повесил на дельта и всё работает

--------------------------SRS_MOD-----------------------------
srs.vvod_antirada()

Товарищи!

Как сделать одиночное выполнение функции?

Функция спавна. Засунут в биндер.

 

И ещё:

Enable = 1

function test()
if Enable == 1 then
   local dtime = level.get_time_days()
   local htime = level.get_time_hours()
   local mtime = level.get_time_minutes()

if dtime == 1 and htime == 0 and mtime == 0 then
функция спавна...
end
end
end

Как правильно записать дату?

Пишу например: dtime == 1.02.2012, но происходит вылет.

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

НАрод извините меня пожалуйста за флуд и т.д но как заспавнить АНОМалию В ЗП через All.Spawn скажите пожалуйста! =)

Найди секцию с аномалией перепиши её name на любое, координаты, лв_вертексы и нейм_вертекс айди и добавь в конец, не зхабудь номер на 1 больше в скобках поставить, чем последний, ну а лучше скриптом.

Скриптом не проще?

 

function create_anomalies(section,rad_anom,x,y,z,lv,gv,mode)
      if gv==nil then gv=db.actor:game_vertex_id() end
      if lv==nil then lv=db.actor:level_vertex_id() end
      if pos==nil then pos=db.actor:position() end
      local p_obj = alife():create(section,vector():set(x,y,z),lv,gv)
      local packet = net_packet()
      packet:w_begin(0)
      p_obj:STATE_Write(packet)
      packet:r_seek(2)
    local game_vertex_id = packet:r_u16()
    local cse_alife_object__unk1_f32 = packet:r_float()
    local cse_alife_object__unk2_u32 = 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 cse_alife_object__unk3_u32 = packet:r_s32()
    local shape_count = packet:r_u8()
    for i=1,shape_count do
        local shape_type = packet:r_u8()
        if shape_type == 0 then
            local center = packet:r_vec3()
            local radius = packet:r_float()
        else
            local box = packet:r_matrix()
        end
    end
    local restrictor_type = packet:r_u8()
    local cse_alife_custom_zone__unk1_f32 = packet:r_float()
    local cse_alife_custom_zone__unk2_u32 = packet:r_s32()
    local on_off_mode_enabled_time = packet:r_s32()
    local on_off_mode_disabled_time = packet:r_s32()
    local on_off_mode_shift_time = packet:r_s32()
    local offline_interactive_radius = packet:r_float()
    local artefact_spawn_places_count = packet:r_u16()
    local cse_alife_anomalous_zone__unk1_u32 = packet:r_s32()
    local last_spawn_time_present = packet:r_u8()
    packet:w_u16(game_vertex_id)
    packet:w_float(cse_alife_object__unk1_f32)
    packet:w_s32(cse_alife_object__unk2_u32)
    packet:w_s32(level_vertex_id)
    packet:w_s32(object_flags)
    if mode~=nil then custom_data = mode end
    packet:w_stringZ(custom_data)
    packet:w_s32(story_id)
    packet:w_s32(cse_alife_object__unk3_u32)
    packet:w_u8(1)
    packet:w_u8(0)
    local sphere_center = vector()
    sphere_center:set(0, 0, 0)
    packet:w_vec3(sphere_center)
    radius = rad_anom
    packet:w_float(radius)
    packet:w_u8(restrictor_type)
    packet:w_float(cse_alife_custom_zone__unk1_f32)
    cse_alife_custom_zone__unk2_u32 = bit_not(0)
    packet:w_s32(cse_alife_custom_zone__unk2_u32)
    packet:w_s32(on_off_mode_enabled_time)
    packet:w_s32(on_off_mode_disabled_time)
    packet:w_s32(on_off_mode_shift_time)
    packet:w_float(offline_interactive_radius)
    packet:w_u16(artefact_spawn_places_count)
    packet:w_s32(cse_alife_anomalous_zone__unk1_u32)
if mode == nil then
    packet:w_u8(last_spawn_time_present)
end
    p_obj:STATE_Read(packet, packet:w_tell()-packet:r_tell())
    return p_obj
end

create_anomalies(section,rad_anom,x,y,z,lv,gv,mode) --спавн аномалии

 

 

ЗЫ: цитата из новостей ресурса Niko1995,

 

.

..ы растём с каждым днём и будем расти.Думаю вскоре мы составим конкуренцию форуму АМК.У нас на сайте уже есть точная и интересная иноформация о создании модификации.Небольшое колличетсво программ,которые упрощают работу над модами.....

 

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

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

Привет всем! У меня один вопрос. Как ГГ прописать в начале игры пару стволов и нормальный броник? В старых версиях НС я замечательно это делал прогой "xrSpawner". А на последней версии солянки эта прога отказывается что либо прописывать. В чем причина?

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

Доброй ночи....при распаковке all.spawn ошибка типа data left...пользуюсь acdc....надо в скрипт добавлять секцию??

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

ОЙ ещё вопросик можно!?....А как Через СКрипт Заспавнить я пробывал и не получаеться! =(

 

 

Vano_Santuri Остальная Команда пропала над модом работаю один я =(

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

Здравствуйте,я извиняюсь за тупой вопрос,но всё же:Как заспавнить машины через all,и как в моде амк задали логику бтр?

SKS не легче скриптом?...спавни актору методом alife():create, и ставь высов в тегах action в инфопоршень о выдаче квеста о стрелке

Niko1995 методом alife():create("",x,y,z,gv,lv)

stalker19965 спавнить машину опять же посоветовал бы скриптом,ну а присваивание логики при спавне проблемой вроде бы не было, а логика вот она

[logic]

active = ph_car1

 

[ph_car1]

path_walk = dar_btr

on_actor_dist_le_nvis = 15| ph_car2

 

[ph_car2]

path_walk = dar_btr

target = actor

track_target = true

Struck, Спасибо конечно, но для меня эти скрипты темный лес. Со спавнером для меня проще работать. :)

А есть ли функция, что то вроде этой:

function test()

if дистанция между двумя графпойнтами (game_grpah_1 и game_grpah_2) == 1000 метров(или 1 км) then

моя функция...

end

end

Дак вот, надо написать это:

дистанция между двумя графпойнтами (game_grpah_1 и game_grpah_2) == 1000 метров(или 1 км)

в виде Lua, но как? Может у кого есть предложения?

TREWKO,

--' Возвращает расстояние между двумя точками графа с учетом разности уровней
function graph_distance(vid1, vid2)
    local p1 = game_graph():vertex(vid1):game_point()
    local p2 = game_graph():vertex(vid2):game_point()

    --printf("GRAPH DISTANCE [%s][%s][%s] : [%s][%s][%s]", p1.x, p1.y, p1.z, p2.x, p2.y, p2.z)

    return game_graph():vertex(vid1):game_point():distance_to(game_graph():vertex(vid2):game_point())
end

так?

RvP.

А vid1 и vid2 это названия грфпойнотов?

return game_graph():vertex(vid1):game_point():distance_to(game_graph():vertex(vid2):gam

e_point()) Это сравнение?

И как сделать константу дистанции?

Типа:

if distance == 1000 then

...

end

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

Здраствуйте, помогите пожалуйста с ошибкой. Заспавнил нпс в бункере учёных и когда рядом с бункером мутанты он подбегает к двери. В логике я прописал чтоб он возвращался обратно на точку после того как враги исчезнут. И тут при его возвращении происходит так вылет:

Expression : vertex || show_restrictions(m_object)

Function : CPatrolPathManager::select_point

File : E:\stalker\patch_1_0004\xr_3da\xrGame\patrol_path_manager.cpp

Line : 155

Description : any vertex in patrol path [yan_oxrana_lider_walk] in inaccessible for object [yan_oxrana_lider17091]

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

 

Помогите пожалуйста очень сильно нужно исправить эту проблему, буду очень благодарен.

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

TREWKO, да, это графпойнты. Это не сравнение, а получение расстояния между ними. чтобы получить константу походу будет

d= game_graph():vertex(vid1):game_point():distance_to(game_graph():vertex(vid2):game_point())

И ещё вопросец, как можно скриптом заглушить звук?

Знаю, что есть скрипт воспроизведения, остановки, а заглушения есть?

И как будет дистанция между графпойнтом и актором?

Так: game_graph():vertex(vid1):game_point():distance_to(db:actor())?

Расстояние в метрах?

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

TREWKO, звук заглушить можно через свойство volume, пример:

snd_obj.volume=2

snd_obj - это звук, вместо числа ставь нужную громкость, 1 это нормальная громкость файла

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

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...