Jump to content

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


Recommended Posts

Всем привет! И с Новым 2013 Годом! Желаю в этом году побольше путёвых скриптов и идей ))

Народ помогите пожалуйста, как сделать такую вещ( человек когда убивает 30 зомби его кидает в определённый тиам но если в дальнейшем он убивает уже 40 его еще раз кидает в другой тиам)

s_6d9bf651.jpg

С новым!

При каждом убитом зомби, присваивать игроку дату с кол-вом убитых зомби + 1

Если кол-во уже убитых + 1 >= 30 и < 40 тогда запихивать его в одну команду если >= 40, то в другую...

Таким образом можно впринцепе...

Подскажи пожалуйста это setElementData на данный момент я даже понятия не имею как должен выглядить код

Ставь запятые чтоль... Я вобще не понял, что ты хочешь

Читай WIKI, если хочешь разобраться https://wiki.multitheftauto.com/wiki/SetElementData

Link to comment

562141,

Отправляем в "points" +5 очков за каждое убийство.

addEventHandler ( "onPlayerWasted", root, 
    function( totalAmmo, killer, killerWeapon, bodypart, stealth ) 
        if killer then 
            local getpoints = getElementData( killer, "points") 
            if killer ~= source then 
                if getpoints then 
                setElementData (killer,"points", getpoints+5) 
                else 
                setElementData (killer,"points", 0) 
               end  
            end 
        end 
    end 
)  

Проверяем очки ("points"), если они равны 50, то создаём team, если такая team есть, то переносим в неё игрока.

и аналогично следующие, например, очки равны 100.

addEventHandler ( "onPlayerWasted", root, 
    function( totalAmmo, killer, killerWeapon, bodypart, stealth ) 
        if killer then 
            local points = getElementData( killer, "points") 
            if killer ~= source then 
                if points == 50 then 
                           team = createTeam ( "Players of the First Level", 255, 255, 255 ) 
                           if team then 
                           setPlayerTeam ( source, team ) 
                           outputChatBox("#ff0000Поздравляем, вы достигли первого уровня и переноситесь в специальную команду",source,255,255,255, true) 
                           end 
                elseif points == 100 then 
                           team = createTeam ( "Players of the Second Level", 255, 255, 255 ) 
                           if team then 
                           setPlayerTeam ( source, team ) 
                           outputChatBox("#ff0000Поздравляем, вы достигли первого уровня и переноситесь в специальную команду второго уровня",source,255,255,255, true) 
                           end 
               end  
            end 
        end 
    end 
) 

Link to comment

562141, обращайся :)

Привет всем, скажите, как изменить дизайн Gui, вот иногда смотришь в Community на скриншоте один дизайн, даже кнопок (например, https://community.multitheftauto.com/ind ... w&pic=9063 ), а когда скачиваешь и запускаешь, получается обычное GUI (например, https://wiki.multitheftauto.com/wiki/File:AdminGUI.png ). И с таким я встречался не раз, и вот стало интересно где "находится" дизайн Gui.

Link to comment

Это точно так же как и в Windows делать собственный скин окна, в то время как у тебя вместо Aero стоит Classic, а какая-то чёртова прога грузит кучу графики и не вписывается в общий дизайн.

Link to comment

Поздравляю :) Спасибо вам всем, что помогаете начинающим скриптерам, да и порой опытные скриптеры тоже нуждаются в помощи и совете. Вы всегда отзываетесь на просьбы пользователей :)

Продолжу череду вопросов :)

Проблема - игрок который первый выбрал team, т.е. создал её, переносится в неё, а остальные когда нажимают на ту же team, уже не переносятся туда. В чём может быть причина?

Сервер

addEvent ('lang', true) 
addEventHandler ('lang', root, 
    function (team) 
        if team == "Default" then 
            theTeam = createTeam ( "Default", 255, 255, 255 ) 
            if theTeam then 
            setPlayerTeam ( source, theTeam ) 
            end 
  
        elseif team == "English" then 
            Team = createTeam ( "English", 255, 255, 255 ) 
            if Team then 
            setPlayerTeam ( source, Team) 
            end 
  
        elseif team == "Russian" then 
            Team = createTeam ( "Russian", 255, 255, 255 ) 
            if Team then 
            setPlayerTeam ( source, Team) 
            end 
  
       ...  - и т.д. 
  
        end 
    end 
) 

