[EFO]Kesha_F1

Вопросы и ответы по MTA.

Recommended Posts

Копайся сам в своем коде. Ищи createBlip или createBlipAttachedTo

Я их найду, не переживай. Вопрос имел упор на стандартное отображение игроков на радаре/карте.

Изначально на миникарте никто не отображается. Это все сделано скриптингом.

Share this post


Link to post
Изначально на миникарте никто не отображается. Это все сделано скриптингом.

Вот блин.. Я просто тестил преимущественно сам, поэтому этого не замечал. Думал, что у меня один из модов убирает отображение игроков на миникарте и основной карте на весь экран.

Значит буду копать в другой направлении.

Share this post


Link to post
    local moneyam = getElementData(thePlayer, "money") 
  
    if(moneyam > 0) then 
        return moneyam 
    elseif moneyam == 0 then 
        return 0 

ERROR: global/s_money_globals.lua:134: attempt to concatenate local 'moneyam' (a boolean valu 
e) 
  

Что тут не так? Возвращать то должно число, а не bool

Share this post


Link to post

Значит переменная возвращает false. Проверьте значение в том месте где вы присваиваете эту элемент дату.

Share this post


Link to post
Значит переменная возвращает false. Проверьте значение в том месте где вы присваиваете эту элемент дату.

Она не может возвращать false, ибо через outputchatbox выводится то кол-во денег, которое имею с собой в игре.

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

Share this post


Link to post

Ошибка в дебаге свидетельствует о том, что переменная 'moneyam' возвращает именно булевое значение, а значит это может быть либо true, либо false. Не могли бы вы скинуть полный код в таком случае.

Share this post


Link to post

Наверное, вы не ту строку нам скинули, эта может дать ошибку типа 'attempt to compare number with boolean'. Где-то должна быть операция скленивания строк ( та которая 'concatenate', .. ).

Share this post


Link to post
function getMoney(thePlayer) 
    local moneyam = getElementData(thePlayer, "money") 
  
    if(moneyam > 0) then 
        return moneyam 
    elseif moneyam == 0 then 
        return 0 
    end 
end 

Share this post


Link to post
function getMoney(thePlayer) 
    local moneyam = getElementData(thePlayer, "money") 
  
    if(moneyam > 0) then 
        return moneyam 
    elseif moneyam == 0 then 
        return 0 
    end 
end 

Этот код правильный, но он мало о чем говорит. Вы не привели момент, где вы присваиваете эту элемент дату и момент, где пытаетесь конкатенировать (склеить) эту дату с чем-либо.

Share this post


Link to post

Проблема еще может быть в том, что до того, как вы вызываете getMoney(), у игрока нет установленных на нем данных в ключе "money". Поэтому getElementData возвращает false. Предварительно установите ему какое-нибудь значение в этом ключе, например при заходе на сервер:

addEventHandler( 'onPlayerJoin', root, function() 
  setElementData( source, "money", 0 ) 
end ) 

Share this post


Link to post
Проблема еще может быть в том, что до того, как вы вызываете getMoney(), у игрока нет установленных на нем данных в ключе "money". Поэтому getElementData возвращает false. Предварительно установите ему какое-нибудь значение в этом ключе, например при заходе на сервер:
addEventHandler( 'onPlayerJoin', root, function() 
  setElementData( source, "money", 0 ) 
end ) 

Проверю наличие установки данных о деньгах в этом ключе :) Спасибо

upd1 С маркерами на карте разобрался, спасибо всем за инфу

Share this post


Link to post

Вот интересно стало

Почему в запросе sql используется для последней колонки такой вид

INSERT INTO asd SET ....., rotation='" .. mysql:escape_string(rotation) .. "',`limit`=5555") 
 

