Перейти к контенту

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

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

Возникла небольшая идея, но для ее реализации придется писать скрипт, решила сама попробовать, вдруг получится :)

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

userbar368.png

Ссылка на комментарий

speczadanie

Вот если бы ты потрудился бы дать результаты своего 'метода логов', тогда бы может кто и подсказал бы, в чем дальше у тебя проблема ...

Пока же можно дать одну рекомендацию: "Искать и разбираться самому в своих кодах или дать коды знакомому скриптеру/кодеру."

 

Судя по первоначальной ошибке 'отсутствия объекта' и твоих выводов о отрицательном результате проверки функции коллбэка на спавн - тебе стОит искать причину исчезновения гейм-объекта только что заспавненного 1-ой функцией предмета (wpn).

Т.к. 2-ая функция (коллбэк) срабатывает (судя по упомянутому 'методу логов') - предмет заспавнен в игру и появился в онлайне ...

То, что его (предмета) клиентская юзердата исчезает - значит есть некая причина. Ее и предстоит тебе искать, т.к. в оригинальной игре такого нет и исчезать НЕ должен.

Совет: Вставить во 2-ю функцию строки вывода в лог о наличии аргумента 'id', о наличии объекта с этим 'id' в игре (серверный объект) и в онлайне (гейм-объект) и о типе аргумента 'obj' на входе в функцию. Тогда может и будет возможность строить погадалки дальше ...

 

Добавлено через 6 мин.:

*Shoker*

Разочарую, штатных иль иных, отличных от перебора, вариантов получить массив вертексов окружающих некую точку и тем бодее по заданной дистанции - нет (ИМХО.

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

 

Добавлено через 37 мин.:

Callisto: ... можно ли проверить какие боеприпасы используются в активном слоте на данный момент?

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

--/-------------------------------------------------------------------
--/ Функции работы с патронами
--/-------------------------------------------------------------------
local iSSVer = script_server_object_version() --/ версия игры (6/7-SHoC, 8-SC, 12-CoP)
local oPk = net_packet() --/ 'читалка' нет-пакетов

--/ определяем название секции патронов в активном стволе NPC
function Get_ActiveAmmoSection(oNPC) --/< (npc or nil)
  if not oNPC then oNPC = db.actor end
  local oItem = oNPC and oNPC:active_item()
  if oItem and isWeapon(oItem) then --/ проверка: оружие ли в руках?
    local soWeapon = sim:object(oItem:id())
    if soWeapon then
      local iAmmoType = Get_AmmoType(soWeapon) --/< получаем тип патронов в стволе
      if iAmmoType then
        return Get_AmmoSection(oItem:section(),iAmmoType) --/> "ammo_section" (or nil)
      end
    end
  end
  return nil --/>
end

--/ определяем имя секции патронов по типу (iAmmoType) для секции (sSection) оружия
function Get_AmmoSection(sSection, iAmmoType) --/< ammo_type (0|1|2|...)
  local sAmmoList = system_ini():r_string(sSection, "ammo_class") --/ читаем из конфиг-файла
  if sAmmoList and sAmmoList ~= "" then
    local tAmmoList = {} --/ заготовка для списка наименований патронов
    for sAmmo in sAmmoList:gmatch('%s*([^,]+)%s*') do --/ парсим строку по запятым
      table.insert(tAmmoList, sAmmo)
    end
    return tAmmoList[(iAmmoType or 0) +1] --/> "ammo_section" (or nil)
  end
  return nil --/>
end

--/ определяем текущий тип патронов (ammo_type) в стволе (weapon)
function Get_AmmoType(soObj) --/< weapon (server_object)
  oPk:w_begin(0)
  cse_alife_item_weapon.STATE_Write(soObj,oPk)
  if iSSVer >= 8 then --/ for CS/CoP
    oPk:r_seek(oPk:w_tell()-3)
  else --/ for SHoC
    oPk:r_seek(oPk:w_tell()-1)
  end
  return oPk:r_u8() --/> "ammo_type"
end
--/-------------------------------------------------------------------

 

 

Добавлено через 30 мин.:

panzyuza

1. Не стОит без причины задавать адресные вопросы. Не все считают возможным отвечать на вопрос заданный конкретно кому-то ...

2. Спасибки и пр. - по правилам форума следует адресовать в ПМ, избегая засорения топиков неинформативным 'мусором'.

3. Не стОит задавать сразу кучу вопросов, что часто превращает обсуждение в кашу малу ...

4. Следует придерживаться правилам ТЕМАТИЧЕСКИХ разделов/тем, а не устраивать в одном место 'бюро справок'.

Я не сторонник давать готовые рецепты и уж тем более не работник бюро справок.

Если вижу, что модмейкер работает своей головой и действительно ему нужно помощь - помогаю (если могу). Но если вижу, что модмейкеру самому ЛЕНЬ почитать мануалы, ФАКи, примеры готовых кодов и т.п. - ни малейшего желания облегчить ему его труда и сэкономить время для лени - не испытываю.

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

 

 

 

Твоя фраза "Возможно ли через скрипт заставить в определенной точке(рестриктор, например) нпс проиграть анимацию напрямую из файла stalker_animation.omf" - для меня непонятна. Что же спавнить и при чем тут точка/рестриктор и анимация - не внял ...

 

По анимации: Тебе следует почитать соответствующий топик, мануалы. То, что ты называешь анимацией, т.е. массив из 'state_mgr_animation_list' - это уже сложные (составные) анимации. То, что имеется в 'stalker_animation.omf' (и иже) - это элементы анимации, т.е. простые анимации.

Разница между ними собственно вытекает из названия, составные представляют некий набор из простейших, что и описано в 'state_mgr_animation_list'. Т.е. если тебе требуется не просто чтобы НПС поднял руку, а поприветствоовал тебя, подняв ее, помахав и опустив - используется именно составная.

Составные анимации используются схемами (например менеджером состояний) и скриптами.

Простые можно конечно же тоже использовать в скриптах и в составе и 'по отдельности'. Для этого есть соответствующие методы, типа: 'add_animation', 'clear_animations' ... Смотри их применение в готовых кодах игры/модов.

 

О методе 'berserk()' посмотри сам в теме "Справочник по функциям и классам". К тому что там - ничего не могу добавить.

И не задавай, плз, подобных вопросов. И Справочники есть и в игре/кодах функций ой как не мало и по каждой давать толковалку - требуется штатный сотрудник тех.поддержки ... Да и глупо порой задаваться такими вопросами, т.к. а) немало 'мусора' в кодах игры и б) а для чего тебе самому дана голова и руки(?), как не взять и попробовать/проверить ...

 

