TwiX! Posted December 9, 2011 Share Posted December 9, 2011 Server function transMoney(player,from,to,amount) local fromN = getPlayerName(from) local toI = getPlayerFromName(to) local Fserial = getPlayerSerial(from) local Tserial = getPlayerSerial(toI) local FMoney = executeSQLSelect ( "MoneyB", "Money","serial = '" .. Fserial .. "'") local TMoney = executeSQLSelect ( "MoneyB", "Money","serial = '" .. Tserial .. "'") if tostring(to) == tostring(fromN) then outputChatBox("ERROR: You can't transfer money to yourself.",from,255,0,0) elseif tonumber(amount) > tonumber(FMoney[1]["Money"])then outputChatBox("ERROR: You don't have enough money.",from,255,0,0) elseif tonumber(amount) <= 0 then outputChatBox("ERROR: You can't send an amount less than $1.",from,255,0,0) else FMoney = tonumber(FMoney[1]["Money"]) - tonumber(amount) TMoney = tonumber(TMoney[1]["Money"]) + tonumber(amount) outputChatBox("*Money Transfer: "..fromN.." transfers $"..amount.." to "..to,getRootElement(),219,156,42) executeSQLUpdate ( "MoneyB", "Money = '"..FMoney.."'","serial = '" .. Fserial .. "'") executeSQLUpdate ( "MoneyB", "Money = '"..TMoney.."'","serial = '" .. Tserial .. "'") setElementData(toI ,"Money", TMoney) setElementData(from,"Money",FMoney) setElementData ( toI ,"data.money",TMoney,true) setElementData ( from ,"data.money",FMoney,true) end end addEvent("onTransMoney",true) addEventHandler("onTransMoney",getRootElement(),transMoney) Client function transferMoney(transferMoney,from,to,amount) local from = getLocalPlayer() local amount = guiGetText(amount_edit) local to = guiGetText(targerplayer_edit) if source == sendmoney_button then triggerServerEvent("onTransMoney",getLocalPlayer(),getLocalPlayer(),from,to,amount) end end why its not work Link to comment
MX_Master Posted December 10, 2011 Share Posted December 10, 2011 it's russian forum, dude local to = guiGetText(targerplayer_edit) если в этом поле будет неполное или несуществующее имя игрока, то ваш код сверху будет плющить в непонятках как на скрине Link to comment
TwiX! Posted December 10, 2011 Author Share Posted December 10, 2011 да, но имя игрока и остальное всё правильно, без ошибок не смотря что сейчас я отправлял себе ,всё равно так с каждым другим игроком.. Link to comment
MX_Master Posted December 10, 2011 Share Posted December 10, 2011 Server function transMoney(player,to,amount) local fromN = getPlayerName(source) local toI = getPlayerFromName(to); if not toI then outputChatBox("ERROR: Incorrect player name.",source,255,0,0) return end local Fserial = getPlayerSerial(source) local Tserial = getPlayerSerial(toI) local FMoney = executeSQLSelect ( "MoneyB", "Money","serial = '" .. Fserial .. "'") local TMoney = executeSQLSelect ( "MoneyB", "Money","serial = '" .. Tserial .. "'") if tostring(to) == tostring(fromN) then outputChatBox("ERROR: You can't transfer money to yourself.",source,255,0,0) elseif tonumber(amount) > tonumber(FMoney[1]["Money"])then outputChatBox("ERROR: You don't have enough money.",source,255,0,0) elseif tonumber(amount) <= 0 then outputChatBox("ERROR: You can't send an amount less than $1.",source,255,0,0) else FMoney = tonumber(FMoney[1]["Money"]) - tonumber(amount) TMoney = tonumber(TMoney[1]["Money"]) + tonumber(amount) outputChatBox("*Money Transfer: "..fromN.." transfers $"..amount.." to "..to,getRootElement(),219,156,42) executeSQLUpdate ( "MoneyB", "Money = '"..FMoney.."'","serial = '" .. Fserial .. "'") executeSQLUpdate ( "MoneyB", "Money = '"..TMoney.."'","serial = '" .. Tserial .. "'") setElementData(toI ,"Money", TMoney) setElementData(from,"Money",FMoney) setElementData ( toI ,"data.money",TMoney,true) setElementData ( from ,"data.money",FMoney,true) end end addEvent("onTransMoney",true) addEventHandler("onTransMoney",getRootElement(),transMoney) Client function transferMoney(to,amount) if source == sendmoney_button then local amount = guiGetText(amount_edit) local to = guiGetText(targerplayer_edit) triggerServerEvent("onTransMoney",localPlayer,to,amount) end end выглядеть должно так, но я не знаю как выглядит второй код полностью Link to comment
TwiX! Posted December 10, 2011 Author Share Posted December 10, 2011 теперь Может быть это из за function createPlayerList () local column = guiGridListAddColumn( sendmoney_grid, "Players", 0.85 ) if ( column ) then for id, player in ipairs(getElementsByType("player")) do local row = guiGridListAddRow ( sendmoney_grid ) --guiGridListSetItemText ( sendmoney_grid, row, column, getPlayerName ( player ), false, false ) guiGridListSetItemText ( sendmoney_grid, row, column, string.gsub(getPlayerName ( player ),"#%x%x%x%x%x%x", ""), false, false ) end end end из за : "#%x%x%x%x%x%x" Тоесть сервер видит игрока например как #00aaddQ#777777werty~ а в панели без этого.. Link to comment
TwiX! Posted December 10, 2011 Author Share Posted December 10, 2011 потому что другой скрипт после удалений hex colors не работает Link to comment
MX_Master Posted December 11, 2011 Share Posted December 11, 2011 Серверу нужно полное имя Link to comment
TwiX! Posted December 11, 2011 Author Share Posted December 11, 2011 как тогда сделать чтобы выбор был Hex colors, но функция эта работала вот функция от куда он берёт имя. function gridlistPlayerSelect() if source == sendmoney_grid then local selectedPlayer = guiGridListGetItemText(sendmoney_grid, guiGridListGetSelectedItem(sendmoney_grid), 1) guiSetText(targerplayer_edit, selectedPlayer) elseif source == GUIEditor_Grid[4] then local selectedTime = guiGridListGetItemText(GUIEditor_Grid[4], guiGridListGetSelectedItem(GUIEditor_Grid[4]), 1) guiSetText(GUIEditor_Edit[13], selectedTime) elseif source == GUIEditor_Grid[3] then local selectedP = guiGridListGetItemText(GUIEditor_Grid[3], guiGridListGetSelectedItem(GUIEditor_Grid[3]), 1) guiSetText(GUIEditor_Edit[100], selectedP) end end Link to comment
MX_Master Posted December 11, 2011 Share Posted December 11, 2011 Можно и выбор из списка, а можно и собственную функцию для поиска элемента игрока по указанному нику или его части. Link to comment
TwiX! Posted December 11, 2011 Author Share Posted December 11, 2011 но у меня не получается убрать hex колор, и чтобы сервер видел это тоесть если будет #00aaddQ#777777werty - в панели(gui) это работает но как от туда убираю это, вот эта ошибка.. Link to comment
MX_Master Posted December 11, 2011 Share Posted December 11, 2011 объясняю принцип работы функции поиска игрока по нику.. получаешь список всех игроков, получаешь список их имен, вырезаешь из каждого имени в списке коды цветов и потом ищешь в этом списке указанный ник но ваще-то вводить вручную имя игрока для передачи ему денег - это не очень удобно Link to comment
TwiX! Posted December 11, 2011 Author Share Posted December 11, 2011 я и не говорю про то чтобы в ручную писать имя.. Link to comment
MX_Master Posted December 12, 2011 Share Posted December 12, 2011 Создай таблицу, где ключами будут элементы игроков, а значениями будут таблицы с двумя никами игрока - без кодов цвета и второй с кодом цвета. Эту таблицу нужно постоянно подправлять при входе/выходе игроков. playerName = { [playerElement] = { 'MX_Master', '#FF0000MX_Master' }, [playerElement] = { 'Qwerty123', 'Qwerty#FFFFFF123' }, ... } С помощью этой таблицы можно всегда составить актуальный GUI список ников игроков без кодов цвета. И при выборе из этого списка, будем искать текст в вышеуказанной таблице, далее оправлять серверу найденный в таблице полный ник получателя денег. Link to comment
TwiX! Posted December 12, 2011 Author Share Posted December 12, 2011 тоесть мне каждого игрока туда писать? это полный бред, на сервере не 1-2 человека играет, спасибо за помощь я сделал по другому function findPlayerByName (name) local player = getPlayerFromName(name) if player then return player end for i, player in ipairs(getElementsByType("player")) do if string.find(string.gsub(getPlayerName(player):lower(),"#%x%x%x%x%x%x", ""), name:lower(), 1, true) then return player end end return false end в сервере изменил local toI = findPlayerByName(to) тему можно закрыть 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