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

Сборочный цех


Zander_driver

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

Народ, вчера наступил на граблю, которая лежит в m_netpk, что тут публиковали. Имейте ввиду. Вот проблемная строка

str = str:trim( str:gsub(";.-\n", "\n") ) --/ cleanup comments, symbol ';' is denied in sections names and keys/values!

Грабля в том, что комментарии не удалялись. В результате, m_netpk превращает вот такую кастомную дату

;[logic]
cfg = scripts\gar_dm_novice.ltx

[smart_terrains]
gar_dram = {-gar_dm_novice_change_st}
esc2_bandit_les = {+gar_dm_novice_change_st}

вот в такую

[logic]
cfg = scripts\gar_dm_novice.ltx

[smart_terrains]
gar_dram = {-gar_dm_novice_change_st}
esc2_bandit_les = {+gar_dm_novice_change_st}

Что бы исправить, эту строчку нужно заменить на

str = str:gsub(";.-\n", "\n"):trim() --/ cleanup comments, symbol ';' is denied in sections names and keys/values!
  • Спасибо 2
  • Полезно 2

Поделиться этим сообщением


Ссылка на сообщение

Так у меня ничего нет. Это единственное исправление было. У меня только переработанные подсистемы из OGSE: универсальное хранилище, таймеры, менеджер сигналов. Подумывал пару раз изолировать их и выложить, да все руки не доходят.

  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение

Бетатест идет уже давно, до сих пор никаких глюков

Безотносительно к ОП 2.1, процитированная фраза не говорит ни о чем. Та ошибка, на которую наступил я, существовала очень давно и "никаких глюков" тоже не было. Просто, в качестве примечания.

Поделиться этим сообщением


Ссылка на сообщение

Мой пост был не о том, когда исправили, а когда нет. А о том, что утверждения вида "никаких глюков" и "бетатест длится долго" никак друг с другом не связаны. Просто второе не означает, автоматически, первое.

Изменено пользователем dsh
  • Согласен 1

Поделиться этим сообщением


Ссылка на сообщение

 

 

Правки других авторов, проскальзывавшие в этой или других темах в разное время, взяты в полной мере.

 

Не исправлена проблема с комментариями в custom_data. Взял исправления не проверив и сейчас опять получил этой же граблей по лбу.

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение
@Graff46,соглашусь. m_netpk работает. Я использовал и m_net_utils и еще какой-то скрипт от xstream. В принципе все работают. Сейчас использую m_netpk. Единственное, если ты иногда захочешь в custom data писать данные не в формате ini, то m_netpk на это не рассчитан. Но в этом случае я бы посоветовал пересмотреть свои желания.

Поделиться этим сообщением


Ссылка на сообщение
такой форсированный режим добавить не сложно

 

Я не говорю, что сложно. Просто человеку, который только собирается использовать m_netpk, лучше об этом знать заранее, а то захочет прочитать custom data, в которой данные не в формате ini, и будет голову ломать, чего же ему :getString() возвращает пустую строку.

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

Поделиться этим сообщением


Ссылка на сообщение

@Graff46, в совершенно любом. К примеру, в соляночных (в старой солянке) контейнерах артефактов все данные хранятся одной строкой. Просто строкой, секции артефактов через запятую.

Поделиться этим сообщением


Ссылка на сообщение

@Kirgudu, это не то. Когда я писал, то имел ввиду, что для некоторых случаев может понадобиться доступ к сырой строке. Ну вот как в моем примере, все в ini, а для контейнеров используется свой формат. Эта же опция переключает поведение глобально. По хорошему, там бы добавить методы :getStringRaw() и :setStringRaw() или что-то вроде того.

Поделиться этим сообщением


Ссылка на сообщение
@Kirgudu, да, что-то такое мне и виделось. Другой вариант, это хранить в свойствах сырую строку и в нетпакет всегда записывать ее, а getString() и getTable() бы ее парсили налету и возвращали бы результат, как это есть сейчас. setString() и setTable() бы делали обратную операцию и меняли бы сохраненную сырую строку. Этот вариант мне кажется хоть и более красивым, но более сложным, а значит и более вероятно появление новых граблей, по которым кому-то придется пройти и исправить. Т.ч. я за более простой вариант.

Поделиться этим сообщением


Ссылка на сообщение

@Kirgudu, выглядит вроде нормально, только я бы вместо вот этого изменения

-		pk:w_stringZ(val:getString()) --/< from helpers
+		if val:useStringRaw() then
+			pk:w_stringZ(val:getStringRaw()) --/< from helpers
+		else
+			pk:w_stringZ(val:getString()) --/< from helpers
+		end

эту проверку бы делал в getString()

function custom_data:getString()
	return self:useStringRaw() and self:getStringRaw() or _fill_custom_data(self.data) --/>
end

Мне кажется, что это внутреннее дело custom_data и другим знать об этом не обязательно.

Поделиться этим сообщением


Ссылка на сообщение

он должен делать это и впредь

Так он и продолжит так делать, пока этот кто-то, сознательно, не установит соотв. флаг.

Проверь по возможности в игре

Проверю, но только искусственно, в синтетических ситуациях. В самом моде использовать не буду. Мне хватило пробежки по граблям в прошлый раз. :) Лучше я эту штуку больше трогать не буду.

Поделиться этим сообщением


Ссылка на сообщение

@Kirgudu, по тестировал немного на контейнере с артефактом и на соляночном Акиме. Проблем не заметил, в обоих режимах работает.

Поделиться этим сообщением


Ссылка на сообщение

Нашел ошибку в m_netpk. Долго голову ломал, что за чудеса у меня иногда случаются, а оно вон где. Вот исправление: https://github.com/dsh2dsh/op2ogse/commit/87463b600f2cbd3d33677b08d1cfa15d5167811a

По диффу все понятно, я думаю. Посмотрите в соседнюю _w_uCTime.

 

И потоптавшись по этой ошибке я пришел к выводу, что нетпакеты смартов лучше не трогать. Там из-за того, что делается в :STATE_Read(), твориться жуть что.

Изменено пользователем dsh
  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

@UnLoaded ты не обратил внимания, что там self.cb_netpk, а не self:cb_netpk, т.е. обращение к полю, а не вызов метода. В это поле содержится указатель на функцию, которая не имеет никакого отношения к этому классу. И этой функции передается объект и пакет, с которыми ей нужно что-то сделать.

Поделиться этим сообщением


Ссылка на сообщение

Жуткий велосипед. Полезнее xr_logic.script научить распарсивать полные имена функций, с учетом имени скрипта. Я бы показал это, но у меня нет этого в виде отдельного изменения. А так, тут можно посмотреть, например

https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/xr/xr_logic.script

 

  • Согласен 1

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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

×
×
  • Создать...