Jump to content

Randomword executeSQLUpdate


h4x7o0r

Recommended Posts

Posted

Hey there . I've tried to change a lil bit this script : https://community.multitheftauto.com/index.php?p= ... ls&id=4472 (done by Al3grab) to work on with race_starter_pack. This resource keeps the money in elementdata so to make it work it needs some changes.

I've done the part to add the prize to player's money but i don't know how can i save this to the database. The money is updated as long as i'm online. When i reconnect, it shows me the money that i've had before winning the prize.

So i don;t know how to update the database table when someone's winning.

Here's what i've done changed :

  
function onPlayerWin(player) 
local money1 = tonumber(getElementData(player,"Money")) 
    outputChatBox("* "..getPlayerName(player).." #FFFF00Has won the Prize #00FF00$"..thePrize,root,255,255,0,true) 
    setElementData(player, "Money", money1+thePrize) 
    givePlayerMoney(player,thePrize) 
    executeSQLUpdate ( "MoneyB", "Money = '"..Money.."'","serial = '" .. serial .. "'") 
    removeCode() 
end 

I think my problem is at executeSQLUpdate.

Thanks in advance guys.

Posted
function onPlayerWin ( player ) 
    local money1 = tonumber ( getElementData ( player, "Money" ) ) 
    outputChatBox("* ".. getPlayerName ( player ).." #FFFF00Has won the Prize #00FF00$".. thePrize, root, 255, 255, 0, true ) 
    setElementData ( player, "Money", money1 + thePrize ) 
    givePlayerMoney ( player, thePrize ) 
    executeSQLUpdate ( "MoneyB", "Money = '".. getPlayerMoney ( player ) .."'","serial = '" .. serial .. "'" ) 
    removeCode ( ) 
end 

Try that.

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

Posted

I guess after quitting it'll save the money again, so maybe there's the problem.

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

Posted

i don't know much in SQL , but i think 'serial' is not defined