И последнее, не задавался вопросами переноса 'системы анипоинтов'. Могу только сказать, если очень хочется и есть навыки - очень многое возможно ...

 

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Callisto

Если что, то вызывать функцию так:

local ammo_sec = Get_ActiveAmmoSection() --\\ в скобках может быть любой персонаж, если они пустые, то тогда проверка идёт на игрока

Вернёт название секции с патронами.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

-=Krovosos=-,

[smart_terrains]

none = true

 

[logic]

active = camper@my_npc

combat_ignore = combat_ignore

on_hit = hit

 

[camper@my_npc]

path_walk = my_npc_walk

path_look = my_npc_look

meet = meet@my_npc

danger = danger_condition@my_npc

combat_ignore_cond = always

 

[danger_condition@my_npc]

ignore_distance = 0

ignore_distance_corpse = 0

 

[meet@my_npc]

use = true

use_wpn = false

meet_talk_enabled = true

 

[hit]

on_info = %=actor_enemy%

 

 

Ссылка на комментарий

Есть кусок кода из amk_anoms.script

level_arts={ 
l01_escape={2,4,{balb_1=24, balb_2=2, balb_3=0, gravi_1=23, gravi_2=5, gravi_3=0, mincer_1=25, mincer_2=0, mincer_3=0, electra_1=9, electra_2=1, electra_3=0, zharka_1=0, zharka_2=0, zharka_3=0, buzz_1=0, buzz_2=0, buzz_3=0, rusty_1=5, rusty_2=0, rusty_3=0, armor_1=1, babka_1=1, pudd_1=1, spirit_1=1, acumm=2}},
  
l02_garbage={2,4,{balb_1=19, balb_2=5, balb_3=0, gravi_1=25, gravi_2=5, gravi_3=0, mincer_1=20, mincer_2=5, mincer_3=0, electra_1=10, electra_2=0, electra_3=0, zharka_1=0, zharka_2=0, zharka_3=0, buzz_1=0, buzz_2=0, buzz_3=0, rusty_1=5, rusty_2=0, rusty_3=0, armor_1=1, cry_1=1, kol_1=1, pudd_1=1, acumm=2}},
  
l03_agroprom={3,6,{balb_1=12, balb_2=5, balb_3=0, gravi_1=13, gravi_2=5, gravi_3=0, mincer_1=10, mincer_2=5, mincer_3=0, electra_1=10, electra_2=5, electra_3=0, zharka_1=10, zharka_2=5, zharka_3=0, buzz_1=10, buzz_2=0, buzz_3=0, rusty_1=5, rusty_2=0, rusty_3=0, armor_1=1, babka_1=1, pudd_1=1, acumm=2}},
  
l04_darkvalley={6,8,{balb_1=1, balb_2=9, balb_3=0, gravi_1=5, gravi_2=8, gravi_3=0, mincer_1=5, mincer_2=10, mincer_3=0, electra_1=5, electra_2=9, electra_3=0, zharka_1=10, zharka_2=10, zharka_3=0, buzz_1=10, buzz_2=3, buzz_3=0, rusty_1=5, rusty_2=2, voron_1=1, armor_1=1, babka_1=1, dik_1=1, pudd_1=1, spirit_1=1, acumm=2}},
  
l05_bar={2,4,{balb_1=18, balb_2=7, balb_3=0, gravi_1=18, gravi_2=0, gravi_3=0, mincer_1=20, mincer_2=0, mincer_3=0, electra_1=10, electra_2=0, electra_3=0, zharka_1=0, zharka_2=0, zharka_3=0, buzz_1=5, buzz_2=3, buzz_3=0, rusty_1=5, rusty_2=3, rusty_3=0, dummy_1=1, dummy_2=1, dummy_3=0, dummy_4=1, dummy_5=1, babka_1=1, dik_1=1, spirit_1=1, acumm=4}},
  
l06_rostok={2,5,{balb_1=0, balb_2=2, balb_3=2, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=2, mincer_3=2, electra_1=8, electra_2=10, electra_3=0, zharka_1=20, zharka_2=10, zharka_3=5, buzz_1=5, buzz_2=0, buzz_3=0, rusty_1=10, rusty_2=10, rusty_3=5, dummy_1=0, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=0, babka_1=1, cry_1=1, pudd_1=1, spirit_1=1, acumm=2}},

l08_yantar={4,8,{balb_1=1, balb_2=3, balb_3=2, gravi_1=8, gravi_2=5, gravi_3=3, mincer_1=6, mincer_2=5, mincer_3=2, electra_1=8, electra_2=5, electra_3=2, zharka_1=8, zharka_2=5, zharka_3=2, buzz_1=8, buzz_2=5, buzz_3=1, rusty_1=9, rusty_2=3, rusty_3=2, armor_1=1, cry_1=1, dik_1=2, kol_1=1, pudd_1=1, spirit_1=1}},
  
l07_military={4,7,{balb_1=2, balb_2=4, balb_3=2, gravi_1=3, gravi_2=5, gravi_3=3, mincer_1=6, mincer_2=5, mincer_3=5, electra_1=8, electra_2=5, electra_3=2, zharka_1=6, zharka_2=5, zharka_3=3, buzz_1=8, buzz_2=2, buzz_3=0, rusty_1=8, rusty_2=5, rusty_3=2, dummy_1=0, dummy_2=1, dummy_3=1, dummy_4=0, dummy_5=1, armor_1=1, babka_1=1, cry_1=1, kol_1=1, pudd_1=1, spirit_1=1, acumm=2}},

l10_radar={4,8,{balb_1=3, balb_2=5, balb_3=5, gravi_1=4, gravi_2=3, gravi_3=3, mincer_1=6, mincer_2=6, mincer_3=5, electra_1=5, electra_2=4, electra_3=3, zharka_1=5, zharka_2=5, zharka_3=5, buzz_1=5, buzz_2=5, buzz_3=0, rusty_1=7, rusty_2=6, rusty_3=5, armor_1=1, babka_1=1, kol_1=1, pudd_1=1, spirit_1=1}},
  
l11_pripyat={4,7,{balb_1=3, balb_2=3, balb_3=3, gravi_1=3, gravi_2=3, gravi_3=3, mincer_1=4, mincer_2=4, mincer_3=3, electra_1=4, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=4, buzz_1=8, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=5, rusty_3=4, dummy_1=1, dummy_2=2, dummy_3=1, dummy_4=1, dummy_5=1, armor_1=2, cry_1=2, kol_1=1, pudd_1=1, acumm=2}},
  
l12_stancia={2,4,{balb_1=2, balb_2=3, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=1, armor_1=1, dik_1=1, pudd_1=1, acumm=2}},
  
puzir={2,4,{balb_1=3, balb_2=3, balb_3=0, gravi_1=5, gravi_2=5, gravi_3=0, mincer_1=10, mincer_2=5, mincer_3=0, electra_1=12, electra_2=5, electra_3=0, zharka_1=10, zharka_2=5, zharka_3=0, buzz_1=12, buzz_2=8, buzz_3=5, rusty_1=5, rusty_2=2, rusty_3=0, armor_1=1, babka_1=1, cry_1=1, kol_1=1, spirit_1=1}},
  
aver={4,8,{balb_1=2, balb_2=3, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=5, mincer_2=4, mincer_3=1, electra_1=7, electra_2=5, electra_3=2, zharka_1=4, zharka_2=4, zharka_3=1, buzz_1=8, buzz_2=6, buzz_3=4, rusty_1=7, rusty_2=4, rusty_3=4, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=1, armor_1=1, babka_1=1, cry_1=1, kol_1=1, pudd_1=1, spirit_1=1, acumm=2}},

marsh={8,10,{balb_1=2, balb_2=3, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, voron_1=1, armor_1=1, babka_1=1, cry_1=1, kol_1=1, spirit_1=1}},

limansk={2,4,{balb_1=2, balb_2=4, balb_3=5, gravi_1=5, gravi_2=5, gravi_3=5, mincer_1=4, mincer_2=5, mincer_3=5, electra_1=5, electra_2=5, electra_3=5, zharka_1=5, zharka_2=5, zharka_3=5, buzz_1=5, buzz_2=5, buzz_3=0, rusty_1=5, rusty_2=5, rusty_3=5, armor_1=1, cry_1=1, pudd_1=1, spirit_1=2}},

  hospital={2,4,{balb_1=3, balb_2=4, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=1, babka_1=1, dik_1=1, spirit_1=1}},

  red_forest={4,8,{balb_1=3, balb_2=9, balb_3=5, gravi_1=4, gravi_2=3, gravi_3=3, mincer_1=6, mincer_2=6, mincer_3=5, electra_1=5, electra_2=4, electra_3=3, zharka_1=5, zharka_2=5, zharka_3=5, buzz_1=5, buzz_2=5, voron_1=1, rusty_1=6, rusty_2=6, armor_1=1, babka_1=1, cry_1=1, dik_1=1, kol_1=1, spirit_1=1}},

  lost_village={3,6,{balb_1=6, balb_2=7, balb_3=5, gravi_1=7, gravi_2=3, gravi_3=3, mincer_1=8, mincer_2=7, mincer_3=5, electra_1=8, electra_2=7, electra_3=2, zharka_1=5, zharka_2=5, zharka_3=5, buzz_1=5, buzz_2=5, dummy_1=5, cry_1=1, kol_1=1}},

  generators={4,8,{balb_1=2, balb_2=4, balb_3=3, gravi_1=4, gravi_2=3, gravi_3=3, mincer_1=5, mincer_2=4, mincer_3=3, electra_1=4, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=4, buzz_1=8, buzz_2=4, buzz_3=3, rusty_2=9, dummy_1=5, dummy_2=5, dummy_3=1, dummy_4=1, dummy_5=1, armor_1=1, babka_1=1, cry_1=1, dik_1=1, kol_1=1, spirit_1=1}},

  atp_for_test22={4,8,{balb_1=2, balb_2=4, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=4, mincer_2=4, mincer_3=1, electra_1=5, electra_2=5, electra_3=2, zharka_1=6, zharka_2=4, zharka_3=1, buzz_1=8, buzz_2=6, buzz_3=4, rusty_1=7, rusty_2=4,dummy_1=5, dummy_2=1, dummy_3=1, dummy_4=1, voron_1=1, armor_1=1, babka_1=1, cry_1=1, dik_1=1, pudd_1=1, acumm=3}},

dead_city={3,6,{balb_1=4, balb_2=4, balb_3=3, gravi_1=4, gravi_2=3, gravi_3=3, mincer_1=5, mincer_2=4, mincer_3=3, electra_1=4, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=4, buzz_1=8, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=5, rusty_3=4, dummy_1=1, dummy_2=2, dummy_3=1, dummy_4=1, dummy_5=1, armor_1=1, cry_1=1, kol_1=1, pudd_1=1}},

zaton={6,10,{balb_1=2, balb_2=3, balb_3=3, gravi_1=4, gravi_2=4, gravi_3=3, mincer_1=4, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, voron_1=1, armor_1=1, babka_1=2, cry_1=1, kol_1=1, spirit_1=2, acumm=2}},

jupiter={4,8,{balb_1=2, balb_2=3, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, voron_1=1, armor_1=1, babka_1=1, cry_1=1, kol_1=1, spirit_1=1}},

pripyat={4,8,{balb_1=2, balb_2=3, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, voron_1=1, armor_1=1, babka_1=1, cry_1=1, kol_1=1, spirit_1=1}}

}

 

