https://legacy-sdk.stalker-game.com/ru/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:Newpages&feed=atomMod Wiki - Новые статьи [ru]2024-03-29T07:09:34ZМатериал из Mod Wiki.MediaWiki 1.10.0https://legacy-sdk.stalker-game.com/ru/index.php?title=61_finest_UGG_Australia_discount_coupons_and_promotion_codes._Save_40_on_sheepskin_boots_and_shoes.61 finest UGG Australia discount coupons and promotion codes. Save 40 on sheepskin boots and shoes.2015-07-24T17:26:43Z<p>Описание изменений: Новая: You can avoid essentially any concerns in addition to making use of a Australian Ugg Boots Coupon Code has to you comprehend they will certainly to make essential techniques rather of th...</p>
<hr />
<div>You can avoid essentially any concerns in addition to making use of a Australian Ugg Boots Coupon Code has to you comprehend they will certainly to make essential techniques rather of they will. A lot of the issues entirely consumed with the aid of customers include:.<br><br>Getting the done Australian Ugg Boots Coupon Code: The majority of Australian Ugg Boots Coupon Code use a party time-frame all over that they could stop used to get an even more cost trusted rate or merely just valuable approach. Together, an included specific rather back can get fortuitous utilizing your Australian Ugg Boots Coupon Code which consist of passed her expiration day when your company have in reality never ever deactivated this sort of decrease.<br><br>Not routinely checking out the Australian Ugg Boots Coupon Code completely. Prior to opting to particularly what specifically sort of Australian Ugg Boots Coupon Code need to be utilized any individual effectively can well aren't delighted to discovered out find the most from making use of. You can not think practically all Australian Ugg Boots Coupon Code supply an established decrease.<br><br>Dropping getting a certain Australian Ugg Boots Coupon Code. On the numerous other hand, you can make use of software application applications keeping to the real Australian Ugg Boots Coupon Code so that you can utilize them in spite of the truth that needed.<br><br>When you are getting online, you can have a big amount big quantities of cash on a regular month-to-month basis using the extremely best Australian Ugg Boots Coupon Code. Getting this kind of Australian Ugg Boots Coupon Code might not be straightforward. Had to be truth, you're most likely to be investing large amounts of objective looking for people Australian Ugg Boots Coupon Code.<br><br>You need to acknowledge using Australian Ugg Boots Coupon Code in the liable technique or potentially you carry out find youself to get investing a more considerable expense for any individual possibilities. It does not produce simply considering that to recognize a rather a big amount of elements being made quickly offered with a little asking cost as an outcome of Australian Ugg Boots Coupon Code.<br><br>Possibly you have used by getting the Australian Ugg Boots Coupon Code simply to acknowledge that you can not utilize this much more affordable it offers? These type of Australian Ugg Boots Coupon Code will usually be genuinely valued merely by net buyers due to the fact that they make them become problems in addition to abilities linking to essential profits.<br><br>Getting the done Australian Ugg Boots Coupon Code: A lot of Australian Ugg Boots Coupon Code use an occasion time-frame all over that they can stop used to get a far more expenditure effective expense or merely simply handy method. Prior to deciding to precisely exactly what specifically type of Australian Ugg Boots Coupon Code need to be utilized any individual successfully can well aren't enjoyed learnt discover the most from making use of.<br><br>Possibly you have utilized by getting the Australian Ugg Boots Coupon Code just to acknowledge that you can not utilize this less costly it offers? These type of Australian Ugg Boots Coupon Code will normally be extremely valued simply by internet buyers considering that they make them wind up being problems together with comprehending explaining crucial incomes.<br><br>Prior to opting to specifically exactly what specifically sort of Australian Ugg Boots Coupon Code ought to be made use of any specific effectively can well aren't enjoyed revealed discover the most from using. When you are getting online, you can have a big amount great offers of cash money on a regular month-to-month basis making use of the finest [https://www.facebook.com/pages/Australian-Ugg-Boots-Coupon-Code/455460367931754 Australian Ugg Boots Coupon] Code.<br><br>Prior to picking to particularly what specifically type of Australian Ugg Boots Coupon Code require to be utilized anybody effectively can well aren't delighted to discovered uncover the most from making use of. When you are getting online, you can have a huge quantity big quantities of money on a regular month-to-month basis making use of the finest Australian Ugg Boots Coupon Code.<br><br>Prior to deciding to specifically precisely what specifically sort of Australian Ugg Boots Coupon Code have to be made use of anyone successfully can well aren't delighted to discovered discover the most from utilizing. When you are getting online, you can have a huge quantity huge quantities of money on a regular month-to-month basis making use of the finest Australian Ugg Boots Coupon Code. Getting this sort of Australian Ugg Boots Coupon Code could not be uncomplicated. Prior to choosing to specifically exactly what specifically sort of Australian Ugg Boots Coupon Code need to be utilized any person effectively can well aren't enjoyed found out discover the most from making use of. You can have a huge amount huge quantities of cash on a routine month-to-month basis utilizing the best Australian Ugg Boots Coupon Code when you are getting online.<br><br><br>When you are getting online, you can have a big quantity big amounts of cash on a regular month-to-month basis making use of the finest Australian Ugg Boots Coupon Code. Prior to choosing to specifically precisely what particularly kind of Australian Ugg Boots Coupon Code have actually to be made use of any individual successfully can well aren't thrilled to discovered out uncover the most from making use of. You can have a huge amount huge amounts of money on a routine month-to-month basis making use of the finest Australian Ugg Boots Coupon Code when you are getting online. Prior to choosing to specifically what specifically kind of Australian Ugg Boots Coupon Code need to be made use of any person successfully can well aren't thrilled to found out find the most from making use of. You can have a big amount big quantities of money on a workout month-to-month basis making use of the finest Australian Ugg Boots Coupon Code when you are getting online.</div>AnastasiaTinlinehttps://legacy-sdk.stalker-game.com/ru/index.php?title=Finding_Nursing_careers_OnlineFinding Nursing careers Online2015-07-24T17:22:17Z<p>Описание изменений: Новая: <br><br>In every over the world expatriate/immigrants are working because nurses and are earning the right amount of money. They are bread those who win and as well as satisfied using th...</p>
<hr />
<div><br><br>In every over the world expatriate/immigrants are working because nurses and are earning the right amount of money. They are bread those who win and as well as satisfied using their lives too. you will never repent after choosing nursing a profession, if you have keen interest in healthcare line and don't want to encounter tough competitive study. Because the doctors study is too difficult and degree is hard to gain. You don't have to open your own clinic to practice and many more.<br><br>One of the main kinds of communication these days is e-mail. We at HealthcareRecruitment employ this powerful communication tool in order to its full potential. Whenever submitting a resume to the site, use a professional-sounding e-mail! Recruiters and employers will begin to disregard job seekers with profane emails. And unless you aren't applying for a job at a humor club, drop the name "incredible_goatman" for some version of your genuine name.<br><br>The particular nursing force is getting older. We are just getting older. Many want to retire. Others are seeking to something else that is less stress filled and demanding.<br><br><br><br>The whole industry of journey nursing jobs came into being as a reaction to the nationwide shortage associated with nurses. In order to persuade healthcare professionals to opt for this kind of medical position, travel nursing firms usually offer incentives in addition higher wages and hotels assistance.<br><br>If you're thinking about it, the very first question you need to ask yourself is actually or not traveling is satisfying to you. travel nursing involves a lot of serious traveling, often crisscrossing the country. The average length of time for the typical assignment is thirteen weeks. Assignments are often back-to-back and this can be mentally, physically plus emotionally exhausting.<br><br>If you are currently considering this job, you have to be able to check for the requirements together with your agency. But basically, as being a ground requirement, in order to act as a travel nurse, you should be a Registered Nurse with a minimum of a year of experience. You should look for a trusted nursing [http://www.sharkbayte.com/keyword/company company] that will provide you with the best work opportunities abroad. This is why you need to ensure that you have looked in all the achievable agencies before deciding to use to one.<br><br>Unfortunately, that will acknowledgment did not come simple. The day was well fought against for, with the petition intended for recognition first being produced in 1953, but this dropped through. Similar proposals to get a national day or 7 days failed in 1955 plus 1972. In 1974, Chief executive Nixon issued a proclamation for a National nurses week. It had been not until 1982 that will President Ronald Reagan produced National Nurses Day recognized and the date was established for May 6.<br><br>Another benefit is that you simply will get to learn a lot to get better results as you go along. The field of technology has many rooms for finding. It can be thrilling to look and know that you will be a part of that will evolution.<br><br>[http://ausis.edu.au/forum/member.php?action=profile&uid=40541 nursing jobs]</div>LesLomas609https://legacy-sdk.stalker-game.com/ru/index.php?title=Searching_for_Unique_Looks_coupon_codes_the_best_source_on_web_to_grab_working_Distinct_Appearances_promo_codes_discount_vouchers_for_2014.Searching for Unique Looks coupon codes the best source on web to grab working Distinct Appearances promo codes discount vouchers for 2014.2015-07-24T17:19:15Z<p>Описание изменений: Новая: You can stay clear of virtually any issues in addition to utilizing a Unique looks Coupon Code needs to you understand they will certainly to make important strategies rather of they wil...</p>
<hr />
<div>You can stay clear of virtually any issues in addition to utilizing a Unique looks Coupon Code needs to you understand they will certainly to make important strategies rather of they will. A lot of the concerns entirely consumed with the assistance of customers consist of:.<br><br><br><br>Getting the done Unique looks Coupon Code: A great deal of [https://www.facebook.com/pages/Best-Uniquelooks-at-Unique-looks-Coupon-Code/374140426047081 Unique looks Coupon Code] use an occasion time-frame all over that they might stop made use of to obtain a much more cost reliable rate or simply just beneficial method. Together, a consisted of certain rather back can get fortuitous utilizing your Unique looks Coupon Code that include passed her expiry day when your company have in reality never ever deactivated this sort of decrease.<br><br>Great deals of. Not continually checking out the Unique looks Coupon Code entirely. Prior to choosing to especially what particularly type of Unique looks Coupon Code need to be used anybody successfully can well aren't enjoyed found reveal the most from making use of. You can not think practically all Unique looks Coupon Code offer a well established reduction. A good deal of them needs you achieve special products of greenbacks of chemicals to disclose the real less pricey expenditure. Certain various other individuals found priceless business to offer an example cost-free changes, transport and different others.<br><br>Dropping getting a particular Unique looks Coupon Code. On the different other hand, you can make use of software application applications keep to the actual Unique looks Coupon Code so that you can use them in spite of the reality that vital.<br><br>You can have a huge amount huge quantities of cash on a regular month-to-month basis making use of the finest Unique looks Coupon Code when you are getting online. Getting this kind of Unique looks Coupon Code may not be straightforward. Had to be reality, you're likely to be investing lots of impartial looking for individuals Unique looks Coupon Code.<br><br>You have to acknowledge utilizing Unique looks Coupon Code in the responsible technique or potentially you perform discover youself to obtain investing a more significant cost for any person possibilities. It does not produce just considering that to acknowledge a rather a big amount of elements being made quickly provided with a little asking cost as an outcome of Unique looks Coupon Code.<br><br>Potentially you have utilized by getting the Unique looks Coupon Code simply to acknowledge that you can not use this much more economical it supplies? These type of Unique looks Coupon Code will normally be really valued just by web buyers due to the truth that they make them come to be concerns in addition to abilities connecting to crucial revenues.</div>ShariKeeney4294https://legacy-sdk.stalker-game.com/ru/index.php?title=Save_money_on_books_with_6_Campus_Book_Rentals_discount_coupon_codes_or_4_totally_free_shipping_discount_coupons.Save money on books with 6 Campus Book Rentals discount coupon codes or 4 totally free shipping discount coupons.2015-07-24T17:18:25Z<p>Описание изменений: Новая: <br><br>You can stay clear of virtually any problems in addition to making use of a The Campus Bookstore Promo Code needs to you comprehend they will to make crucial approaches rather of...</p>
<hr />
<div><br><br>You can stay clear of virtually any problems in addition to making use of a The Campus Bookstore Promo Code needs to you comprehend they will to make crucial approaches rather of they will. A lot of the issues totally eaten with the help of consumers consist of:.<br><br>Getting the done The Campus Bookstore Promo Code: Most of The Campus Bookstore Promo Code use an event time-frame all over that they may stop used to acquire an even more expense trusted rate or simply simply valuable method. Together, an included specific rather back can get fortuitous utilizing your The Campus Bookstore Promo Code which consist of passed her expiration day when your company have in fact never ever deactivated this kind of reduction.<br><br>Not continually examining out the The Campus Bookstore Promo Code completely. Prior to deciding to especially what particularly type of The Campus Bookstore Promo Code have to be utilized anyone successfully can well aren't delighted to found out find the most from making use of. You can not believe virtually all The Campus Bookstore Promo Code supply a well established decrease.<br><br>Dropping getting a certain The Campus Bookstore Promo Code. On the various other hand, you can use software application applications keep to the genuine The Campus Bookstore Promo Code so that you can utilize them in spite of the truth that needed.<br><br>You can have a big quantity huge amounts of money on a routine month-to-month basis utilizing the finest The Campus Bookstore Promo Code when you are getting online. Getting this type of The Campus Bookstore Promo Code may not be simple. Had to be reality, you're likely to be investing lots of impartial looking for individuals The Campus Bookstore Promo Code.<br><br>You have to acknowledge using The Campus Bookstore Promo Code in the liable approach or potentially you carry out find youself to acquire investing a more considerable cost for any person possibilities. It does not produce merely considering that to recognize a rather a huge amount of elements being made swiftly supplied with a little asking cost as an outcome of The Campus Bookstore Promo Code.<br><br>Potentially you have used by getting the The Campus Bookstore Promo Code simply to acknowledge that you can not utilize this more cost-effective it provides? If you liked this write-up and you would certainly like to obtain more information regarding [https://www.facebook.com/pages/The-Campus-Bookstore-Promo-Code/735832269823451 valore books coupon codes] kindly go to our webpage. These kinds of The Campus Bookstore Promo Code will normally be really valued just by web purchasers due to the reality that they make them come to be problems in addition to capabilities connecteding to essential profits.<br><br>Getting the done The Campus Bookstore Promo Code: Lots of The Campus Bookstore Promo Code utilize an occasion time-frame all over that they can stop made use of to obtain a much more expense effective expense or merely simply advantageous technique. Prior to opting to exactly what particularly sort of The Campus Bookstore Promo Code need to be utilized any individual effectively can well aren't delighted to learnt find the most from making use of.<br><br>Potentially you have made use of by getting the The Campus Bookstore Promo Code simply to recognize that you can not utilize this more economical it offers? These kinds of The Campus Bookstore Promo Code will usually be exceptionally valued merely by web purchasers thinking about that they make them wind up being concerns together with comprehending describing vital earnings.<br><br>Prior to picking to specifically exactly what precisely sort of The Campus Bookstore Promo Code need to be used any certain efficiently can well aren't pleased to exposed find the most from making use of. When you are getting online, you can have a huge amount exceptional offers of cash on a workout month-to-month basis making use of the very best The Campus Bookstore Promo Code.<br><br>Prior to selecting to specifically exactly what kind of The Campus Bookstore Promo Code need to be made use of any individual successfully can well aren't delighted to discovered out find the most from using. You can have a huge amount huge quantities of cash on a routine month-to-month basis making use of the finest The Campus Bookstore Promo Code when you are getting online.<br><br>Prior to choosing to specifically precisely what precisely sort of The Campus Bookstore Promo Code have to be made use of anyone successfully can well aren't enjoyed discovered find the most from utilizing. When you are getting online, you can have a big amount big amounts of money on a routine month-to-month basis using the finest The Campus Bookstore Promo Code. Getting this sort of The Campus Bookstore Promo Code might not be basic. Prior to picking to specifically what exactly sort of The Campus Bookstore Promo Code have to be used any person effectively can well aren't delighted to found out uncover the most from utilizing. When you are getting online, you can have a huge amount big amounts of cash on a routine month-to-month basis making use of the finest The Campus Bookstore Promo Code.<br><br><br><br>Prior to deciding to particularly what particularly type of The Campus Bookstore Promo Code have to be utilized any individual successfully can well aren't thrilled to found out find the most from making use of. When you are getting online, you can have a huge amount huge amounts of money on a routine month-to-month basis using the finest The Campus Bookstore Promo Code. Prior to selecting to specifically precisely what specifically kind of The Campus Bookstore Promo Code have actually to be made use of any individual successfully can well aren't thrilled to found out find the most from making use of. Prior to picking to particularly exactly what exactly kind of The Campus Bookstore Promo Code need to be made use of any person efficiently can well aren't thrilled to discovered out reveal the most from making use of. You can have a big quantity big quantities of money on a workout month-to-month basis making use of the finest The Campus Bookstore Promo Code when you are getting online.</div>ValentinMccroryhttps://legacy-sdk.stalker-game.com/ru/index.php?title=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%D1%83%D1%80%D0%BE%D0%BA_%D0%BF%D0%BE_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8E_%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B8Видеоурок по созданию анимации2011-05-03T11:52:59Z<p>Описание изменений: </p>
<hr />
<div>[http://www.example.com заголовок ссылки]<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">Здравствуйте. В этом уроке я -Iastreb- попытаюсь объяснить как все же создать анимацию для игры и чтоб она там работала.</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">Урок рассчитан для начинающих мододелов, так как в нем подробно описывается каждый шаг.</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste"></div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">1. В 3ds Max мы создадим простую модель.</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">2. Создадим две кости.</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">3. Присоединим к ним определенные вертексы (Vertex).</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">4. Научимся создавать анимацию.</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">5. Экспортируем модель в ActorEditor.</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">6. Экспортируем анимацию в ActorEditor.</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">7. Настроим кости в ActorEditor.</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">8. Привяжем анимацию к модели.</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">9. Заспавним модель в LevelEditor и настроим там кости, зафиксируем определенные кости.</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">10. И протестируем в игре наше создание.</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">Спасибо за внимание урок создал -Iastreb-.</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">В ближайшем будущем я постараюсь сделать урок по "Создание перехода между двумя локациями".</div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste"></div><br />
<div style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste">Ссылка на скачивание---</div><br />
<div>Здравствуйте. В этом уроке я <span style="color: #ff0000;">-Iastreb-</span> попытаюсь объяснить как все же создать анимацию для игры и чтоб она там работала.</div><br />
<div>Урок рассчитан для начинающих мододелов, так как в нем подробно описывается каждый шаг.</div><br />
<div></div><br />
<div>1. В 3ds Max мы создадим простую модель.</div><br />
<div>2. Создадим две кости.</div><br />
<div>3. Присоединим к ним определенные вертексы (Vertex).</div><br />
<div>4. Научимся создавать анимацию.</div><br />
<div>5. Экспортируем модель в ActorEditor.</div><br />
<div>6. Экспортируем анимацию в ActorEditor.</div><br />
<div>7. Настроим кости в ActorEditor.</div><br />
<div>8. Привяжем анимацию к модели.</div><br />
<div>9. Заспавним модель в LevelEditor и настроим там кости, зафиксируем определенные кости.</div><br />
<div>10. И протестируем в игре наше создание.</div><br />
<div>Спасибо за внимание урок создал <span style="color: #ff0000;">-Iastreb-</span>.</div><br />
<div>В ближайшем будущем я постараюсь сделать урок по "Создание перехода между двумя локациями".</div><br />
Ссылка на скачивание--- <br />
[http://depositfiles.com/files/b1g58xonf Sozdanie_animacii.7z]<br />
[[Категория:Официальная справка по MOD SDK]]</div>Iastrebhttps://legacy-sdk.stalker-game.com/ru/index.php?title=%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA_%D0%BF%D0%BE_MayaУчебник по Maya2011-04-16T19:30:33Z<p>Описание изменений: </p>
<hr />
<div>==Настройка плагинов==<br />
<br />
Плагины и экспортер для ''Maya 8.5'':<br />
<br />
'''1.''' Найди папку '''…\X-Ray SDK\scripts_plugins\scripts\''' и скопируй всё её содержимое в '''…\Мои документы\maya\scripts\'''<br />
<br />
'''2.''' Перейди в папку, расположенную по адресу '''…\X-Ray SDK\scripts_plugins\ver-8.5\plug-ins\''', выдели все имеющиеся там файлы и скопируй их в '''…\Maya8.5\bin\plug-ins\'''<br />
<br />
'''3.''' Найди директорию '''…\X-Ray SDK\scripts_plugins\''' и скопируй файл под названием ''xray_path.ltx'' в '''…\Maya8.5\bin\plug-ins\''' <br />
<br />
'''4.''' Теперь самое важное. Запусти '''Maya 8.5'''. Выбери в меню ''Window > Settings/Preferences > Plug-in Manager'' и найди там ''xrayMaya_export.mll'' и ''xrayMaya_material.mll''. Поставь галочки в «Loaded» и «Auto load» для обоих плагинов.<br />
<br />
Это нужно для экспорта из '''Maya'''.<br />
==Настройка самой программы==<br />
'''1.''' Выбери в меню '''Window > Settings/Preferences > Preferences'''.<br><br />
'''2.''' Появится новое окно; перейди в раздел '''Settings''' (слева в Categories). Измени параметр '''Linear''' на '''meter'''.<br />
Это изменит размер единицы (юнита) на метр, в противном случае можно в конечном итоге сделать огромные карты, которые на самом деле будут всего 1×1 метров, поскольку единица измерения установлена в см или мм.<br />
<br />
'''3.''' Теперь иди дальше вниз по списку справа и нажми на '''Cameras'''; перемести слайдер <tt>Far clip</tt> вправо.<br />
Это, возможно, изменит расстояние обзора; так что будь осторожен, однако я не думаю, что это абсолютно необходимо.<br />
<br />
'''4.''' Сохрани все настройки, кликнув кнопку '''Save''' внизу окошка.<br />
<br />
'''5.''' Если в пользовательском интерфейсе не отображаются 4 видовых окна, кликни на том, которое уже существует, и нажми пробел. После этого появится 4 различных видовых окна, если они ещё не показаны. Если ты видишь все 4 видовых окна, можно кликнуть в одном из них и нажать пробел, чтобы сосредоточиться только в этом окне и работать в нём.<br />
<br />
'''6.''' Перейди в угол одного из видовых окон и щёлкни '''View > Camera Attribute Editor'''.<br />
<br />
'''7.''' Ты заметил, что-то случилось на правой стороне интерфейса; перейди в текстовое поле '''Far Clip Plane''', измени значение на '''1000''' и жми Enter.<br><br />
Если раньше ты не видел сетку в видовых окнах, теперь увидишь, и это решает очень раздражающую проблему с расстоянием обзора внутри видовых окон.<br />
<br />
'''8.''' Сейчас, если хочешь изменить размер сетки, выбери '''Display''' в меню и кликни маленький квадратик рядом с '''Grid'''.<br><br />
Появится новое окошко, и ты сможешь увеличить либо уменьшить сетку по своему желанию. Для этого кликни в текстовом поле '''Length and width''' и набери своё значение; например, '''120''', это задаст размер сетки 120×120 метров.<br />
<br />
На этом мы завершаем эту главу.<br><br />
Я изначально собирался написать раздел про движения камеры, но если у тебя '''Maya 8.5''', выбери в меню '''Help > Tutorials'''. Итак, следующий раздел будет посвящён созданию локации.<br />
==Моделирование==<br />
Сперва раскрой выпадающее меню вверху слева. Выбери '''Polygons'''.<br />
<br />
'''1.''' Выбери в меню '''Create > Polygon Primitives''' и кликни маленький квадратик рядом с '''Plane'''.<br />
<br />
'''2.''' На правой стороне экрана мы видим настройки плоскости, где можно выбрать ширину и высоту нашей плоскости. К примеру, нужны размеры 10×10×5, поэтому изменим значения в полях '''Width''' и '''Height''' на 10. Также убедись, что в '''Width divisions''' и '''Height divisions''' стоит '''1'''.<br />
<br />
'''3.''' После всех настроек просто нужно кликнуть в одном из видовых окон (для достижения наилучших результатов – в '''Top'''). Для того, чтобы узнать название окна, посмотри в нижнюю часть окна; там увидишь короткое слово '''top''', '''front''', '''left''', '''right''', '''persp''' или др.<br><br />
Итак, кликаем там, где написано '''top'''.<br />
<br />
'''4.''' В видовых окнах появится плоскость, но в '''persp''' будет только её каркас. Чтобы перейти в режим каркаса, нажми '''4'''. Чтобы видеть тёмную текстуру '''Goraud''', жми '''5''', а для отображения текстур – '''6'''.<br><br />
Перейди в '''persp''' и нажми '''6''', чтоб не пришлось менять в дальнейшем.<br />
<br />
'''5.''' Сейчас нам нужно будет сделать несколько стен, а для этого необходимо удерживать правую кнопку мыши и появится контекстное меню. Вверху есть слово '''Edge''' – кликни его, чтобы выбрать края.<br />
<br />
'''6.''' Щёлкни все 4 края; когда они не выбраны, будут [http://ru.wikipedia.org/wiki/%D0%A6%D0%B2%D0%B5%D1%82_%D0%BC%D0%BE%D1%80%D1%81%D0%BA%D0%BE%D0%B9_%D0%B2%D0%BE%D0%BB%D0%BD%D1%8B циановые], но при выборе края, он становится оранжевым.<br />
<br />
'''7.''' Найди иконку '''Extrude''' ([http://sdk.stalker-game.com/en/index.php?title=Image:Maya_tutorial_12.jpg 16-я]) и кликни её.<br />
<br />
'''8.''' Теперь идём в верхний правый угол интерфейса '''Maya'''; там 3 иконки, которые выглядят как несколько линий и каракулей; нажми на крайний справа значок и получишь подробную статистику, которая пригодится для точных измерений на объектах.<br><br />
Итак, поскольку мы хотим, чтобы наши стены были высотой 5 метров, то должны перейти в поле '''Local Translate Z''' и вписать в него '''5'''.<br />
<br />
'''9.''' ПКМ в окне '''persp''' и кликни '''Object Mode''' в контекстном меню; выбери свой уровень левым кликом, ПКМ > '''Vertex'''; это позволит нам редактировать вершины (углы). Они отмечены маленькими фиолетовыми точками.<br />
<br />
'''10.''' Выбери в меню '''Display > Heads Up Display > Poly Count'''. Теперь ты видишь некоторые важные статистические данные своей сцены.<br><br />
<tt>Verts</tt> – вершины, <tt>Edges</tt> – края, <tt>Faces</tt> – грани, <tt>Tris</tt> – треугольники. Если кликнуть вершину (пурпурную точку), в 3-м столбце в строке '''Verts''' (самая верхняя) появится число 1; если выбрать 2 (Shift+ЛКМ), тогда вместо 0 будет 2.<br><br />
Так, например, посмотри на [http://sdk.stalker-game.com/en/images/6/61/Maya_tutorial_16.jpg этот рисунок], это та же карта, но вместо экструдирования всех краёв сразу, я экструдировал лишь 3 края одновременно, а затем 4-й отдельно. Это означает, что у них не одни и те же вершины, а смежные края. На рисунке можно увидеть, что выбраны 2 точки, что, как правило, означает, что это 2 вершины, но нет, это 2 группы по 2 вершины в ''точно'' том же положении. Так как же это исправить? Не нужно удалять все края и делать их одновременно, вместо этого перейди к следующему шагу.<br />
<br />
'''11.''' Для решения этой проблемы ты должен сначала выбрать вершины, которые хочешь объединить, а затем нажать на кнопку с надписью '''Merge''', и как видишь на [http://sdk.stalker-game.com/en/images/6/68/Maya_tutorial_17.jpg картинке], сейчас выбраны лишь 2 вершины, а не 4, и это делает рабочий процесс чертовски намного проще, так как он предотвращает возможные проблемы. Что я ещё хочу добавить о слиянии вершин: думаю, по умолчанию '''Maya''' имеет довольно большое расстояние слияния, а это означает, что при выборе всего уровня, чтобы исправить эти вершины, вся твоя локация может слиться воедино и стать беспорядочной массой. Например, если я хочу создать пирамиду, всё, что нужно сделать, это выбрать верхние 4 угла и нажать Merge и они все придут к середине в одной точке.<br><br />
Таким образом, чтобы это изменить, нужно выбрать '''Edit Mesh > Merge''' (маленький квадратик рядом).<br />
<br />
Появится окошко со слайдером '''Threshold'''. Если хочешь объединить вершины, которые находятся в одном месте, установи его так, как показано на [http://sdk.stalker-game.com/en/images/b/b8/Maya_tutorial_18.jpg рисунке]; если же нужно объединить вершины, которые далеки друг от друга, перемести слайдер чуть правее.<br />
<br />
'''12.''' Сохрани свой прогресс: выбери в меню '''File > Save Scene'''.<br />
<br />
На этом мы завершаем главу о создании карты в '''Maya 8.5'''. В следующем разделе речь будет идти о добавлении текстур на карту и применении материалов '''X-Ray''' к твоим текстурированным объектам.<br />
==Подготовка к текстурингу==<br />
Прежде всего, для того, чтобы всё нижеследующее сработало, необходимо проделать следующую серию шагов до запуска '''Maya 8.5'''. Эти шаги позволят шейдерам '''X-Ray''' правильно взаимодействовать с '''Maya 8.5'''.<br />
<br />
'''1.''' Итак, сначала сюда: '''…\X-Ray SDK\scripts_plugins\'''<br><br />
ПКМ на файле '''createDiscX.bat''' и выбери '''Изменить'''.<br />
<br />
'''2.''' Проверь, чтобы диск '''X:''' был настроен на '''…\X-Ray SDK\level_editor'''. В файле '''.bat''' должны быть приблизительно такие строки:<br />
<source lang="winbatch"><br />
"C:\WINDOWS\system32\subst.exe" X: /D<br />
"C:\WINDOWS\system32\subst.exe" X: "F:\X-Ray SDK\level_editor"<br />
</source><br />
<br />
'''3.''' Каждый раз, прежде чем запустить '''Maya 8.5''', требуется запуск этого '''.bat'''-файла. Можно через '''Пуск > Все программы > X-Ray SDK > Map X-Drive'''.<br><br />
Но проще и быстрее через ''автозагрузку'' (спасибо '''Mikool''' за батник и информацию):<br />
<br />
'''Добавление “Map X-drive” в автозапуск Windows'''<br><br />
Различные операционные системы запускаются по-разному, поэтому следуй инструкциям для ТВОЕЙ ОС.<br />
<br />
'''1. Windows 95-98/ME'''<br />
<br />
Создай ярлык для '''createDiskX.bat''' в папке '''C:\Windows\Главное меню\Программы\Автозагрузка'''<br />
<br />
'''2. Windows XP'''<br />
<br />
Создай ярлык для '''createDiskX.bat''' в папке '''C:\Documents and Settings\All Users\Главное меню\Программы\Автозагрузка'''<br />
<br />
'''3. Windows Vista'''<br />
<br />
На данной стадии ни Mikool, ни я точно не знаем, как это сделать, но Mikool дал немного информации, которая может помочь.<br><br />
Перейди в список '''Все программы''' и ПКМ на папке '''Автозагрузка''', затем кликай '''Открыть'''. Помести ярлык для '''createDiskX.bat''' в этой папке и это должно сработать. Если нет, то мы надеемся, скоро я смогу расписать подробно то, как это сделать.<br />
<br />
'''Создание командного файла'''<br><br />
Это довольно просто, ничего сложного, почти как ярлык для запуска '''createDiskX''' и '''Maya''' без необходимости беспокоиться о выполнении вышеизложенного материала или постоянном ручном запуске '''creatediskX''' перед работой в '''Maya'''.<br />
<br />
Открой '''Блокнот''' или любой другой текстовый редактор.<br><br />
Скопируй и вставь следующие строки:<br />
<source lang="winbatch"><br />
@ECHO OFF<br />
ECHO "run creatediskx"<br />
PAUSE<br />
call "F:\X-Ray SDK\scripts_plugins\createDiskX.bat"<br />
ECHO "load maya"<br />
PAUSE<br />
start maya.exe<br />
</source><br />
<br />
Теперь сохрани этот файл под названием типа '''stalker-maya.bat'''. Затем давай приступим к созданию батника. Это действительно просто, ничего сложного: просто командный файл, который будет запускать '''creatediskx''' и потом загружать '''Maya'''. Всё, что нужно сделать, это открыть и набрать/скопировать следующее:<br />
<source lang="winbatch"><br />
call F:\X-Ray SDK\level_editor\createDiskX.bat<br />
start maya.exe<br />
</source><br />
Примечание: первая строка варьируется в зависимости от того, где установлен SDK.<br><br />
Сохрани батник.<br />
==Текстуринг локации==<br />
<br />
'''1.''' Во-первых, убедись, что диск X настроен правильно.<br />
<br />
'''2.''' Запусти '''Maya 8.5''' и открой свою карту.<br />
<br />
'''3.''' Выбери в меню <tt>Windows > Rendering Editors > Multilister</tt>. В появившемся окошке выбери <tt>Edit > Create</tt>.<br />
Вылезет окно <tt>Create Render Node</tt>. Кликни материал поверхности, выделенный на [http://sdk.stalker-game.com/en/images/2/2c/Maya_tutorial_createrendernode.jpg картинке] ("Xray Mtl").<br><br />
Это поместит новый материал в окно <tt>Multilister</tt>.<br />
<br />
'''5.''' Найди его значок, дважды щёлкни его и свойства материала отобразятся сбоку экрана. Кликни [http://sdk.stalker-game.com/en/images/1/1b/Maya_tutorial_file.jpg клетчатый квадратик] напротив <tt>Color</tt>.<br />
<br />
'''7.''' Щёлкни <tt>File</tt>. Далее найди <tt>Image Name</tt>, нажми значок папки напротив и укажи путь к текстуре: '''X:\gamedata\textures\mtl\mtl_rust_dark_iov.dds'''.<br><br />
Позднее мы используем эту текстуру для наших стен.<br />
<br />
'''8.''' Повтори пункты 4-6.<br />
<br />
'''9.''' Теперь нужно выбрать текстуру для пола, так что на этот раз указываем текстуру по адресу: '''X:\gamedata\textures\ston\ston_beton_floor_iov_01.dds'''.<br />
<br />
'''10.''' Сверни окно Multilister и выбери свой уровень. Теперь удерживай правую кнопку мыши и снова перейди в контекстное меню. На этот раз выбери <tt>Face</tt>, что позволит редактировать грани объектов. Ты увидишь маленькие синие кубики в центре каждой грани. Удерживай клавишу Shift и кликай грани; всего 4 стены, поэтому это не должно вызвать затруднений. Выбранные грани окрасятся в оранжевый цвет.<br />
<br />
'''11.''' Теперь разверни окошко Multilister.<br />
<br />
'''12.''' Выбери материал <tt>XRayMtl1</tt>, затем <tt>Edit > Assign</tt>.<br><br />
Ты получишь предупреждение о создании группы шейдинга, щёлкай <tt>ОК</tt>.<br><br />
Теперь к этим выбранным граням применены материалы (текстуры). Поэтому, чтобы просмотреть текстуру в окне просмотра, необходимо кликнуть в окне и нажать 6, если ты ещё этого не сделал.<br />
<br />
'''13.''' Сейчас повторим шаг 10 и выберем только пол; назначь материал <tt>XRayMtl2</tt>, следуя вышеизложенным инструкциям.<br />
<br />
'''14.''' Сохрани работу!<br />
<br />
===Необязательные вещи===<br />
<br />
Текстурам можно придавать различные свойства, которыми можно управлять с помощью Maya.<br />
<br />
'''1.''' Открой окно Multilister.<br />
<br />
'''2.''' Дважды кликни <tt>XRayMtl1</tt> или <tt>XRayMtl2</tt>. Рассмотрим пункт <tt>XRay Params</tt>.<br />
<br />
'''3.''' <tt>Xray Double Side</tt> – предположительно для тонких объектов, таких как стекло или лист металла. Чуть ниже раскрывающиеся списки <tt>Xray Engine Shader</tt>/<tt>Compiler Shader</tt>/<tt>Game Material</tt>.<br />
<br />
В следующей главе я расскажу об экспорте уровня из '''Maya 8.5''' и импорте его в '''X-Ray Level Editor''' (это не займёт много времени). Я также охвачу основные пункты использования редактора уровней X-Ray. Ты узнаешь, как добавлять объекты на карту и управлять этими объектами (масштабирование, перемещение, вращение).<br />
==Экспорт из Maya 8.5==<br />
'''1.''' Убедись, что твоя карта загружена.<br />
<br />
'''2.''' Кликни её и выбери <tt>File > Export Selection</tt>.<br />
<br />
'''3.''' Укажи папку '''X:\import''' и жми <tt>Export</tt>.<br />
==Импорт локации в X-Ray Level Editor==<br />
<br />
Закрой '''Maya 8.5''' и запусти '''X-Ray Level Editor'''.<br />
<br />
'''1.''' Найди <tt>Objects</tt> в разделе <tt>Scene</tt>. Кликни и выбери <tt>Library Editor</tt>.<br />
<br />
'''2.''' Вылупится оконце <tt>Оbject Library</tt>. ПКМ на <tt>levels</tt> > <tt>create folder</tt>, назови новую папку <tt>tut</tt>.<br />
<br />
'''3.''' Нажми кнопку <tt>Import Object</tt>. Укажи свой файл "tut.object" в папке '''X:\import''' и нажми <tt>Открыть</tt>. Новый объект добавлен.<br />
<br />
'''4.''' Теперь поставь галочку рядом с <tt>Preview</tt> и твоя работа появится в главном окне.<br />
<br />
'''5.''' Это необязательно, но если хочешь сделать эскиз картинки со своим объектом, можно нажать на кнопку с надписью <tt>Make Thumbnail</tt>.<br />
<br />
'''6.''' Закрой окошко <tt>Оbject Library</tt>. Локация исчезнет. Чтоб её вернуть, найди раздел <tt>Objects</tt> справа снизу интерфейса.<br><br />
Кликни <tt>levels</tt>, чтобы развернуть список. Если новой папки не видно, щёлкни <tt>Refresh List</tt> чуть выше.<br />
<br />
'''7.''' Выбери свой объект. Нажми A (<tt>add</tt>) и кликни в окне. Или можно воспользоваться верхним меню и кликнуть маленький чайник или кувшинчик.<br />
==Основы X-Ray Level Editor и размещение объектов==<br />
===Навигация===<br />
Для того, чтобы перемещать камеру в редакторе, придётся использовать несколько странное управление.<br />
<br />
* <tt>Shift + ЛКМ</tt> Камера двигается по осям XY<br />
* <tt>Shift + ПКМ</tt> Камера двигается по оси Z<br />
* <tt>Shift + ЛКМ + ПКМ</tt> Камера не двигается, но можно смотреть вокруг<br />
===[http://sdk.stalker-game.com/en/images/f/fb/Maya_tutorial_basictools.jpg Панель инструментов]===<br />
'''1.''' <tt>Undo/Redo</tt> Отмена/повтор отменённого действия.<br />
<br />
'''2.''' <tt>Select</tt> Это самый популярный инструмент, используемый для выбора различных объектов. Но он выбирает лишь то, что выбрано в секции <tt>Edit Mode</tt> справа. Т.е. если допустим выбрана категория <tt>Spawn Element</tt>, я не могу выбрать статический объект типа дома либо свет из категории Light. Можно выбирать только точки спауна, неписей, монстров и т.п.<br />
<br />
'''3.''' <tt>Add</tt> Работает в сочетании с <tt>Select</tt>. В первую очередь необходимо выбрать объект из категории, а затем добавить его на сцену, нажав кнопку <tt>Add</tt> или A и потом кликнув там, где ты хочешь добавить объект.<br />
<br />
'''4.''' <tt>X</tt>, <tt>Y</tt>, <tt>Z</tt>, <tt>ZX</tt> GSC сделали X и Z как горизонтальные плоскости, а Y как вертикальную плоскость. Вот [http://sdk.stalker-game.com/en/images/c/cf/Maya_tutorial_planes.jpg сравнение] с тем, чему нас учили в школе.<br />
<br />
'''5.''' <tt>Rotate</tt> Вращение по выбранной оси.<br />
<br />
'''6.''' <tt>Uniform Scale</tt> Изменяет размер объекта в едином масштабе. Это означает, что все стороны объекта будут находиться в одной пропорции с остальной частью объекта.<br />
<br />
<br />
[[en:Maya tutorial]]<br />
[[Категория:Официальная справка по MOD SDK]]</div>ILdarKOrotkovhttps://legacy-sdk.stalker-game.com/ru/index.php?title=Actor_EditorActor Editor2011-04-04T20:47:09Z<p>Описание изменений: </p>
<hr />
<div>Для работы нам понадобятся [http://www.mediafire.com/?ynowommqiow Xray Asset Tools]. В архиве необходимые плагины для Maya и Milkshape, плюс конвертер моделей в такие форматы, как .object, .bones и .skl(s).<br />
Далее убедись, что у тебя уже установлен [http://files.gsc-game.com/st/xray-sdk-setup-v0.4.exe X-Ray SDK]. Если твоя ОС Vista или 7, поставь файлам <tt>.exe</tt> в папке <tt>level_editor/bins</tt> режим совместимости с Windows XP SP2.<br />
Текстуры для модели должны быть в формате <tt>.dds (Direct Draw Surface)</tt> и располагаться в папке <tt>level_editor/gamedata/textures</tt> (желательно). Скопируй модель из папки игры (к примеру, после распаковки файлов .db человеки находятся в <tt>gamedata/meshes/actors</tt>) в директорию <tt>X-Ray SDK/level_editor/gamedata/meshes/actors</tt> (как пример; аналогия папок игры с SDK очевидна).<br />
#Запусти <tt>level_editor\bins\ActorEditor.exe</tt> (можно через <tt>ActorEditor.bat</tt>). Кликни <tt>Preferences</tt> (в разделе Scene справа), раскрой <tt>Objects</tt> и выбери <tt>Skeleton</tt>. Щёлкни все точки, чтобы появились галочки (рис. 1).<br />
[[Изображение:EditorPreferences.JPG|thumb|Рис. 1]]<br />
#Теперь можно грузить твою модель через <tt>File > Load</tt> (не забудь перед этим сконвертировать её в <tt>.object</tt> либо <tt>.lwo</tt>). Возможно, появится сообщение о нехватке текстур. Ничего страшного, продолжай дальше.<br />
#Кликай Object в панели Object Items и отметь галочкой пункт ''Make Progressive'' чуть ниже (рис. 2).<br />
[[Изображение:MakeProgressive.JPG|thumb|Рис. 2]]<br />
#В той же панели Object Items раскрой Surfaces, выбери каждую поверхность и назначь правильную текстуру.<br />
#Теперь пришла очередь пункта <tt>Motions</tt> (панель та же – <tt>Object Items</tt>); если ты уже вытащил файл <tt>.Skl(s)</tt>, тогда просто выбирай <tt>Edit > Append</tt> и грузи его оттуда; если же нет, тогда кликай … в строчке <tt>Motion reference</tt> и выбирай набор анимаций оттуда. Внимание: для корректной работы анимаций модель должна иметь соответствующее им количество костей, иначе ты получишь ошибку. Если твоя модель человечка ничем не отличается от оригинала из STALKER, выбери <tt>stalker_animation</tt> и нажми <tt>OK</tt>.<br />
#Последние штрихи. Раскрой древо Bones (панель Object Items). Если ты уже конвертнул .ogf в .bones, через пару секунд оно раскроется; если же нет, тогда придётся вручную создавать коллизию (модель столкновения) для каждой кости.<br />
#Смени материал <tt>Game Material</tt> на <tt>сreatures\human</tt>, а тип <tt>Type</tt> на бокс (<tt>Box</tt>), сферу (<tt>Sphere</tt>) или цилиндр (<tt>Сylinder</tt>). Далее можно настроить длину, высоту и положение каждой кости в отдельности (рис. 3).<br />
[[Изображение:bones.JPG|thumb|Рис. 3]]<br />
#Сейчас уже можно открыть файл <tt>.bones</tt> (его можно получить из <tt>.ogf</tt> с помощью <tt>converter.exe</tt>, см. мануал). Выбери <tt>Bones</tt>, потом <tt>File > Load</tt> (в панели <tt>Item Properties</tt>), укажи свой <tt>.bones</tt> и жми <tt>Открыть</tt>.<br />
#Теперь пора протестировать модель: щёлкни <tt>Engine</tt> в панели <tt>Model</tt>. Дождись окончания компиляции.<br />
#В итоге ты увидишь страшную картину – не пугайся! Просто раскрой <tt>Motions</tt> в <tt>Object Items</tt>, выбери <tt>Slot 1</tt> и увидишь набор анимаций.<br />
#Как только закончишь дурачиться с моделью, вернись в режим <tt>Editor</tt> (через панель <tt>Model</tt>) и кликай <tt>File > Save</tt>, затем <tt>File > Export > Export OGF…</tt>. Программа скомпилирует модель (это займёт определённое время!)<br />
#Всё. Можно импортировать в игру.<br />
[[Категория:Официальная справка по MOD SDK]]</div>ILdarKOrotkovhttps://legacy-sdk.stalker-game.com/ru/index.php?title=%D0%A1%D0%BB%D0%BE%D0%B6%D0%BD%D1%8B%D0%B9_%D0%BA%D0%B2%D0%B5%D1%81%D1%82_%D0%BD%D0%B0_%D0%BE%D0%B1%D0%BE%D1%80%D0%BE%D0%BD%D1%83_%D0%BB%D0%B0%D0%B3%D0%B5%D1%80%D1%8FСложный квест на оборону лагеря2011-03-29T08:28:55Z<p>Описание изменений: </p>
<hr />
<div>Сейчас мы создадим сложный квест на оборону лагеря!<br />
<br />
Что нам потребуется? <br />
<br />
*system.ltx<br />
*character_desc_escape.xml<br />
*spawn_sections.ltx<br />
<br />
Хватит страдать фигнёй, приступим к работе!<br />
<br />
Пошаговое создание:<br />
<br />
Часть 1 (Создание и подготовка файлов):<br />
<br />
1. Зарегистрируем пустой файл для info_portions …<br />
<br />
Открываем файл system.ltx, находим вот это – «[info_portions]» .<br />
Нашли? Нет? Ну тогда «Ctrl+f» и задаёте [info_portions]… <br />
Теперь наверно нашли… Мы видим под этой «штукой» вот такое:<br />
<br />
;список xml файлов, содержащих info_portions<br />
files = info_portions, info_portions_light, info_portions_test, info_lchanger_ico, info_level_tips, info_known_objects, info_l01escape, info_l02garbage, info_l03agroprom, info_l04agroprom_u, info_l05dark_valley, info_l06dark_valley_u, info_l07rostok, info_l08yantar, info_l08deadcity, info_l08rostok_bar, info_l09marshes, info_l09rostok_dolg, info_l10military, info_l11pripyat, info_l11yantar, info_l12yantar_u, info_l13deadcity, info_l14swamp, info_l10radar, info_l16radar_antena, info_l17monolith_control, info_l19stanciya, info_l12u_sarcofag, info_l21generators, info_l22warlab, info_stories<br />
<br />
А мы дописываем в конец «info_new» (укажите перед ней запятую) и получим вот такую конструкцию:<br />
<br />
;список xml файлов, содержащих info_portions<br />
files = info_portions, info_portions_light, info_portions_test, info_lchanger_ico, info_level_tips, info_known_objects, info_l01escape, info_l02garbage, info_l03agroprom, info_l04agroprom_u, info_l05dark_valley, info_l06dark_valley_u, info_l07rostok, info_l08yantar, info_l08deadcity, info_l08rostok_bar, info_l09marshes, info_l09rostok_dolg, info_l10military, info_l11pripyat, info_l11yantar, info_l12yantar_u, info_l13deadcity, info_l14swamp, info_l10radar, info_l16radar_antena, info_l17monolith_control, info_l19stanciya, info_l12u_sarcofag, info_l21generators, info_l22warlab, info_stories, info_new<br />
<br />
1.2 Создадим этот файл:<br />
(В config\ gameplay) создаём файл с названием (без кавычек), а в нём такую схему:<br />
<br />
<?xml version="1.0" encoding="windows-1251" ?><br />
<br />
<game_information_portions><br />
<br />
<br />
</game_information_portions><br />
<br />
2. Шаг №2: Зарегистрируем пустой файл для диалогов…<br />
В этом же файле находим:<br />
<br />
[dialogs]<br />
files = dialogs_test, dialogs, dialogs_escape, dialogs_garbage, dialogs_agroprom, dialogs_deadcity, dialogs_darkvalley, dialogs_pripyat, dialogs_bar, dialogs_yantar, dialogs_military, dialogs_labx18, dialogs_radar, dialogs_aes, dialogs_teloxranitel<br />
<br />
И проделываем то, что делали с info_portions… (Приписываем ещё одну ветку)<br />
<br />
И получим:<br />
[dialogs]<br />
files = dialogs_test, dialogs, dialogs_escape, dialogs_garbage, dialogs_agroprom, dialogs_deadcity, dialogs_darkvalley, dialogs_pripyat, dialogs_bar, dialogs_yantar, dialogs_military, dialogs_labx18, dialogs_radar, dialogs_aes, dialogs_teloxranitel, dialogs_new<br />
<br />
2.2 Создадим этот файл (В config\gameplay):<br />
<br />
Название: (Без кавычек) «dialogs_new.xml», а в нём такая схема:<br />
<br />
<?xml version="1.0" encoding="windows-1251" standalone="yes" ?><br />
<game_dialogs><br />
<br />
</game_dialogs><br />
<br />
3. Шаг №3 Зарегистрируем XML файл для квеста:<br />
<br />
Находим: (В config\gameplay) файл с названием (Без кавычек) «game_tasks.xml», а в нём находим строки: <br />
<br />
#include "gameplay\tasks_escape.xml"<br />
#include "gameplay\tasks_garbage.xml"<br />
#include "gameplay\tasks_agroprom.xml"<br />
#include "gameplay\tasks_bar.xml"<br />
#include "gameplay\tasks_military.xml"<br />
#include "gameplay\tasks_darkvalley.xml"<br />
#include "gameplay\tasks_deadcity.xml"<br />
#include "gameplay\tasks_radar.xml"<br />
#include "gameplay\tasks_aes.xml"<br />
#include "gameplay\tasks_yantar.xml"<br />
#include "gameplay\tasks_sarcofag.xml"<br />
#include "gameplay\game_tasks_by_vendor.xml"<br />
<br />
И заменяем на:<br />
<br />
#include "gameplay\tasks_escape.xml"<br />
#include "gameplay\tasks_new.xml"<br />
#include "gameplay\tasks_garbage.xml"<br />
#include "gameplay\tasks_agroprom.xml"<br />
#include "gameplay\tasks_bar.xml"<br />
#include "gameplay\tasks_military.xml"<br />
#include "gameplay\tasks_darkvalley.xml"<br />
#include "gameplay\tasks_deadcity.xml"<br />
#include "gameplay\tasks_radar.xml"<br />
#include "gameplay\tasks_aes.xml"<br />
#include "gameplay\tasks_yantar.xml"<br />
#include "gameplay\tasks_sarcofag.xml"<br />
#include "gameplay\game_tasks_by_vendor.xml"<br />
<br />
P.S. Мы в него добавили одну строку - #include "gameplay\tasks_new.xml"<br />
<br />
3.2 Заполним этот файл:<br />
(В gameplay) Создаём файл с названием (Без кавычек) «gameplay\tasks_new.xml»…<br />
<br />
4. Шаг №4 Зарегистрируем файл с профилями! <br />
(Я уже устал разъяснять, буду просто писать «что» на «что» заменить)<br />
<br />
Заменить:<br />
<br />
[profiles]<br />
;список xml файлов, содержащих профили сталкеров и торговцев<br />
files = npc_profile<br />
;список xml файлов, содержащих описания конкретных сталкеров и торговцев<br />
specific_characters_files = character_desc_general, character_desc_simulation,character_desc_escape, character_desc_garbage, character_desc_agroprom, character_desc_darkvalley, character_desc_deadcity, character_desc_bar, character_desc_yantar, character_desc_military, character_desc_radar, character_desc_pripyat, character_desc_aes, character_desc_kishka, character_desc_sarcofag<br />
<br />
На:<br />
<br />
[profiles]<br />
;список xml файлов, содержащих профили сталкеров и торговцев<br />
files = npc_profile, npc_profile_new<br />
;список xml файлов, содержащих описания конкретных сталкеров и торговцев<br />
specific_characters_files = character_desc_general, character_desc_simulation,character_desc_escape, character_desc_garbage, character_desc_agroprom, character_desc_darkvalley, character_desc_deadcity, character_desc_bar, character_desc_yantar, character_desc_military, character_desc_radar, character_desc_pripyat, character_desc_aes, character_desc_kishka, character_desc_sarcofag, new_profils_chareng<br />
<br />
4.2 Создадим в папке «gameplay» 2 файла, с названиями (без кавычек) «new_profils_chareng.xml» и «npc_profile_new.xml»…<br />
<br />
В «npc_profile_new.xml» пишем:<br />
<br />
<?xml version='1.0' encoding="UTF-8"?><br />
<br />
<xml><br />
<br />
</xml><br />
<br />
4.3 <br />
В «new_profils_chareng.xml» пишем:<br />
<br />
<?xml version='1.0' encoding="windows-1251"?><br />
<br />
<xml><br />
<br />
</xml><br />
<br />
5. Создаём в папке «gamedata\scripts» файл с названием «new_dialog.script».<br />
<br />
Часть 2 (Заполнение файлов):<br />
<br />
1. Создадим профиль нападающих на лагерь NPC. <br />
<br />
Открываем файл: «new_profils_chareng.xml» и в нём пишем между <xml> и </xml>:<br />
<br />
<specific_character id="esc_new_atack_bandit1" no_random = "1"><br />
<name>Петушара</name><br />
<icon>ui_npc_u_stalker_bandit_3</icon><br />
<map_icon x="1" y="4"></map_icon><br />
<bio>esc_new_atack_bandit1_bio</bio><br />
<br />
<class>esc_new_atack_bandit1</class><br />
<community>bandit</community><br />
<money min="10000" max="100000" infinitive="0"></money><br />
<br />
<rank>1300</rank><br />
<reputation>50</reputation><br />
<br />
<visual>actors\bandit\stalker_bandit_3</visual><br />
<snd_config>characters_voice\human_01\bandit\</snd_config><br />
<crouch_type>1</crouch_type><br />
<br />
<supplies><br />
[spawn] \n<br />
wpn_ak74 = 1, scope \n<br />
ammo_5.45x39_fmj = 1 \n<br />
</supplies><br />
<br />
<start_dialog>hello_dialog</start_dialog> <br />
<actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog><br />
</specific_character><br />
<br />
<specific_character id="esc_new_atack_bandit2" no_random = "1"><br />
<name>GENERATE_NAME_stalker</name><br />
<icon>ui_npc_u_stalker_bandit_3</icon><br />
<map_icon x="1" y="4"></map_icon><br />
<bio>esc_new_atack_bandit2_bio</bio><br />
<br />
<class>esc_new_atack_bandit2</class><br />
<community>bandit</community><br />
<money min="10000" max="100000" infinitive="0"></money><br />
<br />
<rank>1200</rank><br />
<reputation>50</reputation><br />
<br />
<visual>actors\bandit\stalker_bandit_3</visual><br />
<snd_config>characters_voice\human_01\bandit\</snd_config><br />
<crouch_type>1</crouch_type><br />
<br />
<supplies><br />
[spawn] \n<br />
wpn_ak74 = 1, scope \n<br />
ammo_5.45x39_fmj = 1 \n<br />
</supplies><br />
<br />
<start_dialog>hello_dialog</start_dialog> <br />
<actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog><br />
</specific_character><br />
<br />
<specific_character id="esc_new_atack_bandit3" no_random = "1"><br />
<name>GENERATE_NAME_stalker</name><br />
<icon>ui_npc_u_stalker_bandit_3</icon><br />
<map_icon x="1" y="4"></map_icon><br />
<bio>esc_new_atack_bandit3_bio</bio><br />
<br />
<class>esc_new_atack_bandit3</class><br />
<community>bandit</community><br />
<money min="10000" max="100000" infinitive="0"></money><br />
<br />
<rank>1200</rank><br />
<reputation>50</reputation><br />
<br />
<visual>actors\bandit\stalker_bandit_3</visual><br />
<snd_config>characters_voice\human_01\bandit\</snd_config><br />
<crouch_type>1</crouch_type><br />
<br />
<supplies><br />
[spawn] \n<br />
wpn_ak74 = 1, scope \n<br />
ammo_5.45x39_fmj = 1 \n<br />
</supplies><br />
<br />
<start_dialog>hello_dialog</start_dialog> <br />
<actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog><br />
</specific_character><br />
<br />
<specific_character id="esc_new_atack_bandit4" no_random = "1"><br />
<name>GENERATE_NAME_stalker</name><br />
<icon>ui_npc_u_stalker_bandit_3</icon><br />
<map_icon x="1" y="4"></map_icon><br />
<bio>esc_new_atack_bandit4_bio</bio><br />
<br />
<class>esc_new_atack_bandit4</class><br />
<community>bandit</community><br />
<money min="10000" max="100000" infinitive="0"></money><br />
<br />
<rank>1200</rank><br />
<reputation>50</reputation><br />
<br />
<visual>actors\bandit\stalker_bandit_3</visual><br />
<snd_config>characters_voice\human_01\bandit\</snd_config><br />
<crouch_type>1</crouch_type><br />
<br />
<supplies><br />
[spawn] \n<br />
wpn_ak74 = 1, scope \n<br />
ammo_5.45x39_fmj = 1 \n<br />
</supplies><br />
<br />
<start_dialog>hello_dialog</start_dialog> <br />
<actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog><br />
</specific_character><br />
<br />
<specific_character id="esc_new_atack_bandit5" no_random = "1"><br />
<name>GENERATE_NAME_stalker</name><br />
<icon>ui_npc_u_stalker_bandit_3</icon><br />
<map_icon x="1" y="4"></map_icon><br />
<bio>esc_new_atack_bandit5_bio</bio><br />
<br />
<class>esc_new_atack_bandit5</class><br />
<community>bandit</community><br />
<money min="10000" max="100000" infinitive="0"></money><br />
<br />
<rank>1200</rank><br />
<reputation>50</reputation><br />
<br />
<visual>actors\bandit\stalker_bandit_3</visual><br />
<snd_config>characters_voice\human_01\bandit\</snd_config><br />
<crouch_type>1</crouch_type><br />
<br />
<supplies><br />
[spawn] \n<br />
wpn_ak74 = 1, scope \n<br />
ammo_5.45x39_fmj = 1 \n<br />
</supplies><br />
<br />
<start_dialog>hello_dialog</start_dialog> <br />
<actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog><br />
</specific_character><br />
<br />
<specific_character id="esc_new_atack_bandit6" no_random = "1"><br />
<name>GENERATE_NAME_stalker</name><br />
<icon>ui_npc_u_stalker_bandit_3</icon><br />
<map_icon x="1" y="4"></map_icon><br />
<bio>esc_new_atack_bandit6_bio</bio><br />
<br />
<class>esc_new_atack_bandit6</class><br />
<community>bandit</community><br />
<money min="10000" max="100000" infinitive="0"></money><br />
<br />
<rank>1200</rank><br />
<reputation>50</reputation><br />
<br />
<visual>actors\bandit\stalker_bandit_3</visual><br />
<snd_config>characters_voice\human_01\bandit\</snd_config><br />
<crouch_type>1</crouch_type><br />
<br />
<supplies><br />
[spawn] \n<br />
wpn_ak74 = 1, scope \n<br />
ammo_5.45x39_fmj = 1 \n<br />
</supplies><br />
<br />
<start_dialog>hello_dialog</start_dialog> <br />
<actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog><br />
</specific_character><br />
<br />
6. Создадим их профили! <br />
Открываем файл: «npc_profile_new.xml», а в нём пишем:<br />
<br />
(Между <xml> и </xml>)<br />
<br />
<character id="esc_new_atack_bandit1"> <br />
<class>esc_new_atack_bandit1</class> <br />
<specific_character>esc_new_atack_bandit1</specific_character> <br />
</character><br />
<character id="esc_new_atack_bandit2"> <br />
<class>esc_new_atack_bandit2</class> <br />
<specific_character>esc_new_atack_bandit2</specific_character> <br />
</character><br />
<character id="esc_new_atack_bandit3"> <br />
<class>esc_new_atack_bandit3</class> <br />
<specific_character>esc_new_atack_bandit3</specific_character> <br />
</character><br />
<character id="esc_new_atack_bandit4"> <br />
<class>esc_new_atack_bandit4</class> <br />
<specific_character>esc_new_atack_bandit4</specific_character> <br />
</character><br />
<character id="esc_new_atack_bandit5"> <br />
<class>esc_new_atack_bandit5</class> <br />
<specific_character>esc_new_atack_bandit5</specific_character> <br />
</character><br />
<character id="esc_new_atack_bandit6"> <br />
<class>esc_new_atack_bandit6</class> <br />
<specific_character>esc_new_atack_bandit6</specific_character> <br />
</character><br />
7. Открываем «spawn_sections.ltx», и в самом конце пишем:<br />
<br />
[esc_new_atack_bandit6_spawn]:stalker_trader <br />
character_profile = esc_new_atack_bandit6<br />
spec_rank = veteran <br />
community = bandit <br />
use_single_item_rule = off <br />
can_select_items = off <br />
custom_data = scripts\esc_new_atack_bandit6.ltx<br />
<br />
[esc_new_atack_bandit5_spawn]:stalker_trader <br />
character_profile = esc_new_atack_bandit5<br />
spec_rank = veteran <br />
community = bandit <br />
use_single_item_rule = off <br />
can_select_items = off <br />
custom_data = scripts\esc_new_atack_bandit5.ltx<br />
<br />
[esc_new_atack_bandit4_spawn]:stalker_trader <br />
character_profile = esc_new_atack_bandit4<br />
spec_rank = veteran <br />
community = bandit <br />
use_single_item_rule = off <br />
can_select_items = off <br />
custom_data = scripts\esc_new_atack_bandit4.ltx<br />
<br />
[esc_new_atack_bandit3_spawn]:stalker_trader <br />
character_profile = esc_new_atack_bandit3<br />
spec_rank = veteran <br />
community = bandit <br />
use_single_item_rule = off <br />
can_select_items = off <br />
custom_data = scripts\esc_new_atack_bandit3.ltx<br />
<br />
[esc_new_atack_bandit2_spawn]:stalker_trader <br />
character_profile = esc_new_atack_bandit2<br />
spec_rank = veteran <br />
community = bandit <br />
use_single_item_rule = off <br />
can_select_items = off <br />
custom_data = scripts\esc_new_atack_bandit2.ltx<br />
<br />
[esc_new_atack_bandit1_spawn]:stalker_trader <br />
character_profile = esc_new_atack_bandit1<br />
spec_rank = veteran <br />
community = bandit <br />
use_single_item_rule = off <br />
can_select_items = off <br />
custom_data = scripts\esc_new_atack_bandit1.ltx<br />
<br />
8. Открываем «gamedata\config\scripts» и там создаём 6 файлов логики:<br />
<br />
'''1 файл логики''' – «esc_new_atack_bandit1.ltx», в нём пишем:<br />
<br />
;SNIPER ADDON<br />
;Меченый(Стрелок)<br />
[logic]<br />
active = remark@search<br />
on_death = death<br />
<br />
[death]<br />
on_info = %+esc_new_atack_bandit1_dead%<br />
<br />
[remark@fire]<br />
combat_ignore_cond = {!is_sniper_enemy}<br />
radius = 0<br />
anim = hide<br />
on_info = {=health_le(0.5)} remark@search<br />
wounded = wounded@work<br />
sniper = true<br />
<br />
[remark@search]<br />
combat_ignore_cond = true<br />
combat_ignore_keep_when_attacked = false<br />
anim = hide<br />
target = actor<br />
on_info = {=see_enemy} remark@fire<br />
wounded = wounded@work<br />
<br />
[smart_terrains]<br />
none = true<br />
<br />
[wounded@work]<br />
hp_state = 0|wounded_heavy@help_heavy<br />
hp_state_see = 0|wounded_heavy@help_heavy<br />
hp_victim = 0|nil<br />
hp_fight = 0|false<br />
hp_cover = 0|false<br />
<br />
'''2 файл логики''' – «esc_new_atack_bandit2.ltx», в нём пишем:<br />
<br />
;SNIPER ADDON<br />
;Меченый(Стрелок)<br />
[logic]<br />
active = remark@search<br />
on_death = death<br />
<br />
[death]<br />
on_info = %+esc_new_atack_bandit2_dead%<br />
<br />
[remark@fire]<br />
combat_ignore_cond = {!is_sniper_enemy}<br />
radius = 0<br />
anim = hide<br />
on_info = {=health_le(0.5)} remark@search<br />
wounded = wounded@work<br />
sniper = true<br />
<br />
[remark@search]<br />
combat_ignore_cond = true<br />
combat_ignore_keep_when_attacked = false<br />
anim = hide<br />
target = actor<br />
on_info = {=see_enemy} remark@fire<br />
wounded = wounded@work<br />
<br />
[smart_terrains]<br />
none = true<br />
<br />
[wounded@work]<br />
hp_state = 0|wounded_heavy@help_heavy<br />
hp_state_see = 0|wounded_heavy@help_heavy<br />
hp_victim = 0|nil<br />
hp_fight = 0|false<br />
hp_cover = 0|false<br />
<br />
'''3 файл логики''' – «esc_new_atack_bandit3.ltx», в нём пишем:<br />
<br />
;SNIPER ADDON<br />
;Меченый(Стрелок)<br />
[logic]<br />
active = remark@search<br />
on_death = death<br />
<br />
[death]<br />
on_info = %+esc_new_atack_bandit3_dead%<br />
<br />
[remark@fire]<br />
combat_ignore_cond = {!is_sniper_enemy}<br />
radius = 0<br />
anim = hide<br />
on_info = {=health_le(0.5)} remark@search<br />
wounded = wounded@work<br />
sniper = true<br />
<br />
[remark@search]<br />
combat_ignore_cond = true<br />
combat_ignore_keep_when_attacked = false<br />
anim = hide<br />
target = actor<br />
on_info = {=see_enemy} remark@fire<br />
wounded = wounded@work<br />
<br />
[smart_terrains]<br />
none = true<br />
<br />
[wounded@work]<br />
hp_state = 0|wounded_heavy@help_heavy<br />
hp_state_see = 0|wounded_heavy@help_heavy<br />
hp_victim = 0|nil<br />
hp_fight = 0|false<br />
hp_cover = 0|false<br />
<br />
<br />
'''4 файл логики''' – «esc_new_atack_bandit4.ltx», в нём пишем:<br />
<br />
;SNIPER ADDON<br />
;Меченый(Стрелок)<br />
[logic]<br />
active = remark@search<br />
on_death = death<br />
<br />
[death]<br />
on_info = %+esc_new_atack_bandit4_dead%<br />
<br />
[remark@fire]<br />
combat_ignore_cond = {!is_sniper_enemy}<br />
radius = 0<br />
anim = hide<br />
on_info = {=health_le(0.5)} remark@search<br />
wounded = wounded@work<br />
sniper = true<br />
<br />
[remark@search]<br />
combat_ignore_cond = true<br />
combat_ignore_keep_when_attacked = false<br />
anim = hide<br />
target = actor<br />
on_info = {=see_enemy} remark@fire<br />
wounded = wounded@work<br />
<br />
[smart_terrains]<br />
none = true<br />
<br />
[wounded@work]<br />
hp_state = 0|wounded_heavy@help_heavy<br />
hp_state_see = 0|wounded_heavy@help_heavy<br />
hp_victim = 0|nil<br />
hp_fight = 0|false<br />
hp_cover = 0|false<br />
<br />
<br />
<br />
'''5 файл логики''' – «esc_new_atack_bandit5.ltx», в нём пишем:<br />
<br />
;SNIPER ADDON<br />
;Меченый(Стрелок)<br />
[logic]<br />
active = remark@search<br />
on_death = death<br />
<br />
[death]<br />
on_info = %+esc_new_atack_bandit5_dead%<br />
<br />
[remark@fire]<br />
combat_ignore_cond = {!is_sniper_enemy}<br />
radius = 0<br />
anim = hide<br />
on_info = {=health_le(0.5)} remark@search<br />
wounded = wounded@work<br />
sniper = true<br />
<br />
[remark@search]<br />
combat_ignore_cond = true<br />
combat_ignore_keep_when_attacked = false<br />
anim = hide<br />
target = actor<br />
on_info = {=see_enemy} remark@fire<br />
wounded = wounded@work<br />
<br />
[smart_terrains]<br />
none = true<br />
<br />
[wounded@work]<br />
hp_state = 0|wounded_heavy@help_heavy<br />
hp_state_see = 0|wounded_heavy@help_heavy<br />
hp_victim = 0|nil<br />
hp_fight = 0|false<br />
hp_cover = 0|false<br />
<br />
'''6 файл логики''' – «esc_new_atack_bandit6.ltx», в нём пишем:<br />
<br />
;SNIPER ADDON<br />
;Меченый(Стрелок)<br />
[logic]<br />
active = remark@search<br />
on_death = death<br />
<br />
[death]<br />
on_info = %+esc_new_atack_bandit6_dead%<br />
<br />
[remark@fire]<br />
combat_ignore_cond = {!is_sniper_enemy}<br />
radius = 0<br />
anim = hide<br />
on_info = {=health_le(0.5)} remark@search<br />
wounded = wounded@work<br />
sniper = true<br />
<br />
[remark@search]<br />
combat_ignore_cond = true<br />
combat_ignore_keep_when_attacked = false<br />
anim = hide<br />
target = actor<br />
on_info = {=see_enemy} remark@fire<br />
wounded = wounded@work<br />
<br />
[smart_terrains]<br />
none = true<br />
<br />
[wounded@work]<br />
hp_state = 0|wounded_heavy@help_heavy<br />
hp_state_see = 0|wounded_heavy@help_heavy<br />
hp_victim = 0|nil<br />
hp_fight = 0|false<br />
hp_cover = 0|false<br />
<br />
Всё, логика прописана!<br />
<br />
9. Открываем «dialogs_new.xml», и в нём пишем:<br />
<br />
(Между <game_dialogs> и </game_dialogs>):<br />
<br />
<dialog id="esc_new_wolf_my1_dialog"><br />
<has_info>new_my_test_kqest_done</has_info><br />
<dont_has_info>new_my_test_kqest_ok</dont_has_info><br />
<phrase_list><br />
<phrase id="0"><br />
<text>Волк, ну ты как, жив?</text><br />
<next>1</next><br />
</phrase><br />
<phrase id="1"><br />
<text>Да, Ха-ха, как мы их?</text><br />
<next>2</next><br />
</phrase><br />
<phrase id="2"><br />
<text>Плохо, друг мой, плохо...</text><br />
<next>3</next><br />
</phrase><br />
<phrase id="3"><br />
<text>Вот спасибо тебе... Вот, держи, чем богат...</text><br />
<action>new_dialog.buxlo_1</action><br />
<next>4</next><br />
</phrase><br />
<phrase id="4"><br />
<text>Спасибо!</text><br />
<give_info>new_my_test_kqest_ok</give_info><br />
<action>dialogs.break_dialog</action><br />
</phrase><br />
</phrase_list><br />
</dialog><br />
<br />
<dialog id="esc_new_wolf_my2_dialog"><br />
<dont_has_info>new_my_test_kqest_start</dont_has_info><br />
<phrase_list><br />
<phrase id="0"><br />
<text>Волк, а что ты весь дрожишь?</text><br />
<next>1</next><br />
</phrase><br />
<phrase id="1"><br />
<text>Да с минуты на минуту бандиты нападут...</text><br />
<next>2</next><br />
</phrase><br />
<phrase id="2"><br />
<text>Я тебе помогу отбиться, хорошо?</text><br />
<next>3</next><br />
</phrase><br />
<phrase id="3"><br />
<text>Вот спасибо тебе Меченый, век буду благодарен!</text><br />
<next>4</next><br />
</phrase><br />
<phrase id="4"><br />
<text>Хватит сопли распускать, с минуты на минуту бандиты подойдут!</text><br />
<give_info>new_my_test_kqest_start</give_info><br />
<action>new_dialog.esc_new_atack_bandit1</action><br />
<action>new_dialog.esc_new_atack_bandit2</action><br />
<action>new_dialog.esc_new_atack_bandit3</action><br />
<action>new_dialog.esc_new_atack_bandit4</action><br />
<action>new_dialog.esc_new_atack_bandit5</action><br />
<action>new_dialog.esc_new_atack_bandit6</action><br />
<action>dialogs.break_dialog</action><br />
</phrase><br />
</phrase_list><br />
</dialog><br />
<br />
10. Открываем «character_desc_escape.xml» и заменяем:<br />
<br />
<!---------------------------------------esc_wolf-----------------------------------------------------><br />
<specific_character id="esc_wolf" team_default = "1"><br />
<name>esc_wolf_name</name><br />
<icon>ui_npc_u_stalker_neytral_balon_1</icon><br />
<bio>esc_wolf_bio</bio><br />
<br />
<class>esc_wolf</class><br />
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect><br />
<br />
<rank>434</rank><br />
<reputation>5</reputation><br />
<money min="600" max="2000" infinitive="0"/><br />
<br />
<snd_config>characters_voice\human_01\stalker\</snd_config><br />
<crouch_type>-1</crouch_type><br />
<br />
<visual>actors\neytral\stalker_neytral_balon_1</visual><br />
<supplies><br />
[spawn] \n<br />
wpn_pm \n<br />
ammo_9x18_fmj = 1 \n<br />
wpn_ak74u \n<br />
ammo_5.45x39_fmj \n<br />
device_torch \n<br />
hand_radio \n<br />
</supplies><br />
<br />
#include "gameplay\character_criticals_4.xml"<br />
<br />
<start_dialog>escape_lager_volk_talk</start_dialog><br />
<start_dialog>dm_hello_dialog</start_dialog><br />
<actor_dialog>dm_cool_info_dialog</actor_dialog><br />
<actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog><br />
<actor_dialog>tm_wolf_dialog</actor_dialog><br />
<actor_dialog>tm_wolf_reward</actor_dialog><br />
</specific_character> <br />
<br />
На:<br />
<br />
<!---------------------------------------esc_wolf-----------------------------------------------------><br />
<specific_character id="esc_wolf" team_default = "1"><br />
<name>esc_wolf_name</name><br />
<icon>ui_npc_u_stalker_neytral_balon_1</icon><br />
<bio>esc_wolf_bio</bio><br />
<br />
<class>esc_wolf</class><br />
<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect><br />
<br />
<rank>434</rank><br />
<reputation>5</reputation><br />
<money min="600" max="2000" infinitive="0"/><br />
<br />
<snd_config>characters_voice\human_01\stalker\</snd_config><br />
<crouch_type>-1</crouch_type><br />
<br />
<visual>actors\neytral\stalker_neytral_balon_1</visual><br />
<supplies><br />
[spawn] \n<br />
wpn_pm \n<br />
ammo_9x18_fmj = 1 \n<br />
wpn_ak74u \n<br />
ammo_5.45x39_fmj \n<br />
device_torch \n<br />
hand_radio \n<br />
</supplies><br />
<br />
#include "gameplay\character_criticals_4.xml"<br />
<br />
<start_dialog>escape_lager_volk_talk</start_dialog><br />
<start_dialog>dm_hello_dialog</start_dialog><br />
<actor_dialog>dm_cool_info_dialog</actor_dialog><br />
<actor_dialog>esc_new_wolf_my1_dialog _dialog</actor_dialog><br />
<actor_dialog>esc_new_wolf_my2_dialog _dialog</actor_dialog><br />
<actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog><br />
<actor_dialog>tm_wolf_dialog</actor_dialog><br />
<actor_dialog>tm_wolf_reward</actor_dialog><br />
</specific_character><br />
<br />
<br />
11. Открываем «tasks_new.xml» и в нём пишем:<br />
<br />
<game_task id="new_my_test_kqest"><br />
<title>Помoщь Волку.</title><br />
<objective><br />
<text>Помощь Волку.</text><br />
<icon>ui_iconsTotal_kill_stalker</icon> <br />
<infoportion_complete>new_my_test_kqest_ok</infoportion_complete><br />
</objective><br />
<objective><br />
<text>Отбиться от атаки бандитов.</text><br />
<icon height="50" width="50" x="100" y="50">ui\ui_icons_task</icon><br />
<function_complete>new_dialog.bandit_esc_new_atack1</function_complete><br />
<infoportion_set_complete>new_my_test_kqest_done</infoportion_set_complete><br />
</objective><br />
<objective><br />
<text>Поговорить с Волком.</text><br />
<map_location_type hint="Волк">blue_location</map_location_type><br />
<object_story_id>Escape_novice_lager_volk</object_story_id><br />
<infoportion_complete>new_my_test_kqest_ok</infoportion_complete><br />
</objective><br />
</game_task><br />
<br />
12. Открываем «info_new.xml» и между <game_information_portions> и </game_information_portions> пишем:<br />
<br />
<info_portion id="new_my_test_kqest_start"><br />
<task>new_my_test_kqest</task><br />
</info_portion><br />
<br />
<info_portion id="new_my_test_kqest_done"></info_portion><br />
<info_portion id="new_my_test_kqest_ok"></info_portion><br />
<br />
13. Открываем папку «gamedata\scripts», находим файл с названием «new_dialog.script», а в нём пишем: <br />
<br />
function esc_new_atack_bandit1() <br />
alife():create("esc_new_atack_bandit1_spawn",vector():set(-143.35,-14.14,-148.33),106957,45)<br />
end<br />
function esc_new_atack_bandit2() <br />
alife():create("esc_new_atack_bandit2_spawn",vector():set(-143.35,-14.14,-148.33),106957,45)<br />
end<br />
function esc_new_atack_bandit3() <br />
alife():create("esc_new_atack_bandit3_spawn",vector():set(-148.29,-16.89,-138.57),101805,45)<br />
end<br />
function esc_new_atack_bandit4() <br />
alife():create("esc_new_atack_bandit4_spawn",vector():set(-148.29,-16.89,-138.57),101805,45)<br />
end<br />
function esc_new_atack_bandit5() <br />
alife():create("esc_new_atack_bandit5_spawn",vector():set(-156.04,-18.30,-153.79),93649,45)<br />
end<br />
function esc_new_atack_bandit6() <br />
alife():create("esc_new_atack_bandit6_spawn",vector():set(-156.04,-18.30,-153.79),93649,45)<br />
end<br />
<br />
<br />
<tt>function bandit_esc_new_atack1(task, info)<br><br />
if (db.actor:has_info("esc_new_atack_bandit1_dead") and db.actor:has_info("esc_new_atack_bandit2_dead") and db.actor:has_info("esc_new_atack_bandit3_dead") and db.actor:has_info("esc_new_atack_bandit4_dead") and db.actor:has_info("esc_new_atack_bandit5_dead") and db.actor:has_info("esc_new_atack_bandit6_dead")) then<br><br />
return db.actor:give_info_portion("new_my_test_kqest_done") <br><br />
end<br><br />
return false<br><br />
end</tt><br />
<br />
function buxlo_1(first_speaker, second_speaker)<br />
dialogs.relocate_money(second_speaker, 10000, "in")<br />
end<br />
<br />
<br />
Всё, поздравляю, вы написали новый квест! Он будет у Волка… Желательно его выполнять после квеста с флешкой Шустрого!<br />
[[Категория:Статьи участников]]</div>Nubihttps://legacy-sdk.stalker-game.com/ru/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%BF%D0%B5%D1%80%D0%B5%D1%82%D0%B0%D1%81%D0%BA%D0%B8%D0%B2%D0%B0%D1%82%D1%8C_%D1%82%D0%B5%D0%BB%D0%B0_%D0%BC%D1%83%D1%82%D0%B0%D0%BD%D1%82%D0%BE%D0%B2Как перетаскивать тела мутантов2011-02-20T14:19:44Z<p>Описание изменений: </p>
<hr />
<div>== Перетаскивание тел мутантов ==<br />
<br />
Для этого нам понадобиться:<br />
1) Распакованные ресурсы игры;<br />
2) Блокнот или любой другой текстовый редактор;<br />
3) Голова(надеюсь, она есть у всех).<br />
Ну, что ж начнем!<br />
Заходим в папку config, там есть файл system.ltx открываем его блокнотом.<br />
В конце файла находим:<br />
<pre>[ph_capture_visuals]<br />
<br />
//Список объектов которые можно таскать.<br />
<br />
//bandit<br />
actors\bandit\stalker_bandit_1<br />
actors\bandit\stalker_bandit_2<br />
actors\bandit\stalker_bandit_3<br />
...<br />
actors\monolit\stalker_mo_head1<br />
actors\monolit\stalker_mo_hood_9<br />
actors\monolit\stalker_mo_mask<br />
actors\monolit\stalker_mo_nauchniy<br />
</pre> <br />
Например, чтобы можно было таскать труп собаки, дописываем в конце:<br />
<pre>monsters\dog\dog</pre><br />
[[Категория:Статьи участников]]</div>Strelok 2.0https://legacy-sdk.stalker-game.com/ru/index.php?title=%D0%9E%D0%B1%D1%85%D0%BE%D0%B4_%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D0%B9_mp_ranks.ltx_%28%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D1%80%D0%B5%D0%BA%D1%80%D0%B8%D1%82%D0%B0%29Обход ограничений mp ranks.ltx (метод рекрита)2010-11-03T18:04:19Z<p>Описание изменений: </p>
<hr />
<div>Многие модмейкеры которые создают апгрейд оружия да и вообще новое оружие в особенности улучшенное сталкиваются с проблемой переполнения количества байт информации в секции файла mp_ranks.ltx Я же также не исключение, при составлении скрипта апгрейда оружия все шло отлично, тест также прошел на 5, но когда апгрейд стал подходить к концу, то есть необходимо было прописать все апгрейды оружия в ранги то тут произошел вылет. А прописал всего апгрейд ток для одного оружия. Но из всякой проблемы можно найти логический выход. Предлагаю свой, он был разработан не только мной но и моим но и коллегой spark95, на базе проекта S.I.P. Этот метод называется «рекрит» (REcreate) работает без вылетов на 99%.<br />
Алгоритм.<br />
Для начала необходимо продумать что и как когда и при каких условиях будет работать скрипт, так как мы его разрабатывали для нашего мода то примеры и все составляющие будут полностью либо частично взяты из модификации.<br />
<pre>1.Объект выбрасывается<br />
2.Подбирается НПС</pre><br />
И если оружие не прописано в рангах то вылет. Значит нужно чтобы НПС подбирал то оружие которое прописано в рангах значит нужно удалить то непрописанное выбрасываемое оружие и заспавнить на его месте точно такое же но прописанное в рангах, причем визуал и основные характеристики должны соответствовать тому выбрасываемому оружию (дабы не нарушить игровой процесс и симуляцию). Такой способ можно достичь путем снятия нет-пакета с выбрасываемого оружия и записи его на такое же оружие но не апгрейдное. Для начала отследим само выбрасывание:<br />
Открываем bind_stalker.script и напишем функцию с условием при котором будет производиться удаление:<br />
<pre>local sip_b = 1 –переменная при определении которой будет производиться действие, по дефолту 1<br />
function sip_bool(flag) – функция которая запускается сторонней функцией из другого скрипта дабы не совершить вылета, аргумент = число<br />
if flag == 1 then<br />
sip_b = 1<br />
else sip_b = 0<br />
end<br />
end</pre><br />
операция присвоения производиться соответственно, дабы не спутать.<br />
ищем:<br />
<pre>function actor_binder:on_item_drop (obj)<br />
level_tasks.proceed(self.object)<br />
end </pre><br />
Эта функция отслеживает выбрасывание чего-либо из инвентаря ГГ. И изменим так:<br />
<pre>function actor_binder:on_item_drop (obj)<br />
level_tasks.proceed(self.object)<br />
if sip_b == 1 then<br />
project_sip.delete_weapon(obj)<br />
end<br />
end</pre><br />
Что позволит обойти тот момент записи нет-пакета в несуществующий объект.<br />
Далее создаем скрипт project_sip.script и пишем в него следующее:<br />
<pre>local sects = {}<br />
local tab_id = {}<br />
local tab_old_id = {}<br />
local now_wpn_id<br />
local sect_old<br />
local sect – присвоим позже оригинальную секцию оружия которая в последующем будет использована для спавна<br />
local orig_sect –переменной будет присвоена секция оружия <br />
local count = 0<br />
local num<br />
local new_id<br />
local name – будет присвоено оригинальное название оружия<br />
function delete_weapon(weapon) –функция удаления оружия, аргумент сам объект <br />
--таблица оружий которые прописаны в рангах<br />
local wpn_tab = {"wpn_abakan","wpn_rpg7","wpn_ak74","wpn_fn2000","wpn_g36","wpn_groza","wpn_l85",<br />
"wpn_lr300","wpn_mp5","wpn_rpg7","wpn_sig550","wpn_val","wpn_spas12","wpn_toz34","wpn_wincheaster1300",<br />
"wpn_svd","wpn_svu","wpn_vintorez","wpn_beretta","wpn_colt1911","wpn_desert_eagle",<br />
"wpn_fort","wpn_hpsa","wpn_pb","wpn_pm","wpn_sig220","wpn_walther"}<br />
<br />
local wpn = weapon:section()<br />
orig_sect = wpn<br />
local pos_act = db.actor:position()<br />
pos_act.x = pos_act.x + 0.3<br />
-–оружие будет спавниться не в инвентарь к ГГ а в 30см от него,<br />
--ибо при спавне в инвентарь нет-пакет в оружие не записывается.<br />
--ниже проверяем что оружие действительно апгрейдное<br />
--(в данном случае идет проверка не только на то что оружие апгрейдное<br />
--но еще и на то что оружие имеет секцию смены визуала)<br />
if string.find(wpn,"list") or string.find(wpn,"prugina") or string.find(wpn,"tormoz")<br />
or string.find(wpn,"sv1") or string.find(wpn,"sv2") or string.find(wpn,"sv3") or string.find(wpn,"sv4") then<br />
for k = 1, #wpn_tab do –запускаем цикл на выявление оригинала оружия (прописанного в рангах)<br />
name = k<br />
if string.find(wpn,wpn_tab[name]) then<br />
sect = wpn_tab[name]<br />
break –если условие выполняется то преждевременно останавливаем выполнение цикла<br />
end<br />
end<br />
--ниже происходит запись в таблицы данных о секциях<br />
table.insert(sects,orig_sect)<br />
table.insert(tab_old_id,weapon:id())<br />
--производим снятие нет-пакета, для этого подготовливаем все условия для этого<br />
local n_obj = alife():object(weapon:id()) – определяем объект<br />
local func_net = net_pack_sip.wpn_d_r(n_obj) – снимаем нет-пакет объекта<br />
alife():release(n_obj,true)<br />
local sobj = alife():create(sect,pos_act,db.actor:level_vertex_id(),db.actor:game_vertex_id()) – присвоим но не заспавним объект<br />
if sobj then<br />
table.insert(tab_id,sobj.id) – запишем id оружия в таблицу для дальнейшей работы с ним<br />
net_pack_sip.wpn_d_w(func_net,sobj) – запишем на это оружие весь нет-пакет удаленного оружия<br />
end<br />
end<br />
return sobj – заспавним оружие<br />
end</pre><br />
Вот практически можно сказать что все, однако когда ГГ возьмет это оружие то оно уже не будет таким каким оно было до выбрасывания!!! <br />
Исправим эту ситуацию.<br />
В биндере найдем следующий код:<br />
<pre>function actor_binder:on_item_take (obj)<br />
level_tasks.proceed(self.object)<br />
end<br />
и изменим так:<br />
function actor_binder:on_item_take (obj)<br />
level_tasks.proceed(self.object)<br />
project_sip.spawn_old_wpn(obj)<br />
end</pre><br />
Эта функция отслеживает момент взятия ГГ какого-либо объекта, аргумент сам объект.<br />
В project_sip.script пропишем следующий код:<br />
<pre>function spawn_old_wpn(obj)<br />
for k = 1, #tab_id do<br />
-–запускаем цикл на вычисление идетификатора оружия которое было создано в момент удаления апгрейдного оружия<br />
--(секция которого была записана ранее)<br />
if obj:id() == tab_id[k] then <br />
num = k<br />
now_wpn_id = tab_id[num] --получаем id объекта <br />
sect_old = sects[num] – получаем секцию удаленного апгрейдного оружия<br />
spawn_del_weap(sect_old,now_wpn_id) – запускаем функцию снятия и записи нет-пакета в новое оружие, дабы не нарушить симуляцию<br />
break<br />
end<br />
end<br />
end<br />
--прототип данной функции не требует комментария, ибо расписывался ранее<br />
function spawn_del_weap(sect_old,now_wpn_id)<br />
local pos_act = db.actor:position()<br />
pos_act.x = pos_act.x + 0.3<br />
local n_obj = alife():object(now_wpn_id)<br />
local func_net = net_pack_sip.wpn_d_r(n_obj)<br />
alife():release(n_obj,true)<br />
local sobj = alife():create(sect_old,pos_act,db.actor:level_vertex_id(),db.actor:game_vertex_id())<br />
if sobj then<br />
new_id = sobj.id – записываем id оружия для перевода его к ГГ<br />
net_pack_sip.wpn_d_w(func_net,sobj)<br />
end<br />
return sobj<br />
end<br />
<br />
function transfer_new_wpn() – данная функция предназначена для перевода нового заспавненго оружия (апгрейдного к ГГ)<br />
if new_id ~= nil then<br />
local wpn = level.object_by_id(new_id)<br />
if wpn then<br />
db.actor:transfer_item(wpn,db.actor)<br />
new_id = nil<br />
end<br />
else return<br />
end<br />
end</pre><br />
Далее в биндере найдем:<br />
<pre>function actor_binder:update(delta)<br />
object_binder.update(self, delta)</pre><br />
и ниже напишем:<br />
<pre>project_sip.transfer_new_wpn() – для перевода оружия к ГГ</pre><br />
скрипт net_pack_sip.script в котором напишем следующий код:<br />
<br />
<pre>function wpn_d_r(sobj)<br />
local sv_sip = net_packet()<br />
sobj:STATE_Write(sv_sip)<br />
local size = sv_sip:w_tell()<br />
sv_sip:r_seek(0)<br />
local tab_config = {object_pack = {},visual_pack = {},item_pack = {},item_wpn_packet = {}}<br />
<br />
local function up_vis_pack(visual_pack,sv_sip,size)<br />
visual_pack.visual_name = sv_sip:r_stringZ()<br />
visual_pack.vsu8u1 = sv_sip:r_u8()<br />
return visual_pack<br />
end<br />
<br />
tab_config.object_pack.gvid = sv_sip:r_u16()<br />
tab_config.object_pack.obf32u1 = sv_sip:r_float()<br />
tab_config.object_pack.obs32u2 = sv_sip:r_s32()<br />
tab_config.object_pack.lvid = sv_sip:r_s32()<br />
tab_config.object_pack.oflags = sv_sip:r_s32()<br />
tab_config.object_pack.custom = sv_sip:r_stringZ()<br />
tab_config.object_pack.sid = sv_sip:r_s32()<br />
tab_config.object_pack.obs32u3 = sv_sip:r_s32()<br />
<br />
up_vis_pack(tab_config.visual_pack,sv_sip,size)<br />
<br />
tab_config.item_pack.condition = sv_sip:r_float()<br />
<br />
tab_config.item_wpn_packet.ammo_current = sv_sip:r_u16()<br />
tab_config.item_wpn_packet.ammo_elapsed = sv_sip:r_u16()<br />
tab_config.item_wpn_packet.weapon_state = sv_sip:r_u8()<br />
tab_config.item_wpn_packet.addon_flags = sv_sip:r_u8()<br />
tab_config.item_wpn_packet.ammo_type = sv_sip:r_u8()<br />
<br />
return tab_config<br />
end<br />
<br />
function wpn_d_w(tab_config,sobj)<br />
local sv_sip = net_packet()<br />
local function vis_pack_rd(visual_pack,sv_sip)<br />
sv_sip:w_stringZ(visual_pack.visual_name)<br />
sv_sip:w_u8(visual_pack.vsu8u1)<br />
return visual_pack<br />
end<br />
<br />
sv_sip:w_u16(tab_config.object_pack.gvid)<br />
sv_sip:w_float(tab_config.object_pack.obf32u1)<br />
sv_sip:w_s32(tab_config.object_pack.obs32u2)<br />
sv_sip:w_s32(tab_config.object_pack.lvid)<br />
sv_sip:w_s32(tab_config.object_pack.oflags)<br />
sv_sip:w_stringZ(tab_config.object_pack.custom)<br />
sv_sip:w_s32(tab_config.object_pack.sid)<br />
sv_sip:w_s32(tab_config.object_pack.obs32u3)<br />
<br />
vis_pack_rd(tab_config.visual_pack,sv_sip)<br />
<br />
sv_sip:w_float(tab_config.item_pack.condition)<br />
<br />
sv_sip:w_u16(tab_config.item_wpn_packet.ammo_current)<br />
sv_sip:w_u16(tab_config.item_wpn_packet.ammo_elapsed)<br />
sv_sip:w_u8(tab_config.item_wpn_packet.weapon_state)<br />
sv_sip:w_u8(tab_config.item_wpn_packet.addon_flags)<br />
sv_sip:w_u8(tab_config.item_wpn_packet.ammo_type)<br />
<br />
sv_sip:w_u16(tab_config.object_pack.gvid)<br />
sv_sip:w_float(tab_config.object_pack.obf32u1)<br />
sv_sip:w_s32(tab_config.object_pack.obs32u2)<br />
sv_sip:w_s32(tab_config.object_pack.lvid)<br />
sv_sip:w_s32(tab_config.object_pack.oflags)<br />
sv_sip:w_stringZ(tab_config.object_pack.custom)<br />
sv_sip:w_s32(tab_config.object_pack.sid)<br />
sv_sip:w_s32(tab_config.object_pack.obs32u3)<br />
<br />
local size = sv_sip:w_tell()<br />
sv_sip:r_seek(0)<br />
sobj:STATE_Read(sv_sip,size)<br />
end</pre><br />
<br />
Работа с нет-пакетами будет описана в отдельной статье, объясню лишь общий смысл предназначения нет-пакета. Он предназначен для хранения состояния объекта и его характеристик и по сути своей является буфером обмена, в котором, и храниться вся эта информация, в последующем действии идет запись по определенным таблицам каждого вида характеристик. Во второй функции происходит запись того снятого состояния объекта к новосозданному. Эта операция напоминает алгоритм спавна all.spawn и неспроста! Ибо при статистином ставне через скрипт объекту также присваивается состояние которое записано как дефолтовое, а спавн через нет-пакет предусматривает широкий спектр выбора характеристик спавненного оружия что в положительную сторону влияет на симуляцию.<br />
Ну вот в общем то и все, теперь объясню почему этот метод рекрита работает на 99%. Потому что на выполнение этих всех процессов требуеться время, сам биндер запускается с периодом примерно 0,5 сек. (точно не помню), значит чтобы отследить либо выбрасывание оружия либо наоборот его взятие нужен один период биндера, далее также необходим второй период для перевода нового заспавненного оружия к ГГ, итого не для выполнения всех этих действий требуется как минимум 0,8 сек. Почему не переводиться при первом периоде биндера мне так и не удалось выяснить, но факт есть факт, соответственно если подойти в плотную к НПС и выбросит оружие произойдет вылет, если же произвести выбрасывание на некотором расстоянии к примеру на 10 см, то вылета не будет. Нагрузка на оперативную память не значительна так что можно смело использовать.<br />
В планах совершенствование метода рекрта и доведение его работоспособности до 99,9%<br />
<br />
'''Авторы: Byurrer, spark95''' Project S.I.P <br /><br />
[http://forum.sip-game.ru Форум Project S.I.P]<br />
[[Категория:Расширение геймплея]]</div>Byurrer