MX_Master

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

Recommended Posts

@Memory

function onResStart () 
    executeSQLQuery ( "CREATE TABLE IF NOT EXISTS Points ( serial TEXT, points INTEGER DEFAULT 0 )" ); 
end 
addEventHandler ( "onResourceStart", getResourceRootElement ( getThisResource ( ) ), onResStart ) 
-------------------------------- 
function onJoin ( ) 
    local serial = getPlayerSerial ( source ); 
    local getPoints = executeSQLQuery ( "SELECT points FROM Points WHERE serial=?", serial ); 
    if type ( getPoints ) == "table" and #getPoints > 0 and getPoints[1] and getPoints[1].points then 
        setElementData ( source, "Points", tonumber ( getPoints[1].points ) ); 
    else 
        executeSQLQuery ( "INSERT INTO Points VALUES ( ?, ? )", serial, 0 ); 
        setElementData ( source, "Points", 0 ); 
    end 
end 
addEventHandler ( "onPlayerJoin", root, onJoin) 
---------------------------------------- 
function onPlayerQuit ( ) 
    local getActualPoints = tonumber ( getElementData ( source, "Points" ) ); 
    local serial = getPlayerSerial ( source ); 
    local sql = executeSQLQuery ( "SELECT points FROM Points WHERE serial=?", serial ); 
    executeSQLQuery ( "UPDATE Points SET points=? WHERE serial=?", getActualPoints, serial ); 
end 
addEventHandler("onPlayerQuit", root, onPlayerQuit) 

@~Gangsta~ на обоих

Share this post


Link to post
--[id], model , Slot, Name, Ammo, Price, Damage 
wpShopTable = { 
    {0, 0, "Unarmed", 1, 0, "5-25"}, 
    {1, 0, "Brass Knuckles", 1, 5, "5-25"}, 
    {2, 1, "Golf Club", 1, 5, "10-25"}, 
    {3, 1, "Nightstick", 1, 5, "10-25"}, 
    {4, 1, "Knife", 1, 20, "10-25"}, 
    {5, 1, "Baseball Bat", 1, 5, "10-25"}, 
    {6, 1, "Shovel", 1, 5, "10-25"}, 
    {7, 1, "Pool Cue", 1, 5, "10-25"}, 
    {8, 1, "Katana", 1, 50, "10-25"}, 
    {9, 1, "Chainsaw", 1, 250, "25-100"}, 
    {22, 2, "Pistol", 17, 170, 25}, 
    {23, 2, "Silenced Pistol", 17, 180, 40}, 
    {24, 2, "Desert Eagle", 7, 100, 70}, 
    {25, 3, "Shotgun", 1, 20, 10}, 
    {26, 3, "Sawn-Off Shotgun", 2, 50, 10}, 
    {27, 3, "SPAZ-12", 7, 70, 15}, 
    {28, 4, "Uzi", 50, 500, 20}, 
    {29, 4, "MP5", 30, 300, 25}, 
    {32, 4, "TEC-9", 50, 500, 20}, 
    {30, 5, "AK-47", 30, 600, 30}, 
    {31, 5, "M4", 50, 1000, 30}, 
    {33, 6, "Country Rifle", 1, 25, 75}, 
    {34, 6, "Sniper Rifle", 1, 30, 125}, 
    {35, 7, "Rocket Launcher", 1, 100, 75}, 
    {36, 7, "Heat-Seeking RPG", 1, 120, 75}, 
    {37, 7, "Flamethrower", 50, 500, 25}, 
    {38, 7, "Minigun", 500, 5000, 140}, 
    {16, 8, "Grenade", 1, 70, 75}, 
    {17, 8, "Tear Gas", 1, 50, 75}, 
    {18, 8, "Molotov Cocktails", 1, 60, 75}, 
    {39, 8, "Satchel Charges", 1, 100, 75}, 
    {41, 9, "Spraycan", 500, 200, 1}, 
    {42, 9, "Fire Extinguisher", 500, 200, 1}, 
    {43, 9, "Camera", 36, 100, 0}, 
    {10, 10, "Long Dil**", 1, 5, "10-25"}, 
    {11, 10, "Short Dil**", 1, 5, "10-25"}, 
    {12, 10, "Vibra***", 1, 5, "10-25"}, 
    {14, 10, "Flowers", 1, 5, "10-25"}, 
    {15, 10, "Cane", 1, 5, "10-25"}, 
    {44, 11, "NV Googles", 1, 50, 0}, 
    {45, 11, "IR Goorles", 1, 50, 0}, 
    {46, 11, "Parachute", 1, 100, 0}, 
    {40, 12, "Satchel Detonator", 1, 0, 0} 
} 
  
wpShopWin1 = guiCreateWindow(492, 207, 500, 394, "|Weapon_Shop|", false) 
guiWindowSetSizable(wpShopWin1, false) 
  
