Можете объяснить что обозначают эти строчки и чем их заменить в ТЧ?
self.fn:SetElipsis(2,2) -- нашел только в ЧН в файлах ui_load_dialog и ui_save_dialog
function save_item:__init() super()
-- self:SetWndRect (Frect():set(0,0,430,22))
local ca = 255
local cr = 216
local cg = 186
local cb = 140
Stalk15 math.random() <= 0.7 - читается как: "Случайное (рандомное) дробное(!) число из диапазона 0...1 не больше 0,7?"
А это: math.random(1,4) - читается как: "Получить целочисленное число, значение которого в диапазоне 0...4".
Т.е. в результате будешь иметь 4 иль 5 иль 6 иль 7.
Ma$ter
Вот так в Симбионе сделана адаптация под любой вариант игры (ТЧ,ЧН,ЗП):
Код:
if script_server_object_version() >= 8 then --/for STCS|SCOP
self.owner:HideActorMenu()
else --/ for SHOC (закрываем родительское окно)
self:GetHolder():start_stop_menu(self.owner, false)
self.owner:Show(false)
end
для твоего варианта будет где-то так:
Код:
if script_server_object_version() >= 8 then --/for STCS|SCOP
get_hud():HideActorMenu()
else --/ for SHOC (закрываем родительское окно)
self:GetHolder():start_stop_menu(get_hud(), false)
get_hud():Show(false)
end
Насчет 'SetElipsis' и пр. не подскажу пока, ковыряться некогда ...
Сообщение было успешно отредактировано Artos (15-09-2010 16:14 GMT3 часа, назад)
local name = 10
news_manager.send_tip(db.actor, "Что нужно сюда вписать, чтоб в сообщении было написано чему равна name?То есть если name = 10, то в сообщении будет текст "10" и все.", 0, "trader", 5000)
Stalk15
Мне кажется - надо так: news_manager.send_tip(db.actor, tostring(name), 0, "trader", 5000)
или так: name = tostring(10)
news_manager.send_tip(db.actor, name, 0, "trader", 5000)
Artos-у
Эх - "пальцы" мои - "сосиски" - ладно... в общем я понял - я, ещё и варвар...
Реально: "Рефакторинг профи - вещь правильная". Спасибо.
А ошибочку я у тебя нашёл - строка 274: soObl вместо soObj , но пока не дома - ещё не запускал. Одно радует - хоть (полу)рабочие прототипы, я всё-таки собирать могу.
MRN$
Там есть ошибка посущественнее: использовал портированную из ЗП функцию 'vec_to_str', которую я к себе в '_g.script' давно засунул и забыл, что в чистом ТЧ отсутствует.
Кинь, если сочтешь полезной, дополнительно в скрипт скопа:
Код:
--/#+# переводит вектор в строку типа: "x:y:z".
function vec_to_str(vVec)
if type(vVec) == "userdata" and type(vVec.x) == "number" and vVec.y and vVec.z then
return string.format("%d:%d:%d", vVec.x, vVec.y, vVec.z)
end
return string.format("<%s>",type(vVec))
end
- удобно, т.к. не требуется для выводов в логи позиций и направлений манипулировать с Vec.x,Vec.y,Vec.z.
Поправь также оставшиеся ошибки с 'level:name()' -> 'level.name()'? хотя оши и не влияют (не задействованы).
Сообщение было успешно отредактировано Artos (15-09-2010 19:23 GMT3 часа, назад)
Ma$ter А ты посмотри сначала, имеется ли у тебя на двигле данный метод. В ТЧ он отвечает за открытие/закрытие меню. Но.. В ЗП например данного метода уже нету, и за открытие/закрытие меню отвечают уже методы ShowDialog(true)/HideDialog().
singapur22 , Ma$ter
Для закрытия диалогов есть тоже адаптация:
Код:
if script_server_object_version() >= 12 then --/ for SCOP
self:HideDialog()
else --/ for SHOC|STCS
self:GetHolder():start_stop_menu(self,true)
end
Ma$ter
А что выдает твой билд по 'script_server_object_version()' ?
Какой номер версии?
Какие методы для открытия/закрытия диалоов применяются в 'родных' скриптах?
Возможно и в самом скрипте придется поковыряться с 'родительским' окном.
self:GetHolder():start_stop_menu(get_hud(), false) - открывает новое окно, закрывая старое (родительское).
ЦитатаПараметр 'health_restore_speed' и прочие 'ххх_restore_speed' на брониках НЕ работаею.
А вот я так не думаю Я не хочу спорить но ведь все же не зря пыса пихала эти строчки в бронь, не так ли? Для разбора спора я затестю этот метод в игре, сработает - я прав, ну а нет, тогда вы правы.
Вот у меня вопрос немного бестактный но все же
В игре есть такая интересная схема xr_companion.script на рабоче-крестьянский схема напарников, возможно ли её восстановить? Что-то раскоментировать\добавить (я не прошу указывать!) а просто спросил, или её уже не вернуть?
Fantom2323
А вот я поспорю, т.к. брал, модифицировал и переписывал заново схему для того чтобы эти ('ххх_restore_speed') параметры заработали с брониками. Исходно только иммунитеты работают!
В насчет того, что "... но ведь все же не зря пыса пихала эти строчки в бронь, не так ли?":
Для релиза ЗРЯ. Может в билдах где-то коряво работало, но в релизе движок просто игнорирует их (параметры).
Уже написал выше, что далеко не все написанное работает и/или задуйствовано в игре. Если бы ты хорошенько полазил по кодам - увидел бы сколько же 'мусора' разрабы оставили, и не предполагал за ними 'безгрешность'.
Да и не нужно их (GSC) боготворить - такие же кодеры-программера ... Кто посильнее, кто послабее. Порой можно 'детские' упражнялки в кодах увидеть ...
Не уверен - лучше не говори и не советуй другим.
MRN$
Родная схема (xr_companion.script) и указанная по ссылке (да и другие "Напарники/Компаньоны") - совершенно разные вещи.
Родную восстановить можно, но ... проще оказалось написать заново. Что и сделали. P.S. подправь еще в скрипте скопа оставшиеся оЧепятки:
- 'level:name()' -> 'level.name()'
- и в моем варианте 'i' -> 'iCnt'.
Сообщение было успешно отредактировано Artos (15-09-2010 19:44 GMT3 часа, назад)
ЦитатаЕсли бы ты хорошенько полазил по кодам - увидел бы сколько же 'мусора' разрабы оставили, и не предполагал за ними 'безгрешность'.
Да я лазил, везде где только можно, и также видел весь этот мусор, как и вы. Там если по большому счету полный хаос, файлов понаоставляли столько что ппц, а в скриптах так вообще убица.
ЦитатаДа и не нужно их (GSC) боготворить
Вот чего чего но этим я не занимаюсь, я уже давно потерял веру в пыса, особенно если учесть то, какое ЗП ****
Цитататакие же кодеры-программера ... Кто посильнее, кто послабее
Fantom2323
А никто и не ругает. Отстаиваем свои точки зрения и выясняем какая же правильнЕе.
Да и не буржуины эти ПЫСовцы, если говорить о кодерах и пр., делавших игру. Такие же славяне ...Darkscape
Нашел твой вопрос:
ЦитатаКакую строчку надо писать чтоб броня могла восстанавливать здоровье?
Ответ:
Строчкой тут ниКАК не обойтись. Нужно писать скрипты (схему). Готовые варианты есть в Zenobian-mod'е (cure_outfits.script) и в Simbion'е (m_unitems.script).
Скрипты читают параметры соответствующих броников и динамически управляют параметрами актора ... в обход движка.
Но ... их встраивание не простенькая задачка для новичка. Если нет опыта в скриптах - попроси кого-нить поопытнее.
(и давай ... попроще , а то 'уважаемый' глаз режет )
Сообщение было успешно отредактировано Artos (15-09-2010 20:07 GMT3 часа, назад)
Artos, костюм Призрака, насколько я помню, тоже восстанавливает хелсы. Там тоже health_restore_speed есть. Darkscape, по-моему через апдейт сделать нормально можно. Mister Blonde, ошибка в партиклах
Сообщение было успешно отредактировано SkyLoader (15-09-2010 21:07 GMT3 часа, назад)
Маленькое замечание: в функции подсчет ключей таблицы i вообще не трэба. Потому и использовалась функция всегда без одной переменной итератора. Так что менять то ничего не надо.
---------------------------------------------------------------------------------------------------------------------------
Выложил в журнал фикс action_mines 1.0 к Рандомным тайникам, добавляющий возможность самоподрыва установленных мин. Только что грамотно разместив растяжки по кустам и деревьям вынес почти весь блокпост .
SkyLoader
Читай внимательнее!
Мне НЕ нужно напоминать в каких брониках прописан параметр.
Сам по себе он никак не влияет на игру. Прописать можно куда угодно.
Схему из Zenobian-mod действительно нужно подключать через апдейт актора, но и через 'init' - для инициализации ... что несложно (сейчас глянул и ... считал что посложнее).
erlik
То, что в итераторе на максимал таблицы не используется - это ясно, я там просто поменял '_' -> 'i' для того, чтобы не 'пугались' новички, да и ... в любом случае ты используешь глобал.переменную '_', что я считаю не очень корректным. Проще и надежнее вводить локальные переменные для иттераторов в скрипт (в предложенном варианте забыл их добавить сверху 'local i,k,v,id').
А оЧепятался 'выше', в иттераторе собственно геймвертейсов, где 'i' как раз текущий счетчик ...
Хотел оптимизировать, но ... передумал пока ... вот и остался хвост.
Там нет надобности в таблице, достаточно найти и запомнить пару индексов (это всего две переменные) и не лопатить инсерт в таблицу. Отпадает и надобность в иттераторе объема таблицы ...
Да и поиск можно сократить, определив начало иттерации требуемой локации (Min-индекс!) и окончание (Max-индекс!) и прерывать поиск.
Что-то типа этого (оптимизировал, но не проверял пока):
Код:
function Get_MinMax_Gvids(sLevel_Name)
--/ 2010.09.12 by erlik (aka Garry Geller)
if not sLevel_Name then sLevel_Name = level.name() end
local iGvidMin, iGvidMax = 0,0
local bRun,bEnd = false,false
--local tGameVertex = {}
local iCnt = 0
while game_graph():valid_vertex_id(iCnt) and not bEnd do
local sMap = alife():level_name(game_graph():vertex(iCnt):level_id())
if sMap == sLevel_Name then
--table.insert(tGameVertex, iCnt)
iGvidMax = iCnt --/ текущий (он же последний)
if not bRun and iGvidMin == 0 then
bRun = true
iGvidMin = iCnt --/ 1-й индекс нужной локации
end
elseif bRun then
bEnd = true --/ индексы нужной локации закончились
end
iCnt = iCnt +1
end
--return tGameVertex[1], tGameVertex[this.Get_Table_MaxN(tGameVertex)]
return iGvidMin, iGvidMax --/> вернем первое значение и последнее
end
- подправил
Сообщение было успешно отредактировано Artos (15-09-2010 21:55 GMT3 часа, назад)
Artos
Насчет итераторов - я эти переменные всегда считал локальными, граница жизни которых -
блок for do end . Специально проверил сейчас - вне блока они равны nil.
И еще - ipairs там(при подсчете ключей) совсем не годится. Только pairs.
Что касается оптимизации - тут согласен, что можно(ну раз оптимальнее - то нужно) и без insert'a всех вертексов обойтись.
erlik
Насчет '_' ты прав! Что-то с перловкой перепутал
А по оптимизации вот какие результаты получились:
v1 - без создания таблицы вертексов
v2 - исходный вариант (с таблицами и итерацией по ней)
Time - чистое время выполнения 'local iGvidMin,iGvidMax = this.Get_MinMax_Gvids(sLevel_Name)'
т.е. как и ожидалось - плавающая (от начальных локаций к конечным) оптимизация присутствует.
Однако ... табличный вариант хорош тем, что более универсален.
На выход можно выдавать:
return tGameVertex[1], tGameVertex[this.Get_Table_MaxN(tGameVertex)], tGameVertex
т.е. и номера min|max, так и таблицу найденных гейм-вертексов локации, если понадобится где-то.
Можно еще подоптимизировать оба варианта, вычисляя и сравнивая не строковые имена локаций, а их индексы. P.S. Получается так:
Код:
function Get_MinMax_Gvids(idCurMap)
--/ by erlik (aka Garry Geller) (update by Artos)
if not idCurMap then idCurMap = alife():level_id() end --/ берем текущий уровень
local iGvidMin, iGvidMax = 0,0
local bRun,bEnd = false,false
--local tGvids = {}
local id,idMap = 0,0
while game_graph():valid_vertex_id(id) and not bEnd do
idMap = game_graph():vertex(id):level_id() --/ ID уровня по game_vertex'у
if idMap == idCurMap then --/ заданная локация
--table.insert(tGvids, id)
if not bRun and iGvidMin == 0 then
bRun = true --/ начинаем считать вертексы заданной/текущей локации
iGvidMin = id --/ 1-й индекс заданной/текущей локации
end
iGvidMax = id --/ текущий (он же последний) заданной/текущей локации
elseif bRun then
bEnd = true
end
id = id +1
end
--/ вернем 1-ый и последний индекс (и таблицу)
--return tGvids[1], tGvids[this.Get_Table_MaxN(tGvids)], tGvids
return iGvidMin, iGvidMax --/> вернем 1-ый и последний
end
Код:
function Get_MinMaxTbl_Gvids(idCurMap)
--/ by erlik (aka Garry Geller) (update by Artos)
if not idCurMap then idCurMap = alife():level_id() end --/ берем текущий уровень
local id,idMap,tGvids = 0,0,{}
while game_graph():valid_vertex_id(id) do
idMap = game_graph():vertex(id):level_id() --/ ID уровня по game_vertex'у
if idMap == idCurMap then --/ заданная локация
table.insert(tGvids, id)
end
id = id +1
end
--/ подсчет кол-ва индексов
local iCnt = 0
for _,v in pairs(tGvids) do
iCnt = iCnt +1
end
--/ вернем 1-ый, последний индексы и таблицу
return tGvids[1], tGvids[iCnt], tGvids --/>
end
на Баре стало 4.66 (было 5.52) ms
Сообщение было успешно отредактировано Artos (16-09-2010 02:08 GMT3 часа, назад)
Melisa Ваш мод убирает миникарту с худа. Дело, скорее всего, в файле gamedata\config\ui\zone_map.xml/ Этот файл отвечает за миникарту и компас. Попробуйте его удалить, вырезать или переименовать.
Более подробная информация по худовым файлам здесь: _http://forum.ogse.ru/viewtopic.php?f=6&t=1197
Сообщение было успешно отредактировано Mister Blonde (16-09-2010 01:51 GMT3 часа, назад)
Ээээ... Такой глупый вопрос: начальный набор предметов ГГ (в оригинале куртка новичка), откуда он берётся? Спаунится в начале игры, или же это где то в конфиге прописано? Если в конфиге, то подскажите название, плиз.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.