Jump to content

Идеи по скриптам.


Recommended Posts

Есть у кого какие-нить идеи и предложения по поводу создания скриптов/модов? А то у меня лично кроме фрирома да рп больше ничего в голову не приходит :(

Link to comment

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

Link to comment
"Совместное прохождение миссий"

идея хорошая, но вот проблема - серьёзные миссии надо создавать, юзая разных npc. я знаю, в мта они есть, но их можно на место поставить, и больше ничего :(

Link to comment
но их можно на место поставить, и больше ничего :(

Эм, нет, можно и бегать заставить и стрелять и машинами управлять. Было б желание.

Link to comment

Боты не синхронизируются, поэтому их нужно синхронизировать самому. +Для того чтобы заполнить улицы педами, нужно проложить для них пути. В МТА пока нет функции чтобы заставить педа ходить по стандартным путям (Хотя в SCM такая имеется). Ещё нужно определять синкера на солько я понимаю. Ибо помню делал бота управляющего автомобилем, по нажатию клавиш.. У меня бот ехал нормально, а у других он жутко лагал, как с пингом в 1к )))

Link to comment

Пути и для машин и для пешеходов у меня есть конвертнутые в луа таблицы из ГТА. Синхронизировать мне ничего не пришлось, я для этого дела на уровне МТА добавил синхронизацию позиции и хп для педов, в ресурсе я лишь давал каждому педу рандомное число от 1 до 9, которое служило рандомизатором, это число полностью определяло куда пед пойдёт и что будет делать хоть бесконечно. Поэтому на всех клиентах педы делали одно и тоже, а мта уже заботилась о позиции и хп для коррекции. Но с пешеходами-то всё просто, а вот с водителями совсем другая история, хотя и там практически ничего в итоге синхронизировать самому не нужно.

Link to comment

Времени нет, да и желание пропало, я в мта:са сам-то, можно сказать, и не играл никогда. (В общем-то как и большинство разработчиков)

Удивляет то, что никто до сих пор сам этого не сделал.

Link to comment
Времени нет, да и желание пропало, я в мта:са сам-то, можно сказать, и не играл никогда. (В общем-то как и большинство разработчиков)

Удивляет то, что никто до сих пор сам этого не сделал.

Мне не понятно как боты работают (синхра)

Я для теста сделал скрипт, управление ботом по клавишам (в авто). Как я ранее говорил, у других игроков бот лагает дико.

Вот скрипт который для теста писал, не понимаю в чём проблема.

Server-side:

local ped = {}; 
local i = 0; 
local controls =  
{ 
    { key = "arrow_u", control = "accelerate" }, 
    { key = "arrow_d", control = "brake_reverse" }, 
    { key = "arrow_l", control = "vehicle_left" }, 
    { key = "arrow_r", control = "vehicle_right" }, 
    { key = "num_7", control = "steer_forward" }, 
    { key = "num_4", control = "steer_back" }, 
    { key = "num_1", control = "vehicle_look_left" }, 
    { key = "num_2", control = "vehicle_look_right" }, 
}; 
  
local function setControl( player, key, state, control, _ped ) 
    triggerClientEvent( root, "ped:setPedControlState", _ped, control, state == "down" ); 
end 
  
addCommandHandler( "ped_test",  
    function( player, commandName ) 
        local veh = getPedOccupiedVehicle( player, 1 ); 
        if veh then 
            i = i + 1; 
            ped[ i ] = createPed( 216, 0, 0, 5 ); 
            if ped[ i ] then 
                outputChatBox( "Created controllable ped ID: " .. i, player ); 
                warpPedIntoVehicle( ped[ i ], veh ); 
                for a, k in ipairs( controls ) do 
                    bindKey( player, controls[ a ].key, "both", setControl, controls[ a ].control, ped[ i ] ); 
                end 
            end 
        end 
    end 
); 
  
  
addCommandHandler( "ped_setstate",  
    function( player, commandName, id, control, state ) 
        if id and control and state  then 
            setControl( player, nil, state == "true" and "down" or "up", tostring( control ), ped[ tonumber( id ) ] ); 
        else 
            outputChatBox( "Syntax: /" .. commandName .. " <int id> <string control> <bool state>", player, 255, 255, 255 ); 
        end 
    end 
); 

