Sign in to follow this  
trajik

Changing the funciton of a button?

Recommended Posts

Hi, I began talking about this on a previous thread so I decided to post a new one. Thanks to Uniqu3 I have the idea and I believe I am heading in the right direction....here's what I have so far...

playerState = 0
 
function changeTheButton(theUser)
if( not connect_mysql ) then
outputChatBox( no_connect_sql_message )
else
local query = mysql_query( connect_mysql, "SELECT * FROM `players` WHERE charName='" .. getPlayerName( theUser ) .. "'" )
if( query )> 2 then
		playerState = 1 ---Theres a character created
else 
		playerState = 0 ---The player is new
end
if (playerState == 1) then
triggerEvent("spawnTheCharacter", getRootElement(), theUser) ---spawn the character previously created
 
elseif (playerstate == 0) then
triggerClientEvent("move1", getRootElement()) ---move the camera to the character creation section
 
end
end
end

I have tried it and it doesn't work...however I am also begining to question my "spawnTheCharacter" function as well that is

function spawnTheCharacter(theUser)
local playerName = getPlayerName (theUser)
local spawnChar = mysql_query(connect_mysql, "SELECT * FROM `players` WHERE `saveX`, `saveY`, `saveZ` WHERE `charName`='"..playerName.."'")
if (spawnChar) == nil then
outputChatBox("error")
else
spawnPlayer (theUser, spawnChar)
end
end

If someone could help me out I'd really appreciate it. Thanks Everyone

Share this post


Link to post

your query isn't going to be returning a plain integer, so you cant just compare it with 2

you probably want to use this to count the rows first:

http://wiki.mtasa.com/wiki/Modules/MTA- ... l_num_rows

local query = mysql_query( connect_mysql, "SELECT * FROM `players` WHERE charName='" .. getPlayerName( theUser ) .. "'" )
if mysql_num_rows(query) > 2 then
   ...

i would also suggest you make playerState local, it wont cause any real problems being global but it isnt very neat

Share this post


Link to post

still doesn't work....I added some outputDebugString and still can't find an error

Share this post


Link to post

what do you debug outputs tell you? where is it having trouble?

post your new code and what it outputs when you run it

Share this post


Link to post
playerState = 0
 
function changeTheButton(theUser)
if( not connect_mysql ) then
outputChatBox( no_connect_sql_message )
else
local query = mysql_query( connect_mysql, "SELECT * FROM `players` WHERE charName='" .. getPlayerName( theUser ) .. "'" )
if mysql_num_rows(query) > 2 then
		playerState = 1 ---Theres a character created
outputDebugString ("theres a created character")
else 
		playerState = 0 ---The player is new
outputDebugString ("no user data")
end
if (playerState == 1) then
triggerEvent("spawnTheCharacter", getRootElement(), theUser)
outputDebugString ("the data is loaded")
 
elseif (playerstate == 0) then
triggerClientEvent("move1", getRootElement())
outputDebugString ("move to create a char")
 
end
end
end
 
addEvent ("changeTheButton", true)
addEventHandler ("changeTheButton", getRootElement(), changeTheButton)

it tells me "no user data" which is treating me like I am a new player.....but in the MySQL db all my account information is properly logged in there so it shouldn't be treating me as if I just created an account. It doesn't even send me to the character creation page either (move1). I have been stumped for hours now.

Share this post


Link to post

I've tried that and other configurations but it still doesn't change that the script thinks my character is nonexistent....

Just tried it with

if mysql_num_rows(query)== 1 then

still gives the same error

Share this post


Link to post

try outputting tostring(mysql_num_rows(query)) to see what it is

Share this post


Link to post

isn't that what I did when using "theres a character created"? If not how would I set that up?

perhaps...

local query = mysql_query( connect_mysql, "SELECT * FROM `players` WHERE charName='" .. getPlayerName( theUser ) .. "'" )
if mysql_num_rows(query)== 1 
outputDebugString {"blah blah blah") then
		playerState = 1 ---Theres a character created
outputDebugString ("theres a created character")
else 
		playerState = 0 ---The player is new
outputDebugString ("no user data")
end

Share this post


Link to post

i mean to output the exact value, not just see if it equals something:

local query = mysql_query( connect_mysql, "SELECT * FROM `players` WHERE charName='" .. getPlayerName( theUser ) .. "'" )
outputDebugString("Result: "..tostring(mysql_num_rows(query)))
if mysql_num_rows(query) > 2 then
   ...

Share this post


Link to post

okay im going to break it down...

the client side function to call my serverside function

function button()
triggerServerEvent("changeTheButton", getRootElement(), getLocalPlayer())
end

triggered by gui click

current code

playerState = 0
 
function changeTheButton(theUser)
if( not connect_mysql ) then
outputChatBox( no_connect_sql_message )
else
local query = mysql_query( connect_mysql, "SELECT * FROM `players` WHERE charName='" .. getPlayerName( theUser ) .. "'" )
outputDebugString("Result: "..tostring(mysql_num_rows(query)))
 
if mysql_num_rows(query)== 1 then
		playerState = 1 ---Theres a character created
outputDebugString ("theres a created character")
else 
		playerState = 0 ---The player is new
outputDebugString ("no user data")
end
if (playerState == 1) then
triggerEvent("spawnTheCharacter", getRootElement(), theUser)
outputDebugString ("the data is loaded")
 
elseif (playerstate == 0) then
triggerClientEvent("move1", getRootElement())
outputDebugString ("move to create a char")
 
end
end
end
 
addEvent ("changeTheButton", true)
addEventHandler ("changeTheButton", getRootElement(), changeTheButton)

should be working don't know why it isn't

Share this post


Link to post

if mysql_num_rows(query) is 0 then there is something wrong with your query

id guess there is no character with that name (even if your table had no other data it should still return 1 row with the charName in)

are you sure 'theUser' is a player?

if it is, try using an sql viewer to look at the database

Share this post


Link to post

ohhhh I see the problem..."theUser" is the local player so it would give the account name so right now when my function is called it is giving the account name rather than the char name....if that makes sence I will try to fix it now and post my resaults

Share this post


Link to post

yeah that was my problem...I needed to search for the account not the players name lol so simple....but now it doesn't spawn me which brings me back to my spawn script ^^

edit wait no never mind now if they register it says they have a character created without acually making one....an account and a character are different

Share this post


Link to post

should I be using this instead?

table mysql_fetch_field ( MySQLResult result )

Share this post


Link to post

You can if you want to.

Share this post


Link to post

Why bother using that playerState variable?

if mysql_num_rows(query)== 1 then
triggerEvent("spawnTheCharacter", getRootElement(), theUser)
outputDebugString ("the data is loaded")
else
triggerClientEvent("move1", getRootElement())
outputDebugString ("move to create a char")
end

Share this post


Link to post

that's not the issue though... In my database I have it set up like this:

mySQL database

Roleplayer:
Players:
account - password - charName - ect....

now I have it set up so it looks at the account and retrieves the charName table to check if the account has a character. Am i doing it right or do I need a whole new code? That's my problem thanks in advance

Share this post


Link to post
...

mySQL database

Roleplayer:
Players:
account - password - charName - ect....

...

What's this?

Share this post


Link to post

That's just the basic structure of my db...the one used in the usersystem resource

EDIT:

I basically need a script that looks at one table getting the local players name then checking if it's in the database and if it is then it looks back into the database for a character...if the account has a character then it spawns it If not it sends the player to the character creation screen..so how could this be done what steps do I take?

NOTE from 50p: Is it so hard to hit edit button?

Share this post


Link to post

Check if your query with ' instead of ` will work.

Share this post


Link to post

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
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.