-
Постов
10 387 -
Зарегистрирован
-
Посещение
-
Победитель дней
417
Тип контента
Профили
Форумы
Баг Трекер
Предложения
Список изменений
Загрузки
Блоги
Магазин
Галерея
Весь контент Electr0
-
Оптимизация записи данных в строковой массив в загрузчике
Electr0 опубликовал запись в °• Mega Survival
согласно бенчмарку по старому загрузка информации из ответа сервера в строку, убежки на 216 прежметов занимает time: 0.001121 seconds по новому: time: 0.000678 seconds конвертация числа в строку занимает больше времени чем строка в строку. Изменялись подобные куски кода на: IntToString(SQL_FetchInt(hndl, 3), sSavedObjectInfo[obj_info_solid], OBJ_INFO_MAX_SIZE); // [obj_info_solid] solid (3) На такие: SQL_FetchString(hndl, 3, sSavedObjectInfo[obj_info_solid], OBJ_INFO_MAX_SIZE); // [obj_info_solid] solid (3) -
Хранение действий над предметами для кнопок
Electr0 прокомментировал Electr0 запись в °• Mega Survival
Реализован способ сохранения через KeyValue Значение Статус изменено на: Тестируется -
Хранение действий над предметами для кнопок
Electr0 прокомментировал Electr0 запись в °• Mega Survival
Похоже изобретать велосипед не нужно, оказалось в sourcepawn есть неописанная функция в docgen но она есть в keyvalues.inc // Exports a KeyValues tree to a string. The string is dumped from the current position. // // @param buffer Buffer to write to. // @param maxlength Max length of buffer. // @return Number of bytes that can be written to buffer. public native int ExportToString(char[] buffer, int maxlength); использование: char sString[6000]; KeyValue.ExportToString(sString, sizeof(sString)); можно будет keyvalue использовать . -
Хранение действий над предметами для кнопок
Electr0 прокомментировал Electr0 запись в °• Mega Survival
судя по всему то что мне нужно это json, нужно освоить. -
Хранение действий над предметами для кнопок
Electr0 прокомментировал Electr0 запись в °• Mega Survival
Или XML подобный вариант.. (описано раздвигание двух предметов по их осям y, получается своего рода дверь как в супермаркетах, створки которой отъезжают по сторонам) <actions> <action> <uuid>0a1315d1-ce1b-11e8-88bc-00163e010904</uuid> <name>Дверь 1</name> <act_id>3</act_id> <arg1>y</arg1> <arg2>100</arg2> </action> <action> <uuid>0a131a69-ce1b-11e8-88bc-00163e010904</uuid> <name>Дверь 2</name> <act_id>3</act_id> <arg1>y</arg1> <arg2>100</arg2> </action> </actions> В сжатом виде: <actions><action><uuid>0a1315d1-ce1b-11e8-88bc-00163e010904</uuid><name>Дверь 1</name><act_id>3</act_id><arg1>y</arg1><arg2>100</arg2></action><action><uuid>0a131a69-ce1b-11e8-88bc-00163e010904</uuid><name>Дверь 2</name><act_id>3</act_id><arg1>y</arg1><arg2>100</arg2></action></actions> только вот парсить это дело и работать с этим, придется вручную везде, но смотрится читабельно Есть так же вариант c json, описанная структура выше будет выглядеть вот так: { "actions": { "action": [ { "uuid": "0a1315d1-ce1b-11e8-88bc-00163e010904", "name": "Дверь 1", "act_id": "3", "arg1": "y", "arg2": "100" }, { "uuid": "0a131a69-ce1b-11e8-88bc-00163e010904", "name": "Дверь 2", "act_id": "3", "arg1": "y", "arg2": "100" } ] } } В сжатом виде: {"actions":{"action":[{"uuid":"0a1315d1-ce1b-11e8-88bc-00163e010904","name":"Дверь 1","act_id":"3","arg1":"y","arg2":"100"},{"uuid":"0a131a69-ce1b-11e8-88bc-00163e010904","name":"Дверь 2","act_id":"3","arg1":"y","arg2":"100"}]}} -
Хранение действий над предметами для кнопок
Electr0 прокомментировал Electr0 запись в °• Mega Survival
как выяснилось keyvalue не умеет в строку выгружатся ><, так что если ничего не удастся найти альтернативного, придется самому собирать строку. -
в первой версии выдавало 37 символов, а нужно 36. пересгенерировал uuid для всех предметов в базе.
-
Надо найти способ хранить действия в памяти для кнопки. К примеру действия над пятью предметами: Требования: Как это будет хранится в MYSQL до едрени фени, лишь бы было в строку и без запрещенных для запросов символов, скорее всего придется кодировать получившееся в base64 Легкость добавления, удаления, обновления информации т.к. по ходу придется делать все это на разных этапаж жизни кнопки Как вариант: "" { "0a1315d1-ce1b-11e8-88bc-00163e010904" { "name" "Дверь 1" "action_type" "3" "arg1" "r" "arg2" "100" } "0a1317d8-ce1b-11e8-88bc-00163e010904" { "name" "Дверь 2" "action_type" "3" "arg1" "r" "arg2" "100" } } Подобное можно записать в base64: IiIKewoJIjBhMTMxNWQxLWNlMWItMTFlOC04OGJjLTAwMTYzZTAxMDkwNCIKCXsKCQkibmFtZSIJCQkJItCU0LLQtdGA0YwgMSIKCQkiYWN0aW9uX3R5cGUiCQkiMyIKCQkiYXJnMSIJCQkJInIiCgkJImFyZzIiCQkJCSIxMDAiCgl9CgkiMGExMzE3ZDgtY2UxYi0xMWU4LTg4YmMtMDAxNjNlMDEwOTA0IgoJewoJCSJuYW1lIgkJCQki0JTQstC10YDRjCAyIgoJCSJhY3Rpb25fdHlwZSIJCSIzIgoJCSJhcmcxIgkJCQkiciIKCQkiYXJnMiIJCQkJIjEwMCIKCX0KfQ==
-
одна из проблем решена, теперь будет на кого указывать. осталось придумать как сохранять, загружать и хранить описание действий над предметами у пропа кнопки, ведь унифицированный загрузчик принимает массив свойств предметов 33 строки и размер строки 128, но на описание того что нужно будет описать может уйти намного больше символов, нельзя ради одного жирного параметра раздувать размер всех остальных, это просто дико)
-
нет смысла его сохранять для каждого прежмета, ведь при групповых действиях предметы 100% игрока который их пометил и выполняет над ними действия. это улучшает результаты при сохранении передвижения 341 предмета вот такие показатели: до: 0.016212 secondsпосле: 0.013063 seconds
-
Есть лишний параметр в энумераторе свойств предметов obj_info_obj_action
Electr0 прокомментировал Electr0 запись в °• Mega Survival
Значение Статус изменено на: Тестируется -
раньше использовался для нужд отмены повтора, но там теперь немного по другому, его стоит удалить, и сделать размер строкового массива для свойств предмета меньше на одну строку, но есть вероятность что где-то еще не убрано, и уменьшение размера массива может вызвать падения, когда на несуществующую строку в массиве пытаются записать.
-
Значение Статус изменено на: Исправлено
-
Если зайти в снапшоты, загрузить снапшот и сохранить его данные в слот отличный от того где хранились предметы, несмотря на надписи что предмет нельзя сохранить в другой слот, он всеравно сохраняет.
-
UPDATE alliance_fort_system.fs_obj_storage set uuid = (SELECT UUID()) > Affected rows: 1484011 > Time: 10,4s 1484011 предметов в базе получили идентификаторы
-
UUID предмета должен быть обновлен в случаях: копирование, сохранение в другой слот при этом зная что объект уже находится в каком-то слоте.
-
Значение Статус изменено на: Тестируется
-
в качестве UID применен UUIDv4 пример из С, посмотреть можно тут: https://onlinegdb.com/SkWPfXa5Q В SourcePawn аналог алгоритма сделал так: char szHex[17] = "0123456789abcdef", sUID[37]; for (int i = 0; i < 36; i++) { int r = GetRandomInt(0,15); switch (i) { case 8,13,18,23:{ sUID[i] = '-'; } case 14: { sUID[i] = '4'; } case 19: { sUID[i] = szHex[r & 0x03 | 0x08]; } default: { sUID[i] = szHex[r]; } } } В самой базе буду выполнять запрос: UPDATE table set uid = (SELECT UUID()); чтобы сгенерировать uuid для уже сохраненных предметов в базу данных.
-
В рамках обсуждения того что нужно для реализации: Поднялся вопрос об идентификации предметов как в базе, так и на сервере одним ID. Нельзя создать отдельное поле с auto_increment параметром, в таком случае главный вопрос как это сделать?, obj_id как ид строки всегда меняется т.к. при сохранении мы удаляем предмет из базы данных и сохраняем вновь остается только вариант, при создании предмета выдавать ему в качестве UID применять что-то похожее на стандарт UUIDv4
-
добавить для ярости эффект сжигания из плагина [L4D & L4D2] Dissolve Infected
Electr0 прокомментировал Electr0 запись в Все игровые серверы
после последних изменений потерял хук на убирание дамага при сжигании пропов, нужен ретест, т.к. сервер упал по этой причине. -
добавить для ярости эффект сжигания из плагина [L4D & L4D2] Dissolve Infected
Electr0 прокомментировал Electr0 запись в Все игровые серверы
[Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Core was generated by `./srcds_linux -game left4dead2 -strictportbind -ip 195.62.53.114 -port 27100 +c'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0xed905948 in NextBotCombatCharacter::OnTakeDamage_Dying(CTakeDamageInfo const&) () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so [Current thread is 1 (Thread 0xf7422a40 (LWP 25996))] #0 0xed905948 in NextBotCombatCharacter::OnTakeDamage_Dying(CTakeDamageInfo const&) () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so #1 0xed7b71af in CBaseCombatCharacter::OnTakeDamage(CTakeDamageInfo const&) () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so #2 0xedbaf3c5 in Infected::OnTakeDamage(CTakeDamageInfo const&) () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so #3 0xed7c990e in CBaseEntity::TakeDamage(CTakeDamageInfo const&) () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so #4 0xed834d6e in CEntityDissolve::DissolveThink() () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so #5 0xed93ff9e in CBaseEntity::PhysicsDispatchThink(void (CBaseEntity::*)()) () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so #6 0xed64c699 in CBaseEntity::PhysicsRunSpecificThink(int, void (CBaseEntity::*)()) () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so #7 0xed64cb92 in CBaseEntity::PhysicsRunThink(CBaseEntity::thinkmethods_t) () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so #8 0xed64cd04 in CBaseEntity::PhysicsRigidChild() () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so #9 0xed64dc0d in CBaseEntity::PhysicsSimulate() () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so #10 0xed942faa in Physics_SimulateEntity(CBaseEntity*) () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so #11 0xed94342a in Physics_RunThinkFunctions(bool) () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so #12 0xed884b59 in CServerGameDLL::GameFrame(bool) () from /home/l4d2_mega_survival/serverfiles/left4dead2/bin/server_srv.so #13 0xe8c84b1e in __SourceHook_FHCls_IServerGameDLLGameFramefalse::Func(bool) () from /home/l4d2_mega_survival/serverfiles/left4dead2/addons/sourcemod/bin/sourcemod.2.l4d2.so #14 0xffa660f8 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?) No symbol table info available. тест стабильности провален -
Появилась щель между большими досками при копировании с смещением
Electr0 прокомментировал Electr0 запись в °• Mega Survival
Значение Статус изменено на: Тестируется -
Появилась щель между большими досками при копировании с смещением
Electr0 прокомментировал Electr0 запись в °• Mega Survival
исправлено, оптимизации списка калибруемых моделек