Client-side:

addEvent( "ped:setPedControlState", true ); 
addEventHandler( "ped:setPedControlState", root, 
    function( control, state ) 
        setPedControlState( source, control, state ); 
    end 
); 

Link to comment

Kernell, а для тебя бот как выглядит, если им другие управляют?

"почему никто не делает подобных скриптов сейчас":

Ну насчет "разработчики мало сами играют" это верно на все 100%. Чтобы делать скрипты такой сложности, нужен ум как у разработчика мта (: или хотя бы большой опыт как скриптера. Молодняк надолго не хватает, т.к. от сложности и ввиду возраста он теряет интерес ко всему очень быстро. Поэтому опытных - мало. Все они занимаются, своими личными проектами или просто не хватает времени т.к. жись зовёт (: Есть еще фактор заинтересованности в развитии мультиплеера, он у опытных скриптеров почти нулевой, причины всё те же. Зато заинтересованность есть у самих разработчиков и у новичков (которых надолго не хватает) (: Остаются все равно разработчики, но у них итак нет времени. Поэтому почти весь ресурс лист забит произведениями новичков.

Даже я, когда решил сделать нечто стоящее, потратил на это уйму времени. А скриптик-то по виду простой получился - система DX элементов, эффекты, прикрепление к 3Д миру этих элементов, всё. Даже не представляю ск времени улетит, если взяться за серьезный скрипт подобного рода (боты в городе).

Link to comment
Kernell, а для тебя бот как выглядит, если им другие управляют?

Нормально, а у них лагает почему-то. Бывало когда я далеко от бота стоял (дальше чем тот кто управлял), у меня лагало, а у того кто управлял было норм.

Link to comment
Мне не понятно как боты работают (синхра)

Я для теста сделал скрипт, управление ботом по клавишам (в авто). Как я ранее говорил, у других игроков бот лагает дико.

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

Передавать через сервер нажатие кнопок - худшее что можно сделать. Уж если что-то передавать, так это позицию куда бот должен придти сам. Советую почитать что такое интерполяция и экстрополяция.

Link to comment

Ресурс удалён? Вощем, неважно, задача в целом интересная. НО, логично сначала вычислить области применения скрипта, и только потом браться за код. Нечто вроде "ради украшения пустого города" для меня не является мотивацией к кодингу. Заполнение города ботами это далеко не первый шаг навстречу этой идеи. На начальном этапе и в лучшем случае, скрипт должен содержать функционал управления одним ботом: goToPoint, goToElement, enter/exitVehicle, killPed/Vehicle, aimToPoint/Element, doNothing и в таком духе.

Но мне тоже интересно, я глубоко в код не вникал, какой сейчас уровень синхры для ботов? Поэтому я и спрашивал, изменится ли позиция бота (создан сервером) для остальных, если он был сдвинут только в каком-то одном клиенте? Этот клиент отправляет серверу новые данные о позиции бота?

Link to comment
Ресурс удалён? Вощем, неважно, задача в целом интересная. НО, логично сначала вычислить области применения скрипта, и только потом браться за код. Нечто вроде "ради украшения пустого города" для меня не является мотивацией к кодингу. Заполнение города ботами это далеко не первый шаг навстречу этой идеи. На начальном этапе и в лучшем случае, скрипт должен содержать функционал управления одним ботом: goToPoint, goToElement, enter/exitVehicle, killPed/Vehicle, aimToPoint/Element, doNothing и в таком духе.

Но мне тоже интересно, я глубоко в код не вникал, какой сейчас уровень синхры для ботов? Поэтому я и спрашивал, изменится ли позиция бота (создан сервером) для остальных, если он был сдвинут только в каком-то одном клиенте? Этот клиент отправляет серверу новые данные о позиции бота?

эээ, а ты можешь сначала хотя бы примером проиллюстрировать, как делать? Я, например, знаю, что setPedControlState

- клиентская функция. Но как её, функцию клиента нпц, можно вызвать с серверной части? посмотрел пример в пред-щих сообщениях, но так ничего и не понял :(

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