-
Posts
60 -
Joined
-
Last visited
Everything posted by MRmihailZH
-
Hi, sorry for bad english. I have a question about DGS. I create a window in which I create a button (buttonWindow) and add an event to it, but the function works even if you clicked on the window (wnd). wnd = dgsCreateWindow (...) buttonWindow = dgsCreateButton (...,wnd) addEventHandler ("onDgsMouseClick", buttonWindow, buttonWindowFunction) function buttonWindowFunction () ... end How can I fix this? Thank you in advance!
-
Приветствую Вас, у меня вопрос. Как сделать так, чтобы dxDraw отрисовывался только в определенных квадрате? Я пишу скрипт с кастомным чатом, и мне нужно, чтобы чат был виден только, если он не заходит за пределы. Заранее спасибо за ответ!
-
Увы, но LOD модель для данного объекта есть. Ее номер 3782, вдруг кому понадобиться.
-
У меня вопрос, как узнать LOD модель объекта? Мне нужна модель для объекта 3781, никак не могу найти этого.
-
Благодарю.
-
Связался с такой проблемой, как ошибка "Stack overflow". Из-за чего она может быть? Как справляться? Отсюда я связываюсь с другим ресурсом, и запускаю функцию. local loginaccount = dbQuery ( db, "SELECT nickname, admlvl, fraction, rank, wanted, level, xp, skin, house FROM accounts WHERE nickname = '"..username.."'" ) local result = dbPoll ( loginaccount, dbpTime ) if result then for i, inf in pairs(result) do local house = inf['house'] exports["house"]:spawnPlayer(house) Вот функция, с которой я связываюсь. function spawnPlayer(house) local x = getElementData(houseInt[house], "spawnIntX") local y = getElementData(houseInt[house], "spawnIntY") local z = getElementData(houseInt[house], "spawnIntZ") local int = getElementData(houseInt[house], "int") spawnPlayer(source, x, y, z, 0, nil, int, house) end Но, сразу начинаются приходить варнинги(WARNING: Bad argument @ 'getElementData' [Expected element at argument 1, got nil] [DUP x2002]) миллион раз, и спустя примерно пол минуты выдает ошибку: stack overflow. Заранее спасибо.
-
Как сделать окно, которая будет похожая на браузер, тобишь справа полоса прокрутки, и внутри другие элементы которые будут двигаться используя колесо мыши или полосой прокрутки? Есть какой-нибудь туториал по этому?
-
Большое спасибо
-
Как правильно триггерить на сервер? У меня есть вот такая функция function ClickSclad(botao, state) if botao == "left" and state == "down" then if sklad.visible then if cursorPosition(570, 274, 227, 27) then triggerServerEvent("GiveWeaponeAndArmor", getLocalPlayer(), "Nightstick") elseif cursorPosition(570, 311, 227, 27) then triggerServerEvent("GiveWeaponeAndArmor", getLocalPlayer(), "Deagle") elseif cursorPosition(570, 348, 227, 27) then triggerServerEvent("GiveWeaponeAndArmor", getLocalPlayer(), "Shotgun") elseif cursorPosition(570, 385, 227, 27) then triggerServerEvent("GiveWeaponeAndArmor", getLocalPlayer(), "MP5") elseif cursorPosition(570, 422, 227, 27) then triggerServerEvent("GiveWeaponeAndArmor", getLocalPlayer(), "M4") elseif cursorPosition(570, 459, 227, 27) then triggerServerEvent("GiveWeaponeAndArmor", getLocalPlayer(), "Armor") elseif cursorPosition(707, 508, 85, 23) then showCursor(false) removeEventHandler("onClientRender", root, wnd_sklad) sklad.visible = false end end end end addEventHandler("onClientClick", getRootElement(), ClickSclad) и вот function GiveWeaponeSklad (source, inf) if inf == Deagle then giveWeapon( source, 24 ) setWeaponAmmo( source, 24, 100 ) setPedWeaponSlot ( source, 2 ) elseif inf == Nightstick then giveWeapon( source, 3 ) setPedWeaponSlot ( source, 1 ) elseif inf == Shotgun then giveWeapon( source, 25 ) setWeaponAmmo( source, 25, 100 ) setPedWeaponSlot ( source, 3 ) elseif inf == MP5 then giveWeapon( source, 29 ) setWeaponAmmo( source, 29, 300 ) setPedWeaponSlot ( source, 7 ) elseif inf == M4 then giveWeapon( source, 31 ) setWeaponAmmo( source, 31, 300 ) setPedWeaponSlot ( source, 7 ) elseif inf == Armor then setPedArmor( source, 100 ) end end addEvent("GiveWeaponeAndArmor", true) addEventHandler("GiveWeaponeAndArmor", getRootElement(), GiveWeaponeSklad) И у меня в дебаге пишет, что 1 аргумент, допустим в Armor, got string 'Armor'. То есть у меня не получается правильно триггернуть на сервер. Заранее спасибо, надеюсь объяснил понятно
-
Допустим я загрузил свои фракции и засунул их в глобальную fractions={} function loadFractions () local root = xmlLoadFile ("fractions.xml") local fractionroot = xmlFindChild (root,"fractionsactiones",0) if (fractionroot) then for i,v in ipairs (xmlNodeGetChildren(fractionroot)) do local name = xmlNodeGetAttribute (v,"name") local num = tonumber(xmlNodeGetAttribute (v,"num")) local rang1 = xmlNodeGetAttribute (v,"rang1") local rang2 = xmlNodeGetAttribute (v,"rang2") local rang3 = xmlNodeGetAttribute (v,"rang3") local rang4 = xmlNodeGetAttribute (v,"rang4") local rang5 = xmlNodeGetAttribute (v,"rang5") local rang6 = xmlNodeGetAttribute (v,"rang6") local rang7 = xmlNodeGetAttribute (v,"rang7") local rang8 = xmlNodeGetAttribute (v,"rang8") local rang9 = xmlNodeGetAttribute (v,"rang9") local rang10 = xmlNodeGetAttribute (v,"rang10") local skin1 = tonumber(xmlNodeGetAttribute (v,"skin1")) local skin2 = tonumber(xmlNodeGetAttribute (v,"skin2")) local skin3 = tonumber(xmlNodeGetAttribute (v,"skin3")) local skin4 = tonumber(xmlNodeGetAttribute (v,"skin4")) local skin5 = tonumber(xmlNodeGetAttribute (v,"skin5")) local skin6 = tonumber(xmlNodeGetAttribute (v,"skin6")) local skin7 = tonumber(xmlNodeGetAttribute (v,"skin7")) local skin8 = tonumber(xmlNodeGetAttribute (v,"skin8")) local skin9 = tonumber(xmlNodeGetAttribute (v,"skin9")) local skin10 = tonumber(xmlNodeGetAttribute (v,"skin10")) fractions[i]={name,num,rang1,rang2,rang3,rang4,rang5,rang6,rang7,rang8,rang9,rang10,skin1,skin2,skin3,skin4,skin5,skin6,skin7,skin8,skin9,skin10} end end end addEventHandler ( "onResourceStart", getResourceRootElement(), loadFractions ) И хочу с помощью таких функций, командой, сделать игроку скин, который находиться в глобальной function getFractionInfo ( fract, inf ) return fractions[fract][inf] end setElementModel ( player, getFractionInfo(tonumber(fraction), 22) ) 22(это skin10) Но выходит ошибка: " attemp to index field '?' <a nil value> " в функции getFractionInfo. Заранее спасибо
-
Благодарю за помощь.
-
Не, нормально все в самом скрипте, просто не дописал скобку внизу
-
Вообщем, у меня все работает, НО, когда задаю элементу ключ, и потом использую getElementData выходит ошибка в консоле "attemp to compare number with string", и соответственно скрипт не работает. Вот скрипт которым я задаю ключ: function giveadm (source, command, ident, lvl) if(getElementData(source,"admlvl") > 8) then if (ident) then for id, player in ipairs ( getElementsByType ( "player" ) ) do if ( tonumber(getElementData ( player, "ID" )) == tonumber(ident) ) then local thePlayer = getAccountName (getPlayerAccount(player)) if lvl then if((tonumber(lvl) > -1) and (tonumber(lvl) < 11))then local RootNode = xmlLoadFile ( "Accounts/"..thePlayer..".xml" ) local playeradmlvl = xmlFindChild ( RootNode, "admlvl", 0 ) local valueadmlvl = xmlNodeSetValue ( playeradmlvl, lvl.."" ) local serial = xmlNodeGetValue ( xmlFindChild (RootNode, "serial", 0) ) xmlSaveFile(RootNode) xmlUnloadFile(RootNode) outputChatBox("* Вы выдали "..lvl.." уровень администратирования игроку "..thePlayer..".", source, 255, 215, 0, true) setElementData ( player, "admlvl", lvl ) else outputChatBox("* неверный уровень администратирования", source, 255, 215, 0, true) end else outputChatBox("* /makeadmin [id] [0-10]", source, 255, 215, 0, true) end end end else outputChatBox ("* /makeadmin [id] [0-10]", source, 255, 215, 0, true) end else outputChatBox ("* У Вас нет доступа.", source, 255, 215, 0, true) end end addCommandHandler ("makeadmin", giveadm) Дальше, если я буду использовать скрипты, у меня будет ошибка в строчке: " if(getElementData(source,"admlvl") > 8 then ". Заранее спасибо!
-
Какой функцией можно узнать какой элемент стоит в центре экрана, и узнать его положение?
-
Система ID'ов и как правильно пользоваться ей
MRmihailZH replied to MRmihailZH's topic in Помощь / Отчеты об ошибках
Дополню, вот скрипт ID системы: exports [ "scoreboard" ]:addScoreboardColumn ( "ID", 2 ) local player_ID = {} function getRowInex (login) for _, player in ipairs (getElementsByType("player")) do for i, data in ipairs (player_ID) do if data[2] == login then return i end end end return false end function getRowFree () for i, data in ipairs (player_ID) do if data[2] == "" then return data[1] end end local new_ID = #player_ID + 1 table.insert(player_ID, new_ID, {new_ID, ""}) return new_ID end function createAllNumbers () for i = 1, 200 do table.insert(player_ID, i, {i, ""}) end for i, player in ipairs (getElementsByType("player")) do local index = tonumber(getElementData(player, "ID")) if index then rawset(player_ID, index, {index, getAccountName(getPlayerAccount(player))}) else local index = getRowFree () rawset(player_ID, index, {index, getAccountName(getPlayerAccount(player))}) setElementData(player, "ID", index) end end end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), createAllNumbers) function onPlayerLogin (_, account) local index = getRowFree () rawset(player_ID, index, {index, getAccountName(account)}) setElementData(source, "ID", index) end addEventHandler("onPlayerLogin", getRootElement(), onPlayerLogin) function onPlayerQuit () local index = getRowInex (getAccountName(getPlayerAccount(source))) rawset(player_ID, index, {index, ""}) end addEventHandler("onPlayerQuit", getRootElement(), onPlayerQuit) А вот скрипт, который я хочу использовать: function giveadm (source, command, ident, lvl) if(getElementData(source,"admlvl") > 8) then if (ident) then for id, player in ipairs ( getElementsByType ( "player" ) ) do if ( tonumber(getElementData ( player, "ID" )) == tonumber(ident) ) then if lvl then if((tonumber(lvl) > -1) and (tonumber(lvl) < 11))then local RootNode = xmlLoadFile ( "Accounts/"..player..".xml" ) local playeradmlvl = xmlFindChild ( RootNode, "admlvl", 0 ) local valueadmlvl = xmlNodeSetValue ( playeradmlvl, lvl.."" ) setElementData ( player, "admlvl", lvl ) xmlSaveFile(RootNode) xmlUnloadFile(RootNode) outputChatBox("* Вы выдали "..lvl.." уровень администратирования игроку "..player..".", source, 255, 215, 0, true) else outputChatBox("* неверный уровень администратирования", source,255, 215, 0, true) end else outputChatBox("* /makeadmin [id] [0-10]", source,255, 215, 0, true) end end end else outputChatBox ("*/makeadmin [id] [0-10]", source,255, 215, 0, true) end else outputChatBox ("*Вы не имеете доступ", source,255, 215, 0, true) end end addCommandHandler ("makeadmin", giveadm) Ошибка в RootNode, когда он загружает мой xml файл в аргументе ..player.. -
У меня есть dff, col и txd файл, я заменил объект который мне нужен, коллизия появляется, но dff появляется только если в Мап Едиторе найти этот объект и посмотреть на него, а если просто dff не появляется. Заранее спасибо!
-
Не работает скрипт, он делает только одну функцию где fraction равен 1 function makeleader ( source, commandName, accName, fraction ) local accountName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accountName, aclGetGroup ( "Admin" ) ) then if accName then if fraction ~= 1 then aclGroupAddObject (aclGetGroup("leaderLSPD"), "user."..accName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accName) aclGroupAddObject (aclGetGroup("LSPD"), "user."..accName) elseif fraction ~= 2 then aclGroupAddObject (aclGetGroup("leaderLVPD"), "user."..accName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accName) aclGroupAddObject (aclGetGroup("LVPD"), "user."..accName) elseif fraction ~= 3 then aclGroupAddObject (aclGetGroup("leaderSFPD"), "user."..accName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accName) aclGroupAddObject (aclGetGroup("SFPD"), "user."..accName) elseif fraction ~= 0 then aclGroupRemoveObject (aclGetGroup("leaderLVPD"), "user."..accName) aclGroupRemoveObject (aclGetGroup("leaderSFPD"), "user."..accName) aclGroupRemoveObject (aclGetGroup("leaderLSPD"), "user."..accName) aclGroupRemoveObject (aclGetGroup("leaders"), "user."..accName) aclGroupRemoveObject (aclGetGroup("LVPD"), "user."..accName) aclGroupRemoveObject (aclGetGroup("SFPD"), "user."..accName) aclGroupRemoveObject (aclGetGroup("LSPD"), "user."..accName) end end end end addCommandHandler("makeleader", makeleader)
-
https://dev.prineside.com/ru/gtasa_samp_model_id/model/6959-vegasNbball1/ На ссылке есть его .txd файл
-
Как функция отвечает, за то чтобы открыть ворота, если ты посигналишь, и чтобы открыть могла определенная машина?
-
Всем привет, я хочу поставить ограничение для moveObject, т.к. если активировать данный код и пока двигается объект, снова активировать код, то он уже заходит за рамки мне нужного, мне нужно чтобы объект двигался не больше не меньше определенного значения. Не умею объяснять, но надеюсь поняли shlagLSPD = createObject(968, 1544.6999511719, -1630.9000244141, 13.10000038147, 0, 270, 270) --Создаем объект gateLSPD = false --Ставим значение gate на false function openshlagbaum (source) local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "LSPD" ) ) then -- Если игрок в этой группе то делает следующее x, y, z = getElementPosition ( source ) if getDistanceBetweenPoints3D ( x, y, z, 1544.24707, -1631.90906, 13.38281 ) <= 2 then -- Если расстояние между игроком и объектом меньше 2 то делает следующее if gateLSPD == false then -- Если значение gate false, то поднимает объект moveObject ( shlagLSPD, 2000, 1544.6999511719, -1630.9000244141, 13.10000038147, 0, 80, 0 ) gateLSPD = true -- Делает значение gate на true else -- Если значение gate true то делает следующее moveObject ( shlagLSPD, 2000, 1544.6999511719, -1630.9000244141, 13.10000038147, 0, -80, 0, "OutBounce" ) gateLSPD = false -- Делает значение gate на false end end else -- Если игрока нет в группе outputChatBox("*У Вас нет доступа", source, 255, 255, 0) end end addCommandHandler ("gate", openshlagbaum) Заранее спасибо
-
function makeleader ( source, commandName, accountName, fraction ) local accName = getAccountName ( getPlayerAccount ( source ) ) --Проверяем администратор ли игрок if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then --Проверяем введен ли ник аккаунта if accountName then local fraction = 0, 1, 2, 3 --Проверяем введена ли номер фракции if fraction then --Если введена 1 фракция if fraction == 1 then aclGroupAddObject (aclGetGroup("leaderLSPD"), "user."..accountName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accountName) aclGroupAddObject (aclGetGroup("LSPD"), "user."..accountName) --Если введена 2 фракция elseif fraction == 2 then aclGroupAddObject (aclGetGroup("leaderLVPD"), "user."..accountName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accountName) aclGroupAddObject (aclGetGroup("LVPD"), "user."..accountName) --Если введена 3 фракция elseif fraction == 3 then aclGroupAddObject (aclGetGroup("leaderSFPD"), "user."..accountName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accountName) aclGroupAddObject (aclGetGroup("SFPD"), "user."..accountName) --Если введена 0 фракция elseif fraction == 0 then aclGroupRemoveObject (aclGetGroup("leaderLVPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("leaderSFPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("leaderLSPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("leaders"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("LVPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("SFPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("LSPD"), "user."..accountName) else --Если такой фракции не существует outputChatBox ("*Такой фракции не существует", source, 255, 0, 0) end end end else --Если ты не администратор outputChatBox("*У Вас нет доступа", source, 255, 255, 0) end end addCommandHandler("makeleader", makeleader) Подправил
-
Табулировать? Это как?
-
Опять я Вообщем, я хочу чтобы у меня было примерно так: /makeleader ник и номер фракции, чтобы добавляло в ACL группу, а если 0 то удаляло. Вроде написал, но не работает. function makeleader ( source, commandName, accountName, fraction ) local accName = getAccountName ( getPlayerAccount ( source ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then if accountName then local fraction = 0, 1, 2, 3 if fraction then if fraction == 1 then aclGroupAddObject (aclGetGroup("leaderLSPD"), "user."..accountName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accountName) aclGroupAddObject (aclGetGroup("LSPD"), "user."..accountName) elseif fraction == 2 then aclGroupAddObject (aclGetGroup("leaderLVPD"), "user."..accountName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accountName) aclGroupAddObject (aclGetGroup("LVPD"), "user."..accountName) elseif fraction == 3 then aclGroupAddObject (aclGetGroup("leaderSFPD"), "user."..accountName) aclGroupAddObject (aclGetGroup("leaders"), "user."..accountName) aclGroupAddObject (aclGetGroup("SFPD"), "user."..accountName) elseif fraction == 0 then aclGroupRemoveObject (aclGetGroup("leaderLVPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("leaderSFPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("leaderLSPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("leaders"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("LVPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("SFPD"), "user."..accountName) aclGroupRemoveObject (aclGetGroup("LSPD"), "user."..accountName) else outputChatBox ("*Такой фракции не существует", source, 255, 0, 0) end end end else outputChatBox("*У Вас нет доступа", source, 255, 255, 0) end end addCommandHandler("makeleader", makeleader)
-
в консоле ничего не отображается, ошибок нет
