CocaColaBear Posted August 26, 2013 Share Posted August 26, 2013 Как вычислить попадание из оружия по транспорту? Если стреляет игрок, то - https://wiki.multitheftauto.com/wiki/OnClientPlayerWeaponFire, там есть параметр hitElement, который содержит указатель на элемент, в который попал игрок. Если стреляет созданное оружие, то скорее всего придется проверять через https://wiki.multitheftauto.com/wiki/GetWeaponTarget Link to comment
Jonathan.P Posted August 26, 2013 Share Posted August 26, 2013 Спасибо за ваши советы, буду пробывать. Только вот еще подскажите функцию для возврата длины строки, кроме '#' и 'string.len' А то при: addEventHandler("onClientChatMessage", getRootElement(), function(message) outputChatBox(tostring(string.len(message))) end ) У меня выходит: Link to comment
Kenix Posted August 26, 2013 Share Posted August 26, 2013 utfLen Если работаешь с юникодом. Link to comment
Jonathan.P Posted August 26, 2013 Share Posted August 26, 2013 Мне кажется, я немного идиот. Надо было не в "onClientChatMessage"(Помимо там у меня выходило еще пару серверных сообщений), а в "onPlayerChat". Теперь работает и с решеткой, и с "string.len", и с "utfLen". Спасибо Link to comment
Jonathan.P Posted August 26, 2013 Share Posted August 26, 2013 Здравствуйте. Когда время анимации ставишь на нуль, то пед получает возможность бегать и вообще передвигаться с анимацией. Так вот, а если я ставлю параметр loop на false, то в конце анимации у педа "замораживаются" руки, и отмораживаются только когда он прыгнет, сядет в машину и пр. Так вот, как разморозить их в конце анимации без физ. манипуляций? Пробовал таймером обнулить анимку: setPedAnimation(source) - не помогает. Желательно конечно обнулить её в самом конце. UP! Решил проблему сам. Нашел на английском форуме тему: https://forum.multitheftauto.com/viewtopic.php?f=91&t=27586 После анимки поставил таймер на анимацию: setTimer(setPedAnimation, 5000, 1, source, "BSKTBALL","BBALL_idle_O", 1, false, false, true, false) которую посоветовал чувак. Еще он писал, мол все анимки блокируют звуки бега, и этого не избежать. Но ведь это 2010 год, а сейчас можно заюзать параметр 'freezeLastFrame'(он последний) и поставить его на 'false' - звуки появляются сразу после окончания "полезной" нам анимки. Да, пробовал юзать этот параметр на этой самой нужной мне анимке - не выходит, она останавливается моментально (видимо конфликтует с нулевым временем). Остается одна проблема: Угадать с временем таймера, т.е. с окончанием анимации - что видимо невозможно на программном уровне. Приходится прикидывать. Link to comment
Jonathan.P Posted August 27, 2013 Share Posted August 27, 2013 Проблема. Создал таблицу, где ключ - игрок. Не могу удалить запись по функции: table.remove(textsToDraw,source) Может это быдлокод и извращенство - использовать в качестве ключа элемент? Как поступить? Link to comment
Kernell Posted August 27, 2013 Share Posted August 27, 2013 Это не быдлокод, это незнание языка и/или не внимательное чтение документации. table.insert \ table.remove для работы с таблицей как с массивом. в вашем случае поможет только textsToDraw[ source ] = nil; Link to comment
Korish0074 Posted August 28, 2013 Share Posted August 28, 2013 theVehicle = createVehicle(600, 2530.413, -1710.22, 13.323, 0, 0, 0, "SpawN") setElementData(theVehicle,"rocket",true) zenit = createObject(3884, 2530.621, -1715.385, 12.489) attachElements(zenit, theVehicle, 0,-1.8,-0.5) function bindKeyStartFire() bindKey(source,"1","down",startfireRocket) end addEventHandler("onPlayerJoin", getRootElement(),bindKeyStartFire) function startfireRocket(source) if isPedInVehicle(source) then local vehicle = getPedOccupiedVehicle(source) if getElementData(vehicle,"rocket") == true then if getVehicleController(vehicle) == source then local x,y,z = getElementPosition(vehicle) local rx,ry,rz = getVehicleRotation(vehicle) if getElementData(vehicle,"rocket_Progress") == 100 then triggerClientEvent("fireRocket", getRootElement(), source, x, y, z, rz,vehicle) else playSoundFrontEnd(source,5) outputChatBox("#CC0033[СЕРВЕР]: #339933 Прогресс востоновления зенитной установки не завершон! Осталось "..tostring(100 - getElementData(vehicle,"rocket_Progress"))..".", source, 0, 0, 0,true) end end end end end function explodeZUvehicle() if getVehicleOccupant(source) then local player = getVehicleOccupant(source) if (getElementData(source,"rocket") == true) then triggerClientEvent(player, "destroiGui", getRootElement(),player) end end end addEventHandler("onVehicleExplode", getRootElement(), explodeZUvehicle) function moveZenit(Rz) setElementAttachedOffsets(zenit, 0,-1.8,-0.5, 0,0,Rz) end addEvent("moveZenit", true) addEventHandler("moveZenit", getRootElement(), moveZenit) Данная функция устанавливает на транспорт Picador зинитку, возможно ли поменять функцию вместо зинитки, пулемёт с прицелом? Link to comment
Other Languages Moderators Disinterpreter Posted August 28, 2013 Other Languages Moderators Share Posted August 28, 2013 theVehicle = createVehicle(600, 2530.413, -1710.22, 13.323, 0, 0, 0, "SpawN") setElementData(theVehicle,"rocket",true) zenit = createObject(3884, 2530.621, -1715.385, 12.489) attachElements(zenit, theVehicle, 0,-1.8,-0.5) function bindKeyStartFire() bindKey(source,"1","down",startfireRocket) end addEventHandler("onPlayerJoin", getRootElement(),bindKeyStartFire) function startfireRocket(source) if isPedInVehicle(source) then local vehicle = getPedOccupiedVehicle(source) if getElementData(vehicle,"rocket") == true then if getVehicleController(vehicle) == source then local x,y,z = getElementPosition(vehicle) local rx,ry,rz = getVehicleRotation(vehicle) if getElementData(vehicle,"rocket_Progress") == 100 then triggerClientEvent("fireRocket", getRootElement(), source, x, y, z, rz,vehicle) else playSoundFrontEnd(source,5) outputChatBox("#CC0033[СЕРВЕР]: #339933 Прогресс востоновления зенитной установки не завершон! Осталось "..tostring(100 - getElementData(vehicle,"rocket_Progress"))..".", source, 0, 0, 0,true) end end end end end function explodeZUvehicle() if getVehicleOccupant(source) then local player = getVehicleOccupant(source) if (getElementData(source,"rocket") == true) then triggerClientEvent(player, "destroiGui", getRootElement(),player) end end end addEventHandler("onVehicleExplode", getRootElement(), explodeZUvehicle) function moveZenit(Rz) setElementAttachedOffsets(zenit, 0,-1.8,-0.5, 0,0,Rz) end addEvent("moveZenit", true) addEventHandler("moveZenit", getRootElement(), moveZenit) Данная функция устанавливает на транспорт Picador зинитку, возможно ли поменять функцию вместо зинитки, пулемёт с прицелом? Возможно. Link to comment
Korish0074 Posted August 28, 2013 Share Posted August 28, 2013 theVehicle = createVehicle(600, 2530.413, -1710.22, 13.323, 0, 0, 0, "SpawN") setElementData(theVehicle,"rocket",true) zenit = createObject(3884, 2530.621, -1715.385, 12.489) attachElements(zenit, theVehicle, 0,-1.8,-0.5) function bindKeyStartFire() bindKey(source,"1","down",startfireRocket) end addEventHandler("onPlayerJoin", getRootElement(),bindKeyStartFire) function startfireRocket(source) if isPedInVehicle(source) then local vehicle = getPedOccupiedVehicle(source) if getElementData(vehicle,"rocket") == true then if getVehicleController(vehicle) == source then local x,y,z = getElementPosition(vehicle) local rx,ry,rz = getVehicleRotation(vehicle) if getElementData(vehicle,"rocket_Progress") == 100 then triggerClientEvent("fireRocket", getRootElement(), source, x, y, z, rz,vehicle) else playSoundFrontEnd(source,5) outputChatBox("#CC0033[СЕРВЕР]: #339933 Прогресс востоновления зенитной установки не завершон! Осталось "..tostring(100 - getElementData(vehicle,"rocket_Progress"))..".", source, 0, 0, 0,true) end end end end end function explodeZUvehicle() if getVehicleOccupant(source) then local player = getVehicleOccupant(source) if (getElementData(source,"rocket") == true) then triggerClientEvent(player, "destroiGui", getRootElement(),player) end end end addEventHandler("onVehicleExplode", getRootElement(), explodeZUvehicle) function moveZenit(Rz) setElementAttachedOffsets(zenit, 0,-1.8,-0.5, 0,0,Rz) end addEvent("moveZenit", true) addEventHandler("moveZenit", getRootElement(), moveZenit) Данная функция устанавливает на транспорт Picador зинитку, возможно ли поменять функцию вместо зинитки, пулемёт с прицелом? Возможно. Можно узнать, как? Link to comment
TheNormalnij Posted August 29, 2013 Share Posted August 29, 2013 [url=https://wiki.multitheftauto.com/wiki/CreateWeapon]https://wiki.multitheftauto.com/wiki/CreateWeapon[/url] Link to comment
Jonathan.P Posted August 30, 2013 Share Posted August 30, 2013 1) Если я setPedAnimation пропишу в клиенте, будет ли анимация видна другим игрокам? (не нашел инфы о синхронизации) 2) Если я заюзаю функцию setPlayerName, изменится ли в настройках у клиента ник? 3) Если игрок изменит ник в настройках(во время игры), то потом функция getPlayerName будет возвращать старый или новый ник(если всё это время игрок не перезаходил)? Link to comment
Scripting Moderators Sarrum Posted August 30, 2013 Scripting Moderators Share Posted August 30, 2013 1) Нет 2) Нет 3) Новый Link to comment
Jonathan.P Posted August 30, 2013 Share Posted August 30, 2013 1) Нет2) Нет 3) Новый Насчет 1) и 2) пока поверю. А вот насчет 3) всё очень странно: проверил - возвращает старый ник. Притом возвращает и клиент, и сервер, даже после рестарта ресурса. Новый возвращает только если игрок перезайдет. Но я засомневался. Оказывается дело в том что у меня в другом(!) ресурсе стоит cancelEvent() на евенте 'onPayerCommand' когда игрок вводит команду /nick (изменить ник). Т.е. изменить ник командой /nick и изменить ник через настройки - это одно и то же. Link to comment
nikitafloy Posted September 1, 2013 Share Posted September 1, 2013 if isObjectInACLGroup ( "user." ..tostring(getAccountName(getPlayerAccount(player))) , aclGetGroup ( "Security" ) ) then Bad argument @getAccountName Expected account at argument 1, got boolean. Link to comment
TheNormalnij Posted September 1, 2013 Share Posted September 1, 2013 (edited) hasObjectPermissionTo будте хорошими кодерами. Edited September 1, 2013 by Guest Link to comment
nikitafloy Posted September 1, 2013 Share Posted September 1, 2013 hasObjectPermissionTo будте хорошими кодурами. А...Эм... Вылетела мысль.... Выше кидали то же самое. Вроде, что-то здесь должно быть по-другому, как мне показалось. Сейчас посмотрю... Ах, да.. Это не для команд выполнения, а для маркера. Заходишь на маркер - идет проверка. Сразу же вопрос по теме маркеров. Эвент выполняется при условии, если игрок зашел на маркер. Но что делать, если их >1? Получается, что он будет выполнять самую первую функцию... Link to comment
TheNormalnij Posted September 1, 2013 Share Posted September 1, 2013 Если имеется ввиду кол-во эвентов, то все будут работать. Можно для них еще поставить приоритет, если требуется. Link to comment
nikitafloy Posted September 1, 2013 Share Posted September 1, 2013 Если имеется ввиду кол-во эвентов, то все будут работать. Можно для них еще поставить приоритет, если требуется. Благодарю. Как осуществить работу полиции - оглушение игрока с 1 удара, имитация наручников, посадить игрока. На счет посадить - Есть тюрьма, это точка, нужно вычислить разность между позициями игрока и тюрьмы. Т.е. мент приводит игрока в тюрьму, где перед ним несколько камер. Мент вводит команду /p 1, например, и игрока сажает spawnPlayer на позицию тюрьмы #1. Там уже таймер включается, которой освобождает его через опр. время. Опять же респаунит на улицу, например. И можно ли заблочить двери для игрока, если он находится в полицейском автомобиле? Не любитель РП, просто задумка пришла для РПГ. Link to comment
Jonathan.P Posted September 4, 2013 Share Posted September 4, 2013 Прошу помощи! EDF: <element name="bizEntry"> <data name="refid" type="element:bizReturn" required="true" default="" /> <data name="position" type="coord3d" required="true" default="0,0,0" /> <data name="rotation" type="coord3d" required="true" default="0,0,0" /> <data name="interior" type="integer" default="0" /> <data name="dimension" type="integer" default="0" /> <marker position="!position!" type="arrow" size="2.2" color="#e1ff00c8" interior="!interior!" dimension="!dimension!"/> </element> MAP: <map> <bizEntry id="default" refid="default" posX="1456.77" posY="-1138.02" posZ="23.2872" rotation="0" dimension="0" interior="0" /> </map> Почему маркер не создается автоматом? Как это сделать? Чертов edf, так толком и не разберешься. Link to comment
nejiko Posted September 4, 2013 Share Posted September 4, 2013 Здравсьвуйте! Подскажите,есть допустим ресурс который при вызове комманды /cveh вызывает настройки! Как реализовать его вызов в моем скрипте? Пробовал exec-ом почему то не вышло! Я новичек и только учусь,скрипт вызываеться с клиента через тригер,на клиенте через exec работает,но там не возможно сделать проверку так как вызов идет через elseif,заранее благодарен за ответ! Сам скрипт: function cvehcmd () if (isPedInVehicle (source)) then local veh = getPedOccupiedVehicle (source) if outputChatBox ("Настройки открыты.", source, 255, 0, 0) then end else outputChatBox ("Вы не в автомобиле!", source, 255, 0, 0) end end addEvent("cvehcmd",true) addEventHandler("cvehcmd",getRootElement(),cvehcmd) Link to comment
Elengar Posted September 5, 2013 Share Posted September 5, 2013 Здравсьвуйте! Подскажите,есть допустим ресурс который при вызове комманды /cveh вызывает настройки!Как реализовать его вызов в моем скрипте? Пробовал exec-ом почему то не вышло! Я новичек и только учусь,скрипт вызываеться с клиента через тригер,на клиенте через exec работает,но там не возможно сделать проверку так как вызов идет через elseif,заранее благодарен за ответ! Сам скрипт: function cvehcmd () if (isPedInVehicle (source)) then local veh = getPedOccupiedVehicle (source) if outputChatBox ("Настройки открыты.", source, 255, 0, 0) then end else outputChatBox ("Вы не в автомобиле!", source, 255, 0, 0) end end addEvent("cvehcmd",true) addEventHandler("cvehcmd",getRootElement(),cvehcmd) Тебе нужна проверка на машину ? А зачем проверяешь сработает ли outputChatbox ? function cvehcmd (source) if (isPedInVehicle (source)) then -- находится ли игрок в транспорте local veh = getPedOccupiedVehicle (source) outputChatBox ("Настройки открыты.", source, 255, 0, 0)-- ниже выполняешь нужные тебе действия else outputChatBox ("Вы не в автомобиле!", source, 255, 0, 0) end end addEvent("cvehcmd",true) addEventHandler("cvehcmd",getRootElement(),cvehcmd)-- у тебя ивент, но судя по названию ты хотел команду. addCommandHandler функция, смотри вики Link to comment
Jonathan.P Posted September 5, 2013 Share Posted September 5, 2013 Дайте БОЛЬШЕ информации по EDF!! На Wiki неполная информация(мало). Link to comment
nejiko Posted September 5, 2013 Share Posted September 5, 2013 Здравсьвуйте! Подскажите,есть допустим ресурс который при вызове комманды /cveh вызывает настройки!Как реализовать его вызов в моем скрипте? Пробовал exec-ом почему то не вышло! Я новичек и только учусь,скрипт вызываеться с клиента через тригер,на клиенте через exec работает,но там не возможно сделать проверку так как вызов идет через elseif,заранее благодарен за ответ! Сам скрипт: function cvehcmd () if (isPedInVehicle (source)) then local veh = getPedOccupiedVehicle (source) if outputChatBox ("Настройки открыты.", source, 255, 0, 0) then end else outputChatBox ("Вы не в автомобиле!", source, 255, 0, 0) end end addEvent("cvehcmd",true) addEventHandler("cvehcmd",getRootElement(),cvehcmd) Тебе нужна проверка на машину ? А зачем проверяешь сработает ли outputChatbox ? function cvehcmd (source) if (isPedInVehicle (source)) then -- находится ли игрок в транспорте local veh = getPedOccupiedVehicle (source) outputChatBox ("Настройки открыты.", source, 255, 0, 0)-- ниже выполняешь нужные тебе действия else outputChatBox ("Вы не в автомобиле!", source, 255, 0, 0) end end addEvent("cvehcmd",true) addEventHandler("cvehcmd",getRootElement(),cvehcmd)-- у тебя ивент, но судя по названию ты хотел команду. addCommandHandler функция, смотри вики Ага спасибо но мне тут нужно что-бы сработала команда из дургого ресурса ( как пример ресурс который при вводе команды /cveh открывает настройки автомобиля) так вот как вызвать комманду? Link to comment
Elengar Posted September 6, 2013 Share Posted September 6, 2013 Тебе нужна проверка на машину ? А зачем проверяешь сработает ли outputChatbox ? function cvehcmd (source) if (isPedInVehicle (source)) then -- находится ли игрок в транспорте local veh = getPedOccupiedVehicle (source) outputChatBox ("Настройки открыты.", source, 255, 0, 0)-- ниже выполняешь нужные тебе действия else outputChatBox ("Вы не в автомобиле!", source, 255, 0, 0) end end addEvent("cvehcmd",true) addEventHandler("cvehcmd",getRootElement(),cvehcmd)-- у тебя ивент, но судя по названию ты хотел команду. addCommandHandler функция, смотри вики Ага спасибо но мне тут нужно что-бы сработала команда из дургого ресурса ( как пример ресурс который при вводе команды /cveh открывает настройки автомобиля) так вот как вызвать комманду? Эм... тебе нужно открытие по команде ? Ну так addCommandHandler ! Если из другого ресурса - експорт функции и call . Не понимаю зачем это, но раз нужно... 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