-
Posts
4,121 -
Joined
-
Last visited
-
Days Won
2
Everything posted by Kenix
-
Используй ресурс performancebrowser
-
Я так понял со временем, что большая закачка файлов ассациируется у большинства игроков с тем, что на сервере ничего уникального нет, кроме как моделей. Поэтому я думаю, что нужно делать свою загрузку, показывать заставку (писать возможности сервера и т.п), либо что то еще во время загрузки. В потоке сделать закачку файлов не очень обязательных, теже тачки, но опять же все зависит от направленности сервера
-
Google закрывает проект Google code, самое время переходить мташникам на github. http://www.google.com/appserve/mkt/p/KL ... EF45NhDAtD
-
Все параметры прописываются в mtaserver.conf
-
Функции нельзя передавать через exports.
-
Экспортировать метатаблицы нельзя, придется встраивать тебе в каждый ресурс, увы.
-
getPedMoveState более расширенный вариант
-
setElementPosition Тебя никто не запрещает сделать свой редактор. dxDrawText dxDrawLine3D dxDrawImage
-
Вряд ли вы сможете найти тут помощь по модам от сторонних разработчиков. Пишите только конкретные вопросы и предоставляя при этом всю информацию. viewtopic.php?f=141&t=40703
-
Наверное он имел ввиду, что использовать C++ в качестве языка для разработки мода глупо.
-
Он скорее имеет ввиду dm версию, а не mta race.
-
createRadarArea
-
[BUG] Проблема с setVehicleComponentRotation в 1.4.0.7000
Kenix replied to Seddo's topic in Помощь / Отчеты об ошибках
Помощь больше не нужна, проблема решена. Решение оказалось простым, теперь в новом комите доступен новый аргумент "base" для функций getVehicleComponentPosition/Rotation и берем значение "world". Проводим вектор от misc_b до misc_c и просто умножаем на новый вектор, чтобы сделать его длиннее (именно в то место полетит ракета). Большое спасибо SDraw. -
[BUG] Проблема с setVehicleComponentRotation в 1.4.0.7000
Kenix replied to Seddo's topic in Помощь / Отчеты об ошибках
У меня тажа проблема, правдо теперь с прицелом для танка. До обновлений с компонентами все работало нормально, теперь же нет. Кому не сложно помогите, в геометрии/тригонометрии не силен. function DestroyAttachedTankObjects( pVehicle ) local pObject = getElementData( pVehicle, "AttachedObject" ); if pObject and isElement( pObject ) then destroyElement( pObject ); end local pObject2 = getElementData( pVehicle, "AttachedObject2" ); if pObject2 and isElement( pObject2 ) then destroyElement( pObject2 ); end end addEventHandler( "onClientPreRender", root, function() if isPedInVehicle( localPlayer ) then local pVehicle = getPedOccupiedVehicle( localPlayer ); if pVehicle and isElement( pVehicle ) then -- Танк local iVehicleModel = getElementModel( pVehicle ); if iVehicleModel == 432 then local _, fPosY, fPosZ = getVehicleComponentPosition( pVehicle, "misc_c" ); local fComponentRotX = getVehicleComponentRotation( pVehicle, "misc_b" ); local _, _, fComponentRotZ = getVehicleComponentRotation( pVehicle, "misc_a" ); fComponentRotX = 360 - fComponentRotX; local pObject = getElementData( pVehicle, "AttachedObject" ); local pObject2 = getElementData( pVehicle, "AttachedObject2" ); if pObject and isElement( pObject ) and pObject2 and isElement( pObject2 ) then attachElements( pObject2, pObject, fPosY * math.sin( math.rad( fComponentRotZ ) ) * math.cos( math.rad( fComponentRotX ) ), fPosY * math.cos( math.rad( fComponentRotZ ) ) * math.cos( math.rad( fComponentRotX ) ), ( fPosZ - 1.1 ) + fPosY * math.sin( math.rad( fComponentRotX ) ) ); -- Рассчитываем точку попадания снаряда local fObjectPosX, fObjectPosY, fObjectPosZ = getElementPosition( pObject ); local fObject2PosX, fObject2PosY, fObject2PosZ = getElementPosition( pObject2 ); local fMaxDistance = 300; local fDistance = getDistanceBetweenPoints3D( fObjectPosX, fObjectPosY, fObjectPosZ, fObject2PosX, fObject2PosY, fObject2PosZ ); local fDx, fDy, fDz = (fObject2PosX - fObjectPosX) / fDistance, (fObject2PosY - fObjectPosY) / fDistance, (fObject2PosZ - fObjectPosZ) / fDistance local fX3, fY3, fZ3 = fObjectPosX + fMaxDistance * fDx, fObjectPosY + fMaxDistance * fDy, fObjectPosZ + fMaxDistance * fDz; local iAimPosX , iAimPosY = getScreenFromWorldPosition( fX3, fY3, fZ3 ); if iAimPosX then local bHit, fColX, fColY, fColZ = processLineOfSight ( fObject2PosX, fObject2PosY, fObject2PosZ, fX3, fY3, fZ3 ); if bHit then dxDrawLine3D( fObject2PosX, fObject2PosY, fObject2PosZ, fColX, fColY, fColZ ); end end end end end end end ); addEventHandler( "onClientVehicleEnter", root, function( pPlayer, iSeat ) if pPlayer == localPlayer then local iVehicleModel = getElementModel( source ); -- В танке if iVehicleModel == 432 then local fPosX, fPosY, fPosZ = getElementPosition( source ); local pObject = createObject( 1239, fPosX, fPosY, fPosZ ); local pObject2 = createObject( 1239, fPosX, fPosY, fPosZ ); setElementAlpha( pObject, 0 ); setElementAlpha( pObject2, 0 ); setElementCollisionsEnabled( pObject, false ); setElementCollisionsEnabled( pObject2, false ); local _,_,fComponentPosZ = getVehicleComponentPosition( source, "misc_a" ); attachElements( pObject, source, 0, 0, fComponentPosZ ); attachElements( pObject2, pObject, 0, 5, fComponentPosZ ); setElementData( source, "AttachedObject", pObject ); setElementData( source, "AttachedObject2", pObject2 ); end end end ); addEventHandler( "onClientVehicleExit", root, function( pPlayer, iSeat ) if pPlayer == localPlayer then local iVehicleModel = getElementModel( source ); -- Слезаем с танка if iVehicleModel == 432 then DestroyAttachedTankObjects( source ); end end end ); addEventHandler( "onClientVehicleExplode", root, function() DestroyAttachedTankObjects( source ); end ); -
Вроде как нет, нужно писать всю систему самому. Алгоритм: Ставишь таймер, который обновляет раз в 30 секунд состояние бега (присваиваешь к переменной или элемент дате значение) если число == 100, то применяешь toggleControl и проигрываешь анимацию "уставания" - можешь найти в ресурсе freeroam, после истечения времени снова применяй toggleControl чтобы игрок смог снова бегать. toggleControl setPedAnimation setTimer
-
Напиши администрации сервера о проблеме.
-
Мое мнение вот такое. Как только ты начинаешь кидать гранату, получай всех игроков в стриме и отправляй их на сервер. После этого на сервере отправляй 1 пакет всем игрокам, которых ты получил у себя в стриме. Вроде бы совсем недавно была добавлена возможность отправлять пакет конкретным игрокам, а не всем. Лучше этого варианта я думаю что не найдешь. Клиент -- Собираем всех игроков в стриме local aStreamedInPlayers = getElementsByType( "player", root, true ); triggerServerEvent("onPlayerThrowSuperBanana",localPlayer, aStreamedInPlayers, x,y,z,rotXY,rotZ,force); Сервер addEvent( "onPlayerThrowSuperBanana", true ); addEventHandler( "onPlayerThrowSuperBanana", root, function( aStreamedInPlayers, ... ) triggerClientEvent( aStreamedInPlayers, "onClientPlayerThrowSuperBanana", source, ... ); end );
-
Получай координаты тачки на стороне клиента, после этого делай тригер на сервер и спавни.
-
for _, v in pairs( Table ) do for _, v2 in pairs( v ) do source:setData( v2[ 1 ], v2[ 2 ] ); end end
-
1. Также в мта есть баг ещё, что иногда навсегда пропадает звук лопастей у вертолетов, можно сделать свой костыль через playSound3D attachElements по другому я не знаю как ты сможешь решить эту проблему. 2. setVehicleLandingGearDown Гугл в случае с мта вряд ли поможет, лучше искать ответ на wiki mta и на форуме в поиске. https://wiki.multitheftauto.com/wiki/Main_Page
-
Кому нужна функция на эту же тему, забирайте. -- aInputTable - заполненная таблица -- iMaxRows, iMaxColumns - максимальное число строк/столбцов -- iX, iY - позиция ячейки -- iW, iH - ширина и высота ячейки -- bState - заполнена/не заполнена function FillCells( aInputTable, iMaxRows, iMaxColumns, iX, iY, iW, iH, bState ) for iRow = 1, iMaxRows do for iColumn = 1, iMaxColumns do if ( iRow >= iY and iRow < iY + iH ) and ( iColumn >= iX and iColumn < iX + iW ) then aInputTable[ iRow ][ iColumn ] = bState; end end end end
-
Никак, она не реализована
-
1st argument should be vehicle-pointer (veh - variable) but (your is number 2 ).
-
Keep it up!