В предыдущие поля подставляются значения посредством ' " .. mysql:escape_string(argument) .. " ', а в последнее так. Причём если сделать его, как и остальные - вечные ошибки при запросе. Кто просветит меня? (:

Share this post


Link to post

Если ввести в автомобиле

outputChatBox( tostring( not getVehicleType( theVehicle ) == 'Automobile' ) ) 

то выводит false, однако если ввести

outputChatBox( tostring( not getVehicleType( theVehicle ) == 'Plane' ) ) 

то выводит все равно false. В чем проблема?

И как узнать какое расстояние прошел автомобиль за какой-то промежуток времени? (можно по разнице координат, но может он ездит вперед, назад)

Share this post


Link to post
Если ввести в автомобиле
outputChatBox( tostring( not getVehicleType( theVehicle ) == 'Automobile' ) ) 

то выводит false, однако если ввести

outputChatBox( tostring( not getVehicleType( theVehicle ) == 'Plane' ) ) 

то выводит все равно false. В чем проблема?

И как узнать какое расстояние прошел автомобиль за какой-то промежуток времени? (можно по разнице координат, но может он ездит вперед, назад)

По первому вопросу, возможно элемент theVehicle возвращает false, проверьте сперва это.

Насчет второго вопроса, как вариант, рендер на клиенте + вычисление разницы 3D координат. И неважно, едите вы вперед или назад.

Share this post


Link to post
По первому вопросу, возможно элемент theVehicle возвращает false, проверьте сперва это.

Нет, элемент theVehicle существует, просто во втором случае он не хочет инвертировать (not).

Еще вопрос: функция

setHelicopterRotorSpeed 

работает странно, например нужно вызывать её при событии onClientPreRender каждый раз, чтобы пропеллер не крутился.

Share this post


Link to post

Подскажите, какой функцией можно получить текущую дату и время сервера через скрипт?

Нужно для записи в поле "дата регистрации" в mysql. По аналогии с php'шной NOW()

Share this post


Link to post
Подскажите, какой функцией можно получить текущую дату и время сервера через скрипт?

Нужно для записи в поле "дата регистрации" в mysql. По аналогии с php'шной NOW()

https://wiki.multitheftauto.com/wiki/GetRealTime оно? И функция NOW() же не из php а из SQL вроде как.

Share this post


Link to post
Подскажите, какой функцией можно получить текущую дату и время сервера через скрипт?

Нужно для записи в поле "дата регистрации" в mysql. По аналогии с php'шной NOW()

Так это ж mysql'ная фунция. В запросе ее пропиши. Например вот так

INSERT INTO 'table' ('lal') VALUES (NOW()) 
// or 
UPDATE table SET lal = NOW() WHERE 1; 

UPD:

Не видел прошлый ответ, т.к. открыл много разных страниц и начал читать, пока дошло до этой - появился ответ выше.

Share this post


Link to post

Спасибо, ребят. Попробую воспользоваться стандартным NOW() в запросе (перепутал php и mysql :D))

А функций, определяющих страну, или модулей, нет случайно? :mrgreen:

Share this post


Link to post

Функция getPlayerCountry (если не ошибаюсь) в ресурсе admin от lil Toady. Проверяет по базе geo ip.

P.s до этого просили аналог NOW только в Lua, собственно вот, если нужен формат timestamp, кому надо для динамических операций используйте.

https://wiki.multitheftauto.com/wiki/GetTimestamp

Share this post


Link to post

Спасибо большое =) Будет в запасе ещё одна полезная функция.

Share this post


Link to post

На виндовом сервере наотрез отказывается запускать модуль mysql

Всё время пишет

MODULE: Unable to load modules/mta_mysql.dll!

Модуль сам лежит в папке modules. В чём соль?

Share this post


Link to post
На виндовом сервере наотрез отказывается запускать модуль mysql

Всё время пишет

MODULE: Unable to load modules/mta_mysql.dll!

Модуль сам лежит в папке modules. В чём соль?

Нужна библиотека libmysql.dll и mta_mysql.dll должна соответствовать разрядности сервера.

Модуль уже старый и я не советую его использовать. Лучше пользоваться встроенными функциями.

Share this post


Link to post

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.