Вопрос - возможно ли через скрипт добавить в таблицу новые значения?

Чтобы, например, в

pripyat={4,8,{balb_1=2, balb_2=3, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, voron_1=1, armor_1=1, babka_1=1, cry_1=1, kol_1=1, spirit_1=1}}

добавить spirit_2=1.

Если возможно, то подскажите как.

 

*Shoker* это артефакты, просто они переведены под локальные переменные.

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

Или лучше сделать новую дополнительную таблицу со своим скриптом спавна?

 

temakonkin если неошибаюсь, то он просит что-то дописать в acdc.pl. Ифнформация связанная с wpn_ak74_m1

Изменено пользователем Galil
Ссылка на комментарий

Ну наверно можно, только сперва надо понять что обзначают в скрипте эти названия - balb\gravi и прочее. А дальше по аналогии.

 

Ulman

В ЗП get_visual_name()

В ЧН/ТЧ по моему разбирают пакет до части визуала.

 

Тоесть если у тебя есть в моде скрипт для разбора нет-пакетов по типу АМК\Симбиона, то проблем не будет, еже ли хочешь наглядный вариант, то в ОГСМе глянь скрипт который в трупах броню спавнит, там как раз определение визуала через пакет.

 

И да, игра вернёт тебе полный путь до визуала, поэтому надо ещё его обрезать до названия модели. Опять таки это можешь в ОГСМе глянуть, или в Интелектуал Марадёр Мод (IMM) ну и вообще в других модах где есть снятие.

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

