· 6 years ago · Apr 10, 2019, 11:56 AM
1public OnFilterScriptInit()
2{
3 for(new i; i < MAX_PLANTS; i++)
4 {
5 PlantData[i][plantObj] = PlantData[i][plantTimer] = -1;
6 PlantData[i][plantLabel] = Text3D: -1;
7 }
8
9 for(new i; i < MAX_DEALERS; i++)
10 {
11 DealerData[i][dealerActorID] = -1;
12 DealerData[i][dealerLabel] = Text3D: -1;
13 }
14
15 // database
16 DrugDB = db_open("drugs.db");
17 db_query(DrugDB, "CREATE TABLE IF NOT EXISTS playerdrugs (Name TEXT, Drugs INTEGER, Seeds INTEGER, TotalUsed INTEGER, TotalPlanted INTEGER, TotalHarvestedPlants INTEGER, TotalHarvestedGrams INTEGER, TotalGiven INTEGER, TotalReceived INTEGER, TotalBought INTEGER, TotalBoughtPrice INTEGER, TotalSold INTEGER, TotalSoldPrice INTEGER)");
18 db_query(DrugDB, "CREATE TABLE IF NOT EXISTS dealers (ID INTEGER, Skin INTEGER, Drugs INTEGER, PosX FLOAT, PosY FLOAT, PosZ FLOAT, PosA FLOAT)");
19
20 // prepare player queries
21 LoadPlayer = db_prepare(DrugDB, "SELECT Drugs, Seeds, TotalUsed, TotalPlanted, TotalHarvestedPlants, TotalHarvestedGrams, TotalGiven, TotalReceived, TotalBought, TotalBoughtPrice, TotalSold, TotalSoldPrice FROM playerdrugs WHERE Name=?");
22 InsertPlayer = db_prepare(DrugDB, "INSERT INTO playerdrugs (Name) VALUES (?)");
23 SavePlayer = db_prepare(DrugDB, "UPDATE playerdrugs SET Drugs=?, Seeds=?, TotalUsed=?, TotalPlanted=?, TotalHarvestedPlants=?, TotalHarvestedGrams=?, TotalGiven=?, TotalReceived=?, TotalBought=?, TotalBoughtPrice=?, TotalSold=?, TotalSoldPrice=? WHERE Name=?");
24
25 // prepare dealer queries
26 LoadDealers = db_prepare(DrugDB, "SELECT * FROM dealers");
27 AddDealer = db_prepare(DrugDB, "INSERT INTO dealers (ID, Skin, PosX, PosY, PosZ, PosA) VALUES (?, ?, ?, ?, ?, ?)");
28 UpdateDealer = db_prepare(DrugDB, "UPDATE dealers SET Skin=?, PosX=?, PosY=?, PosZ=?, PosA=? WHERE ID=?");
29 UpdateDealerDrugs = db_prepare(DrugDB, "UPDATE dealers SET Drugs=? WHERE ID=?");
30 RemoveDealer = db_prepare(DrugDB, "DELETE FROM dealers WHERE ID=?");
31
32 // initialize connected players
33 foreach(new i : Player) Player_Init(i);
34
35 // load dealers
36 new id, skin, drugs, Float: pos[4];
37 stmt_bind_result_field(LoadDealers, 0, DB::TYPE_INTEGER, id);
38 stmt_bind_result_field(LoadDealers, 1, DB::TYPE_INTEGER, skin);
39 stmt_bind_result_field(LoadDealers, 2, DB::TYPE_INTEGER, drugs);
40 stmt_bind_result_field(LoadDealers, 3, DB::TYPE_FLOAT, pos[0]);
41 stmt_bind_result_field(LoadDealers, 4, DB::TYPE_FLOAT, pos[1]);
42 stmt_bind_result_field(LoadDealers, 5, DB::TYPE_FLOAT, pos[2]);
43 stmt_bind_result_field(LoadDealers, 6, DB::TYPE_FLOAT, pos[3]);
44
45 if(stmt_execute(LoadDealers))
46 {
47 new label[128];
48 while(stmt_fetch_row(LoadDealers))
49 {
50 DealerData[id][dealerSkin] = skin;
51 DealerData[id][dealerDrugs] = drugs;
52 DealerData[id][dealerX] = pos[0];
53 DealerData[id][dealerY] = pos[1];
54 DealerData[id][dealerZ] = pos[2];
55 DealerData[id][dealerA] = pos[3];
56
57 DealerData[id][dealerActorID] = CreateActor(DealerData[id][dealerSkin], DealerData[id][dealerX], DealerData[id][dealerY], DealerData[id][dealerZ], DealerData[id][dealerA]);
58 SetActorInvulnerable(DealerData[id][dealerActorID], 1);
59
60 format(label, sizeof(label), "Drug Dealer (%d)\n\n{FFFFFF}Use {F1C40F}/dealer {FFFFFF}to open dealer menu.", id);
61 DealerData[id][dealerLabel] = CreateDynamic3DTextLabel(label, 0xF1C40FFF, DealerData[id][dealerX], DealerData[id][dealerY], DealerData[id][dealerZ] + 0.25, 5.0, .testlos = 1);
62
63 Iter_Add(Dealers, id);
64 }
65 }
66
67 return 1;
68}
69
70public OnFilterScriptExit()
71{
72 foreach(new i : Player) Player_SaveDrugs(i);
73 foreach(new i : Dealers) DestroyActor(DealerData[i][dealerActorID]);
74
75 db_close(DrugDB);
76 return 1;
77}