nikitafloy Posted December 8, 2013 Share Posted December 8, 2013 Пользуюсь заготовкой телепорта с форума: local Teleports = { --Создаем список телепортов { x=2244.6, y=-1664.8, z=15.5, pickupInt=0, pickupDim=0, teleX=207.7, teleY=-109.6, teleZ=1005.2, rot=0, int=15, dim=0}; { x=207.7, y=-110.9, z=1005.2, pickupInt=15, pickupDim=0, teleX=2244.9, teleY=-1663.4, teleZ=15.5, rot=0, int=0, dim=0} } addEventHandler ( "onResourceStart", resourceRoot, --При старте этого ресурса проходимся по массиву Teleports и создаем телепорты(пикапы) function ( ) for _,teleport in ipairs(Teleports) do --Цикл прохода по списку --teleport в данном случае это массив. В массиве Teleports это строчка { x=, y=, z=, teleX=, teleY=, teleZ=, rot=, int=, dim=}; --При каждом проходе позиция teleport сдвигается на 1 от предыдущей local TelePickup = createPickup(teleport["x"], teleport["y"], teleport["z"], 3, 1318) --Создем пикап if ( TelePickup ) then --Если пикап создан setElementInterior ( TelePickup, teleport["pickupInt"] ) setElementDimension ( TelePickup, teleport["pickupDim"] ) setElementData ( --Записываем в его дату "TeleportData", массив с позициями телепорта TelePickup, "TeleportData", { x = teleport.teleX, y = teleport.teleY, z = teleport.teleZ, rot = teleport.rot, int = teleport.int, dim = teleport.dim } ) addEventHandler ( "onPickupHit", TelePickup, onTeleportPickupHit ) --Добавляем эвент, при входе на этот пикап end end end ) function onTeleportPickupHit(hitElement) if ( getElementType ( hitElement ) == "player" and not isPedInVehicle ( hitElement )) then local TeleportData = getElementData(source, "TeleportData") --получаем массив с позицией телепортации setElementInterior ( hitElement, TeleportData["int"] ) setElementDimension ( hitElement, TeleportData["dim"] ) setElementPosition ( hitElement, TeleportData["x"], TeleportData["y"], TeleportData["z"], true ) end cancelEvent() end Но работает не всегда. А т.е., допустим, я вхожу в здание, всё ОК, при выходе интерьер не изменяется. К тому же я не дошел до плавного 'потемнения' экрана. Оно срабатывает после телепорта, а не во время него. Собственно 2 вопроса: Как исправить данный баг с телепортом из интерьера на улицу (0 инт). Скидывайте, если есть другие способы ТП-а; Как сделать плавное 'потемнение' экрана. Link to comment
nikitafloy Posted December 8, 2013 Share Posted December 8, 2013 fadeCamera Использовал, я же писал, что затемнение идет после телепорта, а не во время него. И самое главное что мне нужно - исправить баг с телепортом из интерера. Ин-фа инт-ра которого берется из 1-ого пикапа... Link to comment
Memory Posted December 9, 2013 Share Posted December 9, 2013 Привет всем, скажите, можно ли с php подключится к registry.db и вытащить информацию на сайт. На форуме ничего подобного не нашёл, только кто-то написал, что нельзя. С php, sql поверхностно знаком. И вобще, неужели в интернете нигде нет никакого скрипта, например, топ по чему-либо, его повсюду все спрашивают. Link to comment
CocaColaBear Posted December 9, 2013 Share Posted December 9, 2013 Привет всем, скажите, можно ли с php подключится к registry.db и вытащить информацию на сайт. На форуме ничего подобного не нашёл, только кто-то написал, что нельзя. С php, sql поверхностно знаком. И вобще, неужели в интернете нигде нет никакого скрипта, например, топ по чему-либо, его повсюду все спрашивают. PHP прекрасно работает с SQLite. Качаешь SQLiteBrowser и смотришь интересующие тебя таблицы, поля, а потом составляешь запрос к ним. Link to comment
Memory Posted December 9, 2013 Share Posted December 9, 2013 Ну собственно я про запрос и спрашиваю. Пример какой-нибудь, скрипт. Буду очень благодарен. Link to comment
CocaColaBear Posted December 9, 2013 Share Posted December 9, 2013 Ну собственно я про запрос и спрашиваю. Пример какой-нибудь, скрипт. Буду очень благодарен. Нету такого скрипта, который подходит ко всем случаям. Чтобы лезть к базе, вначале нужно знать SQL, без его вам с базами делать нечего. Примеры есть на вики https://wiki.multitheftauto.com/wiki/DbConnect#Example https://wiki.multitheftauto.com/wiki/DbQuery#Example Link to comment
TheNormalnij Posted December 9, 2013 Share Posted December 9, 2013 https://wiki.multitheftauto.com/wiki/PHP_SDK http://php.net/manual/ru/book.mysql.php http://php.net/manual/ru/book.sqlite.php http://www.sql-tutorial.ru/ Link to comment
Memory Posted December 9, 2013 Share Posted December 9, 2013 Спасибо, буду разбираться Link to comment
nikitafloy Posted December 13, 2013 Share Posted December 13, 2013 Как установить тайм-аут на команде? Допустим сейчас требуется поставить таймер использования на починку авто. Link to comment
CocaColaBear Posted December 14, 2013 Share Posted December 14, 2013 Как установить тайм-аут на команде? Допустим сейчас требуется поставить таймер использования на починку авто. Наверное так? addCommandHandler("timeout", function() outputChatBox("Таймаут команды на две секунды") setTimer(function() outputChatBox("Команда выполнена...") end, 2000, 1) end ) Link to comment
nikitafloy Posted December 14, 2013 Share Posted December 14, 2013 Как установить тайм-аут на команде? Допустим сейчас требуется поставить таймер использования на починку авто. Наверное так? addCommandHandler("timeout", function() outputChatBox("Таймаут команды на две секунды") setTimer(function() outputChatBox("Команда выполнена...") end, 2000, 1) end ) Нет, нет, я про getTickCount(). Примерный алгоритм: Отправка команды, запрос на инф-ю времени о получении данной командой данным игроком ранее, разность данных, вывод в n-переменной, если время прошло более чем 2 000 мс, то отправить команду, если нет, то вернуть. Не пользовался getTickCount() ранее, в функции он мне возвращает данные timeup сервера. Link to comment
Kernell Posted December 14, 2013 Share Posted December 14, 2013 Так и есть, getTickCount возвращает uptime машины в миллесекундах. Надо просто сравнить два отрезка времени. int lastTick = 0; // обработчик команды if( getTickCount() - lastTick >= 2000 ) { lastTick = getTickCount(); // true; } Link to comment
Memory Posted December 14, 2013 Share Posted December 14, 2013 Здравсвуйте, помогите сделать видимым текст над игроком для всех. Вот выдернул функцию из chatbubbles, ну естественно подогнал под себя, работает, но видит только localPlayer, а остальные нет. localPlayer = getLocalPlayer(); function showLevel() local camPosXl, camPosYl, camPosZl = getPedBonePosition (localPlayer, 6) local camPosXr, camPosYr, camPosZr = getPedBonePosition (localPlayer, 7) local x,y,z = (camPosXl + camPosXr) / 2, (camPosYl + camPosYr) / 2, (camPosZl + camPosZr) / 2 local cx,cy,cz = getCameraMatrix() local px,py,pz = getElementPosition(localPlayer) local distance = getDistanceBetweenPoints3D(cx,cy,cz,px,py,pz) local posx,posy = getScreenFromWorldPosition(x,y,z+0.020*distance+0.10) local elementtoignore1 = getPedOccupiedVehicle(localPlayer) or localPlayer if posx and distance <= 45 and ( isLineOfSightClear(cx,cy,cz,px,py,pz,true,true,false,true,false,true,true,elementtoignore1) ) then local width = 50 if getElementData(localPlayer, "Level") then dxDrawText ( "Уровень "..getElementData(localPlayer, "Level"), posx - (0.5 * width),posy - 20,posx - (0.5 * width),posy - 20, tocolor(70,255,70,255), 1.5, "default-bold", "center", "bottom", false, false, false, true, true ) end end end addEventHandler("onClientRender",getRootElement(),showLevel) Link to comment
nikitafloy Posted December 14, 2013 Share Posted December 14, 2013 Здравсвуйте, помогите сделать видимым текст над игроком для всех. Вот выдернул функцию из chatbubbles, ну естественно подогнал под себя, работает, но видит только localPlayer, а остальные нет. localPlayer = getLocalPlayer(); function showLevel() local camPosXl, camPosYl, camPosZl = getPedBonePosition (localPlayer, 6) local camPosXr, camPosYr, camPosZr = getPedBonePosition (localPlayer, 7) local x,y,z = (camPosXl + camPosXr) / 2, (camPosYl + camPosYr) / 2, (camPosZl + camPosZr) / 2 local cx,cy,cz = getCameraMatrix() local px,py,pz = getElementPosition(localPlayer) local distance = getDistanceBetweenPoints3D(cx,cy,cz,px,py,pz) local posx,posy = getScreenFromWorldPosition(x,y,z+0.020*distance+0.10) local elementtoignore1 = getPedOccupiedVehicle(localPlayer) or localPlayer if posx and distance <= 45 and ( isLineOfSightClear(cx,cy,cz,px,py,pz,true,true,false,true,false,true,true,elementtoignore1) ) then local width = 50 if getElementData(localPlayer, "Level") then dxDrawText ( "Уровень "..getElementData(localPlayer, "Level"), posx - (0.5 * width),posy - 20,posx - (0.5 * width),posy - 20, tocolor(70,255,70,255), 1.5, "default-bold", "center", "bottom", false, false, false, true, true ) end end end addEventHandler("onClientRender",getRootElement(),showLevel) Получить всех игроков, тем самым из таблицы выдернуть всех игроков под видом любой переменной, типа thePlayer. Нет? Link to comment
nikitafloy Posted December 14, 2013 Share Posted December 14, 2013 Так и есть, getTickCount возвращает uptime машины в миллесекундах.Надо просто сравнить два отрезка времени. int lastTick = 0; // обработчик команды if( getTickCount() - lastTick >= 2000 ) { lastTick = getTickCount(); // true; } Благодарю, разобрался. local ltick = getTickCount() function repairVehicle() local vehicle = getPedOccupiedVehicle(g_Me) if vehicle then if getTickCount() - ltick > 900000 then ltick = getTickCount() server.fixVehicle(vehicle) else errMsg ( 'Вы не можете так часто чинить авто!', g_Me ) end end end Но, так как я перфекционист, то как можно сделать, чтобы точкой отсчета стало использование функции, а не uptime сервера? Или всё так и построено? Link to comment
Kernell Posted December 14, 2013 Share Posted December 14, 2013 Но, так как я перфекционист, то как можно сделать, чтобы точкой отсчета стало использование функции, а не uptime сервера? Или всё так и построено? Дк ведь ты сам сделал точку отсчёта на аптайм сервера инициализировав переменную ltick. Ставь на 0, как я показывал выше. Ведь как можно поставить точку отсчёта на последне использование, если использования не было? Link to comment
nikitafloy Posted December 14, 2013 Share Posted December 14, 2013 Но, так как я перфекционист, то как можно сделать, чтобы точкой отсчета стало использование функции, а не uptime сервера? Или всё так и построено? Дк ведь ты сам сделал точку отсчёта на аптайм сервера инициализировав переменную ltick. Ставь на 0, как я показывал выше. Ведь как можно поставить точку отсчёта на последне использование, если использования не было? В таком случае условие не выполняется... ____________________ Всё, я разобрался, спасибо еще раз. Link to comment
Memory Posted December 14, 2013 Share Posted December 14, 2013 Получить всех игроков, тем самым из таблицы выдернуть всех игроков под видом любой переменной, типа thePlayer. Нет? Если честно, я не въехал в суть данной мне информации Так что возможно. Вобщем, надо как ник игрока (например, в рэйс), его же видят все, но сделан он на dx. А у меня тоже самое только над ником будет уровень. Собственно, пробовал nametags из race выдергивать, редактировал, но что-то не работало и ошибок никаких не выдавал. Link to comment
nikitafloy Posted December 15, 2013 Share Posted December 15, 2013 Получить всех игроков, тем самым из таблицы выдернуть всех игроков под видом любой переменной, типа thePlayer. Нет? Если честно, я не въехал в суть данной мне информации Так что возможно. Вобщем, надо как ник игрока (например, в рэйс), его же видят все, но сделан он на dx. А у меня тоже самое только над ником будет уровень. Собственно, пробовал nametags из race выдергивать, редактировал, но что-то не работало и ошибок никаких не выдавал. nametags - Выдает сам dx, но не данные о видимости другим игрокам. Создай таблицу: local players = getElementsByType ( "player" ) -- get a table of all the players in the server for theKey,thePlayer in ipairs(players) do -- use a generic for loop to step through each player thePlayer - Переменная, указывающая на всех игроков сервера. Вот её и суй. Link to comment
Memory Posted December 15, 2013 Share Posted December 15, 2013 Прям, от души, спасибо Link to comment
Stemka Posted December 15, 2013 Share Posted December 15, 2013 Здравствуйте. Собственно интересует вопрос, можно ли вытащить инвентарь с валхаллы и сделать его под "обычный " сервер? Может кто уже занимался таким? Или может кто сделает за оплату? ) Link to comment
Kenix Posted December 16, 2013 Share Posted December 16, 2013 Пиши с нуля. Заодно научишься. Link to comment
Stemka Posted December 16, 2013 Share Posted December 16, 2013 Пиши с нуля. Заодно научишься. Да в том то и дело, что не такой высокий уровень моих знаний, который требуется для этого инвентаря Ну а так учусь по-немножку, начиная с простых скриптов и вот сейчас как два часа пытаюсь разобраться что такое ооп Link to comment
CocaColaBear Posted December 16, 2013 Share Posted December 16, 2013 Да в том то и дело, что не такой высокий уровень моих знаний, который требуется для этого инвентаря Ну а так учусь по-немножку, начиная с простых скриптов и вот сейчас как два часа пытаюсь разобраться что такое ооп Если уж и разбираться в ООП, то определенно не в Lua. Да и нужно ли, лесть в ООП с начальными знаниями? 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