Jump to content

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


Recommended Posts

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

В одном ресурсе код такой:

banksInfo = { } 
  
banksInfo[ 0 ] = { } 
         
banksInfo[ 0 ].name = "bankname"; 
  
print(banksInfo[0].name); 

А во втором

print(banksInfo[0].name); 

Но во втором выводит nil, думал с помощью exports сделать, но там вроде как функции только, а насчёт массивов не знаю как...

Link to comment

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

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

Link to comment
В первом скрипте делаешь функцию, которую собирался включать со второго, со второго через экспорт ее активируешь.

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

т.е

в meta.xml первого скрипта добавляем

<export function="getBanksTable" type="server"/> 

в первом скрипте дописываем:

function getBanksTable() 
return banksInfo 
end 

и во втором экспортим:

print(exports["one"]:getBanksTable()); 

Выводит:

.table: 000000 

вместо нулей разные значения постоянно.

Как например вывести banksInfo[0].name ?

-----------------------------------------------------------------------------------------------------------------------

Вроде сделал

ф-ю немного переделал:

function getBanksTable(index,name) 
return banksInfo[index].name 
end 

Экспорт такой:

print(exports["one"]:getBanksTable(0,name)); 

Но опять же проблема, если например:

banksInfo[ 0 ].mytest = "testmytest"; 

и сделать экспорт так:

print(exports["one"]:getBanksTable(0,testmy)); 

То всё равно выведет banksInfo[ 0 ].name

Если в самой функции поменять name на sname к примеру

function getBanksTable(index,sname) 
return banksInfo[index].sname 
end 

То при

print(exports["one"]:getBanksTable(0,name)); 

print(exports["one"]:getBanksTable(0,testmy)); 

Выведет .nil

Что я не так делаю ?

Link to comment

Впервые юзаю setElementData и getElementData. Пытался разобраться, выводит ошибку [ got boolean ], это очевидно, ведь выход bool.

Подправьте меня, пожалуйста:

  
            local oSkin = getElementModel ( source ) 
            setElementData ( source, "oldskin", oSkin ) -- Требуется получить старый скин 
  
            local oskin = getElementData ( hitElement, "oldskin" ) -- Требуется изъять данные о старом скине 
            setElementModel ( occupant, oskin ) -- Здесь собственно его 'вмонтирование' 
  

Link to comment
Полный кусок кода покажи, мы не телепаты.

Сжал:

    function stJW ( source ) 
        if isGuestAccount ( getPlayerAccount ( source ) ) then return else 
            local account = getPlayerAccount (source) 
            local saveolskin = setAccountData (account, "oldskin", tostring (getElementModel (source))) 
            setElementModel ( source, 181 ) 
        end 
    end 
    addCommandHandler ( "stJW", stJW ) 
  
    function MarkerHit( hitElement, matchingDimension ) 
        if getElementType(hitElement) == "player" then 
            veh = getPedOccupiedVehicle ( hitElement ) 
        elseif getElementType(hitElement) == "vehicle" then 
            veh = hitElement 
            local occupant = getVehicleOccupant(veh) 
            local account = getPlayerAccount (hitElement) 
            local loadskin = getAccountData ( account, "oldskin" ) 
            setElementModel ( occupant, loadskin ) 
        end 
    end 

Link to comment
function myCmd ( p ) 
    if isGuestAccount ( getPlayerAccount ( p ) ) then return else 
        local account = getPlayerAccount ( p ); 
        local saveolskin = setAccountData ( account, "oldskin", tostring ( getElementModel ( p ) ) ); 
        setElementModel ( p, 181 ); 
    end 
end 
addCommandHandler ( "stJW", myCmd ) 
  
function MarkerHit( hitElement, matchingDimension ) 
    if getElementType ( hitElement ) == "vehicle" then 
        local veh = getPedOccupiedVehicle ( hitElement ) ; 
        local occupant = getVehicleOccupant ( veh ); 
        local account = getPlayerAccount ( hitElement ); 
        local loadskin = getAccountData ( account, "oldskin" ); 
        setElementModel ( occupant, tostring ( loadskin ) ); 
    end 
end 
addEventHandler( "onMarkerHit", root, MarkerHit ) 

Link to comment

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

function playerDied[u][b](totalAmmo, killer, killerWeapon, bodypart)[/b][/u] 
    outputChatBox(getPlayerName(source).." умер!") 
end 
addEventHandler("onPlayerWasted",getRootElement(),playerDied) 
  

объясните кому не лень просто и ясно что за что отвечает и когда оно нужно когда нет, желательно на каком-то ясном примере, буду очень признателен.

Кидать ссылки на мта-вики и уроки lua не надо, а хотя если есть очень толковый туториал давайте :lol:

Link to comment
function myCmd ( p ) 
    if isGuestAccount ( getPlayerAccount ( p ) ) then return else 
        local account = getPlayerAccount ( p ); 
        local saveolskin = setAccountData ( account, "oldskin", tostring ( getElementModel ( p ) ) ); 
        setElementModel ( p, 181 ); 
    end 
