AHTOXA Posted September 26, 2011 Share Posted September 26, 2011 спасибо за то что выводятся только ошибки серверных скриптов остальное знал Link to comment
Carmack Posted September 26, 2011 Share Posted September 26, 2011 Доброго времени суток! Судя по вики(как я понял) глобальная переменная root возвращает родитель всех элеменов. Функция getRootElement() выполняет тоже самое. Вопрос 1: Зачем нужен getRootElement(), если есть переменная root? Или же я не правильно понял getRootElement()? Вопрос 2: На вики в примерах создается локальная переменная root. Но ведь это имя зарезервировано для глобальной root. Вообще сложновато разобраться в дереве элементов. Я это представляю на с++ в виде класса с методами (евентами), и его объектами (элементами). Простите за такие глупые вопросы). Link to comment
Kernell Posted September 27, 2011 Share Posted September 27, 2011 Видимо раньше root не была глобальной, а теперь сделали)) (Сам не знаю ответа, знаю точно, что теперь getRootElement можно спокойно заменить на root). Кроме root есть ещё много других. Кстати getLocalPlayer тоже можно заменить на просто localPlayer. Link to comment
MX_Master Posted September 27, 2011 Share Posted September 27, 2011 На вики есть и старые примеры, при которых root не являлась глобальной переменной. Вот еще список глобальных переменных в МТА на текущий момент: сервер _G_VERSIONcoroutinedebugexportsmathresourceresourceRootrootstringtable клиент _G_VERSIONcoroutinedebugexportsguiRootlocalPlayermathresourceresourceRootrootstringtable Link to comment
Arisu Posted September 27, 2011 Share Posted September 27, 2011 Никогда бы не подумал. Всегда определял root, resRoot и me вручную. Link to comment
MX_Master Posted September 27, 2011 Share Posted September 27, 2011 В долине тьмы стало светлее )))) Потому что у меня есть спички. Обросчайтезь Link to comment
Arisu Posted September 28, 2011 Share Posted September 28, 2011 А string, math и table тут причем? Это же классы. Link to comment
s3ap Posted September 28, 2011 Share Posted September 28, 2011 Это же зарезервированные слова просто, видимо выдернутые из мташного редактора Link to comment
Kernell Posted September 28, 2011 Share Posted September 28, 2011 А string, math и table тут причем? Это же классы. Это простые переменные с типом таблица, которые содержат в себе функции-методы. В Lua вообще как бы нет классов, есть только эмуляция с помощью мета-таблиц. Кроме этих трёх ещё есть: coroutine, io, os и debug (Больше не помню). Link to comment
lil Toady Posted September 28, 2011 Share Posted September 28, 2011 Помимо этих глобальных переменных есть еще переменные которые задаются в событиях, как например client в любом эвенте который был вызван с помощью triggerServerEvent. Еще всякие httpUser в скриптах выполняющихся через http сервер. Link to comment
MX_Master Posted September 28, 2011 Share Posted September 28, 2011 А самое интересное, что эти списки предопределенных переменных нигде не афишируются. О них можно узнать из разных страниц вики, а единой страницы нет (или есть?). Лично я нашел все переменные, создав специальный ресурс по логическому разбиению глобальных переменных на группы. До сих пор им пользуюсь для обновления файла подсветки синтаксиса в своем редакторе. Link to comment
StUNt71 Posted September 29, 2011 Share Posted September 29, 2011 У меня такой вопрос, думаю врядли поймёте, попробуй объяснить как-нибудь. Так вот, у меня есть массив local text = { "Text", root, 255, 255, 0, false } Ну и далее можно делать так: outputChatBox(text[1], text[2], text[3], text[4], text[5], text[6], text[7]) Ну а вот и вопрос: Можно ли сделать как-нибудь вот так? outputChatBox(text[1] ... text[n]) То есть я не знаю кол-во аргументов, и то что указана в переменной "n", столько их и будет. И такой вариант мне не подходит: if n == 1 then outputChatBox(text[1]) elseif n == 2 then outputChatBox(text[1], text[2]) elseif ... end Надеюсь понтятно объяснил. Link to comment
Aibo Posted September 29, 2011 Share Posted September 29, 2011 outputChatBox(unpack(text)) -- или c дефолтными вариантами для всех параметров: outputChatBox(text[1] or "Text", text[2] or root, text[3] or 255, text[4] or 255, text[5] or 255, text[6] or false) не? Link to comment
StUNt71 Posted September 29, 2011 Share Posted September 29, 2011 outputChatBox(unpack(text)) -- или c дефолтными вариантами для всех параметров: outputChatBox(text[1] or "Text", text[2] or root, text[3] or 255, text[4] or 255, text[5] or 255, text[6] or false) не? Спасибо. unpack - то что мне нужно. outputChatBox - это был просто пример. Link to comment
Arisu Posted September 29, 2011 Share Posted September 29, 2011 outputChatBox(unpack(text)) а можно ли так? принимает ли outputChatBox произвольное число аргументов? логичнее использовать text:concat(" ") или table.concat(text, " ") Link to comment
Aibo Posted September 29, 2011 Share Posted September 29, 2011 логичнее использовать text:concat(" ") или table.concat(text, " ") ну и зачем превращать список аргументов в строку? Link to comment
Ivan_Goblin Posted September 30, 2011 Share Posted September 30, 2011 Как загрузить enb на сервер Link to comment
Other Languages Moderators Disinterpreter Posted September 30, 2011 Other Languages Moderators Share Posted September 30, 2011 Я нестал себя мучать писанием кода. Я вырезал его отуда-то из папки mods: myShader, tec = dxCreateShader ( "car_paint.fx" ) if not myShader then outputChatBox( "Could not create shader. Please use debugscript 3" ) else -- outputChatBox( "Using technique " .. tec ) -- Set textures local textureVol = dxCreateTexture ( "images/smallnoise3d.dds" ); local textureCube = dxCreateTexture ( "images/cube_env256.dds" ); dxSetShaderValue ( myShader, "microflakeNMapVol_Tex", textureVol ); dxSetShaderValue ( myShader, "showroomMapCube_Tex", textureCube ); -- Apply to world texture -- engineApplyShaderToWorldTexture ( myShader, "vehiclegrunge256" ) enabled = false bindKey ( "F4", "down", toggleCarPaint ) end end ) Link to comment
Mr_Bob Posted September 30, 2011 Share Posted September 30, 2011 Мне нужно проверить каждый символ в имени пользователя и разрешить только буквы. Не подскажите как это сделать?(в pawn это легко сделать с case, как быть тут не знаю..) Link to comment
Kenix Posted September 30, 2011 Share Posted September 30, 2011 Мне нужно проверить каждый символ в имени пользователя и разрешить только буквы. Не подскажите как это сделать?(в pawn это легко сделать с case, как быть тут не знаю..) Это можно сделать через: string.find Link to comment
Mr_Bob Posted September 30, 2011 Share Posted September 30, 2011 Мне нужно проверить каждый символ в имени пользователя и разрешить только буквы. Не подскажите как это сделать?(в pawn это легко сделать с case, как быть тут не знаю..) Это можно сделать через: string.find перебирать все символы не хочется, думал может можно сделать что-то вроде case 'a'..'z', 'A'..'Z' Link to comment
LoveFist Posted September 30, 2011 Share Posted September 30, 2011 Как то так function isValidString(str) return not string.match(str,'[^a-z,A-Z]') end Link to comment
Kernell Posted September 30, 2011 Share Posted September 30, 2011 string.match(str,'[a-zA-Z]') Запятая не нужна.. ^ - это отрицание.. Зачем делать 2 раза отрицание? Link to comment
LoveFist Posted September 30, 2011 Share Posted September 30, 2011 Спасибо, буду знать Link to comment
Aibo Posted September 30, 2011 Share Posted September 30, 2011 string.match(str,'[a-zA-Z]')Запятая не нужна.. ^ - это отрицание.. Зачем делать 2 раза отрицание? а по-моему все правильно (кроме запятой): string.match('test','[a-zA-Z]') --> "t" string.match('test2[notvalid]','[a-zA-Z]') --> "t" -- что не хорошо not string.match('test','[^a-zA-Z]') --> true not string.match('test2[notvalid]','[^a-zA-Z]') --> false -- а так хорошо 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