Jump to content

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


Recommended Posts

Как воспроизвести звук из STREAM/Ambience?

Или playSoundFrontEnd это может? А то ведь на вики я посмотрел

0 - 20 Selection sounds

27 - 30 Bullet sounds

32 - 33 Selection sounds

а ведь эти звуки выстрелов находятся в папке SFX

5ac5db97c886.jpg

. Я конечно могу просто выцепить звук и юзануть playSound3D, но экономия ресов мне как-то более по душе. Вобщем есть ли возможность воспроизвести звук из STREAM'a?

http://bugs.mtasa.com/view.php?id=7118

Link to comment
во 1 у тебя будет ошибка, т.к ты пропустил end в raceWin

...

...

Действительно, простое и понятное объяснение, спасибо :) Скрипт уже переделал :)

обращайся)

Link to comment

Здравствуйте, у меня опять возник вопрос :) Как можно вызвать функцию sortAccounts c сервера сюда for index, data in ipairs( sortAccounts( ) ) do. Конечно, я думаю, вызвать надо через triggerServerEvent, но как её заставить работать в нужном месте, с этим у меня проблемы.

Сервер

function sortAccounts( ) 
    local rowdata = { } 
    for _, account in pairs( getAccounts( ) ) do 
        rowdata[ #rowdata + 1 ] = { 
            account = getAccountName( account ), 
            points = getAccountData( account,"Points" ) 
        } 
    end 
    table.sort(  
        rowdata,  
        function ( a, b ) 
            return ( tonumber( a.points ) or 0 ) > ( tonumber( b.points ) or 0 )  
        end 
    )    
    return rowdata 
end 

Клиент, открывается при старте ресурса, но потом сделаю нормальное gui :)

function clientsideResourceStart () 
        local playerList = guiCreateGridList ( 0.80, 0.10, 0.15, 0.60, true ) 
        local column = guiGridListAddColumn( playerList, "Player", 0.6 ) 
        local points = guiGridListAddColumn( playerList, "Points", 0.3 ) 
        if ( column ) then 
                for index, data in ipairs( sortAccounts( ) ) do  
                        local row = guiGridListAddRow ( playerList ) 
                        guiGridListSetItemText ( playerList, row, column, getPlayerName ( data.account), false, false ) 
                        if index == 7 then 
                        break 
                        end 
                end 
         end 
         if ( points ) then 
                for index, data in ipairs( sortAccounts( ) ) do  
                        local row = guiGridListAddRow ( playerList ) 
                        guiGridListSetItemText ( playerList, row, points, getPlayerName ( data.points), false, false ) 
                        if index == 7 then 
                        break 
                        end 
                end 
        end 
end 
addEventHandler ( "onClientResourceStart", getResourceRootElement(), clientsideResourceStart ) 

Link to comment

Это типа такого, да? (не проверял)

сервер

function sortAccounts( ) 
    local rowdata = { } 
    for _, account in pairs( getAccounts( ) ) do 
        rowdata[ #rowdata + 1 ] = { 
            account = getAccountName( account ), 
            points = getAccountData( account,"Points" ) 
        } 
    end 
    table.sort(  
        rowdata,  
        function ( a, b ) 
            return ( tonumber( a.points ) or 0 ) > ( tonumber( b.points ) or 0 )  
        end 
    )    
    return rowdata 
end 
  
function tables( ) 
    outputChatBox( "Top 7 points:", root, 255,255,255 ) 
    for index, data in ipairs( sortAccounts( ) ) do 
        outputChatBox(tostring( index )..": ".. tostring( data.account ) .." - ".. tostring( data.points ), root, 255, 255, 255 ) 
        if index == 7 then 
            break 
        end 
    end 
    triggerClientEvent( 'onAccountsSend',root,sortAccounts( ) ) 
end 
addEvent("onSortTopTen", true) 
addEventHandler("onSortTopTen", root, tables) 
addCommandHandler( "top", tables ) 
  

клиент

function clientsideResourceStart () 
        local playerList = guiCreateGridList ( 0.80, 0.10, 0.15, 0.60, true ) 
        local column = guiGridListAddColumn( playerList, "Player", 0.6 ) 
        local points = guiGridListAddColumn( playerList, "Points", 0.3 ) 
        if ( column ) then 
                        triggerServerEvent("onSortTopTen", getLocalPlayer()) 
                        local row = guiGridListAddRow ( playerList ) 
                        guiGridListSetItemText ( playerList, row, column, data.account, false, false ) 
         end 
         if ( points ) then 
                        triggerServerEvent("onSortTopTen", getLocalPlayer()) 
                        local row = guiGridListAddRow ( playerList ) 
                        guiGridListSetItemText ( playerList, row, points, data.points, false, false ) 
        end 
end 
addEventHandler ( "onClientResourceStart", getResourceRootElement(), clientsideResourceStart ) 

И ещё попутно вопрос, игроки жалуются на "размытие" экрана при азоте, как это убрать, что-то искал нигде не нашёл.