executeSQLUpdate ( "MoneyB", "Money = '".. getPlayerMoney ( player ) .."'","serial = '" .. serial.. "'"

ING : [xXx]~Al3grab

Posted
function onPlayerWin(player) 
    local money1 = tonumber(getElementData(player,"Money")) 
    outputChatBox("* "..getPlayerName(player).." #FFFF00Has won the Prize #00FF00$"..thePrize,root,255,255,0,true) 
    setElementData(player, "Money", money1+thePrize) 
    givePlayerMoney(player,thePrize) 
    local serial = getPlayerSerial ( player ) 
    executeSQLUpdate ( "MoneyB", "Money = '"..tostring(getPlayerMoney ( player )).."'","serial = '" .. serial .. "'") 
    removeCode() 
end 

try this.

if there is any problem, you must put all your code here.

another thing, i don't thing that using serial is a good idea, because maybe the player wana join the server from diffrent computer. :mrgreen:

Posted
i don't know much in SQL , but i think 'serial' is not defined
executeSQLUpdate ( "MoneyB", "Money = '".. getPlayerMoney ( player ) .."'","serial = '" .. serial.. "'"

Oh, how I didn't see that :oops:

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

  • Moderators
Posted

Where will SQL be saved? At wiki they say it will be saved at a "database".

But do you need other software to create a database or will this database be created at the mta server?

Do you want to improve your Lua programming skills and make less mistakes?   Start with Lua Language Server!   🙀

 

  Useful functions  3x 

  Tutorials  4x 

 

Posted

SQLite is saved at: "server\mods\deathmatch\registry.db".

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

Posted

Sorry guys that i haven't checked the topic. First, thank you everyone for the answers.

2nd : I've tried Bssol's modified code and it says :

attempt to concatenate global 'serial' (a nil value)

3nd : Kenix, i haven't posted all the code because it's inside the resource

--***********************************-- 
--***********************************-- 
--           Random Words            -- 
--            By Al3grab             -- 
--***********************************-- 
--***********************************-- 
  
---- Changeable 
captchaNums = 5 -- captcha letters length 
wordTimeInSec = 25 --- the time before the word disappear in seconds [ default 11 seconds ] 
prizefrom,prizeto = 500,800 -- the prize random num 
timerfrom,timerto = 1.5,5.5 -- the random timer that shows the word [ default from 3 to 15 minutes ] 
---- unChangeable 
wordOn = false 
theWord = nil 
thePrize = nil 
wordTime = wordTimeInSec * 1000 
  
-- 
outputDebugString("Random Words By Al3grab | Started") 
-- 
function createCode(code,prize) 
    for k,v in ipairs( getElementsByType("player") ) do 
        exports.easytext:displayMessageForPlayer(v,1, "=========", wordTime, 0.07, 0.5, 0, 255, 0, 255, 1.6) 
        exports.easytext:displayMessageForPlayer(v,2, "Word : "..code.."", wordTime, 0.07, 0.533, 255, 255, 0, 255, 1.6) 
        exports.easytext:displayMessageForPlayer(v,3, "Prize : "..prize.."$", wordTime, 0.07, 0.563, 255, 255, 0, 255, 1.6) 
        exports.easytext:displayMessageForPlayer(v,4, "=========", wordTime, 0.07, 0.593, 0, 255, 0, 255, 1.6) 
    end 
outputChatBox("- Random Words : #FFFF00Enter the word shown below to win the prize.",root,0,255,0,true) 
outputChatBox("=========",root,0,255,0,true) 
outputChatBox("Word : "..code.."",root,255,255,0,true) 
outputChatBox("Prize : "..prize.."$",root,255,255,0,true) 
outputChatBox("=========",root,0,255,0,true) 
outputChatBox("- #FFFF00You can see the word down on your screen.",root,0,255,0,true) 
-- 
startCodeTimer() 
wordOn = true 
end 
  
function makeRandomCode(Word,Prize) 
    if ( Word and Prize ) then 
        theWord = Word 
        thePrize = Prize 
    else 
        theWord =  makeCaptcha(captchaNums) 
        thePrize = math.random(prizefrom,prizeto) 
    end 
    if ( tostring(theWord) and tonumber(thePrize) ) then 
        createCode(theWord,thePrize) 
    end 
end 
  
function startCodeTimer() 
    codeTimer = setTimer( function () 
        removeCode() 
        outputChatBox("- #FFFF00No one won the prize",root,0,255,0,true) 
    end , wordTime , 1 ) 
end 
  
function removeCode() 
    for k,v in ipairs( getElementsByType("player") ) do 
        exports.easytext:clearMessageForPlayer(v,1) 
        exports.easytext:clearMessageForPlayer(v,2) 
        exports.easytext:clearMessageForPlayer(v,3) 
        exports.easytext:clearMessageForPlayer(v,4) 
    end 
    if isTimer ( codeTimer ) then 
        killTimer(codeTimer) 
    end 
    theWord = nil 
    thePrize = nil 
    wordOn = false 
end 
  
function makeCaptcha(capNumz) 
 theC = "" 
  tCode = { "a","A", "b","B", "c","C", "d","D", "e","E", "f","F", "g","G", "h","H", "j","J", "k","K", "l","L", "m","L", "n","N", "o","O", "p","P", "q","Q", "r","R", "s","S", "t","T", "u","U", "v","V", "x","X", "y","Y", "z","Z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "!", "@", "#", "?" } 
for k=1,capNumz or 5 do 
  randomCode = math.random (#tCode ) 
  theC = ""..theC..""..tCode[randomCode].."" 
end 
            return theC 
end 
  
    function onPlayerWin ( player ) 
        local money1 = tonumber ( getElementData ( player, "Money" ) ) 
        outputChatBox("* ".. getPlayerName ( player ).." #FFFF00Has won the Prize #00FF00$".. thePrize, root, 255, 255, 0, true ) 
        setElementData ( player, "Money", money1 + thePrize ) 
        givePlayerMoney ( player, thePrize ) 
        executeSQLUpdate ( "MoneyB", "Money = '".. getPlayerMoney ( player ) .."'","serial = '" .. serial .. "'" ) 
        removeCode ( ) 
    end 
  
function detcetChatMessage(msg,msgtype) 
    if ( wordOn == true and msg and msgtype == 0 ) then 
        if msg == theWord then 
            onPlayerWin(source) 
        end 
    end 
end 
addEventHandler("onPlayerChat",root,detcetChatMessage) 
  
addEventHandler("onResourceStop",resourceRoot,function() 
    removeCode() 
end ) 
  
function setRandomTimer() 
    setTimer(function() 
        if not wordOn then 
            makeRandomCode() 
        end 
            setRandomTimer() 
    end , math.random(timerfrom,timerto) * 60 * 1000 , 1 ) 
end 
  
addEventHandler("onResourceStart",resourceRoot,function() setRandomTimer() 
    easytext = getResourceFromName("easytext") 
    if ( easytext  ) then 
        if getResourceState(easytext) == "loaded" then 
        startResource(easytext) 
        end 
    else 
        outputChatBox("* Error , need for easytext resource to start") 
        cancelEvent() 
    end 
end ) 
  
for k,v in ipairs ( {"randomcode","randomword","rw","rd"} ) do 
addCommandHandler(v,function(plr,cmd,prize,...) 
    if plr and hasObjectPermissionTo(plr,"function.kickPlayer") then 
        if ( not prize ) then 
            makeRandomCode() 
        else 
            word = table.concat({...}, " ") 
            if ( word ) then 
                makeRandomCode(word,prize) 
            end 
        end 
    end 
end ) 
end  

Posted
--***********************************-- 
--***********************************-- 
--           Random Words            -- 
--            By Al3grab             -- 
--***********************************-- 
--***********************************-- 
  
---- Changeable 
captchaNums = 5 -- captcha letters length 
wordTimeInSec = 25 --- the time before the word disappear in seconds [ default 11 seconds ] 
prizefrom,prizeto = 500,800 -- the prize random num 
timerfrom,timerto = 1.5,5.5 -- the random timer that shows the word [ default from 3 to 15 minutes ] 
---- unChangeable 
wordOn = false 
theWord = nil 
thePrize = nil 
wordTime = wordTimeInSec * 1000 
  
-- 
outputDebugString("Random Words By Al3grab | Started") 
-- 
function createCode(code,prize) 
    for k,v in ipairs( getElementsByType("player") ) do 
        exports.easytext:displayMessageForPlayer(v,1, "=========", wordTime, 0.07, 0.5, 0, 255, 0, 255, 1.6) 
        exports.easytext:displayMessageForPlayer(v,2, "Word : "..code.."", wordTime, 0.07, 0.533, 255, 255, 0, 255, 1.6) 
        exports.easytext:displayMessageForPlayer(v,3, "Prize : "..prize.."$", wordTime, 0.07, 0.563, 255, 255, 0, 255, 1.6) 
        exports.easytext:displayMessageForPlayer(v,4, "=========", wordTime, 0.07, 0.593, 0, 255, 0, 255, 1.6) 
    end 
outputChatBox("- Random Words : #FFFF00Enter the word shown below to win the prize.",root,0,255,0,true) 
outputChatBox("=========",root,0,255,0,true) 
outputChatBox("Word : "..code.."",root,255,255,0,true) 
outputChatBox("Prize : "..prize.."$",root,255,255,0,true) 
outputChatBox("=========",root,0,255,0,true) 
outputChatBox("- #FFFF00You can see the word down on your screen.",root,0,255,0,true) 
-- 
startCodeTimer() 
wordOn = true 
end 
  
function makeRandomCode(Word,Prize) 
    if ( Word and Prize ) then 
        theWord = Word 
        thePrize = Prize 
    else 
        theWord =  makeCaptcha(captchaNums) 
        thePrize = math.random(prizefrom,prizeto) 
    end 
    if ( tostring(theWord) and tonumber(thePrize) ) then 
        createCode(theWord,thePrize) 
    end 
end 
  
function startCodeTimer() 
    codeTimer = setTimer( function () 
        removeCode() 
        outputChatBox("- #FFFF00No one won the prize",root,0,255,0,true) 
    end , wordTime , 1 ) 
end 
  
function removeCode() 
    for k,v in ipairs( getElementsByType("player") ) do 
        exports.easytext:clearMessageForPlayer(v,1) 
        exports.easytext:clearMessageForPlayer(v,2) 
        exports.easytext:clearMessageForPlayer(v,3) 
        exports.easytext:clearMessageForPlayer(v,4) 
    end 
    if isTimer ( codeTimer ) then 
        killTimer(codeTimer) 
    end 
    theWord = nil 
    thePrize = nil 
    wordOn = false 
end 
  
function makeCaptcha(capNumz) 
    theC = "" 
    tCode = { "a","A", "b","B", "c","C", "d","D", "e","E", "f","F", "g","G", "h","H", "j","J", "k","K", "l","L", "m","L", "n","N", "o","O", "p","P", "q","Q", "r","R", "s","S", "t","T", "u","U", "v","V", "x","X", "y","Y", "z","Z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "!", "@", "#", "?" } 
    for k=1,capNumz or 5 do 
        randomCode = math.random (#tCode ) 
        theC = ""..theC..""..tCode[randomCode].."" 
    end 
  
    return theC 
end 
  
function onPlayerWin ( player ) 
    local money1 = tonumber ( getElementData ( player, "Money" ) ) 
    local serial = getPlayerSerial ( player ) 
    outputChatBox("* ".. getPlayerName ( player ).." #FFFF00Has won the Prize #00FF00$".. thePrize, root, 255, 255, 0, true ) 
    setElementData ( player, "Money", money1 + thePrize ) 
    givePlayerMoney ( player, thePrize ) 
    executeSQLUpdate ( "MoneyB", "Money = '".. getPlayerMoney ( player ) .."'","serial = '" .. serial .. "'" ) 
    removeCode ( ) 
end 
  
function detectChatMessage(msg,msgtype) 
    if ( wordOn == true and msg and msgtype == 0 ) then 
        if msg == theWord then 
            onPlayerWin(source) 
        end 
    end 
end 
addEventHandler("onPlayerChat",root,detectChatMessage) 
  
addEventHandler("onResourceStop",resourceRoot,function() 
    removeCode() 
end ) 
  
function setRandomTimer() 
    setTimer(function() 
        if not wordOn then 
            makeRandomCode() 
        end 
            setRandomTimer() 
    end , math.random(timerfrom,timerto) * 60 * 1000 , 1 ) 
end 
  
addEventHandler("onResourceStart",resourceRoot,function() setRandomTimer() 
    easytext = getResourceFromName("easytext") 
    if ( easytext  ) then 
        if getResourceState(easytext) == "loaded" then 
        startResource(easytext) 
        end 
    else 
        outputChatBox("* Error , need for easytext resource to start") 
        cancelEvent() 
    end 
end ) 
  
for k,v in ipairs ( {"randomcode","randomword","rw","rd"} ) do 
addCommandHandler(v,function(plr,cmd,prize,...) 
    if plr and hasObjectPermissionTo(plr,"function.kickPlayer") then 
        if ( not prize ) then 
            makeRandomCode() 
        else 
            word = table.concat({...}, " ") 
            if ( word ) then 
                makeRandomCode(word,prize) 
            end 
        end 
    end 
end ) 
end 

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

Posted

Thank you for reply. I've just tested the code and it looks like now it's updating the database but in a wrong matter. For example now if before code type u have : 1000 money and the prize is 511 after u win the prize it erase all the money that u have before and keeps only the prize for global money. This is applicable just after reconnecting.

LE: So now i've it's working very well

i've changed this :

        executeSQLUpdate ( "MoneyB", "Money = '".. getPlayerMoney ( player ) + thePrize .."'","serial = '" .. serial .. "'" )  

with this :

         executeSQLUpdate ( "MoneyB", "Money = '".. money1 + thePrize .."'","serial = '" .. serial .. "'" )  

Thanks a lot for your help solidsnake14 !

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