BeSS0n Posted May 24, 2013 Share Posted May 24, 2013 ошибка в непонимании того, что вы делаете. Логически здесь вроде как всё верно. LUA я изучаю от силы часа 4, вот, первый опыт... Link to comment
TheNormalnij Posted May 24, 2013 Share Posted May 24, 2013 -- type="client" function GotoPlayerToPlayer(commandname,playerName) local thePlayer = getPlayerFromName( playerName ) if thePlayer then local x, y, z = getElementPosition( thePlayer) local teleported = setElementPosition(localPlayer, x + 2, y, z); if(teleported == false) then outputChatBox("Не удалось телепортироваться к игроку.") end end end addCommandHandler("goto",GotoPlayerToPlayer) Синтаксис был верный. Грубые ошибки в логике. Link to comment
BeSS0n Posted May 25, 2013 Share Posted May 25, 2013 -- type="client" function GotoPlayerToPlayer(commandname,playerName) local thePlayer = getPlayerFromName( playerName ) if thePlayer then local x, y, z = getElementPosition( thePlayer) local teleported = setElementPosition(localPlayer, x + 2, y, z); if(teleported == false) then outputChatBox("Не удалось телепортироваться к игроку.") end end end addCommandHandler("goto",GotoPlayerToPlayer) Синтаксис был верный. Грубые ошибки в логике. Спасибо ! Link to comment
BeSS0n Posted May 25, 2013 Share Posted May 25, 2013 Подскажите пожалуйста, где написано какие функции отвечают за то, или иное. Не так выразился. Например: Игрок умер, что вызывается при его смерти ? Или игрок заспавнился. Link to comment
BeSS0n Posted May 25, 2013 Share Posted May 25, 2013 И ещё, как объявлять глобальные переменные ? Link to comment
AMARANT Posted May 25, 2013 Share Posted May 25, 2013 Подскажите пожалуйста, где написано какие функции отвечают за то, или иное. Не так выразился. Например: Игрок умер, что вызывается при его смерти ? Или игрок заспавнился. За это отвечают функции-события. Полный список клиентских событий - https://wiki.multitheftauto.com/wiki/Client_Scripting_Events, и серверных - https://wiki.multitheftauto.com/wiki/Server_Scripting_Events. И ещё, как объявлять глобальные переменные ? myVariable = 12 Link to comment
BeSS0n Posted May 25, 2013 Share Posted May 25, 2013 Подскажите пожалуйста, где написано какие функции отвечают за то, или иное. Не так выразился. Например: Игрок умер, что вызывается при его смерти ? Или игрок заспавнился. За это отвечают функции-события. Полный список клиентских событий - https://wiki.multitheftauto.com/wiki/Client_Scripting_Events, и серверных - https://wiki.multitheftauto.com/wiki/Server_Scripting_Events. И ещё, как объявлять глобальные переменные ? myVariable = 12 Спасибо. Насчёт глобальных переменных еще вопрос. Вот например есть 3 дома, у каждого дома свои данные, данные определённого дома нужно записать в определённую ячейку определённого массива, как это будет выглядеть в LUA ? (В pawn'e так: enum data { owner[24],Float:x,Float:y,Float:z } new House[5][data]; и потом использовать так: House[0][x] = 0.0) Link to comment
BeSS0n Posted May 25, 2013 Share Posted May 25, 2013 Ещё вопрос, какое событие срабатывает при смерти игрока ? При спавне нашёл, а при смерти нет... Дело в том, что после смерти камера просто бесконечно "качается" над игроком. ------------------- Нашёл... onPlayerWasted Link to comment
CocaColaBear Posted May 25, 2013 Share Posted May 25, 2013 Событие смерти игрока - onPlayerWasterd Для объявлении массива с домами, тебе не нужно заранее определять размеры и элементы его полей. Просто при инициализации пишешь так: House = {} House[1] = {} House[1]["x"] = 123 House[1]["owner"] = "Ololosh" И т.д. P.S. Только вот House = {} не надо каждый раз писать. Всего лишь один раз, при объявлении. А для каждого нового индекса, необходимо House[index] = {} Link to comment
Elengar Posted May 25, 2013 Share Posted May 25, 2013 Кто может расказать как именно пользоватся triggerServerEvent (или клиент) Возможно даже дам не много деняг, если в скайпе Link to comment
Kenix Posted May 25, 2013 Share Posted May 25, 2013 https://wiki.multitheftauto.com/wiki/TriggerServerEvent Смотри пример. Link to comment
Elengar Posted May 25, 2013 Share Posted May 25, 2013 (edited) Смотрел, не совсем понимаю что нужно писать в аргументах функции Сервер function check (source) local accName = getAccountName(getPlayerAccount(source)) if isObjectInACLGroup("user."..accName, aclGetGroup("Admin")) then triggerClientEvent ( "checkAcc", getLocalPlayer() ) end if isObjectInACLGroup("user."..accName, aclGetGroup("Moderator")) then triggerClientEvent ( "checkAcc" ) end end addCommandHandler("showmap", check) Клиент addEventHandler("onClientResourceStart", getRootElement( ), function(startedRes) if getThisResource() == startedRes then local screenWidth, screenHeight = guiGetScreenSize() if screenHeight < 700 then g_MapSide = 600 else g_MapSide = 600 end wndSpawnMap = guiCreateWindow(100, 100, g_MapSide, g_MapSide, "Карта", false) wndImgMap = guiCreateStaticImage(0, 0, g_MapSide, g_MapSide, "map.png", false, wndSpawnMap) guiSetVisible(wndSpawnMap, false) addEventHandler("onClientGUIDoubleClick", wndImgMap, spawnMapDoubleClick) end end ) function spawnMapDoubleClick(button, state, relX, relY) local x,y = guiGetPosition(wndImgMap, false) relX = relX - x local q = relX*10 q = q - 3000 relY = relY - y local w = relY*10 w = 3000 - w setElementPosition(getLocalPlayer(), q, w, getGroundPosition(q, w, 500.0)) guiSetVisible(wndSpawnMap, false) showCursor(false) end function showMap() guiSetVisible(wndSpawnMap, true) showCursor(true) end addEvent( "checkAcc", true ) addEventHandler( "checkAcc", getRootElement(), showMap ) function showMap() guiSetVisible(wndSpawnMap, false) showCursor(false) end addCommandHandler("closemap", showMap) Edited May 27, 2013 by Guest Link to comment
Kenix Posted May 25, 2013 Share Posted May 25, 2013 По вашему коду видно, что знаний у вас очень мало и вы берёте код из других источников и пытаетесь с ним что-то сделать, но у вас врятли это получится. Вам нужно изучить: https://forum.multitheftauto.com/viewto ... d65644daa8 https://wiki.multitheftauto.com/index.ph ... troduction https://wiki.multitheftauto.com/index.ph ... ng_the_GUI Link to comment
Elengar Posted May 25, 2013 Share Posted May 25, 2013 По вашему коду видно, что знаний у вас очень мало и вы берёте код из других источников и пытаетесь с ним что-то сделать, но у вас врятли это получится.Вам нужно изучить: https://forum.multitheftauto.com/viewto ... d65644daa8 https://wiki.multitheftauto.com/index.ph ... troduction https://wiki.multitheftauto.com/index.ph ... ng_the_GUI Ну на данный момент я совсем не знаю gui, знаю мало функций и не особо понимаю как создавать евенты, и как они потом будут работать. Не могли бы обьяснить как там использовать triggerClientEvent, ну в коде, который я скнул Туторы по луа попробую почитать, но завтра... Link to comment
BeSS0n Posted May 26, 2013 Share Posted May 26, 2013 Событие смерти игрока - onPlayerWasterdДля объявлении массива с домами, тебе не нужно заранее определять размеры и элементы его полей. Просто при инициализации пишешь так: House = {} House[1] = {} House[1]["x"] = 123 House[1]["owner"] = "Ololosh" И т.д. P.S. Только вот House = {} не надо каждый раз писать. Всего лишь один раз, при объявлении. А для каждого нового индекса, необходимо House[index] = {} Т.е объявляем вот так: House = {} House[5] = {} -- Где 5, количество домов House[5]["x"] = 0.0 House[5]["y"] = 1.1 House[5]["z"] = 2.2 -- Создаём переменные и задаём начальные данные Затем используем так: House[0]["x"] = 15.15 -- 0, это ячейка в которой находятся данные о доме А при обычном выводе пишем так: House[0]["x"] Я верно понял ? Link to comment
BeSS0n Posted May 26, 2013 Share Posted May 26, 2013 Ещё вопрос, функция addAccount добавляет аккаунты в какую-либо папку ? Если да, то в какую ? Link to comment
Kenix Posted May 26, 2013 Share Posted May 26, 2013 Она добавляет в базу данных. В internal.db вроде как Link to comment
CocaColaBear Posted May 26, 2013 Share Posted May 26, 2013 Т.е объявляем вот так: House = {} House[5] = {} -- Где 5, количество домов House[5]["x"] = 0.0 House[5]["y"] = 1.1 House[5]["z"] = 2.2 -- Создаём переменные и задаём начальные данные Я верно понял ? Немного не так. В Lua не нужно указывать размерность массива ( в вашем случае - количество домов). Строчка House[5] = {} - индекс не обозначает размерность массива. Это уже индекс элемента. А вот последующее = {} делает данный элемент массивом. Т.е. после этой строки можно использовать House[5]["x"] = 0.1. А вот, например, House[4] не массив, поэтому если написать House[4]["x"] = 0.1, то произойдет ошибка, т.к. это не массив. P.S. Если не понятно, то попроси кого-нибудь объяснить, я не очень силен в этом Link to comment
Cheiz Posted May 27, 2013 Share Posted May 27, 2013 Как отключить команды на сервере типо "/votemap" "/votemode"? Link to comment
Elengar Posted May 27, 2013 Share Posted May 27, 2013 Не совсем понимаю что нужно писать в аргументах функцииСервер function check (source) local accName = getAccountName(getPlayerAccount(source)) if isObjectInACLGroup("user."..accName, aclGetGroup("Admin")) then triggerClientEvent ( "checkAcc", getLocalPlayer() ) end if isObjectInACLGroup("user."..accName, aclGetGroup("Moderator")) then triggerClientEvent ( "checkAcc" ) end end addCommandHandler("showmap", check) Клиент addEventHandler("onClientResourceStart", getRootElement( ), function(startedRes) if getThisResource() == startedRes then local screenWidth, screenHeight = guiGetScreenSize() if screenHeight < 700 then g_MapSide = 600 else g_MapSide = 600 end wndSpawnMap = guiCreateWindow(100, 100, g_MapSide, g_MapSide, "Карта", false) wndImgMap = guiCreateStaticImage(0, 0, g_MapSide, g_MapSide, "map.png", false, wndSpawnMap) guiSetVisible(wndSpawnMap, false) addEventHandler("onClientGUIDoubleClick", wndImgMap, spawnMapDoubleClick) end end ) function spawnMapDoubleClick(button, state, relX, relY) local x,y = guiGetPosition(wndImgMap, false) relX = relX - x local q = relX*10 q = q - 3000 relY = relY - y local w = relY*10 w = 3000 - w setElementPosition(getLocalPlayer(), q, w, getGroundPosition(q, w, 500.0)) guiSetVisible(wndSpawnMap, false) showCursor(false) end function showMap() guiSetVisible(wndSpawnMap, true) showCursor(true) end addEvent( "checkAcc", true ) addEventHandler( "checkAcc", getRootElement(), showMap ) function showMap() guiSetVisible(wndSpawnMap, false) showCursor(false) end addCommandHandler("closemap", showMap) Не могли бы помочь с данным скриптом ? А именно с triggerClientEvent . Спасибо Link to comment
AMARANT Posted May 27, 2013 Share Posted May 27, 2013 (edited) В вашем верхнем скрипте вы пытаетесь в одном случае отправить на клиент событие для локального игрока, а как известно на серверной стороне такого игрока быть не может. Во втором же случае вы вообще отправляете событие ни для кого. Ваша задача указать в аргументах функции triggerClientEvent элемент, для кого выполнять функцию на клиенте. Например: triggerClientEvent("checkAcc",source) -- выполнит действия на клиенте для игрока, который прописал команду 'showmap' triggerClientEvent("checkAcc",getRootElement()) -- выполнит действия для всех игроков на сервере, если любой игрок пропишет эту команду. Edited May 27, 2013 by Guest Link to comment
Elengar Posted May 27, 2013 Share Posted May 27, 2013 В вашем верхнем скрипте вы пытаетесь в одном случае отправить на клиент событие для локального игрока, а как известно на серверной стороне такого игрока быть не может. Во втором же случае вы вообще отправляете событие ни для кого. Ваша задача указать в аргументах функции triggerClientEvent элемент, для кого выполнять функцию на клиенте. Например: triggerClientEvent("checkAcc",source) -- выполнит действия на клиенте для игрока, который прописал команду 'showmap' triggerClientEvent("checkAcc",getRootElement()) - выполнит действия для всех игроков на сервере, если любой игрок пропишет эту команду. Спасибо, до второго я додумался, крутив чужие скрипты, но вот не знал как сделать для однного, пробовал локал плейер с клиента ставить Link to comment
awa Posted May 28, 2013 Share Posted May 28, 2013 MTA вылетает после заставки 'Stop playing with yourself' По пробывал найти ошибку с пмощью MTADiag во что выдало: MTADiag v2.7.6 by Towncivilian MTA install path: D:\mta MTA version: 1.3.2-9.05463.0.000 GTA install path: D:\GTA DirectX is up-to-date. Checking for missing GTA files, please wait... Missing GTA file: \audio\streams\CH Missing GTA file: \audio\streams\CO Missing GTA file: \audio\streams\CR Missing GTA file: \audio\streams\DS Missing GTA file: \audio\streams\HC Missing GTA file: \audio\streams\MH Missing GTA file: \audio\streams\MR Missing GTA file: \audio\streams\NJ Missing GTA file: \audio\streams\RE Missing GTA file: \audio\streams\RG Missing GTA file: \audio\streams\TK Checking 393 out of 394... Your Grand Theft Auto installation is missing one or more files. Please reinstall GTA and see if MTA works then. Для продолжения нажмите любую клавишу . . Link to comment
awa Posted May 28, 2013 Share Posted May 28, 2013 И ешё вот я пробывал всё кроме этого "Задайте правило предотвращения исполнения данных: Используйте настройку Включить DEP для всех программ и служб кроме выбранных ниже. Нажмите добавить, отыщите "Multi Theft Auto.exe" и "gta_sa.exe", а затем добавьте их" Потому что не знаю куда зайти и что сделать. 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