Link to comment
local arr = { 
[14] = true; 
[15] = true; 
[16] = true; 
[17] = true; 
[18] = true; 
[19] = true; 
} 
  
function createObject ( 980, 2287.6000976563, 623.20001220703, 12.60000038147, 0, 0, 0) 
  
function createMarker (2287.6000976563, 623.5, 10.699999809265,'cylinder',4,0,0,0,0)  
  
function openbasegate1 (thePlayer) 
  
       moveObject (basegate1, 5000, 2287.6000976563, 623.20001220703, 6.5999999046326) 
  
end 
end 
addEventHandler( "onColShapeHit", basecol, openbasegate1 ) 
  
function closebasegate1 (thePlayer) 
         
       moveObject (basegate1, 5000, 2287.6000976563, 623.20001220703, 12.60000038147) 
end 
end 
addEventHandler( "onColShapeLeave", basecol, closebasegate1 ) 

в чём собствено ошибка?

Link to comment

ну допустим этот телепорт и что мне написать?

function Makemarker500 () 
    local theMarker = createMarker ( -2425.6000976563, 2307.8000488281, -4.5,"cylinder",2, 0, 0, 0, 0 ) 
    setElementData ( theMarker, "teleportid", 500 ) 
end 
  
addEventHandler ( "onResourceStart", getRootElement(), Makemarker500 ) 
  
function Teleporthit500 ( hitPlayer, matchingDimension ) 
    local teleportid = getElementData ( source, "teleportid" ) 
    if teleportid == 500 then 
    setElementPosition ( hitPlayer, 2346.8000488281, 633.20001220703, 10.699999809265) 
    end 
end 
  
addEventHandler("onMarkerHit", getRootElement (), Teleporthit500) 

Link to comment

помогите зделать телепорт на скин я не понимаю

function Makemarker500 () 
    local theMarker = createMarker ( -2425.6000976563, 2307.8000488281, -4.5,"cylinder",2, 0, 0, 0, 0 ) 
    setElementData ( theMarker, "teleportid", 500 ) 
end 
  
addEventHandler ( "onResourceStart", getRootElement(), Makemarker500 ) 
  
function Teleporthit500 ( hitPlayer, matchingDimension ) 
    local teleportid = getElementData ( source, "teleportid" ) 
    if teleportid == 500 then 
    setElementPosition ( hitPlayer, 2346.8000488281, 633.20001220703, 10.699999809265) 
    end 
end 
  
addEventHandler("onMarkerHit", getRootElement (), Teleporthit500) 

Link to comment

Комментарии в коде поставьте, опишите логику на русском языке, если конечно понимаете её. Если вам нужно просто скопировать не задумываясь - так и скажите.

Link to comment

нет мне нужна помощь немогу понять в чём ошибка

function Makemarker500 () 
    local theMarker = createMarker ( -2273, 2420.3999023438, -5,"cylinder",2, 0, 0, 0, 0 ) 
    setElementData ( theMarker, "teleportid", 500 ) 
end 
  
addEventHandler ( "onResourceStart", getRootElement(), Makemarker500 ) 
  
function Teleporthit500 ( hitPlayer, matchingDimension ) 
    local teleportid = getElementData ( source, "teleportid" ) 
        if getElementModel () == 253 then 
        if teleportid == 500 then 
        setElementPosition ( hitPlayer, 2269.3999023438, 550.5, 7.8000001907349) 
    end 
end 
  
addEventHandler("onMarkerHit", getRootElement (), Teleporthit500) 

Link to comment

Здравствуйте, помогите разобраться с SQL, на примере этого кода. Вот с "onResStart" и "onPlayerQuit" понятно. Но вот "onJoin", что-то никак не могу его заставить работать. Я перерыл много кодов на форуме, чтобы разобраться в этом, но увы. Хочу сделать по такому алгоритму: при Join получить из базы Points и послать их игроку setElementData, а при Quit получить Points (getElementData) и послать в базу.

function onResStart () 
executeSQLCreateTable ( "Points", "serial TEXT, points INT" ) 
end 
addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), onResStart) 
-------------------------------- 
function onJoin () 
local serial = getPlayerSerial(source) 
local getPoints = executeSQLSelect("Points", "points", "serial='"..serial.."'") 
if getPoints == false then 
executeSQLInsert ( "Points", "'"..serial.."', '0'" ) 
setElementData(source, "Points", 0) 
else 
setElementData(source, "Points", tonumber(getPoints[1]["points"])) 
end 
end 
addEventHandler("onPlayerJoin", getRootElement(), onJoin) 
---------------------------------------- 
function onPlayerQuit() 
local getActualPoints = getElementData(source, "Points") 
local serial = getPlayerSerial(source) 
executeSQLUpdate ( "Points", "points = '"..tonumber(getActualPoints).."'","serial = '" ..serial.. "'" ) 
end 
addEventHandler("onPlayerQuit", getRootElement(), onPlayerQuit) 

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