-
Posts
619 -
Joined
-
Last visited
Everything posted by Flaker
-
Я вот добавил TITLE, но почему то его текст не отличается от text. Вот XML теперь: "Main"> Main information. Welcome to the deathmatch server, enjoy your stay. "Other"> Second information. Bla-bla-bla. Добавил в "for i,group in ipairs(xmlNodeGetChildren(xml)) do" : local title = xmlNodeGetValue(xmlNodeGetChildren(group,1)) -- получаем данные из дочернего нода guiGridListSetItemData(GUIEditor_Grid[1],row,1, title) -- сохраняем в данных итема 1)(xmlNodeGetChildren(group,0)) изменил на (xmlNodeGetChildren(group,1)) -- 2) Добавил при клике на gridList: local title = guiGridListGetItemData ( GUIEditor_Grid[1], row, column ) -- получаем хранящиеся там данные guiSetText(lblTitle, title or 'Information about server') -- отправляем их в лейбл Но и в TITLE и в TEXT одно и тоже отображается.
-
А не подскажешь теперь, как в label вывести информацию из , причем для каждого item'а свою? function item_choose() if (isElement (wdwIndfo)) then if source == GUIEditor_Grid[1] then --Как сделать проверку какой item выбран? --В зависимости от того какой выпран item, такой должен быть текст [b]lblTEXT[/b] local lblTEXT = guiCreateLabel(295,45,329,469,"OOK",false,wdwIndfo) guiLabelSetHorizontalAlign(lblTEXT,"left",true) end end end end addEventHandler ("onClientGUIClick", getRootElement(), stylechoose)
-
Огромное спасибо за объяснения, Aibo! Все получилось
-
Вроде подключил. Теперь проявил себя Debuger: http://rghost.ru/37195742/image.png Я исправил это так: guiGridListSetItemText(GUIEditor_Grid[1],row,1,tostring(name),false, false) После этого, прогресс дошел до того, что в Гридлисте появился ROW: false (как видно на скрине)
-
Ой, про добавление не знал. (Первый раз пробую с XML работать) Добавлять так: ?
-
В рез-те проверке выяснилось что XML не грузиться, в чем может быть ошибка загрузки XML файла? способ загрузки: local xml = xmlLoadFile("settings.xml") --получаем XML файл способ проверки, загрузился ли файл: if xml then ... else outputChatBox ("XML не грузиться") end
-
К сожалению не показывает текста всеравно( Дебагер по прежнему не выдает информации об ошибках
-
Вот пытаюсь сделать информационную панель, информацию в которой можно менять через XML. Суть: Создаю gridList с пунктами, при нажатии на пункт, изменяется Label, в котором текст из XML. Названия пунктов, тоже из XML. Полный код: addCommandHandler ( "fo", function ( thePlayer ) if not(isElement (wdwIndfo)) then GUIEditor_Window = {} GUIEditor_Label = {} GUIEditor_Grid = {} GUIEditor_Window[1] = guiCreateWindow(199,106,659,561,"TITLE",false) --Создается окно GUIEditor_Grid[1] = guiCreateGridList(10,27,256,520,false,GUIEditor_Window[1]) --Создается Гридлист guiGridListSetSelectionMode(GUIEditor_Grid[1],2) guiGridListAddColumn(GUIEditor_Grid[1],"",0.2) local xml = xmlLoadFile("settings.xml") --получаем XML файл if xml then for i,group in ipairs(xmlNodeGetChildren(xml)) do --Получаем из XML пункты local row = guiGridListAddRow(GUIEditor_Grid[1]) local name = xmlNodeGetAttribute(group,"name") --Имя ROW записанов в (XML) guiGridListSetItemText(GUIEditor_Grid[1],i,1,name,false, false) end xmlUnloadFile(xml) end GUIEditor_Label[1] = guiCreateLabel(295,45,329,469,"Info",false,GUIEditor_Window[1]) guiLabelSetHorizontalAlign(GUIEditor_Label[1],"left",true) else destroyElement (wdwIndfo) end end ) XML файл "Main"> Welcome to the deathmatch server, enjoy your stay. Непонимаю как вобще for i,group in ipairs(xmlNodeGetChildren(xml)) do работает. ROW вобще не появляется. p.s. дебагер ничего не выдает(( Подскажите как исправить?
-
function pedCreate (thePlayer) local x,y,z = getElementPosition (thePlayer) turist = createPed ( 26, x+2, y+2, z, 90, false) end addCommandHandler ( "ped",pedCreate) function car_perevoz () setPedAnimation ( turist, "knife", "KILL_Knife_Player", -1, false, true, true) end addCommandHandler ( "hat",car_perevoz ) Ошибся в: https://wiki.multitheftauto.com/wiki/SetPedAnimation, перечитай все аргументы.
-
Тебе уже подсказывали. function onPedClick(button, state, absX, absY, wx, wy, wz, element) if (element and getElementType(element) == "ped" and state=="down") then local x, y, z = getElementPosition(localPlayer) if (getDistanceBetweenPoints3D(x, y, z, wx, wy, wz) <=3) then guiSetVisible(myGUIElement, true) end end end addEventHandler("onClientClick", getRootElement(), onPedClick)
-
Скорее всего "открепление авто" пофиксить нельзя" это наверно MTA работает таким образом. Можно попробовать таймером проверять https://wiki.multitheftauto.com/wiki/IsElementAttached
-
В место 127.0.0.1 надо вводить в браузере localhost и тогда все будет норм. Но есть один минус на Denwer'e это то что phpMyAdmin(он же MySQL) занимает порт 82...Этот же порт занимает скайп, поэтому phpMyAdmin(он же MySQL) иногда может барахлить. Выход из этой проблемы: Надеяться на авось, Выключить скайп на время настройки MySQL 1) Я знаю, что и как нужно вводить, просто нет MySQL сервера на машинке самой. 2) Skype занимает 80 и 443 порты, при условии, что стоит галочка "Использовать порты 80 и 443 в качестве входящих альтернативных"
-
Кто работал с VPS, подскажите пожалуста, как и какой FTP сервер поставить на VPS. И еще, как поставить на VPS MySQL? Что-бы при коннекте, в скрипте, указывать localhost и тд... Пытался DENWER запихать, но при вводе 127.0.0.1 в адрессную строку, в браузере, вылезает сайт VPS.
-
Спасибо) А подскажи пожалуста, как в функции таймера дестройнуть его же?
-
Подскажите как сделать задержку какого либо действия. Я хочу сделать скрипт карманника. Нужна задержка: после того как карманник стащил некоторое кол-во денег, нужно ждать 5 секунд, что бы опять стащить. function onPlayerTarget ( targetElem ) if (getElementType ( targetElem ) == "player") then --Проверка на тип цели if (getPlayerMoney( targetElem ) > 150) then --Если у цели больше $150, то дальше if (getElementData( source, "skin") == "Pickpocket") then --Проверка: Является ли карманник, карманником. local Zx, Zy, Zz = getElementPosition( source ) local Px, Py, Pz = getElementPosition( targetElem ) local distance = (getDistanceBetweenPoints3D( Px, Py, Pz, Zx, Zy, Zz )) if (distance <= 3) then --Дистанция между карманником и его целью if not(isElement(grabed)) then --Проверка: Был ли уже создан Timer grabed = setTimer ( function(targetElem, source) local money = math.random(15,30) givePlayerMoney ( source, money ) takePlayerMoney ( targetElem, money ) end, 2000, 1,targetElem, source ) --Создание таймера с названием: grabed end end end end end end addEventHandler ( "onPlayerTarget", getRootElement(), onPlayerTarget ) И еще: Хотя стоит проверка на кол-во денег цели, всеравно уходит в минус счет цели постоянно( Исправляемо?
-
Огромное спасибо)
-
Вопрос: Как сделать задержку выполнения какой либо команды внутри функции. Например: Открылось GUI окно, а через 5 секунд закрылось. Код: function no_money() --Открытие окна "Нет денег" if isElement( wdwWarning ) then else wdwWarning = guiCreateWindow(0.3799,0.1315,0.2666,0.1003,"Предупреждение",true) guiWindowSetSizable(wdwWarning,false) lblWarning = guiCreateLabel(0.0476,0.3247,0.8864,0.7922,"Извините, но у вас недостаточно денег.",true,wdwWarning) guiLabelSetColor(lblWarning,255,0,70) guiLabelSetHorizontalAlign(lblWarning,"center",true) guiSetFont(lblWarning,"default-bold-small") setTimer ( destroyElement(wdwWarning) wdwWarning = false, 2600, 1) --Таймер по которому должно закрыться end end addEvent( "no_money", true ) addEventHandler( "no_money", getRootElement(), no_money ) Давно уже мучаюсь с этой проблемой, вот решил обратиться. Знающие люди, объясните пожалуста.
-
А как изменить через GUIEDITOR? Что вводить в окно указания Property.
-
А все отлично) Спасибо)
-
Тоесть все тоже самое написать, только в клиенте и с эвентом "onClientPlayerWeaponSwitch"? Так?
-
Я не совсем понял про что ты хочешь сделать, но если хочешь просто поставить реальное веремя на своем сервере то вот скрипт: local function TimeUpdate() local tReal = getRealTime(); -- Получаем время local tGameHour, tGameMins = getTime(); if tGameHour ~= tReal.hour or tGameMins ~= tReal.minute then setTime( tReal.hour, tReal.minute ); -- при частом использовании setTime, мир будет "дёргаться", поэтому лучше сделать такую проверочку. end end setMinuteDuration( 60000 ); --Перепроверка времени раз в минуту setTimer( TimeUpdate, 5000, 0 ); В этом случае не надо использовать клиент файл, только серверная часть.
-
Доброго времени суток, подскажите пожалуста, в чем ошибка? function weapon_block ( previousWeaponID, currentWeaponID ) if getElementModel ( source ) == 310 then if (currentWeaponID ~= 0) then cancelEvent () end end end addEventHandler ( "onPedWeaponSwitch", getRootElement(), weapon_block ) Хочу сделать блок на смену оружия для определенного скина. Wiki пример тоже что-то не срабатывает.
-
Спасибо, Kernell. Все получилось. На WIKI нашелся отличный пример. Проверку по таймеру так сделать надо было?: function resourceStart() local realtime = getRealTime() setTime(realtime.hour, realtime.minute) setMinuteDuration(60000) setTimer(resourceStart,61*1000,0) end addEventHandler ("onResourceStart",resourceRoot,resourceStart)
-
Как поставить время на сервере, равное реальному. То есть скорость его поставить как у реального времени.