при распаковке all.sapwn возникла проблема...

после запуска батника, ACDC начинает ругаться, говорит что-

physic_destroyable_object
physic_destroyable_object
physic_destroyable_object
.........................
physic_destroyable_object
physic_destroyable_object
physic_destroyable_object
physic_destroyable_object
wpn_ak74_m1
update data left [12] in kat_wpn_ak74_m1 at D:\acdc\acdc.pl line
2319.

D:\acdc>pause
Для продолжения нажмите любую клавишу . . .

 

Perl у меня имеется....

ACDC скачал с Wiki

 

-это написано в bat, который запускает сам acdc

 

acdc.pl -d all.spawn 
pause

 

Вопрос: в чём проблема, и как её исправить?

и что значит строка

update data left [12] in kat_wpn_ak74_m1 at D:\acdc\acdc.pl line
2319.

 

 

Проблема: Втайнике ничего не спавнится....

 

Делал по этой статье

Вопрос: вчём проблема?

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

Сталкер в душе - сталкер по жизни!

Ссылка на комментарий

Ты распаковывал от ориг. игры или от какого то мода?

Версию игры не спутал? У тя АСДС по идее для ЧН должен быть, или ты от мода разбираешь? Ругается на потерю данных.

Скорее всего разбираешь all.spawn от мода, и там у него свои предметы. Нужно найти ACDC под этот мод.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

