Jump to content

Общий мини "HELP ME" топик по скриптингу


Recommended Posts

1. Создаем педа на экране

2. Вращаем педа

3. Пишем шейдер, который уменьшает размер элемента

https://wiki.multitheftauto.com/wiki/Sh ... #Ped_morph (посмотреть и сделать на основе его, там используется уменьшение/увеличение частей всего тела, думаю можно поэкспериментировать)

4. Применяем шейдер к этому педу

createPed 
setElementPosition 
setElementRotation 
getWorldFromScreenPosition 
dxCreateShader 
engineApplyShaderToWorldTexture 
  

И как же его потом запихнуть в гуи окно ?

getScreenFromWorldPosition 

Link to comment

Возникла проблема, клиент вызывает событие на сервере с помощью triggerServerEvent, как получить значение на клиенте, которое возвращает функция, прикрепленная к событию? Если через Elements, то элемент на клиенте не успевает синхронизироваться :(

Link to comment
С сервера вызывать ту функцию в которой происходил вызов серверного события? Если так, то я мало представляю подобную реализацию

Ну, можно и в которой происходил вызов, но это только лишние проверки на то, кто ее вызвал и не понятные ветвления. Лучше всего другую функцию. Т.е. разбить одну функцию на две: одна до ивента, другая после. Вот так, которая после, и должна вызываться ивентом.

Link to comment
С сервера вызывать ту функцию в которой происходил вызов серверного события? Если так, то я мало представляю подобную реализацию

Ну, можно и в которой происходил вызов, но это только лишние проверки на то, кто ее вызвал и не понятные ветвления. Лучше всего другую функцию. Т.е. разбить одну функцию на две: одна до ивента, другая после. Вот так, которая после, и должна вызываться ивентом.

Да, сделал именно так. Глупый вопрос был(

Опять напасть на ньюфага.

Подключаюсь к MySQL серверу

db = mysql_connect("******", "****", "*****", "****") 

В консоль ошибка: "attempt to call global 'mysql_connect' (a nil value)"

В чем проблема? Не понятно, на wiki написано что эта MySQL библиотека включена в МТА. Не поверил, решил найти библиотеку .dll - не нашел. В чем дело, ребят?

UPD: Решено. Все-таки модуль не встроен в МТА, нашел на Google Code, подключил и все хорошо

Link to comment
С сервера вызывать ту функцию в которой происходил вызов серверного события? Если так, то я мало представляю подобную реализацию

Ну, можно и в которой происходил вызов, но это только лишние проверки на то, кто ее вызвал и не понятные ветвления. Лучше всего другую функцию. Т.е. разбить одну функцию на две: одна до ивента, другая после. Вот так, которая после, и должна вызываться ивентом.

Да, сделал именно так. Глупый вопрос был(

Опять напасть на ньюфага.

Подключаюсь к MySQL серверу

db = mysql_connect("******", "****", "*****", "****") 

В консоль ошибка: "attempt to call global 'mysql_connect' (a nil value)"

В чем проблема? Не понятно, на wiki написано что эта MySQL библиотека включена в МТА. Не поверил, решил найти библиотеку .dll - не нашел. В чем дело, ребят?

UPD: Решено. Все-таки модуль не встроен в МТА, нашел на Google Code, подключил и все хорошо

  
dbConnect 
dbExec 
dbQuery 
dbPoll 
dbFree 
  

  
db = dbConnect("type", "dbname= ; host= ", username, password) 
  

Link to comment

Ну, можно и в которой происходил вызов, но это только лишние проверки на то, кто ее вызвал и не понятные ветвления. Лучше всего другую функцию. Т.е. разбить одну функцию на две: одна до ивента, другая после. Вот так, которая после, и должна вызываться ивентом.

Да, сделал именно так. Глупый вопрос был(

Опять напасть на ньюфага.

Подключаюсь к MySQL серверу

db = mysql_connect("******", "****", "*****", "****") 

В консоль ошибка: "attempt to call global 'mysql_connect' (a nil value)"

В чем проблема? Не понятно, на wiki написано что эта MySQL библиотека включена в МТА. Не поверил, решил найти библиотеку .dll - не нашел. В чем дело, ребят?

UPD: Решено. Все-таки модуль не встроен в МТА, нашел на Google Code, подключил и все хорошо

  
dbConnect 
dbExec 
dbQuery 
dbPoll 
dbFree 
  

  
db = dbConnect("type", "dbname= ; host= ", username, password) 
  

Это я знаю, и даже пробовал. Но для меня этот метод неудобен. Использую тот, где mysql_connnect, mysql_query и т.п

Link to comment
Ну, можно и в которой происходил вызов, но это только лишние проверки на то, кто ее вызвал и не понятные ветвления. Лучше всего другую функцию. Т.е. разбить одну функцию на две: одна до ивента, другая после. Вот так, которая после, и должна вызываться ивентом.
Да, сделал именно так. Глупый вопрос был(

Опять напасть на ньюфага.

Подключаюсь к MySQL серверу

db = mysql_connect("******", "****", "*****", "****") 

В консоль ошибка: "attempt to call global 'mysql_connect' (a nil value)"

В чем проблема? Не понятно, на wiki написано что эта MySQL библиотека включена в МТА. Не поверил, решил найти библиотеку .dll - не нашел. В чем дело, ребят?

UPD: Решено. Все-таки модуль не встроен в МТА, нашел на Google Code, подключил и все хорошо

  
dbConnect 
dbExec 
dbQuery 
dbPoll 
dbFree 
  

  
db = dbConnect("type", "dbname= ; host= ", username, password) 
  

Это я знаю, и даже пробовал. Но для меня этот метод неудобен. Использую тот, где mysql_connnect, mysql_query и т.п

Из сампа?

Link to comment
  • Other Languages Moderators
Из сампа?

Что вообще значит "из сампа"? Как они могут быть из сампа? Если ты думаешь, что названия функций сворованы оттуда, то ты сильно ошибаешься: http://php.net/manual/ru/function.mysql-connect.php

В сампе нет mysql из-под коробки.

Link to comment

Я ничего не пропустил?))

  
local hostname = "127.0.0.1" 
local username = "root" 
local password = "" 
local database = "mta" 
local port = 3306 
  
local connection = nil 
  
addEventHandler("onResourceStart", resourceRoot, 
    function() 
        connection = dbConnect("mysql", "dbname="..database..";host="..hostname..";port="..port, username, password) 
        if (not connection) then 
            outputServerLog("Error: MySQL connection is established!") 
        else 
            outputServerLog("Notice: MySQL connection is established!") 
        end 
    end 
) 
  
addEventHandler("onResourceStop", resourceRoot, 
    function() 
        if (isElement(connection)) then 
            connection:destroy() 
        end 
    end 
  

Link to comment
Я ничего не пропустил?))
  
local hostname = "127.0.0.1" 
local username = "root" 
local password = "" 
local database = "mta" 
local port = 3306 
  
local connection = nil 
  
addEventHandler("onResourceStart", resourceRoot, 
    function() 
        connection = dbConnect("mysql", "dbname="..database..";host="..hostname..";port="..port, username, password) 
        if (not connection) then 
            outputServerLog("Error: MySQL connection is established!") 
        else 
            outputServerLog("Notice: MySQL connection is established!") 
        end 
    end 
) 
  
addEventHandler("onResourceStop", resourceRoot, 
    function() 
        if (isElement(connection)) then 
            connection:destroy() 
        end 
    end 
  

Вроде бы - нет. Есть какие-то проблемы ?

Link to comment

Вроде бы - нет. Есть какие-то проблемы ?

Да, когда запускаю сервер не выводит сообщение в консоль о

outputServerLog("Error: MySQL connection is established!") 

Может быть проблемы с самым mysql-сервером ?

Link to comment

Вроде бы - нет. Есть какие-то проблемы ?

Да, когда запускаю сервер не выводит сообщение в консоль о

outputServerLog("Error: MySQL connection is established!") 

Может быть проблемы с самым mysql-сервером ?

Уже решил проблему)

Хотел сделать автологин, но когда нажимаю на "войти", ничего не происходит

вот что выводит консоль:

  
[2014-11-16 20:16:33] CONNECT: Axel connected (IP: 10.5.28.187  Serial: AF921EEAEF4F416B07912FE7123EF634  Version: 1.4.0-9.06928.0) 
[2014-11-16 20:16:39] JOIN: Axel joined the game (IP: 10.5.28.187) 
[2014-11-16 20:16:48] WARNING: [new_project]\project\Login\login_s.lua:32: dbPoll failed; Unknown column 'Axel' in 'where clause' 
[2014-11-16 20:16:48] WARNING: [new_project]\project\Login\login_s.lua:36: dbPoll failed; Unknown column 'Axel' in 'where clause' 
[2014-11-16 20:16:48] ERROR: [new_project]\project\Login\login_s.lua:38: bad argument #1 to 'pairs' (table expected, got boolean) 
[2014-11-16 20:24:05] QUIT: Axel left the game [Quit] 
  

Выручайте:

  
addEvent("onSendPlayerJoin", true) 
addEventHandler("onSendPlayerJoin", root, 
    function () 
        local serial = source:getSerial() 
        local name = source:getName() 
        local ip = source:getIP() 
        local query = dbQuery(connection, "SELECT `id` FROM `accounts` WHERE `username` = `"..name.."` LIMIT 1") 
        if (query) then 
            local result, num_affected_rows, errmsg = dbPoll(query, -1) 
            if (num_affected_rows > 0) then 
                local query = dbQuery(connection, "SELECT * FROM `accounts` WHERE `username` = `"..name.."` LIMIT 1") 
                if (query) then 
                    local result, num_affected_rows = dbPoll(query, -1) 
                    if (num_affected_rows > 0) then 
                        for result, row in pairs(result) do 
                            local query = dbExec(connection, "UPDATE `accounts` SET `serial` = '"..serial.."' WHERE `id` = '"..row["id"].."'") 
                            if (query) then 
                                triggerClientEvent(source, "onPlayerDoneLogin", source) 
                                source:outputChat("Welcome back "..name) 
                                source:spawn(1450.32421875, -2287.287109375, 13.546875) 
                                source:fadeCamera(true) 
                                source:setCameraTarget() 
                            else 
                                source:outputChat("Error: MySQL query failed when trying to save new login date "..name) 
                            end 
                            break 
                        end 
                    else 
                        source:outputChat("Error: MySQL query failed when trying to save new login date1 "..name) 
                    end 
                else 
                    source:outputChat("Error: MySQL query failed when trying to save new login date2 "..name) 
                end 
            else 
                local pass = createRandomPassword(10) 
                local realtime = getRealTime() 
                local timestamp = realtime.timestamp 
                local query = dbExec(connection, "INSERT INTO `accounts` (`username`, `password`, `serial`, `ip`, `registerdate`) VALUES ('"..name.."', '"..pass.."', '"..serial.."', '"..ip.."', '"..timestamp.."')") 
                if (query) then 
                    triggerClientEvent(source, "onPlayerDoneLogin", source) 
                    source:outputChat("Register complate!") 
                    source:spawn(1450.32421875, -2287.287109375, 13.546875) 
                    source:fadeCamera(true) 
                    source:setCameraTarget() 
                else 
                    source:outputChat("Register failed1!") 
                end 
            end 
        else 
            source:outputChat("Register failed2!") 
        end 
    end 
) 
  

UPD: Разобрался сам, не правильно запросы отправлял)

Link to comment

Немного не понял про Radio Buttons, у меня в одном окне две группы этих кнопок, но как сделать так, чтобы было два выбора? А то один скачет между группами Кстати, как вывести на экран сообщения с ошибками на клиентском скрипте? А то накосячу, и клиентский скрипт не грузится, и почему, искать нужно ручками(

Link to comment
xmlnode xmlCreateFile ( string filePath, string rootNodeName ) 

Эта клиент-функция создает XML файл у клиента?

Создаёт, только для клиента, читай вики.

Кстати, как вывести на экран сообщения с ошибками на клиентском скрипте? А то накосячу, и клиентский скрипт не грузится, и почему, искать нужно ручками(

Используй команду debugscript 3 в консоли, чтобы показать все дебаг-сообщения. По этому поводу советую прочитать эту статью.

Edited by Guest
Link to comment
xmlnode xmlCreateFile ( string filePath, string rootNodeName ) 

Эта клиент-функция создает XML файл у клиента?

Создаёт, только для клиента, читай вики.

Кстати, как вывести на экран сообщения с ошибками на клиентском скрипте? А то накосячу, и клиентский скрипт не грузится, и почему, искать нужно ручками(

Используй команду debugscript 3 в консоли, чтобы открыть просмотр сообщений дебага. По умолчанию работает, только если у тебя есть права администратора.

Все таки не успел сообщение изменить) Опытным путем проверил, что на клиенте сохраняет, но спасибо) На счет Radio Button, сделал лэйбл, положение на верхнюю точку бокса лэйбла, а ниже создал кнопки, и прикрепил их к лэйблу)

Link to comment

Возникла проблема с расшифровкой файла с помощью teaDecode. Функция по непонятным причинам возвращает только один символ. При использовании base64Encode/Decode проблем нет.

Код: http://pastebin.com/rncjCFSs

Неисправность или кривизна моих рук?

Возможно как-то связано с #8215

Link to comment
  • 2 weeks later...

Ребят, всем привет. Запостил вопрос в разделе "Scripting" основного форума, думал помогут, но нет. Видать там только на простенькие вопросы могут ответить. Поэтому прошу помощи здесь. Вопрос скорее математический, а не скриптовый. В общем, на картинке снизу изображены несколько DX-окружностей и курсор. Так вот мне нужно как-то вычислить что курсор находится в радиусе любой из окружностей. Т.е. грубо говоря, зная только координаты центра окружности и ее радиус, а также координаты курсора, мне нужно это каким-то образом определять. К сожалению, я сам это делать не умею, поэтому буду очень благодарен за помощь.

3f5ba2dd7ca3t.jpg

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...