Hanzo Posted June 14, 2013 Share Posted June 14, 2013 Кто может подправить ресурс на ночь(она просто ахрененно тёмная) local maxDarkness = 0.10 -- [1] = lightest || [0] = darkest local speed = 0.001 -- Default variables you shouldn't alter. local b = 1 local shaderList = {} local fading = false -- Feel free to add more removables. local removables = { 'tx*', 'coronastar', 'shad_exp*', 'radar*', '*icon', 'font*', 'lampost_16clr', 'headlight', 'vehiclegeneric256' } function night_init() if getVersion ().sortable < '1.1.0' then outputChatBox('Night shader is not compatible with this client.') return false end local testShader, tec = dxCreateShader('night.fx') if not testShader then outputChatBox('Could not create night shader. Please use debugscript 3') else for c=65,96 do local clone = dxCreateShader('night.fx') engineApplyShaderToWorldTexture(clone, string.format('%c*', c + 32)) for i,v in pairs(removables) do engineRemoveShaderFromWorldTexture(clone, v) end table.insert(shaderList, clone) end end addEventHandler('onClientHUDRender', root, night_render) nightTimer = setTimer(night_check, 1000, 0) end function night_check() local hours, minutes = getTime() if hours >= 5 and hours < 12 then fading = false elseif hours >= 12 and hours < 15 then fading = false elseif hours >= 15 and hours < 21 then fading = false elseif hours >= 21 and hours < 5 then fading = false else fading = true end end function night_render() local int, dim = getElementInterior(localPlayer), getElementDimension(localPlayer) if fading then if b > maxDarkness then b = b - speed elseif b <= maxDarkness then b = maxDarkness end else if b < 1.0 then b = b + speed elseif b >= 1.0 then b = 1.0 end end for _,shader in ipairs(shaderList) do if int == 0 and dim == 0 then dxSetShaderValue(shader, 'NIGHT', b, b, b) else dxSetShaderValue(shader, 'NIGHT', 1.0, 1.0, 1.0) end end end night_init() подправьте пожалуйста а то ночь как будто вечная получается Link to comment
DakiLLa Posted June 14, 2013 Share Posted June 14, 2013 Изменить переменную maxDarkness поближе к единице? Link to comment
Hanzo Posted June 14, 2013 Share Posted June 14, 2013 Изменить переменную maxDarkness поближе к единице? не знаю это штука отвечает так то за глубину темноты Link to comment
Ruga Posted June 14, 2013 Share Posted June 14, 2013 Такой вопрос, можно ли проверить стоит игрок под навесом или объектом или нет, т.е. нужно определить при дожде попадает ли дождь на него. Link to comment
CocaColaBear Posted June 15, 2013 Share Posted June 15, 2013 Такой вопрос, можно ли проверить стоит игрок под навесом или объектом или нет, т.е. нужно определить при дожде попадает ли дождь на него. На стороне клиента используй: processLineOfSight . Вверх от игрока на единиц 200, а потом проверяй попал ли в этот промежуток какой-либо объект. Link to comment
Yashann Posted June 15, 2013 Share Posted June 15, 2013 Есть ли такая функция что бы прикрепить к машине миниган? ну или встроить) Link to comment
TheNormalnij Posted June 17, 2013 Share Posted June 17, 2013 ERROR: Aborting; infinite running script in !Kript Это как я понимаю из-за того, что в моем коде очень большой цикл. Но что делать, если мне его реально 1 853 440 раз надо выполнить Link to comment
AMARANT Posted June 17, 2013 Share Posted June 17, 2013 Но что делать, если мне его реально 1 853 440 раз надо выполнить Ого, а не перебор? Все-таки есть какой-то лимит на циклы, точно его не знаю. Да и к тому же особо длинные циклы все равно зависят от железа и могут с трудом выполняться на слабых машинах. Link to comment
TheNormalnij Posted June 17, 2013 Share Posted June 17, 2013 эмм, я почти уверен что данный скрипт будет выполнятся на хороших машинах. Попробовал чтобы подавало данные пачками, вроде все ок. + это полезная штука, зашифровать некоторые файлы, чтобы отпугнуть потенцияльных воров Link to comment
DakiLLa Posted June 17, 2013 Share Posted June 17, 2013 Есть в Lua такая штука, называется coroutines. С помощью нее в мап едиторе решили проблему вот этих вот бесконечных циклов. Идея в том, что цикл работает какое-то время, затем прерывается и делает перерыв. А затем опять запускается и так по кругу. Link to comment
TheNormalnij Posted June 17, 2013 Share Posted June 17, 2013 DakiLLa, я думаю это хорошая вещь, но, посмотрев на время выполнения, понял, что надо что-то менять. Шифровка/расшифровка всего файла 1.1 МБ по обычной маске XOR занимает примерно 4698.0000000005( я робот ) секунд. Примерно 240 байт в милисекунду. Буду кодировать только некоторые части файла, чтобы процесс занимал меньше чкм полсекунды времени и, конечно же, как можно развратне ломал файл. Link to comment
TheNormalnij Posted June 17, 2013 Share Posted June 17, 2013 есть другие варианты зашифровать файл моделей и текстур? Link to comment
Other Languages Moderators Disinterpreter Posted June 17, 2013 Other Languages Moderators Share Posted June 17, 2013 есть другие варианты зашифровать файл моделей и текстур? Варианты есть всегда, но знаем ли мы о них? Link to comment
Flaker Posted June 17, 2013 Share Posted June 17, 2013 Во всех файлах есть такая штука как header... То-есть, все файлы определенного типа содержат несколько одинаковых битов в самом начале... Зная эти биты, можно однозначно идентифицировать тип файла ( Для этого, собственно, и используются эти биты )... Соответственно, в твоем случае, эти несколько бит можно убрать, а затем подставлять обратно при необходимости. P.S. Шаришь в булевой алгебре? Алгоритм у тебя завязан на ( byte1 xor byte 2 ) = byte3 => ( byte3 xor byte2 ) = byte1? Как ты вообще это реализовать пытаешься? Link to comment
TheNormalnij Posted June 18, 2013 Share Posted June 18, 2013 это то обновление, которое прошло незамеченным. header - в linux, как я помню, это называется "волшебные байты", именно их и есть смысл скрывать + возможное изменение имени файла. Просто так убирать эти байты бессмысленно, т.к. мы не сможем их потом вставить ( имеется в виду то, что при записи мы не сможем их вставить, не убрав остальные. это как попробовать нажать insert в noterpade и начать печатать сначала файла ). Тогда надо делать так - попросить у сервера маску раскодировать использовать закодировать обратно список файлов для кодирования ставить для клиента в корневой папке ресурса ... хватит подробностей, это надо делать, а не тупо по клаве стучать. UPD: Fail, что-то он не хочет писать вместо существующего. UPD2: Аха-ха-ха исправил Link to comment
Flaker Posted June 18, 2013 Share Posted June 18, 2013 Нет-нет, про функцию XOR, введенную в MTA недавно, я знаю. Зачем вставлять байты в существующий файл, просто создаешь новый файл, в котором уже сначала идет header, а дальше необходимые байты. По поводу алгоритма шифрования ты так и не ответил. И как ты, используя MTA, работаешь с байтами в файле? Link to comment
TheNormalnij Posted June 18, 2013 Share Posted June 18, 2013 Нет-нет, про функцию XOR, введенную в MTA недавно, я знаю. Зачем вставлять байты в существующий файл, просто создаешь новый файл, в котором уже сначала идет header, а дальше необходимые байты. 1. Размер необходимый для совершения операции. 2. Скорость ( может быть спорным ) 3. Юзабилити. Надо, чтобы админ произвел как можно меньше телодвижений, чтобы все заработало. Т.е если у человека сотня файлов, то надо сделать так, чтобы их не надо было переименовывать в ресурсе. Да и чтобы не своровали. И как ты, используя MTA, работаешь с байтами в файле? string.byte (s [, i [, j]]) Возвращает числовые коды символов s, s[i+1], ···, s[j]. По умолчанию значение для i равно 1; по умолчанию значение для j равно i. string.char (···) Принимает 0 или более целых чисел. Возвращает строку, длина которой равна количеству параметров, и каждый элемент строки установлен равным соответствующему параметру. Признаюсь, на последнем требуется хорошая фантазия, чтобы понять что том написано. string.char (···) Принимает 0 или более целых чисел ( ну да, это всем понятно ) и возвращает строку в котором каждый символ имеет числовой код, соответствующий числу. В ASCII каждый символ кодируется одним байтом. Если мы раскодируем строку "Ј" то ( на win ) получим числа <32 одно 71. Можно радоваться, основа работает, надо подкрутить юзабилити. UPD: огромное скриптерское НЯ Link to comment
nn03 Posted June 19, 2013 Share Posted June 19, 2013 Всем привет. Пытаюсь изменить в вот этом скрипте https://community.multitheftauto.com/ind ... ls&id=7404 название машин в самом магазине!Не кто не знает как изменить? Link to comment
TheNormalnij Posted June 19, 2013 Share Posted June 19, 2013 в скрипте будет таблица такого вида. local cars = {{579,60000 },{400,60000},{404,28000},{489,65000},{505,65000},{479,45000},{442,45000} } Создаешь в этих массивах третий параметр. local cars = {{579,60000, 'Тачка' },{400,60000, 'колеса' },{404,28000, 'еще кое че'},{489,65000},{505,65000},{479,45000},{442,45000} } Ищешь цикл, в котором этим элементам, будут соответствовать имена в списке. В моем случае это было for i,v in ipairs (cars) do local carName = getVehicleNameFromModel (v[1]) local row = guiGridListAddRow (carGridList) guiGridListSetItemText (carGridList, row, 1, carName, false, true) guiGridListSetItemText (carGridList, row, 2, tostring(v[2]), false, true) end Меняешь вторую строку здесь на строку. local carName = v[3] or getVehicleNameFromModel (v[1]) -- если не будет имени в таблице, то ищется стандартное далее делаем так local _getVehicleModelFromName = getVehicleModelFromName function getVehicleModelFromName( name ) for i, carInfo in ipairs( cars ) do if carInfo[3] and carInfo[3] == name then return carInfo[1] end end return _getVehicleModelFromName( name ) end Link to comment
nn03 Posted June 19, 2013 Share Posted June 19, 2013 в скрипте будет таблица такого вида. local cars = {{579,60000 },{400,60000},{404,28000},{489,65000},{505,65000},{479,45000},{442,45000} } Создаешь в этих массивах третий параметр. local cars = {{579,60000, 'Тачка' },{400,60000, 'колеса' },{404,28000, 'еще кое че'},{489,65000},{505,65000},{479,45000},{442,45000} } Ищешь цикл, в котором этим элементам, будут соответствовать имена в списке. В моем случае это было for i,v in ipairs (cars) do local carName = getVehicleNameFromModel (v[1]) local row = guiGridListAddRow (carGridList) guiGridListSetItemText (carGridList, row, 1, carName, false, true) guiGridListSetItemText (carGridList, row, 2, tostring(v[2]), false, true) end Меняешь вторую строку здесь на строку. local carName = v[3] or getVehicleNameFromModel (v[1]) -- если не будет имени в таблице, то ищется стандартное далее делаем так local _getVehicleModelFromName = getVehicleModelFromName function getVehicleModelFromName( name ) for i, carInfo in ipairs( cars ) do if carInfo[3] and carInfo[3] == name then return carInfo[1] end end return _getVehicleModelFromName( name ) end Вот и именно что нету там такого ((( Link to comment
TheNormalnij Posted June 20, 2013 Share Posted June 20, 2013 Импровизируй, вместо третьего кода автор сам вручную вписал в таблицы имена. Link to comment
Hanzo Posted June 20, 2013 Share Posted June 20, 2013 У меня тут есть кое что мне нужно сделать магазин на сервер допустим у меня имеется маркер как к нему привязать GUI окошко и так что бы его можно было открыт вставая на маркер и нажать на определённую кнопочку + как мне пополнить список покупок окна у меня имеются вот одно из них GUIEditor_Window = {} GUIEditor_Button = {} GUIEditor_Grid = {} GUIEditor_Window[1] = guiCreateWindow(729,400,755,559,"Оружие",false) GUIEditor_Button[1] = guiCreateButton(562,491,159,44,"Закрыть",false,GUIEditor_Window[1]) GUIEditor_Grid[1] = guiCreateGridList(14,27,727,437,false,GUIEditor_Window[1]) guiGridListSetSelectionMode(GUIEditor_Grid[1],2) Буду очень признателен Link to comment
AMARANT Posted June 20, 2013 Share Posted June 20, 2013 Необходимые функции: isElementWithinMarker bindKey guiGridListAddRow guiGridListAddColumn guiGridListSetItemText Link to comment
TheNormalnij Posted June 20, 2013 Share Posted June 20, 2013 да и вообще сверху пример есть ) Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now