Jump to content

Flaker

Members
  • Posts

    619
  • Joined

  • Last visited

Everything posted by Flaker

  1. local tMessages = { "Раз", "Два", "Три", "Четыре" }; math.randomseed( os.time() ); for i = 1, #tMessages do local iRand = math.random( #tMessages ); outputChatBox( tMessages[ iRand ] ); table.remove( tMessages, iRand ); end
  2. Ты уверен, что тебе надо это понимать? Где ты тут, вообще, пифагорову теорему увидел? "Для всякой тройки положительных чисел" - Это же, вроде, про четные числа, не? И про прямо-треугольники здесь нет ничего... Если ты действительно хочешь понять, то советую самому искать всю информацию... Иначе ниче ты не поймешь( Кури про длину векторов... А умножение на 180 или 111 - это издержки разницы дистанций. http://gta.wikia.com/Unit#GTA3.2C_GTAVC_.26_GTASA
  3. Player - это уже элемент... createElement нужно делать группу игроков. То-есть допустим createElement( 'Terroristgroup' ), а дальше к созданному элементу добавляешь детей: игроков. Потом при выполнении действия допустим outputChatBox( '', terrElem ) у тебя будет сообщение отправлено только детям элемента terrElem
  4. Писал когда-то библиотечку, для работы с MySQL и SQLite в MTA. Держи: http://pastebin.com/72aXwHWt Там функция db:lastId( ) возвращает последний вставленный ID
  5. Нет-нет, про функцию XOR, введенную в MTA недавно, я знаю. Зачем вставлять байты в существующий файл, просто создаешь новый файл, в котором уже сначала идет header, а дальше необходимые байты. По поводу алгоритма шифрования ты так и не ответил. И как ты, используя MTA, работаешь с байтами в файле?
  6. Во всех файлах есть такая штука как header... То-есть, все файлы определенного типа содержат несколько одинаковых битов в самом начале... Зная эти биты, можно однозначно идентифицировать тип файла ( Для этого, собственно, и используются эти биты )... Соответственно, в твоем случае, эти несколько бит можно убрать, а затем подставлять обратно при необходимости. P.S. Шаришь в булевой алгебре? Алгоритм у тебя завязан на ( byte1 xor byte 2 ) = byte3 => ( byte3 xor byte2 ) = byte1? Как ты вообще это реализовать пытаешься?
  7. Кол-во полученных строк проверь. #result - длина массива result.
  8. Этот код легче прочесть? O_O
  9. Смысл следующий: Пока сам не разберешься - не дорос. Здесь действует вне гласное правило - не распространяться о де компиляции.
  10. Попробуй закачивать в бинарном режиме.
  11. Тоесть про getTickCount ты вкурсе, а про onPlayerDamage нет? https://wiki.multitheftauto.com/wiki/OnPlayerDamage
  12. При попадании в игрока запоминай время попадания ( https://wiki.multitheftauto.com/wiki/GetTickCount ). При выходе найди разницу между текущим временем и временем попадания. ( Не забывай, что у тебя все время в мс будет )
  13. elseif model == 468 then setBlipColor(blip, 0,0,255,150) Не закрыто.
  14. это тоже рассматривал, тогда внешних повреждений не будет. Хотя, если врубать только когда hp меньше 400.. Ну тогда тоже колеса не прострелить. Не знаю в общем. Может кто подскажет все же, как часто синхронизируется здоровье авто от клиента к серверу, и синхронизируется ли вообще, если меняю его на стороне клиента? https://wiki.multitheftauto.com/wiki/SetVehicleWheelStates
  15. А ты не мог бы по поводу деструкторов прояснить несколько моментов На сколько я знаю, как таковых их нету в Lua, но есть ли возможность реализации? И как вызвать метод класса из этого же метода? Тоесть допустим self:destroy() возможен внутри метода этого же класса?
  16. https://wiki.multitheftauto.com/wiki/SetVehicleDamageProof
  17. Работает... Ну если функция на клиенте...
  18. Товарищи, перестаньте ругаться. Ведь, в любом случае, каждый останется при своем мнении. Названия топиком, действительно, очень часто не соответствуют нормам, но я думаю нужно просто сказать об этом топик стартерам. Ведь, все мы тоже, когда то, проходили через незнание, неумение, в большей или меньшей степени... Да и сейчас, я думаю, не стоит считать себя всезнающим. ( Хотя, это исключительно субъективное мнение и если ваше мнение иное, я ни в кое случае не оспариваю его. ) P.S. Да простят меня святые Кернелы
  19. В общем, соблюдай табуляцию, это как минимум удобно при чтении своего же кода. К тому же, шанс получить ответ, при наличии удобочитаемого кода, выше. И еще кое что: Ты не мог бы соблюдать правила форума в плане оформления топиков ( Название темы и так далее... ) Подробные правила форума Информация об оформлении топиков от Kernell'а
  20. 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. Вы не могли бы расставлять табуляцию получше... Невозможно читать код ведь. Как вы сами в нем разбираетесь?
  21. Возможно клиентский файл еще не загружен. Сделай так: При старте клиентского ресурса тригер серверного события, затем с сервера опять на клиент и там добавляешь onClientPlayerSpawn P.S. А почему бы не сделать эвент спавна на серверной части?
×
×
  • Create New...