Клиент

  
Тут ComboBox, Gui и прочее 
  
function somethingFromClickValue() 
    if ( source ==  button1 ) then 
    local item = guiComboBoxGetSelected(comboBox) 
    local text = guiComboBoxGetItemText(comboBox,item) 
        if text == "Default" or text == "English" or text == "Russian"  
        or text == "Turkish" or text == "Chinese" or text == "Spanish"  
        ... - и т.д. 
        then 
            triggerServerEvent("lang",localPlayer,text) 
        end  
    end 
end 
  

Пробовал

function (thePlayer, team) 

но не работает.

Link to comment
Проблема - игрок который первый выбрал team, т.е. создал её, переносится в неё, а остальные когда нажимают на ту же team, уже не переносятся туда. В чём может быть причина?

Потому что вы создаете её каждый раз, а создавать не нужно.

Вообще можно было сделать намного проще.

  
addEvent( 'Server:SetPlayerTeam', true ) 
  
local aTeams = -- Массив с командами для создания 
{ 
    'Russian'; 
    'English'; 
    -- .... 
} 
  
for i, v in ipairs( aTeams ) do 
    createTeam( v ) -- создаем команды 
end 
  
function table.find( a, m ) 
    if type( m ) == 'table' and m then 
        for i, v in ipairs( a ) do 
            if v == m then 
                return true 
            end 
        end 
        return false 
    end 
    return false 
end 
  
addEventHandler( 'Server:SetPlayerTeam', root, 
    function( sTeamName ) 
        if table.find( aTeams, sTeamName ) then -- Если команда есть в массиве, то 
            setPlayerTeam( source, getTeamFromName( sTeamName ) ) -- Кидаем игрока в команду 
        end 
    end 
) 
  

Link to comment

Но дело в том, что у меня удаляются teams, в которых нет игроков, следовательно, нужно создавать её каждый раз. Есть идеи?

local function count(team) 
return countPlayersInTeam ( getTeamFromName ( team ) ) --- to get all players in team 
end 
  
function removeteams() 
    for _, AllTeams in ipairs ( getElementsByType ( "team",getResourceRootElement(getThisResource())) ) do 
    Players = count(getTeamName(AllTeams)) 
    if Players == 0 then -- If there is no one in the team 
         destroyElement(AllTeams) --- destroy team 
        end 
    end 
end 
addEventHandler ('lang', root, removeteams) 

Link to comment
Поздравляю :) Спасибо вам всем, что помогаете начинающим скриптерам, да и порой опытные скриптеры тоже нуждаются в помощи и совете. Вы всегда отзываетесь на просьбы пользователей :)

Поддержываю и соглошаюсь совсем выше сказанным ! Вы всегда отзываетесь на просьбы начинающих :D:D:D:D:D:D:D:D:D:D:D:D

Link to comment
Но дело в том, что у меня удаляются teams, в которых нет игроков, следовательно, нужно создавать её каждый раз. Есть идеи?
local function count(team) 
return countPlayersInTeam ( getTeamFromName ( team ) ) --- to get all players in team 
end 
  
function removeteams() 
    for _, AllTeams in ipairs ( getElementsByType ( "team",getResourceRootElement(getThisResource())) ) do 
    Players = count(getTeamName(AllTeams)) 
    if Players == 0 then -- If there is no one in the team 
         destroyElement(AllTeams) --- destroy team 
        end 
    end 
end 
addEventHandler ('lang', root, removeteams) 

Вот ресурс, в котором реализована твоя идея: https://community.multitheftauto.com/index.php?p=resources&s=details&id=612

P.S. Команда является элементом, соответсвенно ее наличие можно проверить функцией isElement

Соответсвенно, ты можешь просто проверять, при заходе игрока, если нет команды, то создать

Link to comment

Видел в каком-то из РП модов такую штуку, что при нажатии, например кнопки i открывалась строка ввода сообщения для собственного чата.

Для тех, кто не понял, объясню поподробнее. На сервере у меня есть команда /o для общего чата, тоесть игрок вводит команду "/o текст" и всем игрокам высвечивается его сообщение. Для удобства я хочу сделать, чтоб не надо было вводить /o, а просто назначить на кнопку i этот чат, что я видел в одном из рп модов. Кто-нибуть знает как это сделать?

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