wpShopGridlist1 = guiCreateGridList(10, 25, 481, 313, false, wpShopWin1) 
guiGridListAddColumn(wpShopGridlist1, "ID", 0.1) 
guiGridListAddColumn(wpShopGridlist1, "Slot", 0.05) 
guiGridListAddColumn(wpShopGridlist1, "Name", 0.45) 
guiGridListAddColumn(wpShopGridlist1, "Damage", 0.1) 
guiGridListAddColumn(wpShopGridlist1, "Ammo", 0.14) 
guiGridListAddColumn(wpShopGridlist1, "Price", 0.14) 
wpShopBtnBuy = guiCreateButton(114, 348, 328, 27, "Buy", false, wpShopWin1) 
guiSetProperty(wpShopBtnBuy, "NormalTextColour", "FFAAAAAA") 
wpShopBtnClose = guiCreateButton(10, 348, 61, 27, "Close", false, wpShopWin1) 
guiSetProperty(wpShopBtnClose, "NormalTextColour", "FFAAAAAA") 
guiSetVisible(wpShopWin1, false) 
  
function GetWeaponIDFromModelID( iModelID ) 
    for i, v in pairs( WeaponsIds ) do 
        if v == iModelID then 
            return i 
        end 
    end 
    return false 
end 
  
function addRowWPSGUI() 
         -- If the column was successfully created 
                for i, v in ipairs( wpShopTable ) do --Loop through all the players, adding them to the table 
                        local iRow = guiGridListAddRow( wpShopGridlist1 ) 
                        guiGridListSetItemText(wpShopGridlist1, iRow, 1, tostring ( v[1] ), false, false) 
                        guiGridListSetItemText(wpShopGridlist1, iRow, 2, tostring ( v[2] ), false, false) 
                        guiGridListSetItemText(wpShopGridlist1, iRow, 3, tostring ( v[3] ), false, false) 
                        guiGridListSetItemText(wpShopGridlist1, iRow, 4, tostring ( v[6] ), false, false) 
                        guiGridListSetItemText(wpShopGridlist1, iRow, 5, tostring ( v[4] ), false, false) 
                        guiGridListSetItemText(wpShopGridlist1, iRow, 6, "$"..tostring (v[5]), false, false) 
                end 
end 
addEventHandler ( "onClientResourceStart", getRootElement(), addRowWPSGUI ) 
  
function showWPSGUI () 
guiSetVisible(wpShopWin1, true) 
showCursor(true) 
end 
  
function closeWPSGUI ( button ) 
    if button == "left" then 
    guiSetVisible(wpShopWin1, false) 
    showCursor(false) 
    end 
end 
  
addEventHandler ( "onClientGUIClick", wpShopBtnClose, closeWPSGUI, false ) 
  
addCommandHandler ( "buyweap", showWPSGUI ) 

Как сделать чтобы при нажатии на ряд выдавалось сообщение:

Id v[1], ammo v[5], $ v[6] ??? :?::?::?::?::?:

НЕ ИМЕЮ ОПЫТА С НАЖАТИЕМ НА ТАБЛИЦЫ

Edited by Guest

Share this post


Link to post

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

function onResStart ()

executeSQLQuery ( "CREATE TABLE IF NOT EXISTS Points ( serial TEXT, points INTEGER DEFAULT 0 )" );

end

addEventHandler ( "onResourceStart", getResourceRootElement ( getThisResource ( ) ), onResStart )

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

function onJoin ( )

local serial = getPlayerSerial ( source );

local getPoints = executeSQLQuery ( "SELECT points FROM Points WHERE serial=?", serial );

if type ( getPoints ) == "table" and #getPoints > 0 and getPoints[1] and getPoints[1].points then

setElementData ( source, "Points", tonumber ( getPoints[1].points ) );

else

executeSQLQuery ( "INSERT INTO Points VALUES ( ?, ? )", serial, 0 );

setElementData ( source, "Points", 0 );

end

end

addEventHandler ( "onPlayerJoin", root, onJoin)

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

function onPlayerQuit ( )

local getActualPoints = tonumber ( getElementData ( source, "Points" ) );

local serial = getPlayerSerial ( source );

local sql = executeSQLQuery ( "SELECT points FROM Points WHERE serial=?", serial );

executeSQLQuery ( "UPDATE Points SET points=? WHERE serial=?", getActualPoints, serial );

end

addEventHandler("onPlayerQuit", root, onPlayerQuit)

Попробовал сделать, но выдаёт только онлайн игроков.

function top(player) 
    for i,v in ipairs(getElementsByType("player")) do -- get all players 
        if(getElementData ( v, "Points" )>1)then 
            topPoints[ getPlayerName(v) ] = " points: " .. getElementData ( v, "Points" ) -- insert him into the table with his money 
        end 
    end 
    for i,v in pairs(topPoints) do 
        table.sort(topPoints) -- sorting  
        outputChatBox("Top players " .. i .. " Points: " .. v,player)  
    end 
end 
addCommandHandler("top",top) 

