1- -- -------------------------------------------------------------------------- --
2- -- wawa --
3- -- -------------------------------------------------------------------------- --
1+ -- -------------------------------------------- --
2+ -- PINKSLIP CLAIM UI --
3+ -- -------------------------------------------- --
44
55-- My requires.
6+ local aoqia_table = require (" AoqiaZomboidUtilsShared/table" )
67local constants = require (" AoqiaZomboidUtilsShared/constants" )
78local create_pinkslip = require (" AoqiaCarwannaExtendedClient/actions/create_pinkslip" )
89local mod_constants = require (" AoqiaCarwannaExtendedShared/mod_constants" )
@@ -12,9 +13,7 @@ require("luautils")
1213
1314-- std globals.
1415local math = math
15- local table = table
1616-- TIS globals.
17- local getSquare = getSquare
1817local getText = getText
1918local ISModalRichText = ISModalRichText
2019local ISTimedActionQueue = ISTimedActionQueue
@@ -68,19 +67,13 @@ function pinkslip.confirm_dialog(player, vehicle)
6867
6968 local player_num = player :getPlayerNum ()
7069
71- local interior_warning = nil
72- if sbvars .DoCompatRvInteriors and sbvars .DoUnassignInterior
73- and RVInterior and RVInterior .vehicleHasInteriorParameters (vehicle ) then
74- interior_warning = getText ((" IGUI_%s_ConfirmInteriorWarning" ):format (mod_constants .MOD_ID ))
75- end
70+ local interior_warning = ((sbvars .DoCompatRvInteriors and sbvars .DoUnassignInterior
71+ and RVInterior and RVInterior .vehicleHasInteriorParameters (vehicle )) and
72+ getText ((" IGUI_%s_ConfirmInteriorWarning" ):format (mod_constants .MOD_ID )) or " " )
7673
7774 local confirm_text = getText ((" IGUI_%s_ConfirmText" ):format (mod_constants .MOD_ID ),
7875 getText (" IGUI_VehicleName" .. vehicle :getScript ():getName ()))
79- .. " <LINE> <RGB:1,0,0> "
80-
81- if interior_warning then
82- confirm_text = confirm_text .. interior_warning
83- end
76+ .. ((interior_warning ~= " " ) and (" <LINE> <RGB:1,0,0> " .. interior_warning ) or " " )
8477
8578 local modal = ISModalRichText :new (
8679 0 ,
@@ -104,8 +97,7 @@ function pinkslip.add_option_to_menu(player, context, vehicle)
10497 local sbvars = SandboxVars [mod_constants .MOD_ID ] --[[ @as SandboxVarsDummy]]
10598 if sbvars .DoRegistration == false then return end
10699
107- local mdata = vehicle :getModData () --[[ @as ModDataDummy]]
108-
100+ local mdata = aoqia_table .init_mdata (vehicle , mod_constants .MOD_ID ) --[[ @as ModDataDummy]]
109101 local player_inv = player :getInventory ()
110102
111103 local vehicle_script = vehicle :getScript ()
@@ -363,10 +355,54 @@ function pinkslip.add_option_to_menu(player, context, vehicle)
363355 " adding option failed: Vehicle blacklisted from pinkslip use." )
364356 end
365357
366- -- If safehouse only.
367- if constants .IS_SINGLEPLAYER == false and sbvars .DoSafehouseOnly then
368- local username = player :getUsername ()
358+ if not_available == false and sbvars .DoParkingMeterOnly then
359+ local found_meter = false
360+
361+ local sq = vehicle :getSquare ()
362+ local sq_x = sq :getX ()
363+ local sq_y = sq :getY ()
364+
365+ local dist = math.ceil (sbvars .ParkingMeterDistance / 2 )
366+ for x = sq_x - dist , sq_x + dist do
367+ for y = sq_y - dist , sq_y + dist do
368+ repeat
369+ local s = getSquare (x , y , 0 )
370+ if s == nil then break end
371+
372+ local s_objs = s :getObjects ()
373+ for i = 1 , s_objs :size () do
374+ local obj = s_objs :get (i - 1 ) --[[ @as IsoObject]]
375+ local obj_name = obj :getSprite ():getName ()
376+ if obj_name == " f_parkingmeters_01_0"
377+ or obj_name == " f_parkingmeters_01_1"
378+ or obj_name == " f_parkingmeters_01_2"
379+ or obj_name == " f_parkingmeters_01_3"
380+ or obj_name == " f_parkingmeters_01_4"
381+ or obj_name == " f_parkingmeters_01_5"
382+ or obj_name == " f_parkingmeters_01_6"
383+ or obj_name == " f_parkingmeters_01_7" then
384+ found_meter = true
385+ break
386+ end
387+ end
388+ until true
389+ end
390+
391+ if found_meter then break end
392+ end
393+
394+ if found_meter == false then
395+ text = text
396+ .. " <LINE> <LINE> <RGB:1,0,0> "
397+ .. getText ((" Tooltip_%s_NoParkingMeterFound" ):format (mod_constants .MOD_ID ))
398+ not_available = true
399+ end
400+ end
369401
402+ if not_available == false and constants .IS_SINGLEPLAYER == false and sbvars .DoSafehouseOnly then
403+ local found_safehouse = false
404+
405+ local username = player :getUsername ()
370406 local veh_sq = vehicle :getSquare ()
371407 local veh_sq_x = veh_sq :getX ()
372408 local veh_sq_y = veh_sq :getY ()
@@ -439,9 +475,15 @@ function pinkslip.add_option_to_menu(player, context, vehicle)
439475 if sq_dist == nil
440476 or (sbvars .SafehouseDistance == 0 and in_safehouse_area == false )
441477 or (sbvars .SafehouseDistance > 0 and sq_dist > sbvars .SafehouseDistance ) then
478+ found_safehouse = false
479+ else
480+ found_safehouse = true
481+ end
482+
483+ if found_safehouse == false then
442484 text = text
443485 .. " <LINE> <LINE> <RGB:1,0,0> "
444- .. getText ((" Tooltip_%s_DoSafehouseOnly " ):format (mod_constants .MOD_ID ))
486+ .. getText ((" Tooltip_%s_NoSafehouseFound " ):format (mod_constants .MOD_ID ))
445487 not_available = true
446488 end
447489 end
@@ -476,6 +518,14 @@ function pinkslip.add_option_to_menu(player, context, vehicle)
476518 not_available = true
477519 end
478520
521+ -- If the player is above Z level 0.
522+ if player :getZ () > 0 then
523+ text = text
524+ .. " <LINE> <LINE> <RGB:1,0,0> "
525+ .. getText ((" Tooltip_%s_AboveZLevel" ):format (mod_constants .MOD_ID ))
526+ not_available = true
527+ end
528+
479529 -- Do admin override if enabled.
480530 if not_available
481531 and player :getAccessLevel () == " Admin"
0 commit comments