Jump to content

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


Recommended Posts

ребят такой вопрос есть маркер и таблица,

local x,y,z = unpack ( busoit [ math.random ( #busoit ) ] ) 
setElementPosition(markers,x,y,z)   

т.е. при условиях маркер будет перенесен по рандомному адресу из таблицы

нужно что бы ид выбраного адреса записался в setElementData(localPlayer,"gyt", ? )

как определить рандомное выбранное число для данных?...

таблица

busoit = {[1]= {-2476.234375,2320.2734375,4.984375}, 
          [2]= {-699.7919921875,952.4130859375,12.334638595581}, 
          [3]= {-2651.3740234375,27.869140625,4.3359375} 
} 

Link to comment
  • Scripting Moderators
local random = math.random ( #busoit ) 
local x,y,z = unpack ( busoit [ random ] ) 
setElementPosition(markers,x,y,z) 
-- ... 
setElementData ( localPlayer, "gyt", random ) 

Вот так?

Link to comment

Sarrum, да все так)) все именно так)) спасибо, просто скрипт писал довольно долго без перевывов почти, потом увидел недочет, решил спросить, после нескольких проб и ошибок

Link to comment
Вот список компонентов:

special_1

special_2

special_3

special_4

special_5

bonnet

boot

bumper_1

bumper_2

chassis

door_1

door_2

door_3

door_4

exhaust

windscreen

У каждой машины свои компоненты, поэтому лучше смотреть функцией.

а как и куда можно вывести эту таблицу?

и такой еще вопрос: как связать между собой скрипты?

вот часть клиента одного скрипта

  
function smoke() 
g_Data = getElementData ( player, "createSmoke" ) 
    if (g_Data == true) then 
        -- основная часть скрипта 
    else return end 
end 
  
function startData() 
    setElementData ( player, "createSmoke", true ) 
end 
addEventHandler( "onClientResourceStart", getRootElement(), startData ) 
  
function setSmokeData () 
getSmokeData = getElementData ( player, "createSmoke" ) 
    if ( getSmokeData == true ) then 
        setElementData ( player, "createSmoke", false ) 
    elseif ( getSmokeData == false ) then 
        setElementData ( player, "createSmoke", true ) 
    end 
end 
addCommandHandler ( "smoke", setSmokeData ) 
  

а вот к примеру, клиент freeroam'a

  
function smokeSelect () 
    if guiCheckBoxGetSelected(getControl(wndMain, 'smoke')) then 
        --TO DO 
    end 
end 
  

у меня была идея написать так, но фрироам не видит данные игрока, которые я выставил в первом скрипте и наоборот. Первый скрипт не видит данные, которые я выставляю в фрироаме.

  
function smokeSelect () 
    if guiCheckBoxGetSelected(getControl(wndMain, 'smoke')) then 
        setElementData ( g_Me, "createSmoke", true ) 
        else 
        setElementData ( g_Me, "createSmoke", false ) 
    end 
end 
  

как это можно осуществить?

Link to comment
Вот список компонентов:

special_1

special_2

special_3

special_4

special_5

bonnet

boot

bumper_1

bumper_2

chassis

door_1

door_2

door_3

door_4

exhaust

windscreen

У каждой машины свои компоненты, поэтому лучше смотреть функцией.

а как и куда можно вывести эту таблицу?

и такой еще вопрос: как связать между собой скрипты?

вот часть клиента одного скрипта

  
function smoke() 
g_Data = getElementData ( player, "createSmoke" ) 
    if (g_Data == true) then 
        -- основная часть скрипта 
    else return end 
end 
  
function startData() 
    setElementData ( player, "createSmoke", true ) 
end 
addEventHandler( "onClientResourceStart", getRootElement(), startData ) 
  
function setSmokeData () 
getSmokeData = getElementData ( player, "createSmoke" ) 
    if ( getSmokeData == true ) then 
        setElementData ( player, "createSmoke", false ) 
    elseif ( getSmokeData == false ) then 
        setElementData ( player, "createSmoke", true ) 
    end 
end 
addCommandHandler ( "smoke", setSmokeData ) 
  

а вот к примеру, клиент freeroam'a

  
function smokeSelect () 
    if guiCheckBoxGetSelected(getControl(wndMain, 'smoke')) then 
        --TO DO 
    end 
end 
  

у меня была идея написать так, но фрироам не видит данные игрока, которые я выставил в первом скрипте и наоборот. Первый скрипт не видит данные, которые я выставляю в фрироаме.

  
function smokeSelect () 
    if guiCheckBoxGetSelected(getControl(wndMain, 'smoke')) then 
        setElementData ( g_Me, "createSmoke", true ) 
        else 
        setElementData ( g_Me, "createSmoke", false ) 
    end 
end 
  

как это можно осуществить?

мне кто-то ответит? :|

Link to comment
  • Scripting Moderators
Вот список компонентов:

special_1

special_2

special_3

special_4

special_5

bonnet

boot

bumper_1

bumper_2

chassis

door_1

door_2

door_3

door_4

exhaust

windscreen

У каждой машины свои компоненты, поэтому лучше смотреть функцией.

а как и куда можно вывести эту таблицу?

