-
Posts
619 -
Joined
-
Last visited
Everything posted by Flaker
-
local tMessages = { "Раз", "Два", "Три", "Четыре" }; math.randomseed( os.time() ); for i = 1, #tMessages do local iRand = math.random( #tMessages ); outputChatBox( tMessages[ iRand ] ); table.remove( tMessages, iRand ); end
-
Ты уверен, что тебе надо это понимать? Где ты тут, вообще, пифагорову теорему увидел? "Для всякой тройки положительных чисел" - Это же, вроде, про четные числа, не? И про прямо-треугольники здесь нет ничего... Если ты действительно хочешь понять, то советую самому искать всю информацию... Иначе ниче ты не поймешь( Кури про длину векторов... А умножение на 180 или 111 - это издержки разницы дистанций. http://gta.wikia.com/Unit#GTA3.2C_GTAVC_.26_GTASA
-
Player - это уже элемент... createElement нужно делать группу игроков. То-есть допустим createElement( 'Terroristgroup' ), а дальше к созданному элементу добавляешь детей: игроков. Потом при выполнении действия допустим outputChatBox( '', terrElem ) у тебя будет сообщение отправлено только детям элемента terrElem
-
Писал когда-то библиотечку, для работы с MySQL и SQLite в MTA. Держи: http://pastebin.com/72aXwHWt Там функция db:lastId( ) возвращает последний вставленный ID
-
Нет-нет, про функцию XOR, введенную в MTA недавно, я знаю. Зачем вставлять байты в существующий файл, просто создаешь новый файл, в котором уже сначала идет header, а дальше необходимые байты. По поводу алгоритма шифрования ты так и не ответил. И как ты, используя MTA, работаешь с байтами в файле?
-
Во всех файлах есть такая штука как header... То-есть, все файлы определенного типа содержат несколько одинаковых битов в самом начале... Зная эти биты, можно однозначно идентифицировать тип файла ( Для этого, собственно, и используются эти биты )... Соответственно, в твоем случае, эти несколько бит можно убрать, а затем подставлять обратно при необходимости. P.S. Шаришь в булевой алгебре? Алгоритм у тебя завязан на ( byte1 xor byte 2 ) = byte3 => ( byte3 xor byte2 ) = byte1? Как ты вообще это реализовать пытаешься?
-
Здесь вам не тут)
-
Кол-во полученных строк проверь. #result - длина массива result.
-
Этот код легче прочесть? O_O
-
Смысл следующий: Пока сам не разберешься - не дорос. Здесь действует вне гласное правило - не распространяться о де компиляции.
-
table.concat
-
Попробуй закачивать в бинарном режиме.
-
Тоесть про getTickCount ты вкурсе, а про onPlayerDamage нет? https://wiki.multitheftauto.com/wiki/OnPlayerDamage
-
При попадании в игрока запоминай время попадания ( https://wiki.multitheftauto.com/wiki/GetTickCount ). При выходе найди разницу между текущим временем и временем попадания. ( Не забывай, что у тебя все время в мс будет )
-
elseif model == 468 then setBlipColor(blip, 0,0,255,150) Не закрыто.
-
это тоже рассматривал, тогда внешних повреждений не будет. Хотя, если врубать только когда hp меньше 400.. Ну тогда тоже колеса не прострелить. Не знаю в общем. Может кто подскажет все же, как часто синхронизируется здоровье авто от клиента к серверу, и синхронизируется ли вообще, если меняю его на стороне клиента? https://wiki.multitheftauto.com/wiki/SetVehicleWheelStates
-
[Lua] setmetatable, учимся работать с метатаблицами
Flaker replied to Kernell's topic in Уроки / Примеры
А ты не мог бы по поводу деструкторов прояснить несколько моментов На сколько я знаю, как таковых их нету в Lua, но есть ли возможность реализации? И как вызвать метод класса из этого же метода? Тоесть допустим self:destroy() возможен внутри метода этого же класса? -
https://wiki.multitheftauto.com/wiki/SetVehicleDamageProof
-
Работает... Ну если функция на клиенте...
-
Товарищи, перестаньте ругаться. Ведь, в любом случае, каждый останется при своем мнении. Названия топиком, действительно, очень часто не соответствуют нормам, но я думаю нужно просто сказать об этом топик стартерам. Ведь, все мы тоже, когда то, проходили через незнание, неумение, в большей или меньшей степени... Да и сейчас, я думаю, не стоит считать себя всезнающим. ( Хотя, это исключительно субъективное мнение и если ваше мнение иное, я ни в кое случае не оспариваю его. ) P.S. Да простят меня святые Кернелы
-
В общем, соблюдай табуляцию, это как минимум удобно при чтении своего же кода. К тому же, шанс получить ответ, при наличии удобочитаемого кода, выше. И еще кое что: Ты не мог бы соблюдать правила форума в плане оформления топиков ( Название темы и так далее... ) Подробные правила форума Информация об оформлении топиков от Kernell'а
-
local plTable = { [23] = {1324.92,1581.27,9.82}, [24] = {350.09,2537.41,15.73}, [25] = {-1349.78,-233.62,13.14}, [26] = {1650.08,-2441.07,12.55} } function getLocS( ID ) if isElement ( marker ) then destroyElement( marker ) end if isElement ( bl ) then destroyElement( bl ) end local x, y, z = plTable[ID][1], plTable[ID][2],plTable[ID][3] -- Про массивы почитайте поподробнее. Очень важная тема! marker = createMarker(x,y,z,"checkpoint",10,10,235,250,150) -- Переменные были локальные, поэтому доступа вне функции к ним получить нельзя было bl = createBlipAttachedTo(marker,19,2,10,235,250,225) -- Так же область видимости... Отсуда и ошибки в аргументах addEventHandler("onClientMarkerHit", marker ,MarkerHit, false ) -- Почитайте поподробнее на WIKI про аргументы! А точнее про 4 аргумент. У вас он был hitElement. end function MarkerHit ( hitPlayer ) -- Зачем обработчик события было вносить внутрь другой функции? if hitPlayer == getLocalPlayer() and isPedInVehicle(hitPlayer) then if (getElementData ( hitPlayer, "worksy" ) == 1) then if getElementModel ( getPedOccupiedVehicle(hitPlayer) ) == 581 then getLocS( 1) outputChatBox ("Информация:",hitPlayer, 0,153,51) setElementData ( hitPlayer, "worksy", 2 ) else outputChatBox ("Ошибка:",hitPlayer, 102, 0, 0) end elseif (getElementData (hitPlayer, "worksy" ) == 2) then if getElementModel ( getPedOccupiedVehicle(hitPlayer) ) == 581 then setElementData ( hitPlayer, "worksy",1) outputChatBox("Информация: довезли груз!",hitPlayer, 0,153,51) getLocS( 2 ) else outputChatBox("Ошибка:",hitPlayer, 102, 0, 0) end end end end ModelBus1 = { [581] = true } function enterinVehicle581 ( thePlayer, seat, jacked ) if ModelBus1[ getElementModel(source) ] and seat==0 then getLocS( math.random( #plTable ) ) -- Вы должны передать рандомный row таблицы, а не 1 или 2 setElementData( thePlayer, "worksy", 1 ) end end addEventHandler ( "onVehicleEnter", getRootElement(), enterinVehicle581 ) Код прокомментировал. P.S. Вы не могли бы расставлять табуляцию получше... Невозможно читать код ведь. Как вы сами в нем разбираетесь?
-
Возможно клиентский файл еще не загружен. Сделай так: При старте клиентского ресурса тригер серверного события, затем с сервера опять на клиент и там добавляешь onClientPlayerSpawn P.S. А почему бы не сделать эвент спавна на серверной части?
-
Компилируется, запускается, но не работает.
Flaker replied to Narrator's topic in Помощь / Отчеты об ошибках
Обращайся