end 
addCommandHandler ( "stJW", myCmd ) 
  
function MarkerHit( hitElement, matchingDimension ) 
    if getElementType ( hitElement ) == "vehicle" then 
        local veh = getPedOccupiedVehicle ( hitElement ) ; 
        local occupant = getVehicleOccupant ( veh ); 
        local account = getPlayerAccount ( hitElement ); 
        local loadskin = getAccountData ( account, "oldskin" ); 
        setElementModel ( occupant, tostring ( loadskin ) ); 
    end 
end 
addEventHandler( "onMarkerHit", root, MarkerHit ) 

Благодарю, решением являлось преобразование bool в string. :)

_______________________________________________________________

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

function playerDied[u][b](totalAmmo, killer, killerWeapon, bodypart)[/b][/u] 
    outputChatBox(getPlayerName(source).." умер!") 
end 
addEventHandler("onPlayerWasted",getRootElement(),playerDied) 
  

объясните кому не лень просто и ясно что за что отвечает и когда оно нужно когда нет, желательно на каком-то ясном примере, буду очень признателен.

Кидать ссылки на мта-вики и уроки lua не надо, а хотя если есть очень толковый туториал давайте :lol:

Они 'обзывают' аргументы, которые используются внутри функции. Но не везде они одинаковые, на wiki в примерах они перечисляются.

Link to comment
Дают название. То же самое тебе написали в другой теме.

"Даже weapon может быть thePlayer"

Зачем людей в заблуждение заводить? После таких вот объяснений любой подумает примерно так: "если я напишу thePlayer, значит это будет игрок ,если я напишу weapon, это будет оружие".

На самом деле все куда проще можно было бы объяснить, назвав слово - "указатель", т.е. переменная, которая содержит адрес какого либо объекта (не путать с игровыми объектами), либо nil.

Link to comment

Здорово,Комьюнити.

У меня вопрос.

Как достать значение из таблицы и вставить его в аргументы?

  
local StatsTable = {69,70,71,72,73,74,75,76,77,78,79,80,81} 
function SetStats(player) 
setPlayerStat ( player, ЗдесьЗначенияИзТаблицы(все), 1000 ) 
end 
---- 
  

Что-то Я не то накодил,нужна помощь.

Link to comment

Ошибка.Дебаг пишет:

"bad argument #1 to "ipairs"(table expected,got number)"

  
local StatsTable = {69,70,71,72,73,74,75,76,77,78,79,80,81} 
function SetStats(player,StatsTable) 
for i, statID in ipairs( StatsTable ) do 
  setPedStat( player, statID, 1000 ) 
end 
end 
addEventHandler("onPlayerSpawn", getRootElement(),SetStats) 
addEventHandler("onPlayerLogin", getRootElement(),SetStats) 

Link to comment

Почитайте внимательней на вики, как крепятся события "onPlayerSpawn" и "onPlayerLogin" к функции и какие они передают параметры в функцию; гляньте, там даже примеры есть.

Ну а в вашем случае это будет выглядеть так:

local StatsTable = {69,70,71,72,73,74,75,76,77,78,79,80,81} 
  
function setStats() 
  -- передавать массив в функцию не надо, он глобально определен выше 
  for i, statID in ipairs( StatsTable ) do 
    -- source - переменная, ссылающаяся на игрока, который только что заспавнился 
    setPedStat( source, statID, 1000 ) 
  end 
end 
addEventHandler("onPlayerSpawn", getRootElement(), setStats) 

Крепить onPlayerLogin не вижу смысла, судя по всему на вашем сервере сразу за авторизацией последует спавн, поэтому два раза выполнять одну и ту же операцию не нужно.

Link to comment

Как конвертнуть в номер?

Допустим,

  
function GetPlayerSkin() 
skin = getElementModel(source) --Мне надо конвертнуть это значение в число. 
  
end 
addEventHandler("onPlayerWasted",getRootElement(),GetPlayerSkin) 
function SaveSkin(skin) 
setElementModel(source,skin) -- Здесь сменить . 
end 
  

Link to comment
Как конвертнуть в номер?

Допустим,

  
function GetPlayerSkin() 
skin = getElementModel(source) --Мне надо конвертнуть это значение в число. 
  
end 
addEventHandler("onPlayerWasted",getRootElement(),GetPlayerSkin) 
function SaveSkin(skin) 
setElementModel(source,skin) -- Здесь сменить . 
end 
  

tonumber (  ) 

Link to comment
  
function GetPlayerSkin() 
skin = getElementModel(source) 
skin = tonumber ( skin ) 
end 
addEventHandler("onPlayerWasted",getRootElement(),GetPlayerSkin) 
function SaveSkin(skin) 
setElementModel(source,skin) 
end 
  
addEventHandler("onPlayerSpawn", getRootElement(), SaveSkin) 
  

Не работает.

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