*Shoker*, спасибо, вроде нашел.

Вот у меня имеется во такой кусок скрипта:

if string.find(vis,"stalker_bandit_") then return section end
if string.find(vis,"stalker_bandit_veteran") then return section end
if string.find(vis,"stalker_bandit_master") then return section end
if string.find(vis,"stalker_bandit_borov") then return section end
if string.find(vis,"stalker_bandit_exoskeleton") then return section end

Можно ли его заменить на вот такой:

local stalker_gopnik = {"stalker_bandit_", "stalker_bandit_veteran", "stalker_bandit_master", "stalker_bandit_exoskeleton"}
if string.find(vis,"stalker_gopnik") then return section end

И если да, то я понял возвращаться будет "section", даже если хоть одна из переменных, из stalker_gopnik подходит?

Ссылка на комментарий

Можно, но код у тебя не правильный

Нужно так:

local stalker_gopnik = {"stalker_bandit_", "stalker_bandit_veteran", "stalker_bandit_master", "stalker_bandit_exoskeleton"}

for i=1,#stalker_gopnik do

if string.find(vis,stalker_gopnik) then return section end

end

Freedom

Ссылка на комментарий

Всем привет ! Возникла такая проблема при попытке прописывания НПС в Алл спавне (cop) не происходит упаковка ал спавна - то есть понятно что у меня ошибка , помогите понять что не так пробовал уже разные варианты - результат тот же ,это для ЗП , локации присоеденены там всё в порядке

