How can i converted sqlite to mysql ?
#1

Hello guys, i'm want to ask something important about mysql.

How can you convert sqlite to mysql without error ?

For example i've some code from rootcause, here's a code:

PHP код:
#define     FILTERSCRIPT
#include     <a_samp>
#include    <evf>           // by Emmet_ - https://sampforum.blast.hk/showthread.ph...0.90706381
#include    <izcmd>         // by Yashas - https://sampforum.blast.hk/showthread.ph...0.90706381
#include    <progress2>     // by [HLF]Southclaw - https://sampforum.blast.hk/showthread.ph...0.90706381
#include    <sqlitei>       // by Slice - https://sampforum.blast.hk/showthread.ph...0.90706381
#include    <sscanf2>       // by ****** - https://sampforum.blast.hk/showthread.ph...0.90706381
#include    <streamer>      // by Incognito - https://sampforum.blast.hk/showthread.ph...0.90706381
#include    <YSI\y_iterate> // by ****** - https://sampforum.blast.hk/showthread.ph...0.90706381
#define     MAX_TREES       (100)   // tree limit
#define     MAX_LOGS        (300)   // dropped log limit
#define     MAX_BUYERS      (20)    // log buyer limit
#define     CUTTING_TIME    (8)        // required seconds to cut a tree down (Default: 8)
#define     LOG_LIMIT         (10)    // how many logs a player can load to a bobcat (if you change this, don't forget to modify LogAttachOffsets array) (Default: 10)
#define     ATTACH_INDEX    (7)     // for setplayerattachedobject (Default: 7)
#define     TREE_RESPAWN    (300)   // required seconds to respawn a tree (Default: 300)
#define     LOG_LIFETIME    (120)   // life time of a dropped log, in seconds (Default: 120)
#define     LOG_PRICE       (50)    // price of a log (Default: 50)
#define     CSAW_PRICE      (500)      // price of a chainsaw (Default: 500)
enum    E_TREE
{
    
// loaded from db
    
FloattreeX,
    
FloattreeY,
    
FloattreeZ,
    
FloattreeRX,
    
FloattreeRY,
    
FloattreeRZ,
    
// temp
    
treeLogs,
    
treeSeconds,
    
booltreeGettingCut,
    
treeObjID,
    
Text3DtreeLabel,
    
treeTimer
}
enum    E_LOG
{
    
// temp
    
logDroppedBy[MAX_PLAYER_NAME],
    
logSeconds,
    
logObjID,
    
logTimer,
    
Text3DlogLabel
}
enum    E_BUYER
{
    
// loaded from db
    
buyerSkin,
    
FloatbuyerX,
    
FloatbuyerY,
    
FloatbuyerZ,
    
FloatbuyerA,
    
// temp
    
buyerActorID,
    
Text3DbuyerLabel
}
new
    
TreeData[MAX_TREES][E_TREE],
    
LogData[MAX_LOGS][E_LOG],
    
BuyerData[MAX_BUYERS][E_BUYER];
    
new
    
IteratorTrees<MAX_TREES>,
    
IteratorLogs<MAX_LOGS>,
    
IteratorBuyers<MAX_BUYERS>;
new
    
LogObjects[MAX_VEHICLES][LOG_LIMIT];
    
new
    
CuttingTreeID[MAX_PLAYERS] = {-1, ...},
    
CuttingTimer[MAX_PLAYERS] = {-1, ...},
    
PlayerBarCuttingBar[MAX_PLAYERS] = {INVALID_PLAYER_BAR_ID, ...},
    
boolCarryingLog[MAX_PLAYERS],
    
EditingTreeID[MAX_PLAYERS] = {-1, ...};
new
    
FloatLogAttachOffsets[LOG_LIMIT][4] = {
        {-
0.223, -1.089, -0.230, -90.399},
        {-
0.056, -1.091, -0.23090.399},
        {
0.116, -1.092, -0.230, -90.399},
        {
0.293, -1.088, -0.23090.399},
        {-
0.123, -1.089, -0.099, -90.399},
        {
0.043, -1.090, -0.09990.399},
        {
0.216, -1.092, -0.099, -90.399},
        {-
0.033, -1.0900.029, -90.399},
        {
0.153, -1.0890.02990.399},
        {
0.066, -1.0910.150, -90.399}
    };
new
    
DBScriptDBHandle;
new
    
DBStatementLoadTrees,
    
DBStatementAddTree,
    
DBStatementUpdateTree,
    
DBStatementRemoveTree;
    
new
    
DBStatementLoadBuyers,
    
DBStatementAddBuyer,
    
DBStatementUpdateBuyer,
    
