MySQL - R38 loading houses help -
vernz - 23.04.2014
Hi, anyone have an idea how to load EVERY houses stored into the database with the lastest plugins R38, cant figured it out it should be similar to the player account like this:
Код:
stock LoadAccount(playerid)
{
new query[128];
format(query, sizeof(query), "SELECT * FROM `players` WHERE `ID` = %d", PlayerInfo[playerid][pSQLid]);
mysql_tquery(g_Handle, query, "OnAccountLoad", "d", playerid);
}
forward OnAccountLoad(playerid);
public OnAccountLoad(playerid)
{
ToggleMainMenu(playerid, 0);
SetCameraBehindPlayer(playerid);
PlayerInfo[playerid][pHealth] = cache_get_field_content_float(0, "Health");
PlayerInfo[playerid][pPos][0] = cache_get_field_content_float(0, "PosX");
PlayerInfo[playerid][pPos][1] = cache_get_field_content_float(0, "PosY");
PlayerInfo[playerid][pPos][2] = cache_get_field_content_float(0, "PosZ");
PlayerInfo[playerid][pPos][3] = cache_get_field_content_float(0, "Angle");
PlayerInfo[playerid][pInterior] = cache_get_field_content_int(0, "Interior");
PlayerInfo[playerid][pVirtualWorld] = cache_get_field_content_int(0, "VirtualWorld");
PlayerInfo[playerid][pSkin] = cache_get_field_content_int(0, "Skin");
PlayerInfo[playerid][pSex] = cache_get_field_content_int(0, "Sex");
PlayerInfo[playerid][pAge] = cache_get_field_content_int(0, "Age");
PlayerInfo[playerid][pOrigine] = cache_get_field_content_int(0, "Origine");
PlayerInfo[playerid][pMoney] = cache_get_field_content_int(0, "Money");
PlayerInfo[playerid][pJob] = cache_get_field_content_int(0, "Job");
PlayerInfo[playerid][pFaction] = cache_get_field_content_int(0, "Faction");
SetPlayerHealth(playerid, PlayerInfo[playerid][pHealth]);
SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], posArr{PlayerInfo[playerid][pPos]}, PlayerInfo[playerid][pPos][3], 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
/*SetPlayerPos(playerid, posArr{PlayerInfo[playerid][pPos]});
SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPos][3]);*/
SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]);
SetPlayerVirtualWorld(playerid, PlayerInfo[playerid][pVirtualWorld]);
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
return 1;
}
need the same who loop through all houses created into the database and then create the 3dtext etc... any ideas ?
thanks in advance
Re: MySQL - R38 loading houses help -
DobbysGamertag - 23.04.2014
Not sure if this helps any but:
pawn Код:
if(cache_num_rows())
{
for(new i = 0; i<cache_num_rows(); i++)
{
cache_get_field_content_int(i,"id",connectionHandle);
cache_get_field_content_float(i,"x",connectionHandle); //the row becomes "i". Since you're looping the number of rows found.
//load more...
}
}
Simple for() or maybe even a while() loop will do it.
Re : MySQL - R38 loading houses help -
vernz - 23.04.2014
What about
Код HTML:
stock LoadAccount(playerid)
{
new query[128];
format(query, sizeof(query), "SELECT * FROM `users` WHERE `ID` = %d", PlayerInfo[playerid][pSQLid]);
mysql_tquery(g_Handle, query, "OnAccountLoad", "d", playerid);
}
should i do something like this or select * houses right under OnHouseLoad by example ?
Re: MySQL - R38 loading houses help -
DobbysGamertag - 23.04.2014
You can use a straight query for that.
pawn Код:
public OnGameModeInit()
{
mysql_pquery(connectionHandle,"SELECT * FROM `houses`","OnHousesLoad");
return 1;
}
Re : MySQL - R38 loading houses help -
vernz - 23.04.2014
pawn Код:
mysql_pquery(g_Handle, "SELECT * FROM `houses`", "OnHouseLoad");
pawn Код:
forward OnHouseLoad();
public OnHouseLoad()
{
if(cache_num_rows())
{
for(new i = 0; i<cache_num_rows(); i++)
{
cache_get_field_content_int(i,"SQLID",g_Handle);
cache_get_field_content_float(i,"Posx",g_Handle);
cache_get_field_content_float(i,"Posy",g_Handle);
cache_get_field_content_float(i,"Posz",g_Handle); //the row becomes "i". Since you're looping the number of rows found.
//load more...
print("test");
}
}
}
Not sure if I miss something but it doesnt print so theres is something wrong
Re: MySQL - R38 loading houses help -
DobbysGamertag - 23.04.2014
have you enabled debug mode via MySQL?
Re : MySQL - R38 loading houses help -
vernz - 23.04.2014
Yes, I do
Re: MySQL - R38 loading houses help -
DobbysGamertag - 23.04.2014
I presume its not putting anything relating to fieldnames/tablenames into the txt file. I'll open up pawno now
Edit:
Using this script:
pawn Код:
new
Database = 1;
main(){}
public OnGameModeInit()
{
mysql_log(LOG_ALL,LOG_TYPE_TEXT);
Database = mysql_connect("localhost","user","testdb","pass");
mysql_tquery(Database,"SELECT * FROM `houses`","OnHouseLoad");
return 1;
}
forward OnHouseLoad();
public OnHouseLoad()
{
if(cache_num_rows())
{
for(new i = 0; i<cache_num_rows(); i++)
{
new ID = cache_get_field_content_int(i,"id",Database);
new Float:x = cache_get_field_content_float(i,"x",Database);
new Float:y = cache_get_field_content_float(i,"y",Database);
new Float:z = cache_get_field_content_float(i,"z",Database);
printf("Loaded house %d %f %f %f",ID,x,y,z);
}
}
else print("No houses found.");
return 1;
}
Outputs:
Код:
----------
Loaded log file: "server_log.txt".
----------
SA-MP Dedicated Server
----------------------
v0.3z-R2, ©2005-2014 SA-MP Team
[02:30:27]
[02:30:27] Server Plugins
[02:30:27] --------------
[02:30:27] Loading plugin: mysql
[02:30:27] >> plugin.mysql: R38 successfully loaded.
[02:30:27] Loaded.
[02:30:27] Loading plugin: streamer
[02:30:27] Loaded.
[02:30:27] Loaded 2 plugins.
[02:30:27]
[02:30:27] Filterscripts
[02:30:27] ---------------
[02:30:27] Loaded 0 filterscripts.
[02:30:27] Number of vehicle models: 0
[02:30:27] Loaded house 1 123.000000 456.000000 789.000000
Re : MySQL - R38 loading houses help -
vernz - 23.04.2014
Код HTML:
[21:26:40] [ERROR] "mysql_pquery" - invalid connection handle (id: 0)
[21:26:40] [DEBUG] mysql_connect - host: "localhost", user: "root", database: "samp", password: "****", port: 3306, autoreconnect: true, pool_size: 2
[21:26:40] [DEBUG] CMySQLHandle::Create - creating new connection..
[21:26:40] [DEBUG] CMySQLHandle::CMySQLHandle - constructor called
[21:26:40] [DEBUG] CMySQLHandle::Create - connection created (id: 1)
[21:26:40] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[21:26:40] [DEBUG] CMySQLConnection::Connect - connection was successful
[21:26:40] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[21:26:40] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[21:26:40] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[21:26:40] [DEBUG] CMySQLConnection::Connect - connection was successful
[21:26:40] [DEBUG] CMySQLConnection::Connect - connection was successful
[21:26:40] [DEBUG] CMySQLConnection::Connect - connection was successful
[21:26:40] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[21:26:40] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
Код HTML:
[21:26:40] [ERROR] "mysql_pquery" - invalid connection handle (id: 0)
Re: MySQL - R38 loading houses help -
DobbysGamertag - 23.04.2014
Wait
i know!
Set your connectionhandle to 1.
EG:
pawn Код:
new Database = 1; //Database being Connection handle.
Also edited my above post.