Jump to content

Ошибка в коде, или я делаю что то не так....


Recommended Posts

У меня что-то не работает скрипт ktypestatus...

Вот покажу коды.

Это в ktypestatus.lua:

addEvent("playerChatting", true ) 
addEvent("playerNotChatting", true ) 
  
function playerChatting() 
         
    triggerClientEvent("updateChatList", getRootElement(), source, true) 
end 
  
function playerNotChatting() 
         
    triggerClientEvent("updateChatList", getRootElement(), source, false) 
end 
  
addEventHandler("playerChatting", getRootElement(), playerChatting) 
addEventHandler("playerNotChatting", getRootElement(), playerNotChatting) 
addEventHandler ("onPlayerQuit", getRootElement(), playerNotChatting ) 

А это в ktypestatus_cl.lua:

local showMyIcon = true 
local chattingPlayers = {} 
local drawDistance = 1000 
local transicon = false 
local chatIconFor = {} 
  
local screenSizex, screenSizey = guiGetScreenSize() 
local guix = screenSizex * 0.1 
local guiy = screenSizex * 0.1 
local globalscale = 1 
local globalalpha = .85 
  
addEvent("updateChatList", true ) 
  
gChatting = false 
  
function chatCheckPulse() 
    local chatState = isChatBoxInputActive() or isConsoleActive() 
  
    if chatState ~= gChatting then 
        if chatState then 
            triggerServerEvent("playerChatting", getLocalPlayer()) 
        else 
            triggerServerEvent("playerNotChatting", getLocalPlayer()) 
        end 
        gChatting = chatState 
    end 
    setTimer( chatCheckPulse, 250, 1) 
end 
  
function showTextIcon() 
    local playerx,playery,playerz = getElementPosition ( getLocalPlayer() ) 
    for player, truth in pairs(chattingPlayers) do 
         
        if (player == getLocalPlayer()) then 
            if(not showMyIcon) then 
                return 
            end 
        end 
     
        if(truth) then 
            local chatx, chaty, chatz = getElementPosition( player ) 
            if(isPlayerInVehicle(player)) then 
                chatz = chatz + .5 
            end 
            local dist = getDistanceBetweenPoints3D ( playerx, playery, playerz, chatx, chaty, chatz ) 
            if dist < drawDistance then 
                if( isLineOfSightClear(playerx, playery, playerz, chatx, chaty, chatz, true, false, false, false )) then 
                    local screenX, screenY = getScreenFromWorldPosition ( chatx, chaty, chatz+1.2 ) 
                     
                    local scaled = screenSizex * (1/(2*(dist+5))) *.85 
                    local relx, rely = scaled * globalscale, scaled * globalscale 
                    -- -.0025 * dist+.125 
                    --if(dist < 1) then 
                    --  relx, rely = guix, guiy 
                    --end 
                    guiSetAlpha(chatIconFor[player], globalalpha) 
                    guiSetSize(chatIconFor[player], relx, rely, false) 
                    guiSetPosition(chatIconFor[player], screenX, screenY, false) 
                    if(screenX and screenY) then 
                        guiSetVisible(chatIconFor[player], true) 
                    end 
                end 
            end 
        end 
    end 
end 
  
function updateList(newEntry, newStatus) 
    chattingPlayers[newEntry] = newStatus 
    if(not chatIconFor[newEntry]) then 
        chatIconFor[newEntry] = guiCreateStaticImage(0, 0, guix, guiy, "chat.png", false ) 
    end 
    guiSetVisible(chatIconFor[newEntry], false) 
end 
  
function toggleIcon() 
    outputChatBox ( "Your icon is: " ) 
    if( showMyIcon ) then 
        showMyIcon = false 
        outputChatBox ( "off", 255, 0, 0) 
    else 
        showMyIcon = true 
        outputChatBox ( "on", 0, 255, 0) 
    end 
end 
  
function resizeIcon( command, newSize ) 
    if(newSize) then 
        local resize = tonumber( newSize ) 
        local percent = resize/100 
        globalscale = percent 
    end 
    outputChatBox("Chat icons are "..(globalscale * 100).."% normal size") 
end 
  
function setIconAlpha( command, newSize ) 
    if(newSize) then 
        globalalpha = tonumber( newSize ) / 100 
    end 
    outputChatBox("Chat icons are "..(globalalpha * 100).."% visible") 
