Jump to content

Ruga

Members
  • Posts

    215
  • Joined

  • Last visited

Everything posted by Ruga

  1. ну вот)) просто внимательнее к ошибкам они сами о себе много говорят))
  2. боюсь спросить, а в мета файл как серверный прописали?
  3. я указал же таблицу не просто так))) есть два способа создать проверку на авто модели непосредственно)) по таблице и просто через источник тобишь приведу 2 примера model = { [490 ]=true } -- отсюда мы проверяем по модели, тоесть все машины с этой моделью будут в твоем случае бессмертны local car = createVehicle(490, -1616.40002, 750.09998, -4.9, 0, 0, 0) -- при таком спавне машин на карту можно не закрывать модель а проверять источник по созданному авто тобишь вот function car () createBlipAttachedTo( car , 11) -- атачим блип к созданному тс setVehicleDamageProof(car, true) end addEventHandler ( "onResourceStart", resourceRoot, car ) function carr ( thePlayer, seat, jacked ) if source == car and seat==0 then -- проверка на созданную выше машину, что бы перечислить машины ставь or тоесть source == car or source == car2 or source == car3 и тд. accname = getAccountName ( getPlayerAccount ( thePlayer ) ) if isObjectInACLGroup ("user."..accname, aclGetGroup ( "TCT" ) ) then outputChatBox ("Рабочее авто: Вы заступили на дежурство!", thePlayer, 0,255,0) else cancelEvent() end end end addEventHandler ( "onVehicleStartEnter", getRootElement(), carr ) это конечно зависит от желания. и нужд, но я бы не стал закрывать всю модель, тем более если вручную созхдавать авто через create ...
  4. во первых) постить много не стоит, редактируй прошлые посты если после твоих никто не ответил, имхо читать столько мукулатуры не есть хорошо думаю для всех... перейдем к коду)) в функции carr () не указан source, что значит посадка в любой тс админа будет вызывать продолжение сценария, размножить, создавай внутри функции car() твои авто или создай таблицу внутрь пихай модель тс и проверяй source по модели указанной в таблице model = {[id модели]= true} и непосредственно проверку на model [getElementModel(source)] зачем внутрь функции car пихать event ? onVehicleEnter.. model = { [id ]=true } -- сюда вноси ид модели машины function car () for _, vehicle in ipairs ( getElementsByType("vehicle") ) do -- замечу что атачить блип будет только уже на созданные авто на карте можешь создать их хоть в map editore хоть функцией create главное что бы они были при запуске скрипта, т.е. если они появятся после запуска скрипта то блипов не будет соотвественно if model [getElementModel(vehicle)] then -- проверяем на наличие моделей среди машин createBlipAttachedTo( vehicle, 11) -- атачим блип к этим моделям end end end addEventHandler ( "onResourceStart", resourceRoot, car ) function carr ( thePlayer, seat, jacked ) if model [getElementModel(source)] and seat==0 then -- проверяем посадку игрока именно в нашу модель тс accname = getAccountName ( getPlayerAccount ( thePlayer ) ) if isObjectInACLGroup ("user."..accname, aclGetGroup ( "Admin" ) ) then outputChatBox ("Рабочее авто: Вы заступили на дежурство!", thePlayer, 0,255,0) setVehicleDamageProof(source, true) else cancelEvent() end end end addEventHandler ( "onVehicleStartEnter", getRootElement(), carr )
  5. условие ставь, если игрок в зоне, т.е. кулшейпе, то нельзя спавнить, вроде бы понятно до этого объяснили))
  6. вызовится в принципе, после того как игрок все прогрузит и перезайдет
  7. setVehicleDamageProof isObjectInACLGroup прочтите))
  8. отредактируйте и выложите с номерами строк, ошибки аргументов никто исправлять не будет ища по пальцам где строка находится, и вам уже дали хороший ответ вот тут https://forum.multitheftauto.com/viewtopic.php?f=141&t=60216
  9. DakiLLa, спасибо гляну вроде бы то что надо)) Korish0074 , 7 строка во первых не закрыта и не аргументирована вторым аргументом, во вторых к чему вы вешаете этот обработчик? кода к нему не вижу тут. почитайте https://wiki.multitheftauto.com/wiki/AddEvent addEvent( "onPlayerHeadshot",true) p.s. зачем постить вопрос несколько раз?)) все и так все увидят и помогут по мере возможности
  10. createMarker setElementDimension setElementInterior setElementPosition создать маркер, определить заход игрока и кинуть его по координатам,измерению и интерьеру, для каждого инта нужно свое измерение чтобы игроки не сталкивались в одинаковых интерьерах друг с другом))хД, делаешь так же выход только инт и измерение даешь 0, и координируешь игрока на то место откуда тот зашел последняя функция
  11. нет, для чего удалять файлы? их просто нужно прогрузить после конекта в определенное время. но меня огорчает что я ничего найти не могу и придумать как существенно повлиять на закачку.
  12. https://wiki.multitheftauto.com/wiki/RU/Meta.xml почему тут указано что для файлов? для скрипта cash , или все таки с 1.4 версии? мб можно запрет поставить на закачку, не хочется заставлять игрока скачивать архив моделей при конекте
  13. не подскажите как запретить клиенту скачивать допустим модели вот это как то не прокатило ..
  14. про локальные адреса не понял, но если тебе нужны адреса интернет радиостанций то я беру вот отсюда)) http://airfm.ru/load/showtime_fm_128_kbps/43-1-0-1308 правда там есть битые... а так подойдет любая ссылка для прослушки на плеере))
  15. sound = playSound3D( 'http://listen.rpfm.ru:9000/premium128?station=181-uktop40&style=&description=', x, y, z) вставляй ссылку на радио задавай координаты и вуаля, на клиентской стороне вот покапайся https://wiki.multitheftauto.com/wiki/Sound
  16. На какой карте? ну да ладно, вот вам пример спавна после убийства addEventHandler ( "onPlayerWasted", getRootElement(), function ( ) setTimer( spawnPlayer, 2000, 1, source, x, y, z) end ) так будет
  17. 8 строку заменить на это: if tonumber ( id ) == getElementData ( car, 'id' ) then Ребята, нужна помощь. У меня возникла проблемка с lower, функция не держит юникод. print ( string.lower ( 'Test' ) ) --> test print ( string.lower ( 'Тест' ) ) --> Тест Собственно мне нужно заменить заглавные буквы на строчные. Может знает кто, как решить эту фигню? собственно я 8 строку и заменил. и написал вывод далее, что при сохранении файла строки перезаписываются данными по порядку, получается что удаляет просто по порядку, вообщем белеберда, лучше на sql попробую там по крайней мере есть что поучить и где что вычитать...
  18. id в принципе получать можно так local id = xmlNodeGetAttribute (v,"id") и получаем число tonumber(id) только все равно при удалении получаю что удаленные данные некоторые записываются в предедущую строку, ничего не понимаю, в инете толком не найти нормального описания а примеров тем более, ладно ребят спасибо, буду по старинке ручками удалять((
  19. Kenix да именно, только выборочно, конкретнее... заливаю строки в файл, даю им атрибуты один из коих id , но мне понадобилось что бы эти строки можно было удалять, соотвественно как проверить в цикле на наличие id в строке и удалить ее к примеру player сел в машину и если у нее id совпадает с id одной из строк удалить эту строку из xml как это осуществить ? function sod (source,cmd) local car = getPedOccupiedVehicle(source) local root = xmlLoadFile ("cars.xml") local houseroot = xmlFindChild (root,"cars",0) if (houseroot) then for i,v in ipairs (xmlNodeGetChildren(houseroot)) do local id = xmlNodeGetAttribute (v,"id") if id == getElemenData(car, 'id' ) then xmlDestroyNode( v ) xmlSaveFile(root) destroyElement(car) end end end end addCommandHandler('1', sod) это чудотворство не работает..(( как искать id в строке?
  20. ребят я сново со своими тараканами)) задавал этот вопрос, забросил и так и не сделал, вообщем сам вопрос нужно удалить строку в xml - xmlDestroyNode, сама строка выглядит так <car> <cars> <vehicle model="561" id="2350"></vehicle> </cars> </car> нужно осуществить поиск по id и удалить именно ту строку которая содержит id атрибут, local root = xmlLoadFile ("cars.xml") local houseroot = xmlFindChild (root,"cars",0) local car = xmlFindChild ( houseroot, "vehicle",0) что далее? помогите разобраться
  21. Так, если игрока нет в аккаунтах сервера, то каждый раз при его входе на сервер, будут загружаться не достающие файлы и камера будет висеть в заданной позиции. Пока файлы не зальются , после их будет спавнить . Вот нужно сделать этот код отдельным скриптом, серверным addEventHandler( "onPlayerJoin", root, function () setCameraMatrix(source, 369.74548339844, -2047.9771728516, 7.8359375) end ) это в общий скрипт тоесть server и client s function spawnMeC () spawnPlayer(source, 0,0,0) fadeCamera(source, true) setCameraTarget(source, source) giveWeapon ( source, 10, 1, true) giveWeapon ( source, 43, 500, true) giveWeapon ( source, 46, 1, true) setElementModel ( source, math.random(312) ) end addEvent("spawnMe", true) addEventHandler("spawnMe", getRootElement(), spawnMeC) cl addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), function() triggerServerEvent('spawnMe',getLocalPlayer()) end) для теста удалите клиент файлы и зайдите на сервер с ником не занесенным в акк сервера разберетесь в общем)) замечу еще раз, игроков занесенных в акк и если при этом есть сохранение их позиции то их будет спавнить по сохранению, у вас такого быть не должно если нет регистрации...Решить с чатом можно этой функцией setPlayerMuted , соответственно скрипт тогда нужно будет добавить в acl... и координаты лучше заливать в таблицу пример table = { [1]={x,y,z}, [2]={x,y,z}, [3]={x,y,z} } -- и так далее, главное в последнем не ставить запятой --и пользовать local spawnX, spawnY, spawnZ = unpack ( table [ 1 ] ) -- указать имя таблицы и номер внутри лежащих координат --также можно сделать random пример local spawnX, spawnY, spawnZ = unpack ( table [ math.random ( #table ) ] ) -- т.е. вместо номера у нас случайное число из таблицы
  22. сейчас я протестирую и сброшу что выйдет
  23. естественно он будет ходить и тп, у вас спавн стоит при join joinHandler()
×
×
  • Create New...