DBStatementRemoveBuyer;
SetPlayerLookAt(playeridFloat:xFloat:y)
{
    
// somewhere on samp forums, couldn't find the source
    
new Float:PxFloat:PyFloatPa;
    
GetPlayerPos(playeridPxPyPa);
    
Pa floatabs(atan((y-Py)/(x-Px)));
    if (
<= Px && >= PyPa floatsub(180Pa);
    else if (
Px && PyPa floatadd(Pa180);
    else if (
>= Px && <= PyPa floatsub(360.0Pa);
    
Pa floatsub(Pa90.0);
    if (
Pa >= 360.0Pa floatsub(Pa360.0);
    
SetPlayerFacingAngle(playeridPa);
}
ConvertToMinutes(time)
{
    
// https://sampforum.blast.hk/showthread.ph...0.90706381
    
new string[15];//-2000000000:00 could happen, so make the string 15 chars to avoid any errors
    
format(stringsizeof(string), "%02d:%02d"time 60time 60);
    return 
string;
}
GetClosestTree(playeridFloatrange 2.0)
{
    new 
id = -1Floatdist rangeFloattempdist;
    foreach(new 
Trees)
    {
        
tempdist GetPlayerDistanceFromPoint(playeridTreeData[i][treeX], TreeData[i][treeY], TreeData[i][treeZ]);
        if(
tempdist range) continue;
        if(
tempdist <= dist)
        {
            
dist tempdist;
            
id i;
        }
    }
    return 
id;
}
GetClosestLog(playeridFloatrange 2.0)
{
    new 
id = -1Floatdist rangeFloattempdistFloatpos[3];
    foreach(new 
Logs)
    {
        
GetDynamicObjectPos(LogData[i][logObjID], pos[0], pos[1], pos[2]);
        
tempdist GetPlayerDistanceFromPoint(playeridpos[0], pos[1], pos[2]);
        if(
tempdist range) continue;
        if(
tempdist <= dist)
        {
            
dist tempdist;
            
id i;
        }
    }
    return 
id;
}
IsPlayerNearALogBuyer(playerid)
{
    foreach(new 
Buyers)
    {
        if(
IsPlayerInRangeOfPoint(playerid2.0BuyerData[i][buyerX], BuyerData[i][buyerY], BuyerData[i][buyerZ])) return 1;
    }
    
    return 
0;
}
Player_Init(playerid)
{
    
CuttingTreeID[playerid] = -1;
    
CuttingTimer[playerid] = -1;
    
CarryingLog[playerid] = false;
    
EditingTreeID[playerid] = -1;
    
    
CuttingBar[playerid] = CreatePlayerProgressBar(playerid498.0104.0113.06.20x61381BFFCUTTING_TIME0);
    
ApplyAnimation(playerid"CHAINSAW""null"0.0000000);
    
ApplyAnimation(playerid"CARRY""null"0.0000000);
    return 
1;
}
Player_ResetCutting(playerid)
{
    if(!
IsPlayerConnected(playerid) || CuttingTreeID[playerid] == -1) return 0;
    new 
id CuttingTreeID[playerid];
    
TreeData[id][treeGettingCut] = false;
    if(
TreeData[id][treeSeconds] < 1Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABELTreeData[id][treeLabel], E_STREAMER_COLOR0x2ECC71FF);
    
    
ClearAnimations(playerid);
    
TogglePlayerControllable(playerid1);
    
CuttingTreeID[playerid] = -1;
    
    if(
CuttingTimer[playerid] != -1)
    {
        
KillTimer(CuttingTimer[playerid]);
        
CuttingTimer[playerid] = -1;
    }
    
    
SetPlayerProgressBarValue(playeridCuttingBar[playerid], 0.0);
    
HidePlayerProgressBar(playeridCuttingBar[playerid]);
    return 
1;
}
Player_GiveLog(playerid)
{
    if(!
IsPlayerConnected(playerid)) return 0;
    
CarryingLog[playerid] = true;
    
SetPlayerSpecialAction(playeridSPECIAL_ACTION_CARRY);
    
SetPlayerAttachedObject(playeridATTACH_INDEX1979360.0779990.043999, -0.170999, -13.79995379.700.0);
    
    
SendClientMessage(playerid0x3498DBFF"LUMBERJACK: {FFFFFF}You can press {F1C40F}~k~~CONVERSATION_NO~ {FFFFFF}to drop your log.");
    return 
1;
}
Player_DropLog(playeriddeath_drop 0)
{
    if(!
IsPlayerConnected(playerid) || !CarryingLog[playerid]) return 0;
    new 
id Iter_Free(Logs);
    if(
id != -1)
    {
        new 
FloatxFloatyFloatzFloatalabel[128];
        
GetPlayerPos(playeridxyz);
        
GetPlayerFacingAngle(playerida);
        
GetPlayerName(playeridLogData[id][logDroppedBy], MAX_PLAYER_NAME);
        if(!
death_drop)
        {
            
+= (1.0 floatsin(-adegrees));
            
+= (1.0 floatcos(-adegrees));
            
            
ApplyAnimation(playerid"CARRY""putdwn05"4.1011001);
        }
        
LogData[id][logSeconds] = LOG_LIFETIME;
        
LogData[id][logObjID] = CreateDynamicObject(19793xy0.90.00.0a);
        
        
format(labelsizeof(label), "Log (%d)\n\n{FFFFFF}Dropped By {F1C40F}%s\n{FFFFFF}%s\nUse {F1C40F}/log take {FFFFFF}to take it."idLogData[id][logDroppedBy], ConvertToMinutes(LOG_LIFETIME));
        
LogData[id][logLabel] = CreateDynamic3DTextLabel(label0xF1C40FFFxy0.75.0, .testlos 1);
        
        
LogData[id][logTimer] = SetTimerEx("RemoveLog"1000true"i"id);
        
Iter_Add(Logsid);
    }
    
    
Player_RemoveLog(playerid);
    return 
1;
}
Player_RemoveLog(playerid)
{
    if(!
IsPlayerConnected(playerid) || !CarryingLog[playerid]) return 0;
    
RemovePlayerAttachedObject(playeridATTACH_INDEX);
    
SetPlayerSpecialAction(playeridSPECIAL_ACTION_NONE);
    
CarryingLog[playerid] = false;
    return 
1;
}
Vehicle_LogCount(vehicleid)
{
    if(
GetVehicleModel(vehicleid) == 0) return 0;
    new 
count;
    for(new 
iLOG_LIMITi++) if(IsValidDynamicObject(LogObjects[vehicleid][i])) count++;
    return 
count;
}
Vehicle_RemoveLogs(vehicleid)
{
    if(
GetVehicleModel(vehicleid) == 0) return 0;
    for(new 
iLOG_LIMITi++)
    {
        if(
IsValidDynamicObject(LogObjects[vehicleid][i]))
        {
            
DestroyDynamicObject(LogObjects[vehicleid][i]);
            
LogObjects[vehicleid][i] = -1;
        }
    }
    
    return 
1;
}
Tree_BeingEdited(id)
{
    if(!
Iter_Contains(Treesid)) return 0;
    foreach(new 
Player) if(EditingTreeID[i] == id) return 1;
    return 
0;
}
Tree_UpdateLogLabel(id)
{
    if(!
Iter_Contains(Treesid)) return 0;
    new 
label[96];
    
    if(
TreeData[id][treeLogs] > 0) {
        
format(labelsizeof(label), "Tree (%d)\n\n{FFFFFF}Logs: {F1C40F}%d\n{FFFFFF}Use {F1C40F}/log takefromtree {FFFFFF}to take a log."idTreeData[id][treeLogs]);
        
UpdateDynamic3DTextLabelText(TreeData[id][treeLabel], 0xE74C3CFFlabel);
    }else{
        
TreeData[id][treeTimer] = SetTimerEx("RespawnTree"1000true"i"id);
        
        
format(labelsizeof(label), "Tree (%d)\n\n{FFFFFF}%s"idConvertToMinutes(TreeData[id][treeSeconds]));
        
UpdateDynamic3DTextLabelText(TreeData[id][treeLabel], 0xE74C3CFFlabel);
    }
    
    return 
1;
}
public 
OnFilterScriptInit()
{
    print(
"  [Lumberjack] Initializing...");
    
    
// assign default values to variables
    
for(new iMAX_TREESi++)
    {
        
TreeData[i][treeObjID] = TreeData[i][treeTimer] = -1;
        
TreeData[i][treeLabel] = Text3D: -1;
    }
    
    for(new 
iMAX_LOGSi++)
    {
        
LogData[i][logObjID] = LogData[i][logTimer] = -1;
        
LogData[i][logLabel] = Text3D: -1;
    }
    
    for(new 
iMAX_BUYERSi++)
    {
        
BuyerData[i][buyerActorID] = -1;
        
BuyerData[i][buyerLabel] = Text3D: -1;
    }
    
    for(new 
iMAX_VEHICLESi++) for(new xLOG_LIMITx++) LogObjects[i][x] = -1;
    
    foreach(new 
PlayerPlayer_Init(i);
    
    
// open database & create tables
    
ScriptDBHandle db_open("lumberjack.db");
    
db_query(ScriptDBHandle"CREATE TABLE IF NOT EXISTS trees (ID INTEGER, PosX FLOAT, PosY FLOAT, PosZ FLOAT, RotX FLOAT, RotY FLOAT, RotZ FLOAT)");
    
db_query(ScriptDBHandle"CREATE TABLE IF NOT EXISTS buyers (ID INTEGER, Skin INTEGER, PosX FLOAT, PosY FLOAT, PosZ FLOAT, PosA FLOAT)");
    
    
// prepare tree queries
    
LoadTrees db_prepare(ScriptDBHandle"SELECT * FROM trees");
    
AddTree db_prepare(ScriptDBHandle"INSERT INTO trees (ID, PosX, PosY, PosZ, RotX, RotY, RotZ) VALUES (?, ?, ?, ?, ?, ?, ?)");
    
UpdateTree db_prepare(ScriptDBHandle"UPDATE trees SET PosX=?, PosY=?, PosZ=?, RotX=?, RotY=?, RotZ=? WHERE ID=?");
    
RemoveTree db_prepare(ScriptDBHandle"DELETE FROM trees WHERE ID=?");
    
    
// prepare buyer queries
    
LoadBuyers db_prepare(ScriptDBHandle"SELECT * FROM buyers");
    
AddBuyer db_prepare(ScriptDBHandle"INSERT INTO buyers (ID, Skin, PosX, PosY, PosZ, PosA) VALUES (?, ?, ?, ?, ?, ?)");
    
UpdateBuyer db_prepare(ScriptDBHandle"UPDATE buyers SET Skin=?, PosX=?, PosY=?, PosZ=?, PosA=? WHERE ID=?");
    
RemoveBuyer db_prepare(ScriptDBHandle"DELETE FROM buyers WHERE ID=?");
    
    
// load trees
    
new idFloatpos[3], Floatrot[3];
    
stmt_bind_result_field(LoadTrees0DB::TYPE_INTEGERid);
    
stmt_bind_result_field(LoadTrees1DB::TYPE_FLOATpos[0]);
    
stmt_bind_result_field(LoadTrees2DB::TYPE_FLOATpos[1]);
    
stmt_bind_result_field(LoadTrees3DB::TYPE_FLOATpos[2]);
    
stmt_bind_result_field(LoadTrees4DB::TYPE_FLOATrot[0]);
    
stmt_bind_result_field(LoadTrees5DB::TYPE_FLOATrot[1]);
    
stmt_bind_result_field(LoadTrees6DB::TYPE_FLOATrot[2]);
    if(
stmt_execute(LoadTrees))
    {
        print(
"  [Lumberjack] Loading trees...");
        new 
label[96];
        while(
stmt_fetch_row(LoadTrees))
        {
            
TreeData[id][treeX] = pos[0];
             
TreeData[id][treeY] = pos[1];
              
TreeData[id][treeZ] = pos[2];
            
TreeData[id][treeRX] = rot[0];
             
TreeData[id][treeRY] = rot[1];
              
TreeData[id][treeRZ] = rot[2];
            
TreeData[id][treeObjID] = CreateDynamicObject(657TreeData[id][treeX], TreeData[id][treeY], TreeData[id][treeZ], TreeData[id][treeRX], TreeData[id][treeRY], TreeData[id][treeRZ]);
            
            
format(labelsizeof(label), "Tree (%d)\n\n{FFFFFF}Press {F1C40F}~k~~CONVERSATION_NO~ {FFFFFF}to cut down."id);
            
TreeData[id][treeLabel] = CreateDynamic3DTextLabel(label0x2ECC71FFTreeData[id][treeX], TreeData[id][treeY], TreeData[id][treeZ] + 1.55.0);
            
Iter_Add(Treesid);
        }
        
printf("  [Lumberjack] Loaded %d trees."Iter_Count(Trees));
    }
    
    
// load buyers
    
new skinFloatbpos[4];
    
stmt_bind_result_field(LoadBuyers0DB::TYPE_INTEGERid);
    
stmt_bind_result_field(LoadBuyers1DB::TYPE_INTEGERskin);
    
stmt_bind_result_field(LoadBuyers2DB::TYPE_FLOATbpos[0]);
    
stmt_bind_result_field(LoadBuyers3DB::TYPE_FLOATbpos[1]);
    
stmt_bind_result_field(LoadBuyers4DB::TYPE_FLOATbpos[2]);
    
stmt_bind_result_field(LoadBuyers5DB::TYPE_FLOATbpos[3]);
    if(
stmt_execute(LoadBuyers))
    {
        print(
"  [Lumberjack] Loading buyers...");
        new 
label[172];
        while(
stmt_fetch_row(LoadBuyers))
        {
            
BuyerData[id][buyerSkin] = skin;
             
BuyerData[id][buyerX] = bpos[0];
              
BuyerData[id][buyerY] = bpos[1];
            
BuyerData[id][buyerZ] = bpos[2];
             
BuyerData[id][buyerA] = bpos[3];
            
BuyerData[id][buyerActorID] = CreateActor(BuyerData[id][buyerSkin], BuyerData[id][buyerX], BuyerData[id][buyerY], BuyerData[id][buyerZ], BuyerData[id][buyerA]);
            
SetActorInvulnerable(BuyerData[id][buyerActorID], 1);
            
format(labelsizeof(label), "Log Buyer (%d)\n\n{FFFFFF}Use {F1C40F}/chainsaw {FFFFFF}to buy a chainsaw for {2ECC71}$%d.\n{FFFFFF}Use {F1C40F}/log sell {FFFFFF}to sell a log for {2ECC71}$%d."idCSAW_PRICELOG_PRICE);
            
BuyerData[id][buyerLabel] = CreateDynamic3DTextLabel(label0xF1C40FFFBuyerData[id][buyerX], BuyerData[id][buyerY], BuyerData[id][buyerZ] + 0.255.0, .testlos 1);
            
Iter_Add(Buyersid);
        }
        
printf("  [Lumberjack] Loaded %d buyers."Iter_Count(Buyers));
    }
    
    return 
1;
}
public 
OnFilterScriptExit()
{
    foreach(new 
Player)
    {
        
Player_ResetCutting(i);
        
Player_RemoveLog(i);
        
        
DestroyPlayerProgressBar(iCuttingBar[i]);
    }
    
    foreach(new 
BuyersDestroyActor(BuyerData[i][buyerActorID]);
    
    
db_close(ScriptDBHandle);
    print(
"  [Lumberjack] Unloaded.");
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
Player_Init(playerid);
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    
Player_ResetCutting(playerid);
    
Player_RemoveLog(playerid);
    
    
EditingTreeID[playerid] = -1;
    return 
1;
}
public 
OnVehicleSpawn(vehicleid)
{
    
Vehicle_RemoveLogs(vehicleid);
    return 
1;
}
public 
OnVehicleDeath(vehicleidkillerid)
{
    
Vehicle_RemoveLogs(vehicleid);
    return 
1;
}
public 
OnPlayerDeath(playeridkilleridreason)
{
    
Player_ResetCutting(playerid);
    
Player_DropLog(playerid1);
    return 
1;
}
public 
OnPlayerStateChange(playeridnewstateoldstate)
{
    if(
newstate != PLAYER_STATE_WASTED)
    {
        
Player_ResetCutting(playerid);
        
Player_RemoveLog(playerid);
    }
    
    return 
1;
}
public 
OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    if(
GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && (newkeys KEY_NO))
    {
        if(
CarryingLog[playerid]) return Player_DropLog(playerid);
        
        if(
GetPlayerWeapon(playerid) == WEAPON_CHAINSAW && CuttingTreeID[playerid] == -&& !CarryingLog[playerid])
        {
            new 
id GetClosestTree(playerid);
            if(
id != -1)
            {
                if(!
Tree_BeingEdited(id) && !TreeData[id][treeGettingCut] && TreeData[id][treeSeconds] < 1)
                {
                    
SetPlayerLookAt(playeridTreeData[id][treeX], TreeData[id][treeY]);
                    
Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABELTreeData[id][treeLabel], E_STREAMER_COLOR0xE74C3CFF);
                    
CuttingTimer[playerid] = SetTimerEx("CutTree"1000true"i"playerid);
                    
CuttingTreeID[playerid] = id;
                    
SetPlayerProgressBarValue(playeridCuttingBar[playerid], 0.0);
                    
ShowPlayerProgressBar(playeridCuttingBar[playerid]);
                    
TogglePlayerControllable(playerid0);
                    
SetPlayerArmedWeapon(playeridWEAPON_CHAINSAW);
                    
ApplyAnimation(playerid"CHAINSAW""WEAPON_csaw"4.1100101);
                    
TreeData[id][treeGettingCut] = true;
                }
            }
        }
    }
    return 
1;
}
public 
OnPlayerEditDynamicObject(playeridSTREAMER_TAG_OBJECT objectidresponseFloat:xFloat:yFloat:zFloat:rxFloat:ryFloat:rz)
{
    if(
EditingTreeID[playerid] != -&& Iter_Contains(TreesEditingTreeID[playerid]))
    {
        if(
response == EDIT_RESPONSE_FINAL)
        {
            new 
id EditingTreeID[playerid];
            
TreeData[id][treeX] = x;
            
TreeData[id][treeY] = y;
            
TreeData[id][treeZ] = z;
            
TreeData[id][treeRX] = rx;
            
TreeData[id][treeRY] = ry;
            
TreeData[id][treeRZ] = rz;
            
SetDynamicObjectPos(objectidTreeData[id][treeX], TreeData[id][treeY], TreeData[id][treeZ]);
            
SetDynamicObjectRot(objectidTreeData[id][treeRX], TreeData[id][treeRY], TreeData[id][treeRZ]);
            
Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABELTreeData[id][treeLabel], E_STREAMER_XTreeData[id][treeX]);
            
Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABELTreeData[id][treeLabel], E_STREAMER_YTreeData[id][treeY]);
            
Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABELTreeData[id][treeLabel], E_STREAMER_ZTreeData[id][treeZ] + 1.5);
            
stmt_bind_value(UpdateTree0DB::TYPE_FLOATTreeData[id][treeX]);
            
stmt_bind_value(UpdateTree1DB::TYPE_FLOATTreeData[id][treeY]);
            
stmt_bind_value(UpdateTree2DB::TYPE_FLOATTreeData[id][treeZ]);
            
stmt_bind_value(UpdateTree3DB::TYPE_FLOATTreeData[id][treeRX]);
            
stmt_bind_value(UpdateTree4DB::TYPE_FLOATTreeData[id][treeRY]);
            
stmt_bind_value(UpdateTree5DB::TYPE_FLOATTreeData[id][treeRZ]);
            
stmt_bind_value(UpdateTree6DB::TYPE_INTEGERid);
            
stmt_execute(UpdateTree);
            
EditingTreeID[playerid] = -1;
        }
        if(
response == EDIT_RESPONSE_CANCEL)
        {
            new 
id EditingTreeID[playerid];
            
SetDynamicObjectPos(objectidTreeData[id][treeX], TreeData[id][treeY], TreeData[id][treeZ]);
            
SetDynamicObjectRot(objectidTreeData[id][treeRX], TreeData[id][treeRY], TreeData[id][treeRZ]);
            
EditingTreeID[playerid] = -1;
        }
    }
    return 
1;
}
forward CutTree(playerid);
public 
CutTree(playerid)
{
    if(
CuttingTreeID[playerid] != -1)
    {
        new 
id CuttingTreeID[playerid], Floatvalue GetPlayerProgressBarValue(playeridCuttingBar[playerid]) + 1.0;
        
        if(
value >= CUTTING_TIME) {
            
Player_ResetCutting(playerid);
            
MoveDynamicObject(TreeData[id][treeObjID], TreeData[id][treeX], TreeData[id][treeY], TreeData[id][treeZ] + 0.030.025TreeData[id][treeRX], TreeData[id][treeRY] - 80.0TreeData[id][treeRZ]);
            
TreeData[id][treeLogs] = 5;
            
TreeData[id][treeSeconds] = TREE_RESPAWN;
            
Tree_UpdateLogLabel(id);
        }else{
            
SetPlayerProgressBarValue(playeridCuttingBar[playerid], value);
        }
    }
    return 
1;
}
forward RespawnTree(id);
public 
RespawnTree(id)
{
    new 
label[96];
    if(
TreeData[id][treeSeconds] > 1) {
        
TreeData[id][treeSeconds]--;
        
        
format(labelsizeof(label), "Tree (%d)\n\n{FFFFFF}%s"idConvertToMinutes(TreeData[id][treeSeconds]));
        
UpdateDynamic3DTextLabelText(TreeData[id][treeLabel], 0xE74C3CFFlabel);
    }else if(
TreeData[id][treeSeconds] == 1) {
        
KillTimer(TreeData[id][treeTimer]);
        
TreeData[id][treeLogs] = 0;
        
TreeData[id][treeSeconds] = 0;
        
TreeData[id][treeTimer] = -1;
        
        
SetDynamicObjectPos(TreeData[id][treeObjID], TreeData[id][treeX], TreeData[id][treeY], TreeData[id][treeZ]);
         
SetDynamicObjectRot(TreeData[id][treeObjID], TreeData[id][treeRX], TreeData[id][treeRY], TreeData[id][treeRZ]);
         
         
format(labelsizeof(label), "Tree (%d)\n\n{FFFFFF}Press {F1C40F}~k~~CONVERSATION_NO~ {FFFFFF}to cut down."id);
         
UpdateDynamic3DTextLabelText(TreeData[id][treeLabel], 0x2ECC71FFlabel);
    }
    
    return 
1;
}
forward RemoveLog(id);
public 
RemoveLog(id)
{
    if(!
Iter_Contains(Logsid)) return 1;
    
    if(
LogData[id][logSeconds] > 1) {
        
LogData[id][logSeconds]--;
        new 
label[128];
        
format(labelsizeof(label), "Log (%d)\n\n{FFFFFF}Dropped By {F1C40F}%s\n{FFFFFF}%s\nUse {F1C40F}/log take {FFFFFF}to take it."idLogData[id][logDroppedBy], ConvertToMinutes(LogData[id][logSeconds]));
        
UpdateDynamic3DTextLabelText(LogData[id][logLabel], 0xF1C40FFFlabel);
    }else if(
LogData[id][logSeconds] == 1) {
        
KillTimer(LogData[id][logTimer]);
        
DestroyDynamicObject(LogData[id][logObjID]);
        
DestroyDynamic3DTextLabel(LogData[id][logLabel]);
        
        
LogData[id][logTimer] = -1;
        
LogData[id][logObjID] = -1;
        
LogData[id][logLabel] = Text3D: -1;
        
Iter_Remove(Logsid);
    }
    
    return 
1;
}
// Player Commands
CMD:chainsaw(playeridparams[])
{
    if(
IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You can't use this command in a vehicle.");
    if(!
IsPlayerNearALogBuyer(playerid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're not near a Log Buyer.");
    if(
GetPlayerMoney(playerid) < CSAW_PRICE) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You don't have enough money.");
    
GivePlayerMoney(playerid, -CSAW_PRICE);
    
GivePlayerWeapon(playeridWEAPON_CHAINSAW1);
    
    new 
string[64];
    
format(stringsizeof(string), "LUMBERJACK: {FFFFFF}Bought a chainsaw for {2ECC71}$%d."CSAW_PRICE);
       
SendClientMessage(playerid0x3498DBFFstring);
    return 
1;
}
CMD:log(playeridparams[])
{
    if(
IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You can't use this command in a vehicle.");
    if(
isnull(params)) return SendClientMessage(playerid0xE88732FF"SYNTAX: {FFFFFF}/log [load/take/takefromcar/takefromtree/sell]");
    
    if(!
strcmp(params"load"true)) {
        
// loading to a bobcat
        
if(!CarryingLog[playerid]) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're not carrying a log.");
        new 
id GetNearestVehicle(playerid);
        if(
GetVehicleModel(id) != 422) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're not near a Bobcat.");
        new 
FloatxFloatyFloatz;
        
GetVehicleBoot(idxyz);
        if(!
IsPlayerInRangeOfPoint(playerid3.0xyz)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're not near a Bobcat's back.");
        if(
Vehicle_LogCount(id) >= LOG_LIMIT) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You can't load any more logs to this vehicle.");
        for(new 
iLOG_LIMITi++)
        {
            if(!
IsValidDynamicObject(LogObjects[id][i]))
            {
                
LogObjects[id][i] = CreateDynamicObject(197930.00.00.00.00.00.0);
                
AttachDynamicObjectToVehicle(LogObjects[id][i], idLogAttachOffsets[i][0], LogAttachOffsets[i][1], LogAttachOffsets[i][2], 0.00.0LogAttachOffsets[i][3]);
                break;
            }
        }
        
        
Streamer_Update(playerid);
        
Player_RemoveLog(playerid);
        
SendClientMessage(playerid0x3498DBFF"LUMBERJACK: {FFFFFF}Loaded a log.");
        
// done
    
}else if(!strcmp(params"take")) {
        
// taking from ground
        
if(CarryingLog[playerid]) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're already carrying a log.");
        new 
id GetClosestLog(playerid);
        if(
id == -1) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're not near a log.");
        
LogData[id][logSeconds] = 1;
        
RemoveLog(id);
        
        
Player_GiveLog(playerid);
        
SendClientMessage(playerid0x3498DBFF"LUMBERJACK: {FFFFFF}You've taken a log from ground.");
        
// done
    
}else if(!strcmp(params"takefromcar")) {
        
// taking from a bobcat
        
if(CarryingLog[playerid]) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're already carrying a log.");
        new 
id GetNearestVehicle(playerid);
        if(
GetVehicleModel(id) != 422) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're not near a Bobcat.");
        new 
FloatxFloatyFloatz;
        
GetVehicleBoot(idxyz);
        if(!
IsPlayerInRangeOfPoint(playerid3.0xyz)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're not near a Bobcat's back.");
        if(
Vehicle_LogCount(id) < 1) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}This Bobcat doesn't have any logs.");
        for(new 
= (LOG_LIMIT 1); >= 0i--)
        {
            if(
IsValidDynamicObject(LogObjects[id][i]))
            {
                
DestroyDynamicObject(LogObjects[id][i]);
                
LogObjects[id][i] = -1;
                break;
            }
        }
        
Streamer_Update(playerid);
        
Player_GiveLog(playerid);
        
SendClientMessage(playerid0x3498DBFF"LUMBERJACK: {FFFFFF}You've taken a log from the Bobcat.");
        
// done
    
}else if(!strcmp(params"takefromtree")) {
        
// taking from a cut tree
        
if(CarryingLog[playerid]) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're already carrying a log.");
        new 
id GetClosestTree(playerid);
        if(
id == -1) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're not near a tree.");
        if(
TreeData[id][treeSeconds] < 1) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}This tree isn't cut.");
        if(
TreeData[id][treeLogs] < 1) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}This tree doesn't have any logs.");
        
TreeData[id][treeLogs]--;
        
Tree_UpdateLogLabel(id);
        
        
Player_GiveLog(playerid);
        
SendClientMessage(playerid0x3498DBFF"LUMBERJACK: {FFFFFF}You've taken a log from the cut tree.");
        
// done
    
}else if(!strcmp(params"sell")) {
        
// selling a log
        
if(!CarryingLog[playerid]) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're not carrying a log.");
        if(!
IsPlayerNearALogBuyer(playerid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're not near a Log Buyer.");
        
Player_RemoveLog(playerid);
        
GivePlayerMoney(playeridLOG_PRICE);
        
        new 
string[64];
        
format(stringsizeof(string), "LUMBERJACK: {FFFFFF}Sold a log for {2ECC71}$%d."LOG_PRICE);
        
SendClientMessage(playerid0x3498DBFFstring);
        
// done
    
}
    return 
1;
}
// Admin Commands - Trees
CMD:createtree(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Only RCON admins can use this command.");
    new 
id Iter_Free(Trees);
    if(
id == -1) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Can't add any more trees.");
     new 
FloatxFloatyFloatzFloata;
     
GetPlayerPos(playeridxyz);
     
GetPlayerFacingAngle(playerida);
     
+= (3.0 floatsin(-adegrees));
    
+= (3.0 floatcos(-adegrees));
    
-= 1.0;
    
    
TreeData[id][treeX] = x;
    
TreeData[id][treeY] = y;
    
TreeData[id][treeZ] = z;
    
TreeData[id][treeRX] = TreeData[id][treeRY] = TreeData[id][treeRZ] = 0.0;
    
    
TreeData[id][treeObjID] = CreateDynamicObject(657TreeData[id][treeX], TreeData[id][treeY], TreeData[id][treeZ], TreeData[id][treeRX], TreeData[id][treeRY], TreeData[id][treeRZ]);
    new 
label[96];
    
format(labelsizeof(label), "Tree (%d)\n\n{FFFFFF}Press {F1C40F}~k~~CONVERSATION_NO~ {FFFFFF}to cut down."id);
    
TreeData[id][treeLabel] = CreateDynamic3DTextLabel(label0x2ECC71FFTreeData[id][treeX], TreeData[id][treeY], TreeData[id][treeZ] + 1.55.0);
    
Iter_Add(Treesid);
    
    
stmt_bind_value(AddTree0DB::TYPE_INTEGERid);
    
stmt_bind_value(AddTree1DB::TYPE_FLOATTreeData[id][treeX]);
    
stmt_bind_value(AddTree2DB::TYPE_FLOATTreeData[id][treeY]);
    
stmt_bind_value(AddTree3DB::TYPE_FLOATTreeData[id][treeZ]);
    
stmt_bind_value(AddTree4DB::TYPE_FLOATTreeData[id][treeRX]);
    
stmt_bind_value(AddTree5DB::TYPE_FLOATTreeData[id][treeRY]);
    
stmt_bind_value(AddTree6DB::TYPE_FLOATTreeData[id][treeRZ]);
    
    if(
stmt_execute(AddTree))
    {
        
EditingTreeID[playerid] = id;
        
EditDynamicObject(playeridTreeData[id][treeObjID]);
        
        
SendClientMessage(playerid0x3498DBFF"LUMBERJACK: {FFFFFF}Tree created.");
        
SendClientMessage(playerid0x3498DBFF"LUMBERJACK: {FFFFFF}You can edit it right now, or cancel editing and edit it some other time.");
    }
    
    return 
1;
}
CMD:edittree(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Only RCON admins can use this command.");
    if(
EditingTreeID[playerid] != -1) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're already editing a tree.");
    new 
id;
    if(
sscanf(params"i"id)) return SendClientMessage(playerid0xE88732FF"SYNTAX: {FFFFFF}/edittree [tree id]");
    if(!
Iter_Contains(Treesid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Invalid ID.");
    if(
TreeData[id][treeGettingCut]) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Can't edit specified tree because its getting cut down.");
    if(!
IsPlayerInRangeOfPoint(playerid30.0TreeData[id][treeX], TreeData[id][treeY], TreeData[id][treeZ])) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}You're not near the tree you want to edit.");
    
EditingTreeID[playerid] = id;
    
EditDynamicObject(playeridTreeData[id][treeObjID]);
    return 
1;
}
CMD:removetree(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Only RCON admins can use this command.");
    new 
id;
    if(
sscanf(params"i"id)) return SendClientMessage(playerid0xE88732FF"SYNTAX: {FFFFFF}/removetree [tree id]");
    if(!
Iter_Contains(Treesid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Invalid ID.");
    if(
TreeData[id][treeGettingCut]) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Can't remove specified tree because its getting cut down.");
    if(
Tree_BeingEdited(id)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Can't remove specified tree because its being edited.");
    
DestroyDynamicObject(TreeData[id][treeObjID]);
    
DestroyDynamic3DTextLabel(TreeData[id][treeLabel]);
    if(
TreeData[id][treeTimer] != -1KillTimer(TreeData[id][treeTimer]);
    
    
TreeData[id][treeLogs] = TreeData[id][treeSeconds] = 0;
    
TreeData[id][treeObjID] = TreeData[id][treeTimer] = -1;
    
TreeData[id][treeLabel] = Text3D: -1;
    
Iter_Remove(Treesid);
    
    
stmt_bind_value(RemoveTree0DB::TYPE_INTEGERid);
    if(
stmt_execute(RemoveTree)) SendClientMessage(playerid0x3498DBFF"LUMBERJACK: {FFFFFF}Tree removed.");
    return 
1;
}
// Admin Commands - Log Buyers
CMD:createbuyer(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Only RCON admins can use this command.");
    new 
skin;
    if(
sscanf(params"i"skin)) return SendClientMessage(playerid0xE88732FF"SYNTAX: {FFFFFF}/createbuyer [skin id]");
    if(!(
<= skin <= 311)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Invalid skin ID.");
    new 
id Iter_Free(Buyers);
    if(
id == -1) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Can't add any more log buyers.");
    
GetPlayerPos(playeridBuyerData[id][buyerX], BuyerData[id][buyerY], BuyerData[id][buyerZ]);
    
GetPlayerFacingAngle(playeridBuyerData[id][buyerA]);
    
BuyerData[id][buyerActorID] = CreateActor(skinBuyerData[id][buyerX], BuyerData[id][buyerY], BuyerData[id][buyerZ], BuyerData[id][buyerA]);
    
SetActorInvulnerable(BuyerData[id][buyerActorID], 1);
    
    new 
label[172];
    
format(labelsizeof(label), "Log Buyer (%d)\n\n{FFFFFF}Use {F1C40F}/chainsaw {FFFFFF}to buy a chainsaw for {2ECC71}$%d.\n{FFFFFF}Use {F1C40F}/log sell {FFFFFF}to sell a log for {2ECC71}$%d."idCSAW_PRICELOG_PRICE);
    
BuyerData[id][buyerLabel] = CreateDynamic3DTextLabel(label0xF1C40FFFBuyerData[id][buyerX], BuyerData[id][buyerY], BuyerData[id][buyerZ] + 0.255.0, .testlos 1);
    
Iter_Add(Buyersid);
    
    
stmt_bind_value(AddBuyer0DB::TYPE_INTEGERid);
    
stmt_bind_value(AddBuyer1DB::TYPE_INTEGERskin);
    
stmt_bind_value(AddBuyer2DB::TYPE_FLOATBuyerData[id][buyerX]);
    
stmt_bind_value(AddBuyer3DB::TYPE_FLOATBuyerData[id][buyerY]);
    
stmt_bind_value(AddBuyer4DB::TYPE_FLOATBuyerData[id][buyerZ]);
    
stmt_bind_value(AddBuyer5DB::TYPE_FLOATBuyerData[id][buyerA]);
    if(
stmt_execute(AddBuyer))
    {
        
SendClientMessage(playerid0x3498DBFF"LUMBERJACK: {FFFFFF}Buyer created.");
        
SetPlayerPos(playeridBuyerData[id][buyerX] + (1.5 floatsin(-BuyerData[id][buyerA], degrees)), BuyerData[id][buyerY] + (1.5 floatcos(-BuyerData[id][buyerA], degrees)), BuyerData[id][buyerZ]);
    }
    
    return 
1;
}
CMD:setbuyerskin(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Only RCON admins can use this command.");
    new 
idskin;
    if(
sscanf(params"ii"idskin)) return SendClientMessage(playerid0xE88732FF"SYNTAX: {FFFFFF}/setbuyerskin [buyer id] [skin id]");
    if(!
Iter_Contains(Buyersid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Invalid ID.");
    if(!(
<= skin <= 311)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Invalid skin ID.");
    
BuyerData[id][buyerSkin] = skin;
    
    
DestroyActor(BuyerData[id][buyerActorID]);
    
BuyerData[id][buyerActorID] = CreateActor(skinBuyerData[id][buyerX], BuyerData[id][buyerY], BuyerData[id][buyerZ], BuyerData[id][buyerA]);
    
SetActorInvulnerable(BuyerData[id][buyerActorID], 1);
    
    
stmt_bind_value(UpdateBuyer0DB::TYPE_INTEGERskin);
    
stmt_bind_value(UpdateBuyer1DB::TYPE_FLOATBuyerData[id][buyerX]);
    
stmt_bind_value(UpdateBuyer2DB::TYPE_FLOATBuyerData[id][buyerY]);
    
stmt_bind_value(UpdateBuyer3DB::TYPE_FLOATBuyerData[id][buyerZ]);
    
stmt_bind_value(UpdateBuyer4DB::TYPE_FLOATBuyerData[id][buyerA]);
    
stmt_bind_value(UpdateBuyer5DB::TYPE_INTEGERid);
    if(
stmt_execute(UpdateBuyer)) SendClientMessage(playerid0x3498DBFF"LUMBERJACK: {FFFFFF}Buyer updated.");
    return 
1;
}
CMD:setbuyerpos(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Only RCON admins can use this command.");
    new 
id;
    if(
sscanf(params"i"id)) return SendClientMessage(playerid0xE88732FF"SYNTAX: {FFFFFF}/setbuyerpos [buyer id]");
    if(!
Iter_Contains(Buyersid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Invalid ID.");
    
GetPlayerPos(playeridBuyerData[id][buyerX], BuyerData[id][buyerY], BuyerData[id][buyerZ]);
    
GetPlayerFacingAngle(playeridBuyerData[id][buyerA]);
    
DestroyActor(BuyerData[id][buyerActorID]);
    
BuyerData[id][buyerActorID] = CreateActor(BuyerData[id][buyerSkin], BuyerData[id][buyerX], BuyerData[id][buyerY], BuyerData[id][buyerZ], BuyerData[id][buyerA]);
    
SetActorInvulnerable(BuyerData[id][buyerActorID], 1);
    
Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABELBuyerData[id][buyerLabel], E_STREAMER_XBuyerData[id][buyerX]);
    
Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABELBuyerData[id][buyerLabel], E_STREAMER_YBuyerData[id][buyerY]);
    
Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABELBuyerData[id][buyerLabel], E_STREAMER_ZBuyerData[id][buyerZ] + 0.25);
    
stmt_bind_value(UpdateBuyer0DB::TYPE_INTEGERBuyerData[id][buyerSkin]);
    
stmt_bind_value(UpdateBuyer1DB::TYPE_FLOATBuyerData[id][buyerX]);
    
stmt_bind_value(UpdateBuyer2DB::TYPE_FLOATBuyerData[id][buyerY]);
    
stmt_bind_value(UpdateBuyer3DB::TYPE_FLOATBuyerData[id][buyerZ]);
    
stmt_bind_value(UpdateBuyer4DB::TYPE_FLOATBuyerData[id][buyerA]);
    
stmt_bind_value(UpdateBuyer5DB::TYPE_INTEGERid);
    if(
stmt_execute(UpdateBuyer))
    {
        
SendClientMessage(playerid0x3498DBFF"LUMBERJACK: {FFFFFF}Buyer updated.");
        
SetPlayerPos(playeridBuyerData[id][buyerX] + (1.5 floatsin(-BuyerData[id][buyerA], degrees)), BuyerData[id][buyerY] + (1.5 floatcos(-BuyerData[id][buyerA], degrees)), BuyerData[id][buyerZ]);
    }
    
    return 
1;
}
CMD:removebuyer(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Only RCON admins can use this command.");
    new 
id;
    if(
sscanf(params"i"id)) return SendClientMessage(playerid0xE88732FF"SYNTAX: {FFFFFF}/removebuyer [buyer id]");
    if(!
Iter_Contains(Buyersid)) return SendClientMessage(playerid0xE74C3CFF"ERROR: {FFFFFF}Invalid ID.");
    
DestroyActor(BuyerData[id][buyerActorID]);
    
DestroyDynamic3DTextLabel(BuyerData[id][buyerLabel]);
    
    
BuyerData[id][buyerActorID] = -1;
    
BuyerData[id][buyerLabel] = Text3D: -1;
    
Iter_Remove(Buyersid);
    
    
stmt_bind_value(RemoveBuyer0DB::TYPE_INTEGERid);
    if(
stmt_execute(RemoveBuyer)) SendClientMessage(playerid0x3498DBFF"LUMBERJACK: {FFFFFF}Buyer removed.");
    return 
1;

Like i'm said before, how can possible you converted that script into mysql ?

Thanks
Reply
#2

Learn MySQL, create a practice script with it, then you should be able to figure it out. It's a pretty simple process, I've made scripts in sqlite then converted to mysql or the other way around many times. You just have to know how both work.
Reply
#3

Quote:
Originally Posted by TakeiT
Посмотреть сообщение
Learn MySQL, create a practice script with it, then you should be able to figure it out. It's a pretty simple process, I've made scripts in sqlite then converted to mysql or the other way around many times. You just have to know how both work.
Yeah i'm know, but something on sqlite command like db_prepare makes me confused.
I've asking myself "what the heck this command if i converted to mysql"
And i've been searching on ******, bing, blogs, forums, etc. But nothing found command like db_prepare.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)