end 
  
addEventHandler ( "updateChatList", getRootElement(), updateList ) 
  
addEventHandler ( "onClientResourceStart", getRootElement(), chatCheckPulse ) 
addEventHandler ( "onClientPlayerJoin", getRootElement(), chatCheckPulse ) 
addEventHandler ( "onClientRender", getRootElement(), showTextIcon ) 
  
addCommandHandler( "toggleicon", toggleIcon) 
addCommandHandler( "resizeicon", resizeIcon) 
addCommandHandler( "seticonvis", setIconAlpha) 

И вокне сервера пишет:

ERROR: unzipped\nanomode\modes\ktypestatus_cl.lua:7: attempt to call global 'guiGetScreenSize' (a nil value)

Я ничего вообще не изменял там...что это за проблемма может быть ?

Также добавляю например регистрацию на сервере, всё вроде идет, но когда регаюсь на сервере, ввожу ник, пасс, мэил, жму "Go" и ничего не происходит, ввожу "debugscript 3", и там пишет какойто WARNING: login_serv.lua:31 Bad Argument....без понятия что это такое..также другие скрипты добавляю, они н идут) В чем же может быть проблемма?

Вот мой meta.xml если что:

    type="gamemode" name="Nanotech LV:Stunt GM | v0.1b" version="0.1b" author="Nanotech.ua" /> 
    resource="freeroam" /> 
    resource="spawnmanager" /> 
  
    "nanomode.map" /> 
  
    

Помогите пожалуйста решить проблемму...

Link to comment

Пропустили параметр type. Из-за этого, он выполняется на сервере. А должен на клиенте

    

Насчет этого:

WARNING: login_serv.lua:31 Bad Argument....без понятия что это такое..также другие скрипты добавляю, они н идут)

Дайте код файла login_serv.lua.

P.S. У вас в meta.xml два раза


Link to comment

Пропустили параметр type. Из-за этого, он выполняется на сервере. А должен на клиенте

    

Спасибо, изменил.

Насчет этого:

WARNING: login_serv.lua:31 Bad Argument....без понятия что это такое..также другие скрипты добавляю, они н идут)

Дайте код файла login_serv.lua.

Вот:

  
function on4XLogin ( player, user, pass ) 
    local account = getAccount ( user, pass ) 
    if ( account ~= false ) then 
        if ( not isGuestAccount ( account ) ) then -- For every player that's logged in.... 
            logOut ( player ) -- Log them out. 
        end 
         
        if (logIn ( player, account, pass ) == true) then 
            triggerClientEvent ( player, "hideLoginWindow", getRootElement()) 
        else 
            outputChatBox ( "Login error!", player, 255, 255, 0 ) -- Output they got the details wrong. 
        end 
    else 
        outputChatBox ( "Wrong username or password!", player, 255, 255, 0 ) -- Output they got the details wrong. 
    end 
end 
addEvent( "on4XLogin", true ) 
addEventHandler( "on4XLogin", getRootElement(), on4XLogin ) 
  
function on4XRegister ( player, user, pass, email ) 
    local account = getAccount ( user, pass ) 
    if ( account ~= false ) then 
        if (logIn ( player, account, pass ) == true) then 
            triggerClientEvent ( player, "hideLoginWindow", getRootElement()) 
        else 
            outputChatBox ( "Login error!", player, 255, 255, 0 ) -- Output they got the details wrong. 
        end 
    else 
        account = addAccount ( user, pass ) 
        setAccountData ( account, "email", email) 
        if (logIn ( player, account, pass ) == true) then 
            triggerClientEvent ( player, "hideLoginWindow", getRootElement()) 
        else 
            outputChatBox ( "Register/Login error!", player, 255, 255, 0 ) -- Output they got the details wrong. 
        end 
    end 
end 
addEvent( "on4XRegister", true ) 
addEventHandler( "on4XRegister", getRootElement(), on4XRegister ) 
  
function needVars() 
    local allow_register = get("allow_register") 
    local email_on_register = get("email_on_register") 
    triggerClientEvent(source, "onSendVars", getRootElement(), allow_register, email_on_register) 
end 
addEvent("onNeedVars", true) 
addEventHandler("onNeedVars", getRootElement(), needVars) 
  

