Compiling Help
#1

Hello i downloaded https://sampforum.blast.hk/showthread.php?tid=608851 script but when i compile it says pawn librabry not responding error. i try to find a missing bracket but i dont find it can you find any missing bracket or may be something i am doing wrong?

PS: i downloaded all those .inc listed in thread so there is no chance its because of old includes..
Reply
#2

Bump..Bump...Bump... please help me??
Reply
#3

Did you edit any of the script before you tried compiling it?
Reply
#4

No i did not edit any thing. the file was .pwn so when i downloaded, first i tried to compile it so that i can try it on my server. also, i downloaded some of his other script too that is giving me same problem..

Thanks for replying..
Reply
#5

Show the code you're trying to compile? We can't magically guess your code.
Reply
#6

Quote:
Originally Posted by Sithis
Посмотреть сообщение
Show the code you're trying to compile? We can't magically guess your code.
I give the link to FS i was trying to complie in my first post.
but still, here is the code:
PHP код:
#define     FILTERSCRIPT
#include     <a_samp>
#include    <evf>           // by Emmet_ - https://sampforum.blast.hk/showthread.ph...9.79428098
#include    <izcmd>         // by Yashas - https://sampforum.blast.hk/showthread.ph...9.79428098
#include    <progress2>     // by [HLF]Southclaw - https://sampforum.blast.hk/showthread.ph...9.79428098
#include    <sqlitei>       // by Slice - https://sampforum.blast.hk/showthread.ph...9.79428098
#include    <sscanf2>       // by ****** - https://sampforum.blast.hk/showthread.ph...9.79428098
#include    <streamer>      // by Incognito - https://sampforum.blast.hk/showthread.ph...9.79428098
#include    <YSI\y_iterate> // by ****** - https://sampforum.blast.hk/showthread.ph...9.79428098
#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...9.79428098
    
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_Count(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;

when i compile this, my Pawn Library stops working. also i downloaded rootcause's other script (GVM ) that script is giving me same error. alsowhen i dont use Sqlitei inc and use MySQL, Pawn Compile Library does not crash. but gives me error that sqlite functions are unknown. is ther problem with sqlitei include?
Reply
#7

Help me please... i really need help
Reply
#8

I need help also...
Reply
#9

Change everything over to mysql instead of sqlite then haha but have to tried downloading a different sqlite.Inc file? And what you need help with Alex maybe you should start a thread and state your problem...
Reply
#10

But i am not good in mysql. can you convert if for me? or can you compile and them post its .amx here please?

also, if you have anyother link then given in that thread, please give me or you can uploda your squlite.inc file?

Thanks in advance.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)