-
Posts
200 -
Joined
-
Last visited
Everything posted by N1kS
-
I said about ACL, yes, thanks for trigger.
-
Server-side: -- Edit if u need local ReasonOfKick = "High Speed" addEvent ( "OnKickRequest", true ) addEventHandler ( "OnKickRequest", root, function() kickPlayer ( source, ReasonOfKick ) end )
-
В чем смысл данного сообщения? Ты рекомендуешь человеку выучить JS, Ruby, PHP или PAWN перед изучением Lua? Или ты просто решил показать свой навык и описать, какие языки ты знаешь? Единственное, что будет полезным из перечисленного тобой перед изучение Lua - ничего. Изучить алгоритмы, понять принцип работы кода. По факту: автор, лучший способ научиться что-то делать - это делать это. Ставь перед собой цель и пытайся ее реализовать Не будет получаться - лопать wiki и форум, у кого то однозначно была проблема подобного рода. Не сможешь найти решение - пиши на форум, более опытные люди помогут. Если все таки задался целью научиться - не сдавайся. Lua очень банальный язык.
-
Add your script to ACL. Client-side: -- Max speed local MaxSpeed = 1000 addEventHandler ( "onClientVehicleEnter", root, function ( pPlayer, iSeat ) if iSeat == 0 then addEventHandler ( "onClientRender", root, CheckSpeed ) end end ) addEventHandler ( "onClientVehicleExit", root, function ( pPlayer, iSeat ) if iSeat == 0 then removeEventHandler ( "onClientRender", root, CheckSpeed ) end end ) function CheckSpeed() local pVehicle = getPedOccupiedVehicle ( localPlayer ) if pVehicle and getVehicleOccupant ( pVehicle, 0 ) == localPlayer then local Speed = getElementSpeed ( pVehicle ) if Speed >= MaxSpeed then triggerServer ( "OnKickRequest", localPlayer ) end else removeEventHandler ( "onClientRender", root, CheckSpeed ) end end -- Function from mta.wiki. -- Original function by author of speedx resource. Modified, wiki-fied etc by varez. function getElementSpeed(element,unit) if (unit == nil) then unit = 0 end if (isElement(element)) then local x,y,z = getElementVelocity(element) if (unit=="mph" or unit==1 or unit =='1') then return (x^2 + y^2 + z^2) ^ 0.5 * 100 else return (x^2 + y^2 + z^2) ^ 0.5 * 1.8 * 100 end else outputDebugString("Not an element. Can't get speed") return false end end Server-side: addEvent ( "OnKickRequest", true ) addEventHandler ( "OnKickRequest", root, function() kickPlayer ( source ) end ) Didn't check, fix if will need.
-
aboudmad, nice bicycle... John Smith, try this, with comments, don't need image for static color, really! Just edit! -- Resolution local ScreenX, ScreenY = guiGetScreenSize() -- Render coordinats (where we wil render out rectangle) local X, Y = ScreenX/2, ScreenY/2 -- Rectangle width and height for ONE unit, just write, what you want, again... local RectangleWidth, RectangleHeight = 5, 5 -- Color for green HP, you can edit! local ColorGreen = tocolor ( 0, 255, 0, 255 ) -- Color for yellow HP, you can edit! local ColorYellow = tocolor ( 255, 255, 0, 255 ) -- Color for red HP, you can edit! local ColorRed= tocolor ( 255, 0, 0, 255 ) function RenderHealth() local Health = getElementHealth ( localPlayer ) -- Total Rectangle width -- I dont change height of recntagle, you can to do it! local TottalWidth = RectangleWidth * Health -- Draw our recntagle if Health > 66 then dxDrawRectangle ( X, Y, TottalWidth, RectangleHeight, ColorGreen ) elseif Health > 33 then dxDrawRectangle ( X, Y, TottalWidth, RectangleHeight, ColorYellow ) else dxDrawRectangle ( X, Y, TottalWidth, RectangleHeight, ColorRed) end end
-
И как же его потом запихнуть в гуи окно ? getScreenFromWorldPosition
-
Это мой патент, вообще то.
-
Нет, но можно "показать" изображение. Да это я знаю... Нашел архив с изображениями скинов, аж на 50 мб! Я не сторонник большого "веса" сервера Конверт в .gif. А что сделать то вообще нужно? Возможно смогу предложить другой, альтернативный способ, но не менее годный.
-
Мне Либа от тебя тоже нравится, но в публичной нет очень удобной штуки, как есть у sb320 (правда дописать ее - 10 минут). Вызов методов для userdata, ну пример банальный: local pVehicle = createVehicle( ... ) enew( pVehicle, CVehicle, тут можно дописать аргументы в конструктор ) pVehicle:SetColor( ... ) А по поводу this. - это просто дело привычки. self. тоже справляется нормально, тут чисто твой фетиш по поводу С подобных языков. Через плагин? Скорость не сильно проседает?
-
Ну мне Лекс скинул ссылку на функцию, этому парню отдельно спасибо.
-
Все оказалось гараздо легче: https://wiki.multitheftauto.com/wiki/Get ... ceRotation Спасибо Лексу.
-
Имеем окружность, имеем координаты центра, имеем координаты конца вектора 1, значит знаем длину вектора (это радиус). Нужно повернуть наш вектор 1, как повернут вектор 2. Тоесть нужно вычислить координаты конца вектора 2, зная процент, на который нужно повернуть.
-
Почитай: viewtopic.php?f=153&t=57987 viewtopic.php?f=153&t=50134 А по поводу делать свои - не понял. От себя советую использовать библиотеку: https://github.com/sbx320/lua_utils/blo ... asslib.lua Если еще публичная от Kernell'a, но мне эта больше по душе.
-
Сам код разве, что только вечером, теорию сейчас. Когда игрок пишет сообщение - проверяйте не отделяет ли его от другого игрока объект, машина и т.д. Если же отделяет, то дальность можно уменьшить(с 30 до 10, например).
-
local pPlayerVehicle = getPedOccupiedVehicle ( localPlayer ) if pPlayerVehicle then if getElementModel ( pPlayerVehicle ) == 601 then -- Do you'r code here. end end
-
Only shader, mate.
-
Эта даже столбики отсутствующие создает. Спасибо! Правда она на плагине...
-
Да вообще использовать: setElementData Медленнее, чем таблицы. Уже не раз на буржуйском форуме это показывали, доказывали и т.д. По поводу элемент даты - прочитай предыдущей пост от Kernell'a, он там доходчиво изложил. От себя единственное добавлю, что еще есть смысл использовать элемент дату для синхронизации от сервер к клиенту. По поводу вашего локального чата - нужно проверить, что делается быстрее, но мне кажется, что лучше через: getDistanceBetweenPoints3D Так же рекомендую добавить в ваш локальный чат функцию, она добавит реализма: isLineOfSightClear
-
Создаем таблички с помощью Lua. С примером, кто знает, что и как работает - измените сами. Возможно кому то интересно будет. -- Ваше подключение в БД, не забудьте изменить, пожалуйста! local pDBConnection = dbConnect ( "mysql", "dbname=dbName;host=127.0.0.1", "username", "password", "share=0" ) local aTables = { ["tunning"] = { { name="id", type="INT", length=11, unsigned=true, allowNull=false, default="AI", primaryKey=true }, { name="vehicleID", type="TINYINT", length=3, unsigned=true, allowNull=false, default=false, primaryKey=false }, { name="loginName", type="VARCHAR", length=64, allowNull=false, default=false }, { name="JSON", type="VARCHAR", length=1024, allowNull=false, default=false }, } } addEventHandler ( "onResourceStart", resourceRoot, function() for tableName, tableInfo in pairs ( aTables ) do -- Размер таблицы local iSize = table.size ( tableInfo ) -- Индекс PRIMARY KEY local iPrimaryKeyIndex = 0 -- Сам запрос local sQuery = "CREATE TABLE IF NOT EXISTS `"..tableName.."` (\n" for i = 1, iSize do sQuery = sQuery.."`"..tableInfo[i].name.."` " sQuery = sQuery..tableInfo[i].type if tableInfo[i].length then sQuery = sQuery.."("..tableInfo[i].length..") " else sQuery = sQuery.." " end if tableInfo[i].unsigned then sQuery = sQuery.."UNSIGNED " end if not tableInfo[i].allowNull then sQuery = sQuery.."NOT NULL " else sQuery = sQuery.."NULL " end if tableInfo[i].default then if tableInfo[i].default == "AI" then sQuery = sQuery.."AUTO_INCREMENT " else sQuery = sQuery.."DEFAULT '"..tableInfo[i].default.."' " end end if tableInfo[i].primaryKey then iPrimaryKeyIndex = i end local iLen = string.len ( sQuery ) sQuery = string.sub ( sQuery, 1, iLen - 1 ) sQuery = sQuery..", \n" if i == iSize then sQuery = sQuery.."PRIMARY KEY (`"..tableInfo[iPrimaryKeyIndex].name.."`)\n)" end end dbExec ( pDBConnection , sQuery ) end end )
-
getLocalPlayer() Можно вообще не использовать, т.к данная переменная предопределенна и называется localPlayer. И localPlayer- это не id, а userdata локального игрока. Почитайте документацию на wiki. В МТА изначально нет системы id и все игроки являются userdat'ой. Изучите доскональнее эвенты на стороне клиента. Там нет события onResourceStart, там есть событие: onClientResourceStart.
-
Kernell, все прекрасно поняли Вас и вашу идею, но вопрос ведь в другом: зачем делать из Lua Lua-C++? Все, о чем Вы сказали реализуемо с помощью метатаблиц(ну в прочем как и сказал другой участник выше). P.S. this реализовал как в плюсах? this->m_Member?
-
Возможно Kernell что-то посоветует. Он делал то, чем вы интересуетесь.
-
Скинь кусок кода, в котором именно присваивает ID.
-
То, что ты написал - это проверка едет авто с макс. скоростью или нет, а мне нужно просто вычислять макс. скорость каждого авто и сделать это посредствами функций сложно(в том плане, что на макс. скорость влияет много факторов: вес и т.д), поэтому я и составил таблицу. Тоесть другими словами: мне нужно макс. скорость авто, как только я в него сел и формулу для расчета макс. скорости с помощью параметров от handling я на просторах интернета не нашел. Поэтому выбор был только один: таблица.
