TwiX! Posted December 18, 2012 Share Posted December 18, 2012 @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
el_motoblock Posted December 19, 2012 Share Posted December 19, 2012 (edited) --[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 December 19, 2012 by Guest Link to comment
Memory Posted December 19, 2012 Share Posted December 19, 2012 Подскажите пожалуйста, как отсортировать игроков, которые имеют больше всего поинтов из кода ниже. 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
Kenix Posted December 19, 2012 Share Posted December 19, 2012 Вот запрос тебе 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
Memory Posted December 19, 2012 Share Posted December 19, 2012 Спасибо за код. В 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
H1TM4N Posted December 27, 2012 Share Posted December 27, 2012 как увеличить размер дымка? fxAddTyreBurst Link to comment
Jonathan.P Posted December 29, 2012 Share Posted December 29, 2012 Возможно тупой вопрос, но просто ответьте пожалуйста: При спавне игрока его угол поворота не соответствует углу поворота камеры. Как установить камеру в нормальное положение "за спиной", имея значение угла поворота игрока? Link to comment
Kenix Posted December 29, 2012 Share Posted December 29, 2012 setCameraTarget Можешь ничего не расчитывать, эта функция ставит камеру со спины по дефолту если в аргументах цель = игрок. Link to comment
Sergo86 Posted January 1, 2013 Share Posted January 1, 2013 Помогите сделать скрипт - работа механика, если не сложно) Link to comment
Memory Posted January 3, 2013 Share Posted January 3, 2013 Здравствуйте, заказал сервер на хостинге, зашёл на него, а там не работает команда /register, вообще никак не риагирует, хотя когда пишешь /login, выдаёт, что такого имени нет, ну это понятно, а вот как исправить регистрацию? Где находятся эти команды, чтобы переустановить файл? Link to comment
Scripting Moderators Sarrum Posted January 3, 2013 Scripting Moderators Share Posted January 3, 2013 Здравствуйте, заказал сервер на хостинге, зашёл на него, а там не работает команда /register, вообще никак не риагирует, хотя когда пишешь /login, выдаёт, что такого имени нет, ну это понятно, а вот как исправить регистрацию? Где находятся эти команды, чтобы переустановить файл? В админ панели регистрация, она запущена? Link to comment
Memory Posted January 3, 2013 Share Posted January 3, 2013 Как я могу открыть админ панель, если нельзя зарегистрироваться, некому давать админку. Вот я и спрашиваю как называется файл, где сохраняются данные после регистрации, чтобы в ручную добавить хотя бы себя. Link to comment
Flaker Posted January 3, 2013 Share Posted January 3, 2013 Как я могу открыть админ панель, если нельзя зарегистрироваться, некому давать админку. Вот я и спрашиваю как называется файл, где сохраняются данные после регистрации, чтобы в ручную добавить хотя бы себя. internal.db в папке сервера Но если у тебя не работает register, это оочень странно... Проверь автозапуск ресурсов в конфиге сервера, если там нет admin, добавь... хотя если login отвечает... То поидее админ панель включена... Кстати, если ты менял ACL, то возможно что-то напортил там... Поставь стандартный на всякий случай... А лучше просто сервер переустанови... Link to comment
_Vincent_ Posted January 3, 2013 Share Posted January 3, 2013 Просто старейший "баг") Как уже правильно сказали: добавь ресурс admin в автозапуск (mtaserver.conf). Если он уже есть, но все равно получается фигня, проверь, есть ли он сам и нет ли у него дубликатов (папок с названием admin лежащих в разных местах). После этого заработают обе команды. Link to comment
Memory Posted January 3, 2013 Share Posted January 3, 2013 Спасибо , точно, в конфиге не было добавлено admin. А вообще у них очень странный конфиг, где половины параметров нет, и после установки своего, он его стирает и ставит свой. Link to comment
Flaker Posted January 3, 2013 Share Posted January 3, 2013 Спасибо , точно, в конфиге не было добавлено admin. А вообще у них очень странный конфиг, где половины параметров нет, и после установки своего, он его стирает и ставит свой. Говнохост( Link to comment
Memory Posted January 3, 2013 Share Posted January 3, 2013 Ну вообще, он так то нормальный, я про пинг и т.п. Но в плане установки и прочего я соглашусь. Одна ещё их не даработка всё надо перекодировать в utf-8, как на старых версиях мта Вот ещё вопрос, я в play моде недавно, до этого всё в race и не знаю как сделать, чтобы авто, которые стоят просто так или уничтоженные, исчезали через некоторое время. Подскажите, пожалуйста, как так сделать Link to comment
gold4iter Posted January 7, 2013 Share Posted January 7, 2013 Расскажите пожалуйста о построении гуи окошек. Link to comment
Kernell Posted January 7, 2013 Share Posted January 7, 2013 Вопросы конкретнее задавать нужно Link to comment
gold4iter Posted January 7, 2013 Share Posted January 7, 2013 Как сделать окно в котором будет отображатся топ убийц. Как сделать отсчёт этих убийств. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now