Jump to content

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


Recommended Posts

А еще Флакер ты сможеш мне помоч я незнаю как сделать бинд на открытие и закрытие гуи ?? Уменя есть мысли но я незнаю!
function open() --Функция открытия 
        if isElement( GUIEditor_Window[1] )  then --Проверка на наличие открытого окна 
            destroyElement( GUIEditor_Window[1] ) 
            GUIEditor_Window[1] = nil 
            showCursor (false) 
        else --Если окна нет, то открыть 
            GUIEditor_Window = {} 
            GUIEditor_TabPanel = {} 
            GUIEditor_Tab = {} 
            GUIEditor_Memo = {} 
              
            GUIEditor_Window[1] = guiCreateWindow(221,190,568,422,"GUI OKNO",false) 
            GUIEditor_TabPanel[1] = guiCreateTabPanel(12,32,531,366,false,GUIEditor_Window[1]) 
            GUIEditor_Tab[1] = guiCreateTab("Tab Pannelka (TAB1)",GUIEditor_TabPanel[1]) 
            GUIEditor_Memo[1] = guiCreateMemo(91,43,362,261,"Это мемо",false,GUIEditor_Tab[1]) 
            GUIEditor_Tab[2] = guiCreateTab("Tab Pannelka (TAB2)",GUIEditor_TabPanel[1]) 
            showCursor (true) 
        end 
end      
bindKey("F1","down",open) --При нажатии на F1 выполнится функция open 

Link to comment

Ч тото оно не хочет открываться

function open() --Функция открытия 
        if isElement( GUIEditor_Window[1] )  then --Проверка на наличие открытого окна 
            destroyElement( GUIEditor_Window[1] ) 
            GUIEditor_Window[1] = nil 
            showCursor (false) 
        else 
GUIEditor_Window = {} 
GUIEditor_TabPanel = {} 
GUIEditor_Tab = {} 
GUIEditor_Memo = {} 
  
GUIEditor_Window[1] = guiCreateWindow(114,152,472,370,"Help panel Rus",false) 
GUIEditor_TabPanel[1] = guiCreateTabPanel(9,27,454,331,false,GUIEditor_Window[1]) 
GUIEditor_Tab[1] = guiCreateTab("Незнаеш как заработать?",GUIEditor_TabPanel[1]) 
GUIEditor_Memo[1] = guiCreateMemo(2,2,450,303,"1234567890",false,GUIEditor_Tab[1]) 
GUIEditor_Tab[2] = guiCreateTab("Кнопки и команды!!!",GUIEditor_TabPanel[1]) 
GUIEditor_Memo[2] = guiCreateMemo(2,2,450,303,"12345678910",false,GUIEditor_Tab[2]) 
 showCursor (true) 
        end 
end      
bindKey("F1","down",open) 

Link to comment

Вот код:

wdwHelpPannel = {} 
TabPanelBusWork = {} 
Tab_first = {} 
Tab_second = {} 
BusHelpMemo = {} 
  
function open_test() --Функция открытия 
        if isElement( wdwHelpPannel )  then --Проверка на наличие открытого окна 
            destroyElement( wdwHelpPannel ) 
            wdwHelpPannel = nil 
            showCursor (false) 
        else 
  
          
        wdwHelpPannel = guiCreateWindow(114,152,472,370,"Help panel Rus",false) 
        TabPanelBusWork = guiCreateTabPanel(9,27,454,331,false,wdwHelpPannel) 
        Tab_first = guiCreateTab("Незнаеш как заработать?",TabPanelBusWork) 
        BusHelpMemo = guiCreateMemo(2,2,450,303,"1234567890",false,Tab_first) 
        Tab_second = guiCreateTab("Кнопки и команды!!!",TabPanelBusWork) 
        GUIEditor_Memo[2] = guiCreateMemo(2,2,450,303,"12345678910",false,Tab_second) 
        showCursor (true) 
        guiSetVisible(wdwHelpPannel, true) 
        end 
end      
bindKey("F3","down",open_test) 

Просто лучше изменять названия всех GUI на свои.

Link to comment
А как это сделать подскажеш?

Например в notepad++ во вкладке кодировка выбираешь 'Преобразовать в UTF-8 без ВОМ'

function open() --Функция открытия 
        if isElement( GUIEditor_Window[1] )  then --Проверка на наличие открытого окна 
            destroyElement( GUIEditor_Window[1] ) 
            GUIEditor_Window[1] = nil 
            showCursor (false) 
        else 