addCommandHandler ( "gvc", 
    function ( ) 
        local theVehicle = getPedOccupiedVehicle ( localPlayer ) 
        if ( theVehicle ) then 
            for k in pairs ( getVehicleComponents ( theVehicle ) ) do 
                outputChatBox ( k ) 
            end 
        end 
    end 
) 

и такой еще вопрос: как связать между собой скрипты?

вот часть клиента одного скрипта

  
function smoke() 
g_Data = getElementData ( player, "createSmoke" ) 
    if (g_Data == true) then 
        -- основная часть скрипта 
    else return end 
end 
  
function startData() 
    setElementData ( player, "createSmoke", true ) 
end 
addEventHandler( "onClientResourceStart", getRootElement(), startData ) 
  
function setSmokeData () 
getSmokeData = getElementData ( player, "createSmoke" ) 
    if ( getSmokeData == true ) then 
        setElementData ( player, "createSmoke", false ) 
    elseif ( getSmokeData == false ) then 
        setElementData ( player, "createSmoke", true ) 
    end 
end 
addCommandHandler ( "smoke", setSmokeData ) 
  

а вот к примеру, клиент freeroam'a

  
function smokeSelect () 
    if guiCheckBoxGetSelected(getControl(wndMain, 'smoke')) then 
        --TO DO 
    end 
end 
  

у меня была идея написать так, но фрироам не видит данные игрока, которые я выставил в первом скрипте и наоборот. Первый скрипт не видит данные, которые я выставляю в фрироаме.

  
function smokeSelect () 
    if guiCheckBoxGetSelected(getControl(wndMain, 'smoke')) then 
        setElementData ( g_Me, "createSmoke", true ) 
        else 
        setElementData ( g_Me, "createSmoke", false ) 
    end 
end 
  

как это можно осуществить?

В первом скрипте переменная player не задана.

Link to comment
addCommandHandler ( "gvc", 
    function ( ) 
        local theVehicle = getPedOccupiedVehicle ( localPlayer ) 
        if ( theVehicle ) then 
            for k in pairs ( getVehicleComponents ( theVehicle ) ) do 
                outputChatBox ( k ) 
            end 
        end 
    end 
) 

спасибо :)

В первом скрипте переменная player не задана.

задана. я скопировал лишь основную часть. то есть, скрипт вполне рабочий, вопрос только в том, как пользоваться функцией call.

Link to comment

Хмм... Народ, а как вы решаете проблему написания текстов в командах, кроме как

function callToPlayerPager( source, commandname, ... ) 
    local Ttext = { ... } 
    local text 
     
    for _, string in ipairs ( Ttext ) do 
        text = text .. ' ' .. string 
    end 
--body 
end 

?

Link to comment
Хмм... Народ, а как вы решаете проблему написания текстов в командах, кроме как
function callToPlayerPager( source, commandname, ... ) 
    local Ttext = { ... } 
    local text 
     
    for _, string in ipairs ( Ttext ) do 
        text = text .. ' ' .. string 
    end 
--body 
end 

?

table.concat

Link to comment

Здравствуйте. Такая ситуация:

на сервере имеются некоторые файлы, которые игрок загружает при заходе на сервер (текстуры и пр.).

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

А после загрузки файлов игрок спавнится уже и пр., т.е. выполняется остальной фрагмент кода.

Как реализовать?

П.С.: есть догадки, что для начала надо бы запихать эти файлы в отдельный ресурс...

Link to comment

Сервер

  
addEvent ( 'onPlayerReady', true ); 
  
-- Игрок зашёл на сервер, показываем и направляем камеру на координаты x = 500, y = 120, z = 50 
addEventHandler ( 'onPlayerJoin', root, 
    function() 
        fadeCamera ( source, true, 5 ); 
        setCameraMatrix ( source, 500, 120, 50 ); 
    end 
); 
  
addEventHandler( 'onPlayerReady', root, 
    function() 
        -- Код 
    end 
); 
  
  

Клиент

  
-- Игрок скачал все файлы, вызываем событие, которое находится на сервере. 
addEventHandler( 'onClientResourceStart', resourceRoot, 
    function() 
        triggerServerEvent( 'onPlayerReady', localPlayer ); 
    end 
); 

Link to comment

Спасибо! Работает :). Еще небольшой вопрос: существуют ли функции, отключающие автоматическое включение фар вечером и включение движка, когда игрок садится в машину?

Link to comment

такой вот вопрос, при входе в определенный тип машин создаеться маркер виден коий только thePlayer тому кто сел,

и при выходе из машины должен уничтожаться, как определить его для leaveElement, а то получаеться что любой кто выйдет из опр. типа машины удаляет маркер, мб дать маркеру ид игрока и при выходе проверять?

и так же как можно определять hitElement только для того кто создал маркер тоесть что бы удаляло и хитилась только для того и тем кто создал,

    function oiu (thePlayer,seat,jacked) 
        if pizacars [getElementModel(source)] then -- это тип машины 
            if isElement (marker) then 
                destroyElement(marker) 
            end 
            if isElement (blip) then 
                destroyElement(blip) 
            end 
        end 
    end 
 addEventHandler("onVehicleExit",getRootElement(),oiu) 

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