Jump to content

Общий мини "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~ на обоих

Link to comment
--[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
Link to comment

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

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) 

Link to comment

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

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 
) 
  

Link to comment

Спасибо за код. В 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 ); 

Link to comment

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

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

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

Link to comment

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

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

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

Link to comment

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

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

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

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

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

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

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

Link to comment

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

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

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

Link to comment

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

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

Говнохост(

Link to comment

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

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

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