Jump to content

[HELP]Send money


Recommended Posts

Posted

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 

ef88418a1fd4.png

why its not work :(

357ac0078264.jpg

- Working on [php/HTML/Mysql/Lua/Java Scripts/Web Design/3D Modeling]

Posted

it's russian forum, dude

    local to = guiGetText(targerplayer_edit) 

если в этом поле будет неполное или несуществующее имя игрока, то ваш код сверху будет плющить в непонятках как на скрине

Posted

да, но имя игрока и остальное всё правильно, без ошибок

не смотря что сейчас я отправлял себе ,всё равно так с каждым другим игроком..

91d43f3616f5.png

357ac0078264.jpg

- Working on [php/HTML/Mysql/Lua/Java Scripts/Web Design/3D Modeling]

Posted

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 

выглядеть должно так, но я не знаю как выглядит второй код полностью

Posted

теперь

187d5defabf5.png

Может быть это из за

  
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~ а в панели без этого..

357ac0078264.jpg

- Working on [php/HTML/Mysql/Lua/Java Scripts/Web Design/3D Modeling]

Posted

потому что другой скрипт после удалений hex colors не работает

357ac0078264.jpg

- Working on [php/HTML/Mysql/Lua/Java Scripts/Web Design/3D Modeling]

Posted

как тогда сделать чтобы выбор был 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 

357ac0078264.jpg

- Working on [php/HTML/Mysql/Lua/Java Scripts/Web Design/3D Modeling]

Posted

но у меня не получается убрать hex колор, и чтобы сервер видел это

тоесть если будет #00aaddQ#777777werty - в панели(gui) это работает

но как от туда убираю это, вот эта ошибка..

357ac0078264.jpg

- Working on [php/HTML/Mysql/Lua/Java Scripts/Web Design/3D Modeling]

Posted

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

но ваще-то вводить вручную имя игрока для передачи ему денег - это не очень удобно

Posted

я и не говорю про то чтобы в ручную писать имя..

357ac0078264.jpg

- Working on [php/HTML/Mysql/Lua/Java Scripts/Web Design/3D Modeling]

Posted

Создай таблицу, где ключами будут элементы игроков, а значениями будут таблицы с двумя никами игрока - без кодов цвета и второй с кодом цвета. Эту таблицу нужно постоянно подправлять при входе/выходе игроков.

playerName = { 
    [playerElement] = { 'MX_Master', '#FF0000MX_Master' }, 
    [playerElement] = { 'Qwerty123', 'Qwerty#FFFFFF123' }, 
    ... 
} 

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

Posted

тоесть мне каждого игрока туда писать? это полный бред, на сервере не 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) 

:) тему можно закрыть

357ac0078264.jpg

- Working on [php/HTML/Mysql/Lua/Java Scripts/Web Design/3D Modeling]

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