Share this post


Link to post

Вот запрос тебе

SELECT points, nick FROM `Points` ORDER BY `points` DESC LIMIT 10 

И кстати у тебя нету поля игрока в твоей SQL таблице, есть только поле serial ...

  
--[[ Добавь поле nick в твою SQL таблицу ]] 
  
addCommandHandler( 'top', 
    function( pPlayer ) 
        outputChatBox( 'TOP 10 PLAYERS', pPlayer ) 
        local aQuery = executeSQLQuery( 'SELECT points, nick FROM `Points` ORDER BY `points` DESC LIMIT 10' ) 
        if type( aQuery ) == 'table' and #aQuery > 0 then 
            for _, v in ipairs( aQuery ) do 
                outputChatBox( 'Player:' .. v[ 'nick' ] .. ', points:' .. v[ 'points' ], pPlayer ) 
            end 
        end 
    end 
) 
  

Share this post


Link to post

Спасибо за код. В SQL я недавно и не знаю всех его тонкостей. Вообщем с ником проблемы. Попробовал так

executeSQLQuery ( ... 
"CREATE TABLE IF NOT EXISTS Points ( serial TEXT, nick TEXT, points INTEGER DEFAULT 0 )" ); 
... 
function onPlayerQuit ( ) 
    local getActualPoints = tonumber ( getElementData ( source, "Points" ) ); 
    local getNickPlayer = getPlayerName(source); 
    local serial = getPlayerSerial ( source ); 
    local sql = executeSQLQuery ( "SELECT points FROM Points WHERE serial=?", serial ); 
    executeSQLQuery ( "UPDATE Points SET points=? WHERE serial=?", getActualPoints, serial ); 
    executeSQLQuery ( "INSERT INTO Points (nick) VALUES ("..getNickPlayer..") ); - но тут выдаёт ошибку, что незакончено (unfinished) 
end 
addEventHandler("onPlayerQuit", root, onPlayerQuit) 
  
  
  
  
  
 

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

executeSQLQuery ( "UPDATE Points SET nick=? WHERE serial=?", getNickPlayer, serial ); 

Share this post


Link to post

Возможно тупой вопрос, но просто ответьте пожалуйста:

При спавне игрока его угол поворота не соответствует углу поворота камеры.

Как установить камеру в нормальное положение "за спиной", имея значение угла поворота игрока?

Share this post


Link to post
setCameraTarget 

Можешь ничего не расчитывать, эта функция ставит камеру со спины по дефолту если в аргументах цель = игрок.

Share this post


Link to post

Помогите сделать скрипт - работа механика, если не сложно) :)

Share this post


Link to post

Здравствуйте, заказал сервер на хостинге, зашёл на него, а там не работает команда /register, вообще никак не риагирует, хотя когда пишешь /login, выдаёт, что такого имени нет, ну это понятно, а вот как исправить регистрацию? Где находятся эти команды, чтобы переустановить файл?

Share this post


Link to post
Здравствуйте, заказал сервер на хостинге, зашёл на него, а там не работает команда /register, вообще никак не риагирует, хотя когда пишешь /login, выдаёт, что такого имени нет, ну это понятно, а вот как исправить регистрацию? Где находятся эти команды, чтобы переустановить файл?

В админ панели регистрация, она запущена?

Share this post


Link to post

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

Share this post


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

internal.db в папке сервера

Но если у тебя не работает register, это оочень странно... Проверь автозапуск ресурсов в конфиге сервера, если там нет admin, добавь...

хотя если login отвечает... То поидее админ панель включена...

Кстати, если ты менял ACL, то возможно что-то напортил там... Поставь стандартный на всякий случай...

А лучше просто сервер переустанови...

Share this post


Link to post

Просто старейший "баг")

Как уже правильно сказали: добавь ресурс admin в автозапуск (mtaserver.conf). Если он уже есть, но все равно получается фигня, проверь, есть ли он сам и нет ли у него дубликатов (папок с названием admin лежащих в разных местах).

После этого заработают обе команды.

Share this post


Link to post

Спасибо :) , точно, в конфиге не было добавлено admin. А вообще у них очень странный конфиг, где половины параметров нет, и после установки своего, он его стирает и ставит свой.

Share this post


Link to post
Спасибо :) , точно, в конфиге не было добавлено admin. А вообще у них очень странный конфиг, где половины параметров нет, и после установки своего, он его стирает и ставит свой.

Говнохост(

Share this post


Link to post

Ну вообще, он так то нормальный, я про пинг и т.п. Но в плане установки и прочего я соглашусь. Одна ещё их не даработка всё надо перекодировать в utf-8, как на старых версиях мта :)

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

Share this post


Link to post
destroyElement 
setTimer 

Share this post


Link to post

Вопросы конкретнее задавать нужно

Share this post


Link to post

Как сделать окно в котором будет отображатся топ убийц. Как сделать отсчёт этих убийств.

Share this post


Link to post

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.