[escape_39 ]

; cse_abstract properties

section_name = stalker

name = sidor

position = -139.440231,-29.689821,-353.661438

direction = -0.012388,0.000000,0.999923

 

; cse_alife_trader_abstract properties

money = 5000

character_profile = sidor

 

; cse_alife_object properties

game_vertex_id = 1501

distance = 0

level_vertex_id = 114867

object_flags = 0xffffffff

custom_data = <<END

[logic]

cfg = scripts\escape\sidor.ltx

END

 

; cse_visual properties

visual_name = actors\trader

 

; cse_alife_creature_abstract properties

g_team = 8

g_squad = 0

g_group = 0

health = 1

dynamic_out_restrictions =

dynamic_in_restrictions =

 

upd:health = 1

upd:timestamp = 0

upd:creature_flags = 0

upd:position = -139.440231,-29.689821,-353.661438

upd:o_model = 0

upd:o_torso = 0,0,0

upd:g_team = 8

upd:g_squad = 0

upd:g_group = 0

 

; cse_alife_monster_abstract properties

base_in_restrictors = yan_bunker_door_zomby_restrictor

 

upd:next_game_vertex_id = 65535

upd:prev_game_vertex_id = 65535

upd:distance_from_point = 0

upd:distance_to_point = 0

 

; cse_alife_human_abstract properties

predicate5 = 2,2,1,1,2

predicate4 = 1,0,0,1

 

; cse_ph_skeleton properties

 

upd:start_dialog =

 

; se_stalker properties

 

Изменено пользователем s.t.e.p.l.e.r

-------- Все-таки в дерьме что-то есть, миллион мух не может ошибаться.

Ссылка на комментарий

Ulman, _Призрак_

Все же стОит читать и понимать написанные скрипты, а не заученно применять шаблоны ...

 

Строка: if string.find(vis,"stalker_bandit_") делает все последующие ваши (не)правильные проверки бестолковым баластом, т.к. если уж эта проверка НЕ сработает - то уж последующие и подавно. А если сработает - последующие просто игнорируются.

Именно подобные бездумные коды, которые явно не выдают ошибок, и приводят (при их накоплении в кодах игры) зачастую к лагам и проблемам с переполнениями стеков.

 

 

 

Добавлено через 9 мин.:

Galil

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

Однако(!), дать конкретный ответ 'как и что нужно' для добавления может только тот, кто знает о какой конкретно версии мода ты ведешь речь. Исходно (AMK-мод v1.3(4)x) скрипт 'amk_anoms.script' не имеет ничего общего с приведенной тобою фрагментом, а точнее - это уже результат изменения в некоем моде ...

Ну а результат 'добавления' в таблицу - напрямую зависит от кодов, которые эту таблицу далее используют.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Artos, то есть лучше так оставить?

if string.find(vis,"stalker_bandit_") then return section end
if string.find(vis,"stalker_bandit_veteran") then return section end
if string.find(vis,"stalker_bandit_master") then return section end
if string.find(vis,"stalker_bandit_borov") then return section end
if string.find(vis,"stalker_bandit_exoskeleton") then return section end