GUIEditor_Window = {} 
GUIEditor_TabPanel = {} 
GUIEditor_Tab = {} 
GUIEditor_Memo = {} 
  
GUIEditor_Window[1] = guiCreateWindow(114,152,472,370,"Help panel Rus",false) 
GUIEditor_TabPanel[1] = guiCreateTabPanel(9,27,454,331,false,GUIEditor_Window[1]) 
GUIEditor_Tab[1] = guiCreateTab("Незнаеш как заработать?",GUIEditor_TabPanel[1]) 
GUIEditor_Memo[1] = guiCreateMemo(2,2,450,303,"1234567890",false,GUIEditor_Tab[1]) 
GUIEditor_Tab[2] = guiCreateTab("Кнопки и команды!!!",GUIEditor_TabPanel[1]) 
GUIEditor_Memo[2] = guiCreateMemo(2,2,450,303,"12345678910",false,GUIEditor_Tab[2]) 
 showCursor (true) 
        end 
end      
bindKey("F1","down",open) 

Легче так сделать:

Создаёшь все элементы

Делаешь невидимым родительский элемент в данном случае это окно.

GUIEditor_Window[1] = guiCreateWindow(114,152,472,370,"Help panel Rus",false) 

Делаешь бинд.

Код

  
GUIEditor_Window = {} 
GUIEditor_TabPanel = {} 
GUIEditor_Tab = {} 
GUIEditor_Memo = {} 
  
GUIEditor_Window[1] = guiCreateWindow(114,152,472,370,"Help panel Rus",false) 
GUIEditor_TabPanel[1] = guiCreateTabPanel(9,27,454,331,false,GUIEditor_Window[1]) 
GUIEditor_Tab[1] = guiCreateTab("Незнаеш как заработать?",GUIEditor_TabPanel[1]) 
GUIEditor_Memo[1] = guiCreateMemo(2,2,450,303,"1234567890",false,GUIEditor_Tab[1]) 
GUIEditor_Tab[2] = guiCreateTab("Кнопки и команды!!!",GUIEditor_TabPanel[1]) 
GUIEditor_Memo[2] = guiCreateMemo(2,2,450,303,"12345678910",false,GUIEditor_Tab[2]) 
  
bindKey( 'F1', 'down', 
    function( ) 
        guiSetVisible( GUIEditor_Window[1], not guiGetVisible( GUIEditor_Window[1] ) )  
        showCursor( not isCursorShowing( ) ) 
    end 
) 
  

Link to comment

НЕзнаю как у тебя но у меня чтото не работает !!!!

wdwHelpPannel = {} 
TabPanelBusWork = {} 
Tab_first = {} 
Tab_second = {} 
BusHelpMemo = {} 
  
function open_test() --Функция открытия 
        if isElement( wdwHelpPannel )  then --Проверка на наличие открытого окна 
            destroyElement( wdwHelpPannel ) 
            wdwHelpPannel = nil 
            showCursor (false) 
        else 
  
          
        wdwHelpPannel = guiCreateWindow(114,152,472,370,"Help panel Rus",false) 
        TabPanelBusWork = guiCreateTabPanel(9,27,454,331,false,wdwHelpPannel) 
        Tab_first = guiCreateTab("Незнаеш как заработать?",TabPanelBusWork) 
        BusHelpMemo = guiCreateMemo(2,2,450,303,"1234567890",false,Tab_first) 
        Tab_second = guiCreateTab("Кнопки и команды!!!",TabPanelBusWork) 
        GUIEditor_Memo[2] = guiCreateMemo(2,2,450,303,"12345678910",false,Tab_second) 
        showCursor (true) 
        guiSetVisible(wdwHelpPannel, true) 
        end 
end      
bindKey("F3","down",open_test) 

ну доладно я немного исправил баг в спидометре 31c977181ba0.png

Link to comment
Kenix, а если GUI окно не выгружено, а только скрыто, то оно будет больше памяти кушать?

Или особой разницы нет?

Ты же создал окно. Значит она уже есть в памяти. Если ты удалишь окно ( destroyElement ) => не будет в памяти. Но это бред создавать и удалять окно если можно просто показывать/убирать.

Link to comment
Kenix, а если GUI окно не выгружено, а только скрыто, то оно будет больше памяти кушать?

Или особой разницы нет?

