- т.е. заставив вложеное условие/цикл не только чистить, но и корректировать
Не спорю, в моём примере мы не избавляемся от проверок не существующих индексов. Я лишь привёл пример, который опровергает первоначальное твоё выражение:
т.о. требуется прерывать цикл (break) при каждом удалении. Иначе возможны пропуски необработанных элементов.
. А как его подгонять под тот, или иной случай, это уже другой вопрос.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
#Strchi : stalker_aGG--- game.graph либо не создан либо портаченый...
создай или пересоздай геймграф
Гейм граф есть я когда из Ле[Level editor] уровень вытошил тот гейм граф обьеденил с графом из ориганала тоесть мой из моего грава в оригиналльный граф вставил свой левл а он вот это пигшет когда на уровень новый загружает Expression : cross_table().header().game_guid() == game_graph().header().guid()
Function : CAI_Space::load
File : E:\stalker\patch_1_0004\xr_3da\xrGame\ai_space.cpp
Line : 121
Description : graph doesn't correspond to the cross table
Люди кто знает помогите пожалусто!
Мы, конечно, уже немного в тавто**5001618d69873ce82a42** table.remove(tbl, i)
end
[/code] все одно является циклом с прерыванием (по условию), т.е. 'удаляем один иль несколько -> прерываем' :-P
Для того, чтобы создать нового НПС нам понадобятся координаты нужного места, где и будет заспаунен наш NPC. Возьмём Кордон, лагерь новичков. Можете снять координаты сами, а можете взять мною уже снятые: (-218.20,-20.2,-145.63),35362,47). Далее. Создаём файл в папке gamedata/scripts файл, скажем esc_unik_npc.script. В нём создаём функцию. Код: function esc_unik_npc () alife():create("esc_unik_npc",vector():set(-218.20,-20.2,-145.63),35362,47) end
Теперь мы в файле npc_profile.xml (в папке gameplay) добавляем нашего НПС. Код: Traderescape_trader
esc_unik_npcesc_unik_npc
Копируем или создаём по образцу только нижний блок Второго торговца нам ненадо. Теперь моздадим секцию нашего персоонажа. В файле spawn_section.ltx (gamedata/config/creatures) в блоке:
Создаём секцию. Код: [esc_unik_npc]:stalker $spawn = "respawn\esc_unik_npc" character_profile = esc_unik_npc spec_rank = regular community = dolg
В строке community можете вместо долга вписать другую группировку. Однако если мы хотим, чтоба наш персоонаж не гулял по Зоне, пока не наткнётся на первуюю аномалию, то пропишем чтобы он стоял на месте. Для этого под community вставляем: custom_data = scripts\esc_unik_npc.ltx Далее создаём в gamedata/config папку scripts в в папке создаём файл esc_unik_npc.ltx В наш созданый файл вставляем: Код: [logic] active = remark1 danger = danger_ignore
[danger_ignore] ignore_distance = 5
[remark1] no_move = true
Всё наш НПС будет стоять на месте своего спауна. Едем дальше. Нам надо активировать нашего персоонажа. для этого мы должны вставить строку: esc_unik_npc.esc_unik_npc Либо в диалог, либо в какой-нибудь квест. Давайте вставим строку в файл info_portions.xml (gamedata/gameplay) под Код:
Однако мы не прописали самого НПС, как личность В файле character_desc_escape.xml (gamedata/gameplay) добавляем: Код: GENERATE_NAME_banditui_npc_u_stalker_bandit_3esc_wolf_bio
esc_otbrosi_1dolgstalker_terrain
367-60
characters_voice\human_01\monolith\-1
actors\bandit\stalker_bandit_3 [spawn] \n
wpn_groza \n
ammo_9x39_pab9 \n
1. include "gameplay\character_items.xml" \n
2. include "gameplay\character_food.xml"
1. include "gameplay\character_criticals_3.xml"
1. include "gameplay\character_dialogs.xml"
Правда тут получится у нас долговец в одежде бандита и говорящего голосом монолитовца xD Всё сохроняем. НПС готов.
Но так же можно добавить нашему НПС диалог) Как добавлять диалоги написано в нашем факе) Если хотяте сделать нашему НПС своё имя то в файле stable_bio_name.xml (gamedata/config/text/rus) добавляем: Код: Факер-мазафакер
А в файле сharacter_desc_escape.xml (gamedata/gameplay) находим нашего уже прописаного НПС и вставляем в секцию (у нас в ней написано GENERATE_NAME_bandit) esc_unik_npc Всё Поздравляю)
И получил вылет
Expression : fatal error
Function : CInifile::r_section
File : E:\stalker\patch_1_0004\xrCore\Xr_ini.cpp
Line : 342
Description :
Arguments : Can't open section '1. include "gameplay\character_items.xml"'
Че за чуш???? и как это исправить?
1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
Artos Ну в данном случае оператор while используется не как итератор, а как зацикленное условие. Так что, выражение "циклом с прерыванием", пусть даже по условию, не особо подходит. Основным здесь всётаки является первый итератор (оператор for).
Кстати, попытался произвести подобную операцию с использованием функции ipairs(). Положительных результатов, так и не смог добиться.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
serega_zombi_stalker
'Чушь' в том, что вместо понимания того, что написано в статьях/уроках многие тупо копипастят коды, не удосуживаясь шевелить извилинами.
Все основная масса статей/уроков и пр. писаны не преподавателями иль профессорами, а такими же кодоковырялкинами ... и требуют перепроверок.
Также стОит иметь элементарные понятия о кодах и логах.
ПОвторюсь:
1. для выкладки кодов, помимо спойлера, стОит использовать тэги [cоde], дабы не искажать ни сами коды, ни форматирование.
2. Читая статьи/уроки иль прочее ... стОит все же и понимать написанное, дабы и ошибки, про(до)пущенные авторами исправлять.
и добавлю, раз повторно постится статья с переформатированием:
3. Первоисточник следует или цитировать с сохранением смысла и формата или давать ссылку, дабы не гадать по поводу возможных искажений при неумелом цитировании вопрошающего.
К сути: Читаем в статье:
Код:
... actors\bandit\stalker_bandit_3
[spawn] \n
wpn_groza \n
ammo_9x39_pab9 \n 1. include "gameplay\character_items.xml" \n 2. include "gameplay\character_food.xml"
1. include "gameplay\character_criticals_3.xml" 1. include "gameplay\character_dialogs.xml"
Цветом выделено недопустимое для xml-конфигов.
Включения выполняются оператором '#include', т.е. указанный фрагмент кода должен иметь вид:
singapur22
'ipairs' работает с изначально полученными индексами, т.е. объем таблицы 'измеряется' в начале цикла и далее ни размер таблицы ни индексы не корректируются, хотя поля, соответствующие индексам могут удаляться/изменяться в самом цикле. Поэтому и 'не выходит'.
Artos спс, мне кстати тоже ети цифри непонравились)) а статья и была в таком виде! приходилось самомоу по блокам распихивать! А еще игра норм включилась, Там где должен появится новый непись никого небыло, прошел АТП взял спец у сидора-серовно никого нет. Что сделать чтоб он спавнился после АТП???
1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
serega_zombi_stalker проверять наличие инфопоршня о завершении квеста на АТП, и если он есть то проверить не заспавнили ли мы его уже, и если нет то спавним
гы......можно по проще?))) Я так понел esc_unik_npc.esc_unik_npc это и есть вызов спавна?
1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
serega_zombi_stalker в xml файлах, лучше сделать скриптом и вызывать в net_spawn, и сохраняй в пстор когда заспавнишь своего НПС чтобы он уже 100% не заспавнился дважды
Ну зоть кто то догадался! Struck- я просто спросил как заспавнить моего непися через диалог с сидором...но незнаю что прописать
1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
#singapur22 :
Кстати, попытался произвести подобную операцию с использованием функции ipairs(). Полож**5001618d69873ce82a42** tbl[k] == 55 do
table.remove(tbl, k)
end
end
for i=1,#tbl do
print(tbl)
end
[/code]
Цикл for k in ipairs(tbl) do отрабатывает всего 8 раз, а не по изначальной длине таблицы в отличии от for i=1, #tbl do (16 раз).
Или я не понял о чём речь? Struck
Извини. Ни фи.. чего не понял. Ещё конкретнее, плз, что ты хочешь. Т.е. подробнее.
отредактировал(а) Gun12: 07-06-2011 17:42 GMT3 час. Не стань номинантом премии Дарвина.
Struck
А я и не заставляю тебя печатать, а даю только метод/способ получения значения поля (v) из таблицы.
Неужели сложно самому додуматься, что если тебе потребно присвоить это значение - то и присваивай вместо печати в лог, заменив на 'свое':
printf(tbl[k]) -> local my_variable = tbl[k] printf(v) -> local my_variable = v ... иль что-то иное
Цикл for k in ipairs(tbl) do отрабатывает всего 8 раз, а не по изначальной длине таблицы в отличии от for i=1, #tbl do (16 раз).
Хм. Прикольно. Вот и решение. Прикольно то, что если использовать два ключа: for k, v in ipairs(tbl) do
И производить проверку не с tbl[k], а со вторым ключом: v == 55, то вообще получаем бесконечный цикл.
Оно собственно и правильно, так и должно быть. А вот сверка с tbl[k] как раз то, что и нужно было, при использовании функции ipairs(tbl). И даже, я бы сказал будет лучшей версией кода, по сравнению с предложеным мной, так как не производит итерацию по не существующим индексам, поэтому и получил 8 циклов, вместо 16'ти.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Да как заспавнить этого долбаного НПС?!! Я уже свой миниатюрный мозг вынес!
1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
serega_zombi_stalker
Может быть первоначально направить остатки твоего 'миниатюрного мозга' на:
а) соблюдение элементарных правил грамматики и общения?! Твои 'чушь, долбаные' и прочие "взрослости" только отвращают от общения с тобою.
б) на чтение ФАКа и статей. Или ты ждешь что кто-то в сотый раз персонально тебе будет разжевывать уже перетертое до состояния пюре и кормить с ложечки?
Захотелось сделать самому - так и делай САМ, а не канючь, чтобы это сделали за тебя ...
Подскажите плиз, где хранятся вырезанные и тюнингованные броники? Просто в outfit.ltx только обычные, а брони типа "бандитский комбез с кальчугой" и прочих там нету.
Artos Просто я спавню НПС первый раз! и в модмейкерстве я нуб! еслиб я был опытней-я бы недостовал вас одним вопросом несколько раз!
1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
serega_zombi_stalker
Судя по тому, что после твоих 'добавок' игра у тебя не вылетает - значит не все потеряно. :-)
Возможны**5007618d69873ce82a42**e]function esc_unik_npc()
alife():create("esc_unik_npc",vector():set(-218.20,-20.2,-145.63),35362,47)
end[/code] например, в конец файла 'escape_dialog.script' и поменяй вызов в диалоге на: escape_dialog.esc_unik_npc
Если опять не будет вылета игры и не будет заспавнен непись - перепроверяй все что сделал ...
Примечание: 'НУБ' - это не оправдание, а диагноз, с которым НЕ следует заниматься тем, в чем 'нуб'.
serega_zombi_stalker если ты "нуб", то иди на сталкерский вики, там куча статей по разным сферам модостроя, или здесь в шапке есть копка "F.A.Q.", вот на неё кликай и тоже найдешь несколько полезных вещей.
Struck Чтобы получить значения из таблицы, в нужном тебе порядке, имеется специальная для того функция: table.sort(tbl [, условия сортировки])
Используй её перед итерацией таблицы.
Как настраивать условия сортировки, читай в справочниках по Луа.
P.S. Сортировку таблиц обсуждали на предыдущих страницах данного топика.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.