Это еще что, я вот репу балки взял, попробовал скомпилить: 6539 errors, 1 warning (max count reached)
Оказывается setup.dm был не подключен хз почему. Пробую еще раз.
0 errors, 1 warning admins_number: variable defined but not used
Лучше.
Обнаружен очередной жж кодурков
/turf/simulated/floor/holofloor/attackby(obj/item/weapon/W as obj, mob/user as mob)
return
// HOLOFLOOR DOES NOT GIVE A FUCK
Откатился до 137, загрузился сожрав 270мег, попробовал подключиться, завис полностью на 288мегах, даже не жрет больше память, только проц стабильно грузит.
А хотя отпустило после, почти, 5 минут повидла.
Initializations complete.
Welcome to the pre-game lobby!
И даже перестало жрать проц, ну охуеть теперь.
В общем 137я ревизия точно работает, хоть и долго грузится.
Такс, у меня всё ещё учёба. Кто там с свнгитом на ТЫ. В общем что нужно сделать.
1 - убрать всё до 139 коммита за исключением моего мёржа (отдельно скачал все файлы, залил, заменил и запустил. Работало как часы поэтому проблема не в них)
2 - привести всё в рабочий вид.
3 - прожать кнопочку update в хабе.
4 - запустить сервер.
5 - ...
6 - PROFIT
И да, если не запилите до моего возвращения я всё равно всё подниму. Просто мне больше работы будет.
Код выкладывать не буду, суть - потосавал положение объявлений блоков для генетических сил. Чисто для удобства, сначала основные силы, потом дополнительные, далее дефекты, в конце дополнительные.
Здесь все проверил несколько раз, ни одного объявления не упустил
/code/game/objects/items/weapons/dna_injector.dm << вероятность бага средняя, так как много кода, мог просто отпечататься или пропустить что либо.
Скрытый текст
По подобной схеме добавлены инжекторы для всех сил/дефектов, плюс имеющиеся упорядочил
/obj/item/weapon/dnainjector/m2h - тип
______name = "DNA-Injector (Monkey > Human)" - имя
______desc = "Will make you...less hairy." - описание
______dnatype = "se" - тип изменяемых энзимов
______dna = "708" - устанавливаемый уровень
______New() - функция вызываемая при создании нового экземпляра инжектора создании нового
____________..() - все что вызывается функцией родительского типа
____________block = MONKEYBLOCK - номер изменяемого блока присваивается нужному числу
Так же исправил лог при уколе гентическим инъектором:
Было:
if (isblockon(getblock(dna, 14,3),14) && istype(M, /mob/living/carbon/human)) - проверка срабатывала при уколе инъектором с 14 блоком
______Сообщение о уколе инъектором превращающим человека в обезьяну
Сделал:
if (isblockon(getblock(dna, MONKEYBLOCK,3),MONKEYBLOCK) && istype(M, /mob/living/carbon/human)) - проверка срабатывает при уколе инъектором с блоком MONKEYBLOCK (переменная).
______Сообщение о уколе инъектором превращающим человека в обезьяну
/code/game/gamemodes/traitor/traitor.dm << вероятность бага чуть-чуть выше низкой
Скрытый текст
Как и написано в СВН изменил число заданий трейтора на рандомное (от 1-го до 3-х)
Изменение одно, добавил строку:
for (var/missions_amount = rand(1,3), missions_amount>0, missions_amount--) - цикл, повторяется n-ое число раз, где n - случайное число от 1-го до 3-х. Честно сказать, первый раз создал цикл, где в первой части объявляется переменная и присваивается рандомному числу. Не думаю что это - что-то плохое, но ни разу в ГМ не встречал такой формы задания цикла.
Сказаться это не должно, так как задания выдаются:
var/datum/objective/assassinate/kill_objective = new - создается новый объект задания
kill_objective.owner = traitor - человеком выполняющем задание назначается предатель, для которого выполняется функция выдачи заданий
kill_objective.find_target() - функция проверяет существует ли цель задания, не вышла ли она из игры, если вышла - free objective
traitor.objectives += kill_objective - задание добавляется трейтору, для которого была вызвана функция
/code/game/gamemodes/setupgame.dm << вероятность бага средняя, опять же много кода
Скрытый текст
Раньше создавался пустой список, в который добавлялись числа.
Сделал: создается список уже заполненый:
var/list/avnums = new/list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26) - здесь, возможно, не нужно слово new/.
Дальше, для всех переменных хранящих номера генетических блоков выполняется код:
tempnum = pick(avnums) - временная переменная присваивается случайному числу из списка
avnums.Remove(tempnum) - выбранное число удаляется из списка
HULKBLOCK = tempnum - переменной хранящей номер блока присваивается временная переменная.
Этот код придумал не я, существующие силы использовали его и раньше, я просто расширил его на остальные.
/code/game/gamemodes/gameticker.dm << вероятность бага нулевая, ибо это изменение было убрано в следующем коммите
Скрытый текст
Убрал объявление переменной admins_number, так как ДМ жаловался на то, что она не используется.
var/admins_number = 0
Что же, в предыдущем обнавлении делал message = sanitize(message), не помогло, так что
изменил эту строку на message = sanitize_uni(message)
/code/modules/mob/living/carbon/human/whisper.dm << вероятность бага средняя
Скрытый текст
Так как мемо не слышит шепота хоста, добавил следующие строки:
for (var/mob/M in parasites) - Тут может быть ошибка. Не указан объект, чей список паразитов используется.
______M.show_message(rendered, 2) После я нашел решение получше, но еще не успел залить.
/code/game/gamemodes/gameticker.dm << вероятность бага нулевая, по сути эта правка - откат одного изменения
Скрытый текст
Когда еще раз скомпилировал код, ДМ выдал ошибку не объявлена переменная. Понял что сделал хуйню, вернул переменную. Хотя теперь он снова ругается на то, что она не используется, но ошибок нету.
var/admins_number = 0
Все. Возможно так будет легче понять что сделано не правильно.
Ладно, сейчас сделаю откат до 139, совмещу с мержем Теста, проверю и запущу.
Грешу на /code/game/gamemodes/setupgame.dm
UPD: или на /code/game/gamemodes/traitor/traitor.dm
Мне цикл не нравится, может он уходит в бесконечность ? О_о
Гост, где выход из цикла ?
for (var/missions_amount = rand(1,3), missions_amount>0, missions_amount--)
Мне кажется тут ошибка, здесь у тебя (как мне кажется) постоянно генерируется новое число от 1 до 3.
Так-же не понятно, каким образом missions_amount может стать ">0" или "--" (отрицательным?), если далее мы от него ничего не отнимаем.
Т.е. после выполненного действия отнимать 1 у missions_amount.
(но наверное я просто не понял код...)
Слово new/ - все таки лишнее
(возможно что виснет при запуске, из-за этого слова. Он для каждого нового листа, делает новый лист с новым листом О_о, сжирая проц и забивая оперативную память)
Сообщение отредактировал Leshiy: 03 May 2013 - 21:40
for (var/missions_amount = rand(1,3), missions_amount>0, missions_amount--)
Мне кажется тут ошибка, здесь у тебя (как мне кажется) постоянно генерируется новое число от 1 до 3.
Так-же не понятно, каким образом missions_amount может стать ">0" или "--" (отрицательным?), если далее мы от него ничего не отнимаем.
Т.е. после выполненного действия отнимать 1 у missions_amount.
(но наверное я просто не понял код...)
for(Инициализация, Проверка, Инкрименция) выражение
1) Сначала выполняется инициализация, у нас - объявляется missions_amount и сразу присваивается rand(1,3) (рандом от 1-го до 3-х)
2) Далее, если проверка выдает истину, выполняется выражение (у нас выдается задание).
3) Потом инкрименция, в данном случае missions_amount--, суть: уменьшение на единицу.
Дальше снова проверка, выражение, инкрименция, пока проверка не выдаст ложь.
Выражение может быть одной командой, либо блоком команд.
Инициализая и инкрименция могут быть опущены без какого либо вреда. Но отсутствие проверки создаст бескоенчный цикл (естественно, если не используются goto, break или return).
for(Инициализация, Проверка, Инкрименция) выражение
Сначала выполняется инициализация, у нас - объявляется missions_amount и сразу присваивается rand(1,3) (рандом от 1-го до 3-х)
Далее, если проверка выдает истину, выполняется выражение (у нас выдается задание). Потом инкрименция (missions_amount--, суть: уменьшение на единциу). Дальше снова проверка, выражение, инкрименция, пока проверка не выдаст ложь.
Выражение может быть одной командой, либо блоком команд.
Инициализая и инкрименция могут быть опущены без какого либо вреда. Но отсутствие проверки создаст бескоенчный цикл (естественно, если не используются goto, break или return).
Скажи, ты уверен что при каждом новом цикле он не генерирует новое число ? (просто я не знаю...)
И так! У меня все запустилось, после того как я убрал слово /new в /code/game/gamemodes/setupgame.dm
Сообщение отредактировал Leshiy: 03 May 2013 - 21:55