· 6 years ago · Jan 30, 2020, 01:26 AM
1// QuerySQL( db, "CREATE TABLE IF NOT EXISTS Inventory ( Name TEXT, Type TEXT, Health TEXT, Items TEXT )" );
2
3/*
4enum Inventory_Config
5{
6 Types =
7 {
8 1 =
9 {
10 MaxSlots = 10
11 Cost = 1500
12 Health = 300
13 }
14
15 2 =
16 {
17 MaxSlots = 15
18 Cost = 2500
19 Health = 500
20
21 }
22
23 3 =
24 {
25 MaxSlots = 20
26 Cost = 3500
27 Health = 750
28
29 }
30
31
32 4 =
33 {
34 MaxSlots = 30
35 Cost = 9000
36 Health = 1500
37
38 }
39 }
40} */
41
42Inventory <- array( GetMaxPlayers(), null );
43
44
45class Inventory_Class
46{
47 player = null
48 Type = 0
49 Current_Health = 0
50 Items = []
51
52
53 function LoadData()
54 {
55 local query = QuerySQL( db, "SELECT Type, Health, Items FROM Inventory WHERE Name = '"+ player.Name +"'" );
56
57 if ( GetSQLColumnData( query , 0 ) )
58 {
59 Type = GetSQLColumnData( query , 0 );
60 Current_Health = GetSQLColumnData( query , 1 );
61 //Uploading items:
62
63 local items = split( GetSQLColumnData( query , 2 ), "|" );
64
65 for (local i = 1; items.len() > i; i++ )
66 {
67 local item_data = split( items[i], "-");
68 Items.push(
69 {
70 Item = item_data[0]
71 Amount = item_data[1]
72 Type = item_data[2]
73 });
74 }
75 }
76
77 }
78
79 function Add(item, amount, type)
80 {
81 Items.push(
82 {
83 Item = item
84 Amount = amount
85 Type = type
86 });
87
88 SaveItems();
89 }
90
91 function SaveItems()
92 {
93 local ItemList = "";
94 for (local i = 0; Items.len() > i; i++ )
95 {
96 if ( Items[i].Item ) ItemList += "|" + Items[i].Item + "-"+ Items[i].Amount + "-"+ Items[i].Type;
97 }
98
99 ::QuerySQL( db, "UPDATE Inventory SET Items='"+ ItemList +"' WHERE Name='"+ player.Name +"'" );
100
101 //::i_msg("Updated inventory.", "Inventario atualizado.", "Inventario actualizado.", FindPlayer(player.Name));
102 ::MessagePlayer("Updated inventory.", FindPlayer(player.Name));
103 }
104
105
106
107
108 function DropItem( item )
109 {
110 switch ( item.type )
111 {
112 case "Weapon"
113 {
114 MessagePlayer( format("Weapon %s dropped.",GetWeaponName(item)),player );
115 ::CreatePickup( WeaponModelByID( item.item ), player.World, 1, Vector(player.Pos.x - 0.8, player.Pos.y - 0.8, player.Pos.z));
116 item = null;
117 SaveItems();
118 }
119 break;
120 }
121 }
122
123}
124
125
126
127 function WeaponModelByID( weaponID )
128 {
129 local model;
130
131 switch( weaponID.tointeger() )
132 {
133 case 1:
134 model = 259;
135 break;
136
137 case 2:
138 model = 260;
139 break;
140
141 case 3:
142 model = 261;
143 break;
144
145 case 4:
146 model = 262;
147 break;
148
149 case 5:
150 model = 263;
151 break;
152
153 case 6:
154 model = 264;
155 break;
156
157 case 7:
158 model = 265;
159 break;
160
161 case 8:
162 model = 266;
163 break;
164
165 case 9:
166 model = 267;
167 break;
168
169 case 10:
170 model = 268;
171 break;
172
173 case 11:
174 model = 269;
175 break;
176
177 case 12:
178 model = 270;
179 break;
180
181 case 13:
182 model = 291;
183 break;
184
185 case 14:
186 model = 271;
187 break;
188
189 case 15:
190 model = 272;
191 break;
192
193 case 16:
194 model = 273;
195 break;
196
197 case 17:
198 model = 274;
199 break;
200
201 case 18:
202 model = 275;
203 break;
204
205 case 19:
206 model = 277;
207 break;
208
209 case 20:
210 model = 278;
211 break;
212
213 case 21:
214 model = 279;
215 break;
216
217 case 22:
218 model = 281;
219 break;
220
221 case 23:
222 model = 282;
223 break;
224
225 case 24:
226 model = 283;
227 break;
228
229 case 25:
230 model = 284;
231 break;
232
233 case 26:
234 model = 280;
235 break;
236
237 case 27:
238 model = 276;
239 break;
240
241 case 28:
242 model = 285;
243 break;
244
245 case 29:
246 model = 286;
247 break;
248
249 case 30:
250 model = 287;
251 break;
252
253 case 31:
254 model = 288;
255 break;
256
257 case 32:
258 model = 289;
259 break;
260
261 case 33:
262 model = 290;
263 break;
264 }
265 return model;
266 }