Nazgool 251 Опубликовано 20 Февраля 2012 olaf1 Найди отличие 111 self.spwan = alife():create(respawn_npc, vector():set(respawn_npc_point) 111 self.spwan = alife():create(respawn_npc, vector():set(respawn_npc_point)) Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 21 Февраля 2012 HellRatz А что тут непонятного? В файле xr_gulag.script, в строке 1219 переменная 'strn' равна nil. Ищи, откуда она берется, какое значение должно быть ей присвоено. И почему она равна nil. У нас твоих кодов нет, поэтому прийдется тебе самостоятельно это сделать. Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 21 Февраля 2012 (изменено) olaf1 Your script not correct! Use some lua checker. For instance. You write : ... for k,v in pairs("npc1") do ... Type "npc1" is string. But must be a table. Изменено 21 Февраля 2012 пользователем Gun12 Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 21 Февраля 2012 Study syntax lua. "npc" is string. This string is not some name. The name your table - npc - a link. Use it is necessary so : for k,v in pairs(npc) do Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 25 Февраля 2012 (изменено) Tris Инициализируй функции перед выполнением проверок. function random_time() function function_start_1() ... end -- и т.д. if random_table_function == 1 then function_start_1() end -- и т.д. end Изменено 25 Февраля 2012 пользователем Gun12 Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 25 Февраля 2012 (изменено) Что за запись? function function_start_1(). Один раз function Сорри. Зарапортовался. P.S. Ну ты и назвал. Назови просто start_1, дабы не вводить людей в заблуждение Изменено 25 Февраля 2012 пользователем Gun12 Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 27 Февраля 2012 (изменено) Мля, достали уже. demover123, да и многие другие. Когда-то написал этот скрипт - ДА!. Но только не для тех кто в бронепоезде. Неужели трудно понять что [[Путь_до_звука_относительно_папки_sounds]], да и другое, это... Э-э-х. Чего бисер метать? Изменено 27 Февраля 2012 пользователем Gun12 Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 3 Марта 2012 (изменено) _Призрак_ Подобная конкатенация в цикле - str=str..add - всегда была ужасно медленной штуковиной. Сделай через таблицу : local t = {} local char = string.char for i=1,size do t[#t+1] = char(r:r_u8()) end local str = table.concat(t) Изменено 3 Марта 2012 пользователем Gun12 Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 3 Марта 2012 Я уже забыл конечно (давно сталкером не занимался). Собственно - изменение в инвентаре это не дроп\тэйк? Если да, то ставить обновление на них вместо апдейта. Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 26 Марта 2012 (изменено) olaf1 Машинный перевод английского на русский для многих выглядит значительно хуже, чем текст, просто написанный на английском. Я так и не смог толком понять что же тебе нужно, поэтому пришлось понимать по приведённому тобой коду. И в нём присутствует абсурд. А именно в строке if time_global() > timer then time_global() измеряется в миллисекундах, а timer у тебя задан в часах. Естественно, что time_global() у тебя всегда будет больше чем timer. Приведи оба операнда к единому измерению. Всё бы хорошо, но по всей видимости и английский не является родным языком нашего гостя. ColR_iT Изменено 26 Марта 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 26 Марта 2012 (изменено) Да, и оформлять код нужно должным образом. Так, чтобы читать можно было легко. Например (шутка) : local respwan_table = {}local timer = nil local levels = {marsh= {x=-61.996055603027,y=0.92057931423187,z=293.67742919922} }local respwan_npc = { ["mar_clear_sky_respawn_1"] = true, ["mar_clear_sky_respawn_2"] = true, ["mar_clear_sky_respawn_3"] = true, } function spwanen() if db . actor : alive () == false then return end local level_name = level . name () local coordinates = levels [ level_name ] if coordinates then local pos = vector (): set ( coordinates . x , coordinates . y , coordinates . z ) local lvi = db . actor : level_vertex_id () local gvi = db . actor : game_vertex_id () for section , flag in pairs ( respwan_npc ) do if flag == true then if timer == nil then timer = level . get_time_hours () + math.random ( 3 , 6 ) if timer > 23 then timer = timer - 24 end end if time_global () > timer then timer = nil local se_obj = alife (): create ( section , pos , lvi , gvi ) respwan_table [ se_obj . id ] = section respwan_npc [ section ] = false end end end end end for id,section in pairs(respwan_table) do local obj = db . storage [ id ] and db . storage [ id ]. object if not obj or obj : alive () == false then respwan_npc [ section ] = true respwan_table [ id ] = nil end end Добавлено через 79 мин.: I long ago do not work with S.T.A.L.K.E.R so answer will not very exact. First. Get population gulag function IsPopulationGulag(name) local gulag = xr_gulag.get_gulag(name) -- or local gulag = xr_gulag.fraction["name_gulag"] -- "name_gulag" is string at name gulag. Sorry, exactly not litter. return gulag:get_population() > 0 end Second. If population is a zero, that cause forced respawn function ForceRespawn(name) -- name is story id smart_terrain or name (string) gulag if not IsPopulationGulag(name) then -- your function for spawn NPC spwanen() -- Only correct mistakes, about which I have said end end А еще интересно то, что вот такой предложенный "искусственный" респавн, наш гость пытается "прилепить" к НПС, не в гулаге, а со своей логикой. ColR_iT Изменено 27 Марта 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 27 Марта 2012 Ну тогда писать каждому в логику секцию [on_death] и в ней выдачу инфопорции на смерть. Когда соберутся все, производить спавн и восстановление инфопорций. Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 28 Апреля 2012 (изменено) ...стОит (ИМХО) очищать топик от подобных кодов как у AlexLUMEN, дабы не давать примеров как НЕ нужно делать... Artos, при всём уважении - не дай Бог мне было бы попасть на тебя при начале моего изучения скриптинга и lua в целом. Ну пытается человек что-то (с)делать. Ну хочется быстрее, хоть и меньшими усилиями. Но ведь пытается всё же. И может быть когда-то, сужу по себе, ему надоест быть "слабым звеном"? Такими темпами ты не только отобьёшь интерес к lua, но и в принципе к вопрошаниям по любой теме.. Не суди меня строго, но где же им ещё учиться как не в форумах? Предугадываю встречный вопрос, - "А как же ты(в смысле Я) сам себя вёл в подобных ситуациях?" Сознаюсь - очень не хорошо. Но всё меняется. Теперь считаю что иногда лучше промолчать, чем ... Но это, конечно, не значит что этим постом поддерживаю полную безграмотность. И в первую очередь грамматическую. ColR_iT усиленно борется с этим, а я бы убивал не месте Изменено 28 Апреля 2012 пользователем Gun12 Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 28 Апреля 2012 (изменено) Artos Понимаю, но и "отсылать" изучать матчасть тоже не всегда является самым правильным решением. Откуда они знают что и где искать? В свете недавних событий (кто следит за топиком и помнит) даже гуру попадаются на "мякине". Обвинять таких людей в незнании более чем некорректно. Просто...и так уж иногда получается. А что говорить про новичков? Поэтому можно бы и "ткнуть носом". Сначала pil : math.random возвращает псевдослучайное целое число из отрезка [1, m]А затем не трудно пояснить, что число >= 1.5 <= 2.5 (это грубо конечно. экспоненту 1е+14 не трогаю) в данном случае округляется до 2-х. Ну и так далее по коду. А дальше видно будет. Если качество вопросов не измениться, то тогда и рубить головы. Под корень. Тогда я и сам уже помогу поднять топор. Изменено 28 Апреля 2012 пользователем Gun12 Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 11 Мая 2012 Если движкового объекта уже нет, то проверка type(object) == 'userdata' возвратит false, поэтому до второй части - and type(object.id) ~= 'nil' - даже не дойдёт. Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 11 Мая 2012 Artos Я как то упустил, что в этом вопросе была предыстория. И всё-таки проверка!!! if a == b возвратит false, я ведь писал не о результате работы функции type Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 11 Мая 2012 (изменено) malandrinus Изначально я, признаю, выразился не совсем точно. И получилось не то, что я хотел сказать. А именно : вместо сказанного - "Если движкового объекта уже нет", мне стоило сказать - "Если объекта уже нет". Получилось как-то с уклоном на Сталкер, которого у меня ни на компе нет, ни в приоритетах интересов. Поэтому о "движковых объектах" это я уже как-то случайно загнул не по моим знаниям, т.к. занимаюсь только академическим Lua. В связи с чем твоё пояснение для меня ("в очередной раз встречаю некоторое непонимание разницы между ссылкой и самим значением"), несомненно полезное для новичков, считаю направленным несколько не по теме )) Ну если (в Lua) объекта нет, т.е. все ссылки на него равны nil, то и ... вот об этом я и писал выше. Добавлено через 50 мин.: Снова не точно. Правильно будет сказать - нет ссылок на объект. Изменено 11 Мая 2012 пользователем Gun12 Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 13 Мая 2012 volazar Может как-то так : local old_suit_name function nano_speed() local gg = db.actor local nano_speed = gg:item_in_slot(1) local suit = gg:item_in_slot(6) if nano_speed and nano_speed:section() == "nano_speed" then local current_suit_name = suit and suit:section() if current_suit_name == old_suit_name then return end if current_suit_name == "nano_suit" then news_manager.send_tip(gg, "%c[10,241,129,129]".."Сообщение центрального процессора:".."\\n"..[[%c[10,241,129,129]Инициализирован модуль "Скорость". Модуль готов к использованию.]].."\n") else news_manager.send_tip(gg, "%c[10,241,129,129]".."ERROR:".."\\n".."%c[10,241,129,129]Ошибка инициализации. Отсутствует подключение к центральному процессору!".."\n", nil, nil, 30000) end old_suit_name = current_suit_name end end Пользуйся редакторами с подсветкой синтаксиса. У тебя ошибка в строке - "%c[10,241,129,129]Инициализирован модуль "Скорость". Модуль готов к использованию." Найдёшь? Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 13 Мая 2012 Artos У меня, твоя переменная bSend, называлась просто flag. После того как написал код я сделал следующее : 1. Подумал что так делалось уже очень много раз. 2. Выделил всё. 3. Удалил. 4. И решил написать немного по-другому. 5. Написал. Лично мне так...веселее что-ли? Интереснее... Поделиться этим сообщением Ссылка на сообщение
Nazgool 251 Опубликовано 13 Мая 2012 (изменено) Artos Да я то изначально так и подумал, что если нет nano_speed-а, то и не фиг дёргаться )) Хотя логичнее по-твоему Изменено 13 Мая 2012 пользователем Gun12 Поделиться этим сообщением Ссылка на сообщение