Ты же создал окно. Значит она уже есть в памяти. Если ты удалишь окно ( destroyElement ) => не будет в памяти. Но это бред создавать и удалять окно если можно просто показывать/убирать.

Ну я иммею ввиду, что если много окон просто скрыто, то они как бы в буфере сохраняются может? И вобщем через некоторое время, когда их будет очень много, то слабые компьютеры лагать будут?

Бред?

Link to comment
Естественно тормозить будет. Дело не только в памяти, а в рендеринге.

=> Если гуи штук 100, то тормаза будут нормальные.

http://www.compline-ufa.ru/bazovie-pona ... ideo-karta

http://ru.wikipedia.org/wiki/Рендеринг

Тогда все таки дестроить объект, более правильный вариант?

Link to comment

Нет, просто не показывай гуи элемент ( guiSetVisible ).

Если этот гуи элемент будет нужен в дальнейшем, то нет смысла его удалять.

Link to comment

Привет Всем. Скажите, пожалуйста, как сделать рабочими шейдеры на сервере.

Всё делаю по инструкции в Wiki

https://wiki.multitheftauto.com/wiki/DxCreateShader

но результат 0. Не включается, хоть я и пишу "Включить".

Шейдеры взял как пример из конструктора игр Scirra 1.2r.

(Любой шейдер ставлю, не работает)

// HDR tonemapping 
// Ashley Gullen 
// PS 2.0 
// Use after a blur for a lighting effect. 
  
//#PARAM float exposure 2.5 : Exposure : Camera exposure of the HDR effect. 
float exposure; 
  
// Foreground texture 
texture ForegroundTexture; 
  
// Source texture 
texture SourceTexture; 
  
// Foreground sampler 
sampler2D foreground = sampler_state { 
    Texture = (ForegroundTexture); 
    MinFilter = Point; 
    MagFilter = Point; 
    MipFilter = Point; 
}; 
  
// Source sampler 
sampler2D source = sampler_state { 
    Texture = (SourceTexture); 
    MinFilter = Point; 
    MagFilter = Point; 
    MipFilter = Point; 
}; 
  
// Effect function 
float4 EffectProcess( float2 Tex : TEXCOORD0 ) : COLOR0 
{ 
    // Add the front and back pixels 
    float4 original = tex2D(source, Tex.xy); 
    float4 blur = tex2D(foreground, Tex.xy); 
    float4 color = lerp(original, blur, 0.4f); 
  
    // Calculate vignette 
    Tex -= 0.5; 
    float v = 1 - dot(Tex, Tex); 
  
    // Apply vignette to color 
    color.rgb *= pow(v, 4.0); 
  
    // Exposure level 
    color.rgb *= exposure; 
  
    color.rgb = pow(color.rgb, 0.55); 
     
    return color; 
} 
  
// ConstructEffect 
technique ConstructEffect 
{ 
    pass p0 
    { 
        VertexShader = null; 
        PixelShader = compile ps_2_0 EffectProcess(); 
    } 
} 
  

Этот код сохраняю в файл hsleffect.fx, создаю meta.xml

<meta> 
  <info author="WilliJ" description="test fx effects" version="1" /> 
  <script src="shaderstart.lua" type="client" /> 
  <file src="hsleffect.fx" /> 
</meta> 

,

создаю lua скрипт

addEventHandler( "onClientRender", root, 
    function() 
        if myShader then 
            dxDrawImage( 100, 350, 300, 350, myShader ) 
        end 
    end 
) 
  
-- Use 'toggle' command to switch shader on and off 
addCommandHandler( "hsl", 
    function() 
        if not myShader then 
            myShader = dxCreateShader( "hsleffect.fx" )  -- Create shader 
        else         
            destroyElement( myShader )                    -- Destroy shader 
            myShader = nil 
        end 
    end 
) 

(конечно, указываю файл-архив в local.conf и в mtaserver.conf)

Запускаю сервер, клиент, игру, ввожу код включения шейдера(hsl), но ничего не происходит... разрешение 800x600. Карта nVidia FX5500 256 mb с поддержкой 2.0 шейдеров(и пиксель, и вертекс). В других играх эффекты типа попиксельного освещения или, например, ENB работают. А тут...

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

Версия мта 1.3 с обновлениями.

P.S. Скажите, пожалуйста, к чему относятся цифры(100, 350 и т.д.) в

dxDrawImage( 100, 350, 300, 350, myShader ) 

:?:

Edited by Guest
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...