И почему способ Призрака неправильный? Я вот в одном уроке видел такой способ:

--Проверка на взятие нескольких разных предметов и выдача инфопоршня:
local t_wpn = {"ПРЕДМЕТ1", "ПРЕДМЕТ1", "ПРЕДМЕТ1"}
function search_ALL_weapons_complete()
local gg = db.actor
if gg then
for i=1,#t_wpn do
if not gg:object(t_wpn[i]) then 
return false
end
end
gg:give_info_portion("ПОРШЕНЬ")
return true 
end
return false
end

Изменено пользователем Ulman
Ссылка на комментарий

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

Создаю глобальный мод с новыми локациямЭ

Ссылка на комментарий
strelok200, смотря что ты хочешь сделать. Один из вариантов (возможно не самый удачный) - проверять на не наличие инфопоршня, после выполнения скрипта выдать этот поршень. После этого условие не выполниться и скрипт не пойдет.

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

Ulman

Мой комментарий, втод как, был обращен И тебе. Перепрочти его пару раз!

Я не сказал 'не правильно', а употребил термин 'бессмысленный баласт'.

Твой вариант _Призрак_ назвал неправильным, и он в этом прав. Но дав свой вариант, не имеющий ошибки - он все равно наступил на те же грабли (тобоою установленные). Бессмысленно прокручивать таблицу, если первый же ее индекс либо верен, либо нет.

 

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

 

Могу только повторить уже сказанную фразу (видно ее не прочел и/или не понял):

"Все же стОит читать и понимать написанные скрипты, а не заученно применять шаблоны ..."

 

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Ulman

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

 

Насчёт:

if string.find(vis,"stalker_bandit_") then return section end

if string.find(vis,"stalker_bandit_veteran") then return section end

...

 

Ты наверно не до конца понял смысл функции string.finde

Она принимает строку, и проверяет есть ли в этой строке КУСОК указанного текста.

 

Тоесть если ты передал строку "stalker_bandit_na_svalke" то уже тут:

if string.find(vis,"stalker_bandit_") then return section end

 

Функция вернёт переменную section (сработает условие) , т.к в тексте stalker_bandit_na_svalke есть искомая фраза.

 

Еже ли такая проверка не сработает, то и остальные не сработают тем более, поскольку в них тоже есть элемент stalker_bandit_, который скрипт УЖЕ не нашёл в строке.

 

 

 

Тоесть если по простому. Если ты ищешь в тексте слово "Бандит" и не находишь, то и фразу "Бандит в плаще" ты в том файле тоже не найдёшь.

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

strelok200

1. Класс: 'бинд сталкер' - это далеко не один метод/функция.

Ответ на твой вопрос зависит от того, что же ты туда захотел добавить и в какое место (в какое событие).

 

2. "срабатывала только один раз?" - имеет как минимум две трактовки: 'один раз за всю игру' и 'один раз в выбранном методе' биндера (оидн раз после каждого запуска игры).

 

Добавлено через 2 мин.:

*Shoker*, мой ник Artos, и прошу его не употреблять иначе (без вестких на то причин)!

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

*Shoker*, на счёт stalker_bandit_ то я ошибся, там должно быть название модели экзоскелета, хоть это теперь и не важно. А вообще мне надо, что бы была проверка на визуалы НПС, и если хоть один из визуалов одет на НПС то возвращался true. И вот я думал, что по примеру как в OGSE можно сделать, там вот так это всё выглядит, вот кусок:

function vis_to_armor(npc)

 

local section

 

if npc then

 

local obj = alife():object(npc:id())

if not obj then return "novice_outfit" end

local stalk = xrs_utils.read_stalker_params(obj)

local vis = tostring(stalk.visual)

 

if vis then

 

if npc:character_community()=="bandit" then

 

-- bandits

if string.find(vis,"stalker_bandit_") then section = "bandit_outfit" end

if string.find(vis,"stalker_bandit_veteran") then section = "bandit_veteran_outfit" end

if string.find(vis,"stalker_bandit_master") then section = "bandit_master_outfit" end

if string.find(vis,"stalker_bandit_borov") then section = "bandit_master_outfit" end

if string.find(vis,"stalker_bandit_exoskeleton") then section = "exo_bandit_outfit" end

...

 

Изменено пользователем Ulman
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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