Refactor code, [III | VC]add new peds, cars, wepons from menu
This commit is contained in:
parent
4b9ab8890c
commit
088f84a981
File diff suppressed because it is too large
Load Diff
@ -6,305 +6,308 @@
|
||||
# stat_id = "name"
|
||||
##############################################################################
|
||||
|
||||
[Misc]
|
||||
44 = "Longest treadmill time"
|
||||
45 = "Longest exercise bike time"
|
||||
46 = "Heaviest weight on bench press"
|
||||
47 = "Heaviest weight on dumbbells"
|
||||
48 = "Best time in 8-Track"
|
||||
50 = "Lightest weight"
|
||||
51 = "Longest chase time with 5 or more stars"
|
||||
52 = "Last chase time with 5 or more stars"
|
||||
63 = "Time spent underwater"
|
||||
64 = "Total respect"
|
||||
66 = "Clothes respect"
|
||||
67 = "Fitness respect"
|
||||
68 = "Respect"
|
||||
80 = "Appearance"
|
||||
81 = "Gambling"
|
||||
120 = "People wasted by others"
|
||||
121 = "People you've wasted"
|
||||
131 = "Total number of wanted stars attained"
|
||||
132 = "Total number of wanted stars evaded"
|
||||
133 = "Times busted"
|
||||
134 = "Days passed in game"
|
||||
135 = "Number of hospital visits"
|
||||
136 = "Safehouse visits"
|
||||
137 = "Times cheated"
|
||||
156 = "Last dance score"
|
||||
163 = "Recruited gang members killed"
|
||||
166 = "Photographs Taken"
|
||||
167 = "Rampages attempted"
|
||||
168 = "Rampages passed"
|
||||
169 = "Flight time"
|
||||
170 = "Times drowned"
|
||||
172 = "Best position in 8-Track"
|
||||
173 = "Time on jetpack"
|
||||
174 = "Shooting range levels passed"
|
||||
175 = "Most cars parked on 'Valet Parking'"
|
||||
176 = "Kills since last checkpoint"
|
||||
177 = "Total legitimate kills"
|
||||
178 = "Number of 'Bloodring' kills"
|
||||
179 = "Total time in bloodring"
|
||||
180 = "No more hurricanes Flag"
|
||||
181 = "City unlocked"
|
||||
182 = "Number of Police bribes"
|
||||
183 = "Number of cars stolen"
|
||||
185 = "Number of disastrous dates"
|
||||
188 = "Number of successful dates"
|
||||
190 = "Number of prostitutes visited"
|
||||
191 = "Number of houses burgled"
|
||||
192 = "Number of safes cracked"
|
||||
193 = "Burgular status"
|
||||
194 = "Number of stolen items sold"
|
||||
195 = "Number of eight balls in pool"
|
||||
196 = "Total number of wins playing pool"
|
||||
197 = "Total number of losses playing pool"
|
||||
198 = "Times visited the gym"
|
||||
200 = "Number of meals eaten"
|
||||
203 = "Number of furniture purchased"
|
||||
204 = "Favorite console game"
|
||||
205 = "Highest civilian peds killed on Rampage"
|
||||
206 = "Highest police peds killed on Rampage"
|
||||
207 = "Highest civilian vehicles destroyed on Rampage"
|
||||
208 = "Highest police vehicles destroyed on Rampage"
|
||||
209 = "Highest number of tanks destroyed on Rampage"
|
||||
210 = "Pimping level"
|
||||
211 = "Kickstart best score"
|
||||
212 = "Best lap time in 8-Track"
|
||||
213 = "Number of vehicles exported"
|
||||
214 = "Number of vehicles imported"
|
||||
215 = "Highest basketball score"
|
||||
216 = "Fires started"
|
||||
217 = "Amount of drugs sold"
|
||||
218 = "Amount of drugs bought"
|
||||
225 = "Lung capacity"
|
||||
226 = "Game gore rating"
|
||||
227 = "Game sex rating"
|
||||
231 = "Snapshots taken"
|
||||
232 = "Total snapshots"
|
||||
233 = "Luck"
|
||||
234 = "Territories taken over"
|
||||
235 = "Territories lost"
|
||||
236 = "Territories held"
|
||||
237 = "Highest number of territories held"
|
||||
238 = "Gang members recruited"
|
||||
239 = "Enemy gang members killed"
|
||||
240 = "Friendly gang members killed"
|
||||
241 = "Horseshoes collected"
|
||||
242 = "Total horseshoes"
|
||||
243 = "Oysters collected"
|
||||
244 = "Total oysters"
|
||||
245 = "Calories"
|
||||
251 = "'Keepie Uppy' best time"
|
||||
320 = "Playing time"
|
||||
321 = "Hidden Packages found"
|
||||
322 = "Tags sprayed"
|
||||
323 = "Least favorite gang"
|
||||
324 = "Gang members wasted"
|
||||
325 = "Criminals wasted"
|
||||
326 = "Most Favorite Radio Station"
|
||||
327 = "Least Favorite Radio Station"
|
||||
330 = "Pilot ranking"
|
||||
331 = "Strongest Gang"
|
||||
332 = "2nd strongest gang"
|
||||
333 = "3rd strongest gang"
|
||||
334 = "Money lost gambling"
|
||||
336 = "Gang strength"
|
||||
[Favourites]
|
||||
|
||||
[Girls]
|
||||
32 = "Girlfriend budget"
|
||||
65 = "Girlfriend respect"
|
||||
171 = "Number of girls pimped"
|
||||
184 = "Current number of girlfriends"
|
||||
186 = "Number of girls dated"
|
||||
187 = "Number of times scored with a girl"
|
||||
189 = "Number of girls dumped"
|
||||
252 = "Progress with Denise"
|
||||
253 = "Progress with Michelle"
|
||||
254 = "Progress with Helena"
|
||||
255 = "Progress with Barbara"
|
||||
256 = "Progress with Katie"
|
||||
257 = "Progress with Millie"
|
||||
'Current number of girlfriends' = '184'
|
||||
'Girlfriend budget' = '32'
|
||||
'Girlfriend respect' = '65'
|
||||
'Number of girls dated' = '186'
|
||||
'Number of girls dumped' = '189'
|
||||
'Number of girls pimped' = '171'
|
||||
'Number of times scored with a girl' = '187'
|
||||
'Progress with Barbara' = '255'
|
||||
'Progress with Denise' = '252'
|
||||
'Progress with Helena' = '254'
|
||||
'Progress with Katie' = '256'
|
||||
'Progress with Michelle' = '253'
|
||||
'Progress with Millie' = '257'
|
||||
|
||||
[Misc]
|
||||
"'Keepie Uppy' best time" = '251'
|
||||
'2nd strongest gang' = '332'
|
||||
'3rd strongest gang' = '333'
|
||||
'Amount of drugs bought' = '218'
|
||||
'Amount of drugs sold' = '217'
|
||||
Appearance = '80'
|
||||
'Best lap time in 8-Track' = '212'
|
||||
'Best position in 8-Track' = '172'
|
||||
'Best time in 8-Track' = '48'
|
||||
'Burgular status' = '193'
|
||||
Calories = '245'
|
||||
'City unlocked' = '181'
|
||||
'Clothes respect' = '66'
|
||||
'Criminals wasted' = '325'
|
||||
'Days passed in game' = '134'
|
||||
'Enemy gang members killed' = '239'
|
||||
'Favorite console game' = '204'
|
||||
'Fires started' = '216'
|
||||
'Fitness respect' = '67'
|
||||
'Flight time' = '169'
|
||||
'Friendly gang members killed' = '240'
|
||||
Gambling = '81'
|
||||
'Game gore rating' = '226'
|
||||
'Game sex rating' = '227'
|
||||
'Gang members recruited' = '238'
|
||||
'Gang members wasted' = '324'
|
||||
'Gang strength' = '336'
|
||||
'Heaviest weight on bench press' = '46'
|
||||
'Heaviest weight on dumbbells' = '47'
|
||||
'Hidden Packages found' = '321'
|
||||
'Highest basketball score' = '215'
|
||||
'Highest civilian peds killed on Rampage' = '205'
|
||||
'Highest civilian vehicles destroyed on Rampage' = '207'
|
||||
'Highest number of tanks destroyed on Rampage' = '209'
|
||||
'Highest number of territories held' = '237'
|
||||
'Highest police peds killed on Rampage' = '206'
|
||||
'Highest police vehicles destroyed on Rampage' = '208'
|
||||
'Horseshoes collected' = '241'
|
||||
'Kickstart best score' = '211'
|
||||
'Kills since last checkpoint' = '176'
|
||||
'Last chase time with 5 or more stars' = '52'
|
||||
'Last dance score' = '156'
|
||||
'Least Favorite Radio Station' = '327'
|
||||
'Least favorite gang' = '323'
|
||||
'Lightest weight' = '50'
|
||||
'Longest chase time with 5 or more stars' = '51'
|
||||
'Longest exercise bike time' = '45'
|
||||
'Longest treadmill time' = '44'
|
||||
Luck = '233'
|
||||
'Lung capacity' = '225'
|
||||
'Money lost gambling' = '334'
|
||||
'Most Favorite Radio Station' = '326'
|
||||
"Most cars parked on 'Valet Parking'" = '175'
|
||||
'No more hurricanes Flag' = '180'
|
||||
"Number of 'Bloodring' kills" = '178'
|
||||
'Number of Police bribes' = '182'
|
||||
'Number of cars stolen' = '183'
|
||||
'Number of disastrous dates' = '185'
|
||||
'Number of eight balls in pool' = '195'
|
||||
'Number of furniture purchased' = '203'
|
||||
'Number of hospital visits' = '135'
|
||||
'Number of houses burgled' = '191'
|
||||
'Number of meals eaten' = '200'
|
||||
'Number of prostitutes visited' = '190'
|
||||
'Number of safes cracked' = '192'
|
||||
'Number of stolen items sold' = '194'
|
||||
'Number of successful dates' = '188'
|
||||
'Number of vehicles exported' = '213'
|
||||
'Number of vehicles imported' = '214'
|
||||
'Oysters collected' = '243'
|
||||
'People wasted by others' = '120'
|
||||
"People you've wasted" = '121'
|
||||
'Photographs Taken' = '166'
|
||||
'Pilot ranking' = '330'
|
||||
'Pimping level' = '210'
|
||||
'Playing time' = '320'
|
||||
'Rampages attempted' = '167'
|
||||
'Rampages passed' = '168'
|
||||
'Recruited gang members killed' = '163'
|
||||
Respect = '68'
|
||||
'Safehouse visits' = '136'
|
||||
'Shooting range levels passed' = '174'
|
||||
'Snapshots taken' = '231'
|
||||
'Strongest Gang' = '331'
|
||||
'Tags sprayed' = '322'
|
||||
'Territories held' = '236'
|
||||
'Territories lost' = '235'
|
||||
'Territories taken over' = '234'
|
||||
'Time on jetpack' = '173'
|
||||
'Time spent underwater' = '63'
|
||||
'Times busted' = '133'
|
||||
'Times cheated' = '137'
|
||||
'Times drowned' = '170'
|
||||
'Times visited the gym' = '198'
|
||||
'Total horseshoes' = '242'
|
||||
'Total legitimate kills' = '177'
|
||||
'Total number of losses playing pool' = '197'
|
||||
'Total number of wanted stars attained' = '131'
|
||||
'Total number of wanted stars evaded' = '132'
|
||||
'Total number of wins playing pool' = '196'
|
||||
'Total oysters' = '244'
|
||||
'Total respect' = '64'
|
||||
'Total snapshots' = '232'
|
||||
'Total time in bloodring' = '179'
|
||||
|
||||
[Missions]
|
||||
0 = "Progress made"
|
||||
1 = "Total progress"
|
||||
58 = "Time spent on longest mission"
|
||||
59 = "Time spent on quickest mission"
|
||||
60 = "Average mission time"
|
||||
146 = "Mission attempts"
|
||||
147 = "Missions passed"
|
||||
148 = "Total number of missions in game"
|
||||
152 = "Criminals killed on Vigilante Mission"
|
||||
157 = "Highest Vigilante Mission level"
|
||||
158 = "Highest Paramedic Mission level"
|
||||
159 = "Highest Firefighter Mission level"
|
||||
161 = "Number of Truck missions passed"
|
||||
201 = "Money made in Quarry"
|
||||
202 = "Time taken to Complete Quarry"
|
||||
224 = "Respect Mission"
|
||||
228 = "Respect Mission Total"
|
||||
258 = "Best position in Lowrider Race"
|
||||
259 = "Best time in Lowrider Race"
|
||||
260 = "Best position in Little Loop"
|
||||
261 = "Best time in Little Loop"
|
||||
262 = "Best position in Backroad Wanderer"
|
||||
263 = "Best time in Backroad Wanderer"
|
||||
264 = "Best position in City Circuit"
|
||||
265 = "Best time in City Circuit"
|
||||
266 = "Best position in Vinewood"
|
||||
267 = "Best time in Vinewood"
|
||||
268 = "Best position in Freeway"
|
||||
269 = "Best time in Freeway"
|
||||
270 = "Best position in Into the Country"
|
||||
271 = "Best time in Into the Country"
|
||||
272 = "Best position in Badlands A"
|
||||
273 = "Best time in Badlands A"
|
||||
274 = "Best position in Badlands B"
|
||||
275 = "Best time in Badlands B"
|
||||
276 = "Best position in Dirtbike Danger"
|
||||
277 = "Best time in Dirtbike Danger"
|
||||
278 = "Best position in Bandito County"
|
||||
279 = "Best time in Bandito County"
|
||||
280 = "Best position in Go-Go-Kart"
|
||||
281 = "Best time in Go-Go-Kart"
|
||||
282 = "Best position in San Fierro Fastlane"
|
||||
283 = "Best time in San Fierro Fastlane"
|
||||
284 = "Best position in San Fierro Hills"
|
||||
285 = "Best time in San Fierro Hills"
|
||||
286 = "Best position in Country Endurance"
|
||||
287 = "Best time in Country Endurance"
|
||||
288 = "Best position in SF to LV"
|
||||
289 = "Best time in SF to LV"
|
||||
290 = "Best position in Dam Rider"
|
||||
291 = "Best time in Dam Rider"
|
||||
292 = "Best position in Desert Tricks"
|
||||
293 = "Best time in Desert Tricks"
|
||||
294 = "Best position in LV Ringroad"
|
||||
295 = "Best time in LV Ringroad"
|
||||
296 = "Best time in World War Aces"
|
||||
297 = "Best time in Barnstorming"
|
||||
298 = "Best time in Military Service"
|
||||
299 = "Best time in Chopper Checkpoint"
|
||||
300 = "Best time in Whirly Bird Waypoint"
|
||||
301 = "Best time in Heli Hell"
|
||||
302 = "Drive-thru mission accomplished"
|
||||
303 = "Management Issues mission accomplished"
|
||||
304 = "555 WE TIP mission accomplished"
|
||||
305 = "Yay Ka-Boom-Boom mission accomplished"
|
||||
306 = "Fish in a Barrel mission accomplished"
|
||||
307 = "Breaking the Bank at Caligula's mission accomplished"
|
||||
308 = "A Home In The Hills mission accomplished"
|
||||
309 = "maybe set riot mode"
|
||||
310 = "Ryder's mission Robbing Uncle Sam accomplished"
|
||||
311 = "Mike Toreno mission accomplished"
|
||||
312 = "Architectural Espionage mission accomplished"
|
||||
313 = "Jizzy mission accomplished"
|
||||
314 = "Reuniting the Families mission accomplished"
|
||||
315 = "Small Town Bank mission accomplished"
|
||||
316 = "Photo Opportunity mission accomplished"
|
||||
317 = "Don Peyote mission accomplished"
|
||||
318 = "Local Liquor Store mission accomplished"
|
||||
319 = "Badlands mission accomplished"
|
||||
335 = "Riot Mission accomplished"
|
||||
337 = "Territory under control"
|
||||
338 = "Are you going to San Fierro? mission accomplished"
|
||||
339 = "High Noon mission accomplished"
|
||||
340 = "The Green Sabre mission accomplished"
|
||||
341 = "maybe Catalina meeting"
|
||||
342 = "maybe Wu Zi meeting"
|
||||
'555 WE TIP mission accomplished' = '304'
|
||||
'A Home In The Hills mission accomplished' = '308'
|
||||
'Architectural Espionage mission accomplished' = '312'
|
||||
'Are you going to San Fierro? mission accomplished' = '338'
|
||||
'Average mission time' = '60'
|
||||
'Badlands mission accomplished' = '319'
|
||||
'Best position in Backroad Wanderer' = '262'
|
||||
'Best position in Badlands A' = '272'
|
||||
'Best position in Badlands B' = '274'
|
||||
'Best position in Bandito County' = '278'
|
||||
'Best position in City Circuit' = '264'
|
||||
'Best position in Country Endurance' = '286'
|
||||
'Best position in Dam Rider' = '290'
|
||||
'Best position in Desert Tricks' = '292'
|
||||
'Best position in Dirtbike Danger' = '276'
|
||||
'Best position in Freeway' = '268'
|
||||
'Best position in Go-Go-Kart' = '280'
|
||||
'Best position in Into the Country' = '270'
|
||||
'Best position in LV Ringroad' = '294'
|
||||
'Best position in Little Loop' = '260'
|
||||
'Best position in Lowrider Race' = '258'
|
||||
'Best position in SF to LV' = '288'
|
||||
'Best position in San Fierro Fastlane' = '282'
|
||||
'Best position in San Fierro Hills' = '284'
|
||||
'Best position in Vinewood' = '266'
|
||||
'Best time in Backroad Wanderer' = '263'
|
||||
'Best time in Badlands A' = '273'
|
||||
'Best time in Badlands B' = '275'
|
||||
'Best time in Bandito County' = '279'
|
||||
'Best time in Barnstorming' = '297'
|
||||
'Best time in Chopper Checkpoint' = '299'
|
||||
'Best time in City Circuit' = '265'
|
||||
'Best time in Country Endurance' = '287'
|
||||
'Best time in Dam Rider' = '291'
|
||||
'Best time in Desert Tricks' = '293'
|
||||
'Best time in Dirtbike Danger' = '277'
|
||||
'Best time in Freeway' = '269'
|
||||
'Best time in Go-Go-Kart' = '281'
|
||||
'Best time in Heli Hell' = '301'
|
||||
'Best time in Into the Country' = '271'
|
||||
'Best time in LV Ringroad' = '295'
|
||||
'Best time in Little Loop' = '261'
|
||||
'Best time in Lowrider Race' = '259'
|
||||
'Best time in Military Service' = '298'
|
||||
'Best time in SF to LV' = '289'
|
||||
'Best time in San Fierro Fastlane' = '283'
|
||||
'Best time in San Fierro Hills' = '285'
|
||||
'Best time in Vinewood' = '267'
|
||||
'Best time in Whirly Bird Waypoint' = '300'
|
||||
'Best time in World War Aces' = '296'
|
||||
"Breaking the Bank at Caligula's mission accomplished" = '307'
|
||||
'Criminals killed on Vigilante Mission' = '152'
|
||||
'Don Peyote mission accomplished' = '317'
|
||||
'Drive-thru mission accomplished' = '302'
|
||||
'Fish in a Barrel mission accomplished' = '306'
|
||||
'High Noon mission accomplished' = '339'
|
||||
'Highest Firefighter Mission level' = '159'
|
||||
'Highest Paramedic Mission level' = '158'
|
||||
'Highest Vigilante Mission level' = '157'
|
||||
'Jizzy mission accomplished' = '313'
|
||||
'Local Liquor Store mission accomplished' = '318'
|
||||
'Management Issues mission accomplished' = '303'
|
||||
'Mike Toreno mission accomplished' = '311'
|
||||
'Mission attempts' = '146'
|
||||
'Missions passed' = '147'
|
||||
'Money made in Quarry' = '201'
|
||||
'Number of Truck missions passed' = '161'
|
||||
'Photo Opportunity mission accomplished' = '316'
|
||||
'Progress made' = '0'
|
||||
'Respect Mission' = '224'
|
||||
'Respect Mission Total' = '228'
|
||||
'Reuniting the Families mission accomplished' = '314'
|
||||
'Riot Mission accomplished' = '335'
|
||||
"Ryder's mission Robbing Uncle Sam accomplished" = '310'
|
||||
'Small Town Bank mission accomplished' = '315'
|
||||
'Territory under control' = '337'
|
||||
'The Green Sabre mission accomplished' = '340'
|
||||
'Time spent on longest mission' = '58'
|
||||
'Time spent on quickest mission' = '59'
|
||||
'Time taken to Complete Quarry' = '202'
|
||||
'Total number of missions in game' = '148'
|
||||
'Total progress' = '1'
|
||||
'Yay Ka-Boom-Boom mission accomplished' = '305'
|
||||
'maybe Catalina meeting' = '341'
|
||||
'maybe Wu Zi meeting' = '342'
|
||||
'maybe set riot mode' = '309'
|
||||
|
||||
[Money]
|
||||
14 = "Fashion Budget"
|
||||
15 = "Property Budget"
|
||||
20 = "Food Budget"
|
||||
30 = "Tattoo budget"
|
||||
31 = "Hairdressing budget"
|
||||
33 = "Prostitute budget"
|
||||
34 = "Furniture budget"
|
||||
35 = "Money spent gambling"
|
||||
36 = "Money made from pimping"
|
||||
37 = "Money won gambling"
|
||||
38 = "Biggest gambling win"
|
||||
39 = "Biggest gambling loss"
|
||||
40 = "Largest burglary swag"
|
||||
41 = "Money made from burglary"
|
||||
42 = "Money spent building property"
|
||||
53 = "Wage bill"
|
||||
54 = "Strip club budget"
|
||||
56 = "Time spent shopping"
|
||||
57 = "Time spent gambling"
|
||||
61 = "Drugs budget"
|
||||
62 = "Total shopping budget"
|
||||
'Biggest gambling loss' = '39'
|
||||
'Biggest gambling win' = '38'
|
||||
'Drugs budget' = '61'
|
||||
'Fashion Budget' = '14'
|
||||
'Food Budget' = '20'
|
||||
'Furniture budget' = '34'
|
||||
'Hairdressing budget' = '31'
|
||||
'Largest burglary swag' = '40'
|
||||
'Money made from burglary' = '41'
|
||||
'Money made from pimping' = '36'
|
||||
'Money spent building property' = '42'
|
||||
'Money spent gambling' = '35'
|
||||
'Money won gambling' = '37'
|
||||
'Property Budget' = '15'
|
||||
'Prostitute budget' = '33'
|
||||
'Strip club budget' = '54'
|
||||
'Tattoo budget' = '30'
|
||||
'Time spent gambling' = '57'
|
||||
'Time spent shopping' = '56'
|
||||
'Total shopping budget' = '62'
|
||||
'Wage bill' = '53'
|
||||
|
||||
[Vehicle]
|
||||
2 = "Furthest Hoop"
|
||||
3 = "Distance travelled on foot"
|
||||
4 = "Distance travelled by car"
|
||||
5 = "Distance travelled by motorbike"
|
||||
6 = "Distance travelled by boat"
|
||||
7 = "Distance travelled by golf cart"
|
||||
8 = "Distance travelled by helicopter"
|
||||
9 = "Distance travelled by plane"
|
||||
10 = "Longest Wheelie distance"
|
||||
11 = "Longest Stoppie distance"
|
||||
12 = "Longest 2 wheels distance"
|
||||
16 = "Auto Repair and Painting Budget"
|
||||
17 = "Longest Wheelie time"
|
||||
18 = "Longest Stoppie time"
|
||||
19 = "Longest 2 wheels time"
|
||||
26 = "Distance travelled by swimming"
|
||||
27 = "Distance travelled by bicycle"
|
||||
28 = "Distance travelled on treadmill"
|
||||
29 = "Distance travelled on exercise bike"
|
||||
49 = "BMX best time"
|
||||
55 = "Car modification budget"
|
||||
122 = "Road Vehicles destroyed"
|
||||
123 = "Boats destroyed"
|
||||
124 = "Planes & Helicopters destroyed"
|
||||
125 = "Cost of property damaged"
|
||||
138 = "Vehicle Resprays"
|
||||
139 = "Maximum INSANE Jump distance"
|
||||
140 = "Maximum INSANE Jump height"
|
||||
141 = "Maximum INSANE Jump flips"
|
||||
142 = "Maximum INSANE Jump rotation"
|
||||
143 = "Best INSANE stunt awarded"
|
||||
144 = "Unique Jumps found"
|
||||
145 = "Unique Jumps done"
|
||||
149 = "Cash made in a Taxi"
|
||||
150 = "Passengers dropped off"
|
||||
151 = "People saved in an Ambulance"
|
||||
153 = "Total fires extinguished"
|
||||
154 = "Packages Delivered"
|
||||
155 = "Assassinations"
|
||||
160 = "Driving skill"
|
||||
162 = "Money made in Truck"
|
||||
219 = "Best lap time in dirt track"
|
||||
220 = "Best time in dirt track"
|
||||
221 = "Best position in dirt track"
|
||||
222 = "NRG-500 best time"
|
||||
223 = "Flying skill"
|
||||
229 = "Bike skill"
|
||||
230 = "Cycling skill"
|
||||
Assassinations = '155'
|
||||
'Auto Repair and Painting Budget' = '16'
|
||||
'BMX best time' = '49'
|
||||
'Best INSANE stunt awarded' = '143'
|
||||
'Best lap time in dirt track' = '219'
|
||||
'Best position in dirt track' = '221'
|
||||
'Best time in dirt track' = '220'
|
||||
'Bike skill' = '229'
|
||||
'Boats destroyed' = '123'
|
||||
'Car modification budget' = '55'
|
||||
'Cash made in a Taxi' = '149'
|
||||
'Cost of property damaged' = '125'
|
||||
'Cycling skill' = '230'
|
||||
'Distance travelled by bicycle' = '27'
|
||||
'Distance travelled by boat' = '6'
|
||||
'Distance travelled by car' = '4'
|
||||
'Distance travelled by golf cart' = '7'
|
||||
'Distance travelled by helicopter' = '8'
|
||||
'Distance travelled by motorbike' = '5'
|
||||
'Distance travelled by plane' = '9'
|
||||
'Distance travelled by swimming' = '26'
|
||||
'Distance travelled on exercise bike' = '29'
|
||||
'Distance travelled on foot' = '3'
|
||||
'Distance travelled on treadmill' = '28'
|
||||
'Driving skill' = '160'
|
||||
'Flying skill' = '223'
|
||||
'Furthest Hoop' = '2'
|
||||
'Longest 2 wheels distance' = '12'
|
||||
'Longest 2 wheels time' = '19'
|
||||
'Longest Stoppie distance' = '11'
|
||||
'Longest Stoppie time' = '18'
|
||||
'Longest Wheelie distance' = '10'
|
||||
'Longest Wheelie time' = '17'
|
||||
'Maximum INSANE Jump distance' = '139'
|
||||
'Maximum INSANE Jump flips' = '141'
|
||||
'Maximum INSANE Jump height' = '140'
|
||||
'Maximum INSANE Jump rotation' = '142'
|
||||
'Money made in Truck' = '162'
|
||||
'NRG-500 best time' = '222'
|
||||
'Packages Delivered' = '154'
|
||||
'Passengers dropped off' = '150'
|
||||
'People saved in an Ambulance' = '151'
|
||||
'Planes & Helicopters destroyed' = '124'
|
||||
'Road Vehicles destroyed' = '122'
|
||||
'Total fires extinguished' = '153'
|
||||
'Unique Jumps done' = '145'
|
||||
'Unique Jumps found' = '144'
|
||||
'Vehicle Resprays' = '138'
|
||||
|
||||
[Weapons]
|
||||
13 = "Weapon Budget"
|
||||
69 = "Pistol Skill"
|
||||
70 = "Silenced Pistol Skill"
|
||||
71 = "Desert Eagle Skill"
|
||||
72 = "Shotgun Skill"
|
||||
73 = "Sawn-Off Shotgun Skill"
|
||||
74 = "Combat Shotgun Skill"
|
||||
75 = "Machine Pistol Skill"
|
||||
76 = "SMG Skill"
|
||||
77 = "AK-47 Skill"
|
||||
78 = "M4 Skill"
|
||||
79 = "Rifle Skill"
|
||||
126 = "Bullets fired"
|
||||
127 = "Kgs of explosives used"
|
||||
128 = "Bullets that hit"
|
||||
129 = "Tires popped with gunfire"
|
||||
130 = "Number of headshots"
|
||||
328 = "Current weapon skill"
|
||||
329 = "Weapon skill levels"
|
||||
'AK-47 Skill' = '77'
|
||||
'Bullets fired' = '126'
|
||||
'Bullets that hit' = '128'
|
||||
'Combat Shotgun Skill' = '74'
|
||||
'Current weapon skill' = '328'
|
||||
'Desert Eagle Skill' = '71'
|
||||
'Kgs of explosives used' = '127'
|
||||
'M4 Skill' = '78'
|
||||
'Machine Pistol Skill' = '75'
|
||||
'Number of headshots' = '130'
|
||||
'Pistol Skill' = '69'
|
||||
'Rifle Skill' = '79'
|
||||
'SMG Skill' = '76'
|
||||
'Sawn-Off Shotgun Skill' = '73'
|
||||
'Shotgun Skill' = '72'
|
||||
'Silenced Pistol Skill' = '70'
|
||||
'Tires popped with gunfire' = '129'
|
||||
'Weapon Budget' = '13'
|
||||
'Weapon skill levels' = '329'
|
||||
|
||||
|
@ -817,6 +817,7 @@ MenusTab = "Menus"
|
||||
Minimum = "Min"
|
||||
PedPage = "Ped"
|
||||
PlayerPage = "Player"
|
||||
RemoveEntry = "Entry removed"
|
||||
Search = "Search"
|
||||
LocationsTab = "Locations"
|
||||
FavouritesTab = "Favourites"
|
||||
|
@ -68,21 +68,6 @@ void Particle::Play(std::string& cat, std::string& name, std::string& particle)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Particle::Remove(std::string& cat, std::string& name, std::string& particle)
|
||||
{
|
||||
if (cat == "Custom")
|
||||
{
|
||||
Particle::m_Data.m_pData->RemoveKey("Custom", particle.c_str());
|
||||
Particle::m_Data.m_pData->Save();
|
||||
Util::SetMessage(TEXT("Animation.ParticleRemoved"));
|
||||
}
|
||||
else
|
||||
{
|
||||
Util::SetMessage(TEXT("Animation.CustomParticlesOnly"));
|
||||
}
|
||||
}
|
||||
|
||||
#elif GTAVC
|
||||
|
||||
// Thanks to codenulls(https://github.com/codenulls/)
|
||||
@ -191,7 +176,7 @@ void _PlayAnim(RpClump* pClump, int animGroup, int animID, float blend, bool loo
|
||||
}
|
||||
#endif
|
||||
|
||||
void Animation::Play(std::string& ifp, std::string& anim, std::string& _)
|
||||
void Animation::Play(std::string& cat, std::string& anim, std::string& ifp)
|
||||
{
|
||||
CPed *pPed = m_PedAnim ? m_pTarget : FindPlayerPed();
|
||||
if (!pPed)
|
||||
@ -230,20 +215,6 @@ void Animation::Play(std::string& ifp, std::string& anim, std::string& _)
|
||||
#endif
|
||||
}
|
||||
|
||||
void Animation::Remove(std::string& ifp, std::string& anim, std::string& ifpRepeat)
|
||||
{
|
||||
if (ifp == "Custom")
|
||||
{
|
||||
m_AnimData.m_pData->RemoveKey("Custom", anim.c_str());
|
||||
m_AnimData.m_pData->Save();
|
||||
Util::SetMessage(TEXT("Animation.AnimationRemoved"));
|
||||
}
|
||||
else
|
||||
{
|
||||
Util::SetMessage(TEXT("Animation.CustomAnimsOnly"));
|
||||
}
|
||||
}
|
||||
|
||||
void Animation::Init()
|
||||
{
|
||||
#ifdef GTASA
|
||||
@ -345,7 +316,7 @@ void Animation::ShowPage()
|
||||
if (ImGui::BeginChild("Anims Child"))
|
||||
{
|
||||
ImGui::Spacing();
|
||||
Widget::DataList(m_AnimData, Play, Remove,
|
||||
Widget::DataList(m_AnimData, Play,
|
||||
[](){
|
||||
static char animBuf[INPUT_BUFFER_SIZE];
|
||||
static char ifpBuf[INPUT_BUFFER_SIZE];
|
||||
@ -446,7 +417,7 @@ void Animation::ShowPage()
|
||||
if (ImGui::BeginChild("Cutscene Child"))
|
||||
{
|
||||
ImGui::Spacing();
|
||||
Widget::DataList(Cutscene::m_Data, Cutscene::Play, nullptr);
|
||||
Widget::DataList(Cutscene::m_Data, Cutscene::Play);
|
||||
ImGui::EndChild();
|
||||
}
|
||||
ImGui::EndTabItem();
|
||||
@ -478,7 +449,7 @@ void Animation::ShowPage()
|
||||
if (ImGui::BeginChild("Anims Child"))
|
||||
{
|
||||
ImGui::Spacing();
|
||||
Widget::DataList(Particle::m_Data, Particle::Play, Particle::Remove,
|
||||
Widget::DataList(Particle::m_Data, Particle::Play,
|
||||
[](){
|
||||
static char name[INPUT_BUFFER_SIZE], particle[INPUT_BUFFER_SIZE];
|
||||
ImGui::InputTextWithHint(TEXT("Animation.ParticleName"), "KKJJ fire particle", name, INPUT_BUFFER_SIZE);
|
||||
|
@ -22,7 +22,6 @@ public:
|
||||
static inline std::vector<int> m_nParticleList;
|
||||
|
||||
static void Play(std::string& rootKey, std::string& particle, std::string& dummy);
|
||||
static void Remove(std::string& ifp, std::string& anim, std::string& ifpRepeat);
|
||||
};
|
||||
#endif
|
||||
|
||||
@ -36,7 +35,6 @@ private:
|
||||
static inline CPed *m_pTarget = nullptr;
|
||||
|
||||
static void Play(std::string& rootKey, std::string& anim, std::string& ifp);
|
||||
static void Remove(std::string& rootKey, std::string& anim, std::string& ifp);
|
||||
|
||||
#ifdef GTASA
|
||||
static void DrawPedTasks();
|
||||
|
27
src/game.cpp
27
src/game.cpp
@ -1020,14 +1020,13 @@ void Game::ShowPage()
|
||||
|
||||
ImGui::Spacing();
|
||||
|
||||
Widget::DataList(m_MissionData, SetPlayerMission, nullptr);
|
||||
Widget::DataList(m_MissionData, SetPlayerMission);
|
||||
}
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
#ifdef GTASA
|
||||
if (ImGui::BeginTabItem(TEXT("Game.Stats")))
|
||||
{
|
||||
// similar to Widget::DataList()
|
||||
ImGui::Spacing();
|
||||
|
||||
if (ImGui::Button(TEXT("Game.MaxWepSkills"), Widget::CalcSize(2)))
|
||||
@ -1051,29 +1050,7 @@ void Game::ShowPage()
|
||||
}
|
||||
|
||||
ImGui::Spacing();
|
||||
ImGui::PushItemWidth((ImGui::GetWindowContentRegionWidth() - ImGui::GetStyle().ItemSpacing.x)/2);
|
||||
Widget::ListBox("##Categories", m_StatData.m_Categories, m_StatData.m_Selected);
|
||||
ImGui::SameLine();
|
||||
Widget::Filter("##Filter", m_StatData.m_Filter, TEXT("Window.Search"));
|
||||
ImGui::PopItemWidth();
|
||||
|
||||
ImGui::Spacing();
|
||||
ImGui::BeginChild("STATCHILD");
|
||||
for (auto [k, v] : m_StatData.m_pData->Items())
|
||||
{
|
||||
if (k.str() == m_StatData.m_Selected || m_StatData.m_Selected == "All")
|
||||
{
|
||||
for (auto [k2, v2] : v.as_table()->ref<DataStore::Table>())
|
||||
{
|
||||
std::string name = v2.value_or<std::string>("Unknown");
|
||||
if (m_StatData.m_Filter.PassFilter(name.c_str()))
|
||||
{
|
||||
Widget::EditStat(name.c_str(), std::stoi(std::string(k2.str())));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ImGui::EndChild();
|
||||
Widget::DataList(m_StatData, nullptr, nullptr, true);
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
if (ImGui::BeginTabItem(TEXT("Game.RandomCheats")))
|
||||
|
68
src/ped.cpp
68
src/ped.cpp
@ -86,6 +86,37 @@ void Ped::Init()
|
||||
#endif
|
||||
}
|
||||
|
||||
void Ped::AddNewPed()
|
||||
{
|
||||
static char name[8];
|
||||
static int model = 0;
|
||||
ImGui::InputTextWithHint(TEXT("Menu.Name"), "PEDNAME", name, 7);
|
||||
Widget::InputInt(TEXT("Ped.Model"), &model, 0, 999999);
|
||||
ImGui::Spacing();
|
||||
ImVec2 sz = Widget::CalcSize(2);
|
||||
if (ImGui::Button(TEXT("Ped.AddPed"), sz))
|
||||
{
|
||||
Command<Commands::REQUEST_MODEL>(model);
|
||||
Command<Commands::LOAD_ALL_MODELS_NOW>();
|
||||
if (Command<Commands::IS_MODEL_AVAILABLE>(model))
|
||||
{
|
||||
std::string key = std::format("Custom.{} (Added)", name);
|
||||
m_PedData.m_pData->Set(key.c_str(), std::to_string(model));
|
||||
m_PedData.m_pData->Save();
|
||||
Util::SetMessage(TEXT("Ped.AddPedMSG"));
|
||||
Command<Commands::MARK_MODEL_AS_NO_LONGER_NEEDED>(model);
|
||||
}
|
||||
else
|
||||
{
|
||||
Util::SetMessage(TEXT("Vehicle.InvalidID"));
|
||||
}
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button(TEXT("Ped.GetPlayerModel"), sz))
|
||||
{
|
||||
model = FindPlayerPed()->m_nModelIndex;
|
||||
}
|
||||
}
|
||||
#ifdef GTASA
|
||||
void Ped::SpawnPed(std::string& model)
|
||||
#else
|
||||
@ -308,39 +339,9 @@ void Ped::ShowPage()
|
||||
Widget::ImageList(m_PedData, SpawnPed,
|
||||
[](std::string& str){
|
||||
return m_PedData.m_pData->Get(str.c_str(), "Unknown");
|
||||
}, nullptr,
|
||||
[](){
|
||||
static char name[8];
|
||||
static int model = 0;
|
||||
ImGui::InputTextWithHint(TEXT("Menu.Name"), "PEDNAME", name, 7);
|
||||
Widget::InputInt(TEXT("Ped.Model"), &model, 1, 0, 999999);
|
||||
ImGui::Spacing();
|
||||
ImVec2 sz = Widget::CalcSize(2);
|
||||
if (ImGui::Button(TEXT("Ped.AddPed"), sz))
|
||||
{
|
||||
Command<Commands::REQUEST_MODEL>(model);
|
||||
Command<Commands::LOAD_ALL_MODELS_NOW>();
|
||||
if (Command<Commands::IS_MODEL_AVAILABLE>(model))
|
||||
{
|
||||
std::string key = std::format("Custom.{} (Added)", name);
|
||||
m_PedData.m_pData->Set(key.c_str(), std::to_string(model));
|
||||
m_PedData.m_pData->Save();
|
||||
Util::SetMessage(TEXT("Ped.AddPedMSG"));
|
||||
Command<Commands::MARK_MODEL_AS_NO_LONGER_NEEDED>(model);
|
||||
}
|
||||
else
|
||||
{
|
||||
Util::SetMessage(TEXT("Vehicle.InvalidID"));
|
||||
}
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button(TEXT("Ped.GetPlayerModel"), sz))
|
||||
{
|
||||
model = FindPlayerPed()->m_nModelIndex;
|
||||
}
|
||||
});
|
||||
}, nullptr, AddNewPed);
|
||||
#else
|
||||
Widget::DataList(m_PedData, SpawnPed, nullptr);
|
||||
Widget::DataList(m_PedData, SpawnPed, AddNewPed);
|
||||
#endif
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
@ -399,8 +400,7 @@ void Ped::ShowPage()
|
||||
{
|
||||
Spawner::m_nWeaponId = std::stoi(id);
|
||||
weaponName = key;
|
||||
},
|
||||
nullptr);
|
||||
});
|
||||
#endif
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ private:
|
||||
static inline int m_nWeaponId;
|
||||
};
|
||||
|
||||
static void AddNewPed();
|
||||
#ifdef GTASA
|
||||
static void SpawnPed(std::string& model);
|
||||
#else
|
||||
|
@ -936,7 +936,7 @@ void Player::ShowPage()
|
||||
#else
|
||||
ImGui::TextWrapped(TEXT("Player.WorkSkinOnly"));
|
||||
#endif
|
||||
Widget::DataList(skinData, ChangePlayerModel, nullptr);
|
||||
Widget::DataList(skinData, ChangePlayerModel);
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
#endif
|
||||
|
@ -229,7 +229,7 @@ void Teleport::ShowPage()
|
||||
ImGui::Columns(1);
|
||||
#else
|
||||
ImGui::Spacing();
|
||||
ImGui::Sameline();
|
||||
ImGui::SameLine();
|
||||
ImGui::Checkbox(TEXT("Teleport.InsertCoord"), &m_bInsertCoord);
|
||||
#endif
|
||||
ImGui::Spacing();
|
||||
@ -323,18 +323,6 @@ void Teleport::ShowPage()
|
||||
Util::SetMessage(TEXT("Teleport.InvalidLocation"));
|
||||
}
|
||||
},
|
||||
[](std::string& category, std::string& key, std::string& _){
|
||||
if (category == "Custom")
|
||||
{
|
||||
m_locData.m_pData->RemoveKey("Custom", key.c_str());
|
||||
Util::SetMessage(TEXT("Teleport.LocationRemoved"));
|
||||
m_locData.m_pData->Save();
|
||||
}
|
||||
else
|
||||
{
|
||||
Util::SetMessage(TEXT("Window.CustomRemoveOnly"));
|
||||
}
|
||||
},
|
||||
[](){
|
||||
ImGui::InputTextWithHint(TEXT("Teleport.Location"), TEXT("Teleport.LocationHint"), locBuf, INPUT_BUFFER_SIZE);
|
||||
ImGui::InputTextWithHint(TEXT("Teleport.Coordinates"), "x, y, z", inBuf, INPUT_BUFFER_SIZE);
|
||||
|
@ -315,6 +315,46 @@ void WarpPlayerIntoVehicle(CVehicle *pVeh, int seatId)
|
||||
}
|
||||
#endif
|
||||
|
||||
void Vehicle::AddNewVehicle()
|
||||
{
|
||||
static char name[INPUT_BUFFER_SIZE];
|
||||
static int model = 0;
|
||||
ImGui::InputTextWithHint(TEXT("Menu.Name"), "Cheetah", name, INPUT_BUFFER_SIZE);
|
||||
Widget::InputInt(TEXT("Vehicle.Model"), &model, 0, 999999);
|
||||
ImGui::Spacing();
|
||||
ImVec2 sz = Widget::CalcSize(2);
|
||||
if (ImGui::Button(TEXT("Window.AddEntry"), sz))
|
||||
{
|
||||
if (CModelInfo::IsCarModel(model))
|
||||
{
|
||||
std::string key = std::format("Custom.{} (Added)", name);
|
||||
Spawner::m_VehData.m_pData->Set(key.c_str(), std::to_string(model));
|
||||
Spawner::m_VehData.m_pData->Save();
|
||||
Util::SetMessage(TEXT("Window.AddEntryMSG"));
|
||||
}
|
||||
else
|
||||
{
|
||||
Util::SetMessage(TEXT("Vehicle.InvalidID"));
|
||||
}
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button(TEXT("Vehicle.GetCurrentVehInfo"), sz))
|
||||
{
|
||||
CPlayerPed *pPlayer = FindPlayerPed();
|
||||
int hPlayer = CPools::GetPedRef(pPlayer);
|
||||
if (Command<Commands::IS_CHAR_IN_ANY_CAR>(hPlayer))
|
||||
{
|
||||
model = pPlayer->m_pVehicle->m_nModelIndex;
|
||||
std::string str = Vehicle::GetNameFromModel(model);
|
||||
strcpy(name, str.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
Util::SetMessage(TEXT("Vehicle.NotInVehicle"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef GTASA
|
||||
void Vehicle::SpawnVehicle(std::string& smodel)
|
||||
#else
|
||||
@ -1141,47 +1181,9 @@ void Vehicle::ShowPage()
|
||||
Widget::ImageList(Spawner::m_VehData, SpawnVehicle,
|
||||
[](std::string& str){
|
||||
return GetNameFromModel(std::stoi(str));
|
||||
}, nullptr,
|
||||
[](){
|
||||
static char name[INPUT_BUFFER_SIZE];
|
||||
static int model = 0;
|
||||
ImGui::InputTextWithHint(TEXT("Menu.Name"), "Cheetah", name, INPUT_BUFFER_SIZE);
|
||||
Widget::InputInt(TEXT("Vehicle.Model"), &model, 1, 0, 999999);
|
||||
ImGui::Spacing();
|
||||
ImVec2 sz = Widget::CalcSize(2);
|
||||
if (ImGui::Button(TEXT("Window.AddEntry"), sz))
|
||||
{
|
||||
if (Command<Commands::IS_THIS_MODEL_A_CAR>(model))
|
||||
{
|
||||
std::string key = std::format("Custom.{} (Added)", name);
|
||||
Spawner::m_VehData.m_pData->Set(key.c_str(), std::to_string(model));
|
||||
Spawner::m_VehData.m_pData->Save();
|
||||
Util::SetMessage(TEXT("Window.AddEntryMSG"));
|
||||
}
|
||||
else
|
||||
{
|
||||
Util::SetMessage(TEXT("Vehicle.InvalidID"));
|
||||
}
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button(TEXT("Vehicle.GetCurrentVehInfo"), sz))
|
||||
{
|
||||
CPlayerPed *pPlayer = FindPlayerPed();
|
||||
int hPlayer = CPools::GetPedRef(pPlayer);
|
||||
if (Command<Commands::IS_CHAR_IN_ANY_CAR>(hPlayer))
|
||||
{
|
||||
model = pPlayer->m_pVehicle->m_nModelIndex;
|
||||
std::string str = Vehicle::GetNameFromModel(model);
|
||||
strcpy(name, str.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
Util::SetMessage(TEXT("Vehicle.NotInVehicle"));
|
||||
}
|
||||
}
|
||||
});
|
||||
}, nullptr, AddNewVehicle);
|
||||
#else
|
||||
Widget::DataList(Spawner::m_VehData, SpawnVehicle, nullptr);
|
||||
Widget::DataList(Spawner::m_VehData, SpawnVehicle, AddNewVehicle);
|
||||
#endif
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
@ -1228,7 +1230,7 @@ void Vehicle::ShowPage()
|
||||
{
|
||||
CVehicle* pVeh = BY_GAME(FindPlayerVehicle(-1, false), FindPlayerVehicle(), FindPlayerVehicle());
|
||||
StartAutoDrive(pVeh, loc.c_str());
|
||||
}, nullptr);
|
||||
});
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
ImGui::EndTabBar();
|
||||
|
@ -97,6 +97,7 @@ public:
|
||||
Vehicle() = delete;
|
||||
Vehicle(const Vehicle&) = delete;
|
||||
|
||||
static void AddNewVehicle();
|
||||
#ifdef GTASA
|
||||
static void SpawnVehicle(std::string& name);
|
||||
#else
|
||||
|
@ -223,6 +223,23 @@ void Weapon::GiveWeaponToPlayer(std::string& rootkey, std::string& name, std::st
|
||||
}
|
||||
#endif
|
||||
|
||||
void Weapon::AddWeapon()
|
||||
{
|
||||
static char name[INPUT_BUFFER_SIZE];
|
||||
static int model = 0;
|
||||
ImGui::InputTextWithHint(TEXT("Menu.Name"), "Minigun", name, INPUT_BUFFER_SIZE);
|
||||
Widget::InputInt(TEXT("Weapon.WeaponType"), &model, 0, 999999);
|
||||
ImGui::Spacing();
|
||||
ImVec2 sz = Widget::CalcSize(1);
|
||||
if (ImGui::Button(TEXT("Window.AddEntry"), sz))
|
||||
{
|
||||
std::string key = std::format("Custom.{} (Added)", name);
|
||||
m_WeaponData.m_pData->Set(key.c_str(), std::to_string(model));
|
||||
m_WeaponData.m_pData->Save();
|
||||
Util::SetMessage(TEXT("Window.AddEntryMSG"));
|
||||
}
|
||||
}
|
||||
|
||||
void Weapon::ShowPage()
|
||||
{
|
||||
CPlayerPed* pPlayer = FindPlayerPed();
|
||||
@ -367,24 +384,9 @@ void Weapon::ShowPage()
|
||||
[](std::string& str)
|
||||
{
|
||||
return str != "0"; /*Unarmed*/
|
||||
},
|
||||
[](){
|
||||
static char name[INPUT_BUFFER_SIZE];
|
||||
static int model = 0;
|
||||
ImGui::InputTextWithHint(TEXT("Menu.Name"), "Minigun", name, INPUT_BUFFER_SIZE);
|
||||
Widget::InputInt(TEXT("Weapon.WeaponType"), &model, 1, 0, 999999);
|
||||
ImGui::Spacing();
|
||||
ImVec2 sz = Widget::CalcSize(1);
|
||||
if (ImGui::Button(TEXT("Window.AddEntry"), sz))
|
||||
{
|
||||
std::string key = std::format("Custom.{} (Added)", name);
|
||||
m_WeaponData.m_pData->Set(key.c_str(), std::to_string(model));
|
||||
m_WeaponData.m_pData->Save();
|
||||
Util::SetMessage(TEXT("Window.AddEntryMSG"));
|
||||
}
|
||||
});
|
||||
}, AddWeapon);
|
||||
#else
|
||||
Widget::DataList(m_WeaponData, GiveWeaponToPlayer, nullptr);
|
||||
Widget::DataList(m_WeaponData, GiveWeaponToPlayer, AddWeapon);
|
||||
#endif
|
||||
ImGui::EndTabItem();
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ public:
|
||||
static void Init();
|
||||
static void ShowPage();
|
||||
|
||||
static void AddWeapon();
|
||||
#ifdef GTASA
|
||||
static inline ResourceStore m_WeaponData { "weapons", eResourceType::TYPE_IMAGE_TEXT, ImVec2(65, 65) };
|
||||
|
||||
|
@ -5,7 +5,6 @@
|
||||
static struct
|
||||
{
|
||||
std::string root, key, val;
|
||||
void* func = nullptr;
|
||||
bool show = false;
|
||||
bool added = false;
|
||||
} contextMenu;
|
||||
@ -76,7 +75,7 @@ void Widget::Filter(const char* label, ImGuiTextFilter& filter, const char* hint
|
||||
}
|
||||
}
|
||||
|
||||
void Widget::DataList(ResourceStore& data, ArgCallback3 clickFunc, ArgCallback3 removeFunc, ArgCallbackNone addFunc)
|
||||
void Widget::DataList(ResourceStore& data, ArgCallback3 clickFunc, ArgCallbackNone addFunc, bool isEditItem)
|
||||
{
|
||||
if (ImGui::IsMouseClicked(1))
|
||||
{
|
||||
@ -115,14 +114,24 @@ void Widget::DataList(ResourceStore& data, ArgCallback3 clickFunc, ArgCallback3
|
||||
{
|
||||
std::string root = std::string(k.str());
|
||||
std::string val = v2.value_or<std::string>("Unkonwn");
|
||||
if (ImGui::MenuItem(key.c_str()) && clickFunc != nullptr)
|
||||
|
||||
if (isEditItem)
|
||||
{
|
||||
clickFunc(root, key, val);
|
||||
#ifdef GTASA
|
||||
Widget::EditStat(key.c_str(), std::stoi(val));
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ImGui::MenuItem(key.c_str()) && clickFunc != nullptr)
|
||||
{
|
||||
clickFunc(root, key, val);
|
||||
}
|
||||
}
|
||||
|
||||
if (ImGui::IsItemClicked(1))
|
||||
{
|
||||
contextMenu = {root, key, val, removeFunc, true};
|
||||
contextMenu = {root, key, val, true};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -140,9 +149,19 @@ void Widget::DataList(ResourceStore& data, ArgCallback3 clickFunc, ArgCallback3
|
||||
data.m_pData->Save();
|
||||
Util::SetMessage(TEXT("Menu.FavouritesText"));
|
||||
}
|
||||
if (contextMenu.func && ImGui::MenuItem(TEXT("Menu.Remove")))
|
||||
if (ImGui::MenuItem(TEXT("Menu.Remove")))
|
||||
{
|
||||
static_cast<ArgCallback3>(contextMenu.func)(contextMenu.root, contextMenu.key, contextMenu.val);
|
||||
if (contextMenu.root == "Custom")
|
||||
{
|
||||
data.m_pData->RemoveKey("Custom", contextMenu.key.c_str());
|
||||
data.m_pData->RemoveKey("Favourites", contextMenu.key.c_str());
|
||||
data.m_pData->Save();
|
||||
Util::SetMessage(TEXT("Window.RemoveEntry"));
|
||||
}
|
||||
else
|
||||
{
|
||||
Util::SetMessage(TEXT("Window.CustomRemoveOnly"));
|
||||
}
|
||||
}
|
||||
if (ImGui::MenuItem(TEXT("Menu.Close")))
|
||||
{
|
||||
@ -169,15 +188,25 @@ void Widget::DataList(ResourceStore& data, ArgCallback3 clickFunc, ArgCallback3
|
||||
if (data.m_Filter.PassFilter(key.c_str()))
|
||||
{
|
||||
std::string val = v.value_or<std::string>("Unkonwn");
|
||||
if (ImGui::MenuItem(key.c_str()) && clickFunc != nullptr)
|
||||
|
||||
if (isEditItem)
|
||||
{
|
||||
std::string str = "Favourites";
|
||||
clickFunc(str, key, val);
|
||||
#ifdef GTASA
|
||||
Widget::EditStat(key.c_str(), std::stoi(val));
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ImGui::MenuItem(key.c_str()) && clickFunc != nullptr)
|
||||
{
|
||||
std::string str = "Favourites";
|
||||
clickFunc(str, key, val);
|
||||
}
|
||||
}
|
||||
|
||||
if (ImGui::IsItemClicked(1))
|
||||
{
|
||||
contextMenu = {std::string("Favourites"), key, val, removeFunc, true};
|
||||
contextMenu = {std::string("Favourites"), key, val, true};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -777,10 +806,10 @@ bool Widget::InputFloat(const char* label, float *val, float change, float min,
|
||||
return state;
|
||||
}
|
||||
|
||||
bool Widget::InputInt(const char* label, int *val, int change, int min, int max)
|
||||
bool Widget::InputInt(const char* label, int *val, int min, int max)
|
||||
{
|
||||
bool state = false;
|
||||
if (ImGui::InputInt(label, val, change))
|
||||
if (ImGui::InputInt(label, val))
|
||||
{
|
||||
if (min != max)
|
||||
{
|
||||
|
@ -41,8 +41,7 @@ public:
|
||||
static bool ColorBtn(int colorId, std::vector<float>& color, ImVec2 size);
|
||||
|
||||
// Draws DataStore data in the interface
|
||||
static void DataList(ResourceStore& data, ArgCallback3 clickFunc, ArgCallback3 removeFunc,
|
||||
ArgCallbackNone addFunc = nullptr);
|
||||
static void DataList(ResourceStore& data, ArgCallback3 clickFunc = nullptr, ArgCallbackNone addFunc = nullptr, bool isEditItem = false);
|
||||
|
||||
// Draws a dropdown editor for memory address
|
||||
template <typename T>
|
||||
@ -67,7 +66,7 @@ public:
|
||||
|
||||
// Input widgets with increment & decrement buttons
|
||||
static bool InputFloat(const char* label, float *val, float change = 1.0f, float min = -1.0f, float max = -1.0f);
|
||||
static bool InputInt(const char* label, int *val, int change = 1, int min = -1, int max = -1);
|
||||
static bool InputInt(const char* label, int *val, int min = -1, int max = -1);
|
||||
|
||||
// Draws ResourceStore images in the interface
|
||||
static void ImageList(ResourceStore &store, ArgCallback clickFunc, ArgCallbackRtn getNameFunc,
|
||||
|
Loading…
Reference in New Issue
Block a user