P.S. У вас в meta.xml два раза


Угу, спасибо! Убрал :).

P.s.:

Ну сделал я всё норм, отредактировать, и снова бред какойто по этому скрипту

WARNING: modes/133_chaticon/ktypestatus_cl.lua(Line 43) [Client] isPlayerInVehicle is deprecated and may not work in future versions. Please replace with isPedInVehicle.
Link to comment

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

deprecated = устарела.

Ресурс, видимо, не нов, а MTA предлагает обновить старую функцию на новую, так как в будущем ее может быть уберут за ненадобностью.

IsPedInVehicle - актуальная.

Link to comment
WARNING: modes/133_chaticon/ktypestatus_cl.lua(Line 43) [Client] isPlayerInVehicle is deprecated and may not work in future versions. Please replace with isPedInVehicle.

замените isPlayerInVehicle на isPedInVehicle

А теперь вообще какие то варнинги "gui" :О. Ну кароче, если я ставлю этот скрипт просто как ресурс, имеется ввиду не вписываю в мод, то всё норм. Всё идет. Но только если впишу в мод, не идет.....

Link to comment
а зачем все пихать в мод? :)

Ой, не в мод, а в meta.xml. Кароче создаю папку 'modes', в неё папки всех ресурсов, и в 'meta.xml' всё прописываю о: т.е. там картинки, названия модов .луа и др.

как вариант, если хочешь чтобы он с модом стартовал, про пиши его в мете как include.

https://wiki.multitheftauto.com/index.ph ... U/Meta.xml

Карчое у меня есть в папке с модом папка 'modes'(как я выше пеисал), и в неё я ставлю все скрипты. Вот что я в мете прописал:

        resource="modes/133_chaticon" /> 
        resource="modes/shader_contrast" /> 

Верно сделал?) Или нет?)

И да, на сервере ввожу после этого 'refresh', и вот ошибка:

ERROR: Problem with resource: nanomode; Failed to link to modes/133_chaticon

-

Если я с инклудами не так сделал, обьясни плз попродробнее что куда..))

Link to comment

Если у тебя уже есть отдельный ресурс (папка с файлами), который ты где-то скачал, то можно его заставить стартовать при старте твоего мода.

Для этого прописываем в мету, например, это:

 <include resource="killmessages" /> 

И помни, что "пути" тут формируются не как к картинке в HTML, а чисто из названия ресурса.

Где бы твой ресурс не лежал, MTA воспринимает его как папку с названием, и по этому самому названию ты сможешь его запустить. Тебе не нужно ничего кроме самого названия, т.е. в твоем случае - "shader_contrast" и "133_chaticon".

Папки с [] в назании служат для того, чтобы можно было сортировать ресурсы по категориям, то есть такие папки MTA не воспринимает как ресурсы, но при этом видит их содержимое.

Таким образом, мы получаем и удобную организацию (например, [race]/[maps], а только тут уже карты-ресурсы), и MTA при этом их видит.

Так понятней? :)

Link to comment

Да, понятно, спасибо!!)

-

И кстате, вот скрипт "shader_contrast" у меня идет, всё нормально. Но как качаю другой какой нибудь, то в окне вот такая ошибка:

[2011-12-10 09:23:41] ERROR: Problem with resource: nanomode; Failed to link to 1238_snow

Ппц......что это? Что такое может быть? :(

Link to comment
Не получилось ему сослаться на ресурс 1238_snow.

Он его почему-то не видит.

Он вообще есть? Если отдельно запускать, то стартует?

Да, есть он. Запускал отдельно, всё пашет. Запускаю в моде, эта ошибка......

-

Вот например взял другой скрипт. Закинул папку с ресурсом "214_new_hud" в папку своего мода(server\mods\deathmatch\resources\[gamemodes]\[nanomode]\nanomode)

В мете прописал: , также как и тот ресурс, потом запускаю сервер, и в онке эта ошибка...

ERROR: Problem with resource: nanomode; Failed to link to 214_new_hud
Link to comment
Не получилось ему сослаться на ресурс 1238_snow.

Он его почему-то не видит.

Он вообще есть? Если отдельно запускать, то стартует?

Не на ресурс, а на файл указанный в ресурсе.

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...