info3ds:
1) fixed a bug with the definition of block size 2) some improvements git-svn-id: svn://kolibrios.org@2052 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
if not exist bin mkdir bin
|
||||
@erase lang.inc
|
||||
@echo lang fix en >lang.inc
|
||||
if not exist bin\objects.png @copy objects.png bin\objects.png
|
||||
@copy objects.png bin\objects.png
|
||||
if not exist bin\tl_sys_16.png @copy tl_sys_16.png bin\tl_sys_16.png
|
||||
if not exist bin\toolbar.png @copy toolbar.png bin\toolbar.png
|
||||
if not exist bin\font8x9.bmp @copy ..\..\fs\kfar\trunk\font8x9.bmp bin\font8x9.bmp
|
||||
|
@@ -1,7 +1,7 @@
|
||||
if not exist bin mkdir bin
|
||||
@erase lang.inc
|
||||
@echo lang fix ru >lang.inc
|
||||
if not exist bin\objects.png @copy objects.png bin\objects.png
|
||||
@copy objects.png bin\objects.png
|
||||
if not exist bin\tl_sys_16.png @copy tl_sys_16.png bin\tl_sys_16.png
|
||||
if not exist bin\toolbar.png @copy toolbar.png bin\toolbar.png
|
||||
if not exist bin\font8x9.bmp @copy ..\..\fs\kfar\trunk\font8x9.bmp bin\font8x9.bmp
|
||||
|
@@ -20,7 +20,7 @@ include 'lang.inc'
|
||||
debug equ 0
|
||||
|
||||
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
||||
capt db 'info 3ds 17.08.11',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
capt db 'info 3ds 18.08.11',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
struct FileInfoBlock
|
||||
Function dd ?
|
||||
@@ -45,7 +45,7 @@ image_data_toolbar dd 0
|
||||
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;ࠧ<><E0A0A7><EFBFBD> bmp 䠩<><E4A0A9> <20> <20><><EFBFBD>⥬<EFBFBD>묨 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
icon_tl_sys dd 0 ;㪠<><E3AAA0>⥥<EFBFBD><E2A5A5> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
icon_toolbar dd 0 ;㪠<><E3AAA0>⥥<EFBFBD><E2A5A5> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ꥪ⮢
|
||||
TOOLBAR_ICON_BMP_SIZE equ 256*5 ;ࠧ<><E0A0A7><EFBFBD> bmp 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ꥪ⮢
|
||||
TOOLBAR_ICON_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*6+54 ;ࠧ<><E0A0A7><EFBFBD> bmp 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ꥪ⮢
|
||||
;
|
||||
IMAGE_FILE1_SIZE equ 128*144*3 ;ࠧ<><E0A0A7><EFBFBD> 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD><EFBFBD> 640 x 480
|
||||
|
||||
@@ -101,7 +101,6 @@ macro block_3ds id,icon,par
|
||||
CHUNK_MAIN equ 0x4D4D ; [-] <20>業<EFBFBD>
|
||||
CHUNK_color_1 equ 0x0011 ; [+] 梥<> rgb (byte format)
|
||||
CHUNK_ambient_color equ 0x2100 ; [-] ambient color
|
||||
CHUNK_VERSIONF equ 0x0002 ; [+] <20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20> <20><><EFBFBD>ᨨ 䠩<><E4A0A9>
|
||||
CHUNK_OBJMESH equ 0x3D3D ; [-] <20><><EFBFBD><EFBFBD><EFBFBD>᪨<EFBFBD> <20><>ꥪ<EFBFBD><EAA5AA>
|
||||
CHUNK_OBJBLOCK equ 0x4000 ; [+] <20><>ꥪ<EFBFBD>
|
||||
CHUNK_TRIMESH equ 0x4100 ; [-] trimesh-<2D><>ꥪ<EFBFBD>
|
||||
@@ -134,15 +133,21 @@ MAX_FILE_SIZE equ 150*0x400 ;
|
||||
level_stack dd 0
|
||||
offs_last_timer dd 0 ;<3B><><EFBFBD><E1ABA5><EFBFBD><EFBFBD> ᤢ<><E1A4A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>㭪樨 ⠩<><E2A0A9><EFBFBD><EFBFBD>
|
||||
|
||||
ID_ICON_CHUNK_MAIN equ 0
|
||||
ID_ICON_CHUNK_NOT_FOUND equ 1
|
||||
ID_ICON_DATA equ 2
|
||||
ID_ICON_CHUNK_MAIN equ 0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
ID_ICON_CHUNK_NOT_FOUND equ 1 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>⭮<EFBFBD><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
ID_ICON_DATA equ 2 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
FILE_ERROR_CHUNK_SIZE equ -3 ;<3B>訡<EFBFBD><E8A8A1> <20> ࠧ<><E0A0A7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
align 4
|
||||
type_bloks:
|
||||
block_3ds 0x0002,5,1 ;<3B><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20> <20><><EFBFBD>ᨨ 䠩<><E4A0A9>
|
||||
block_3ds 0x3d3e,5,1 ;mesh version
|
||||
block_3ds 0xA010,4,0 ;material ambient color
|
||||
block_3ds 0xA020,4,0 ;material diffuse color
|
||||
block_3ds 0xA030,4,0 ;material specular color
|
||||
block_3ds CHUNK_color_1, 4,1 ; [+] 梥<> rgb (byte format)
|
||||
block_3ds CHUNK_ambient_color,3,0 ; [-] ambient color
|
||||
block_3ds CHUNK_VERSIONF, 3,1 ; [+] <20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20> <20><><EFBFBD>ᨨ 䠩<><E4A0A9>
|
||||
block_3ds CHUNK_OBJMESH, 3,0 ; [-] <20><><EFBFBD><EFBFBD><EFBFBD>᪨<EFBFBD> <20><>ꥪ<EFBFBD><EAA5AA>
|
||||
block_3ds CHUNK_OBJBLOCK, 3,1 ; [+] <20><>ꥪ<EFBFBD>
|
||||
block_3ds CHUNK_TRIMESH, 3,0 ; [-] trimesh-<2D><>ꥪ<EFBFBD>
|
||||
@@ -181,6 +186,7 @@ if lang eq ru
|
||||
txt_open_3ds db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<>:',0
|
||||
txt_no_3ds db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<> <20><> <20> <20><>ଠ<EFBFBD><E0ACA0> *.3ds',0
|
||||
txt_3ds_big_file db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MAX_FILE_SIZE',0
|
||||
txt_3ds_err_sizes db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<> <20><><EFBFBD>०<EFBFBD><E0A5A6><EFBFBD>',0
|
||||
txt_3ds_offs:
|
||||
db '<27><><EFBFBD>饭<EFBFBD><E9A5AD>: '
|
||||
.dig: rb 8
|
||||
@@ -189,6 +195,7 @@ else
|
||||
txt_open_3ds db 'Open file:',0
|
||||
txt_no_3ds db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<> <20><> <20> <20><>ଠ<EFBFBD><E0ACA0> *.3ds',0
|
||||
txt_3ds_big_file db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MAX_FILE_SIZE',0
|
||||
txt_3ds_err_sizes db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<> <20><><EFBFBD>०<EFBFBD><E0A5A6><EFBFBD>',0
|
||||
txt_3ds_offs:
|
||||
db 'Offset: '
|
||||
.dig: rb 8
|
||||
@@ -311,6 +318,10 @@ buf_draw_beg:
|
||||
stdcall [buf2d_clear], buf_0, [buf_0.color] ;<3B><><EFBFBD>⨬ <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
stdcall [buf2d_draw_text], buf_0, buf_1,txt_open_3ds,5,5,0xff
|
||||
stdcall [buf2d_draw_text], buf_0, buf_1,openfile_path,5,15,0xff
|
||||
cmp dword[level_stack],FILE_ERROR_CHUNK_SIZE ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>訡<EFBFBD><E8A8A1> 䠩<><E4A0A9>
|
||||
jne @f
|
||||
stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_err_sizes,5,25,0xff0000
|
||||
@@:
|
||||
ret
|
||||
|
||||
align 4
|
||||
@@ -321,7 +332,6 @@ proc buf_draw_hex_table, offs:dword, size_line:dword
|
||||
endl
|
||||
mov esi,dword[offs]
|
||||
mov edi,dword[open_file_lif]
|
||||
add edi,6
|
||||
add edi,dword[file_3ds+4] ;edi - 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov dword[txt_3ds_offs.dig],0
|
||||
cld
|
||||
@@ -375,7 +385,7 @@ draw_window:
|
||||
pushad
|
||||
mcall 12,1
|
||||
xor eax,eax
|
||||
mov ebx,(20 shl 16)+510
|
||||
mov ebx,(20 shl 16)+560
|
||||
mov ecx,(20 shl 16)+315
|
||||
mov edx,[sc.work]
|
||||
or edx,(3 shl 24)+0x10000000+0x20000000
|
||||
@@ -394,10 +404,10 @@ pushad
|
||||
mov edx,4
|
||||
int 0x40
|
||||
|
||||
mov ebx,(55 shl 16)+20
|
||||
mov ecx,(5 shl 16)+20
|
||||
mov edx,5
|
||||
int 0x40
|
||||
;mov ebx,(55 shl 16)+20
|
||||
;mov ecx,(5 shl 16)+20
|
||||
;mov edx,5
|
||||
;int 0x40
|
||||
|
||||
|
||||
mov eax,7
|
||||
@@ -410,9 +420,9 @@ pushad
|
||||
mov edx,(32 shl 16)+7 ;open
|
||||
int 0x40
|
||||
|
||||
add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
mov edx,(57 shl 16)+7 ;open
|
||||
int 0x40
|
||||
;add ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
;mov edx,(57 shl 16)+7 ;save
|
||||
;int 0x40
|
||||
|
||||
mov dword[w_scr_t1.all_redraw],1
|
||||
stdcall [tl_draw],dword tree1
|
||||
@@ -518,13 +528,17 @@ but_open_file:
|
||||
stdcall add_3ds_object, ID_ICON_CHUNK_MAIN,0,dword[esi+2]
|
||||
call block_children ;<3B>室 <20> <20><><EFBFBD><EFBFBD>୨<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
mov edi,dword[file_3ds.offs]
|
||||
add edi,dword[file_3ds.size]
|
||||
.cycle_main:
|
||||
cmp dword[level_stack],0
|
||||
je .end_cycle
|
||||
jle .end_cycle
|
||||
|
||||
cmp esi,edi ;<3B> <20><><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9>
|
||||
jge .end_cycle
|
||||
|
||||
call block_analiz
|
||||
mov edx,dword[esi+2] ;ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
add edx,6 ;ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov edx,dword[esi+2] ;ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
cmp dword[eax],0
|
||||
jne @f
|
||||
@@ -564,7 +578,8 @@ align 4
|
||||
block_analiz_data:
|
||||
pushad
|
||||
mov ax,word[esi]
|
||||
mov ecx,dword[esi+2] ;ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov ecx,dword[esi+2]
|
||||
sub ecx,6 ;ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
add esi,6
|
||||
mov ebx,dword[level_stack]
|
||||
inc ebx
|
||||
@@ -583,15 +598,32 @@ block_analiz_data:
|
||||
popad
|
||||
ret
|
||||
|
||||
;<3B>室 <20> <20><><EFBFBD><EFBFBD>୨<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
;<3B>室 <20> 1-<2D> <20><><EFBFBD><EFBFBD>୨<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
;output:
|
||||
; edx - destroy
|
||||
align 4
|
||||
block_children:
|
||||
push ecx
|
||||
;<3B><EFBFBD>ઠ <20>ࠢ<EFBFBD><E0A0A2>쭮<EFBFBD><ECADAE><EFBFBD> ࠧ<><E0A0A7> <20><><EFBFBD><EFBFBD><EFBFBD><E0ADA5> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov ebx,esi ;ᬥ饭<E1ACA5><E9A5AD> <20><>砫<EFBFBD> த<>⥫<EFBFBD><EFBFBD><E1AAAE> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
add ebx,6 ;<3B><><EFBFBD><EFBFBD>室 <20><> <20><>砫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0ADA5> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
add ebx,dword[ebx+2] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塞 ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0ADA5> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov ecx,esi ;ᬥ饭<E1ACA5><E9A5AD> <20><>砫<EFBFBD> த<>⥫<EFBFBD><EFBFBD><E1AAAE> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
add ecx,dword[esi+2] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塞 ࠧ<><E0A0A7><EFBFBD> த<>⥫<EFBFBD><EFBFBD><E1AAAE> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
cmp ebx,ecx ;<3B><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>㦭<EFBFBD>, <20>. <20>. <20>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
jle @f
|
||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD> <20>訡<EFBFBD><E8A8A1> 䠩<><E4A0A9>, <20><><EFBFBD><EFBFBD>୨<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>室<EFBFBD><E5AEA4> <20><> <20>।<EFBFBD><E0A5A4><EFBFBD> த<>⥫<EFBFBD><EFBFBD><E1AAAE>
|
||||
mov dword[level_stack],FILE_ERROR_CHUNK_SIZE
|
||||
jmp .end_f
|
||||
@@:
|
||||
mov dword[eax],esi ;㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><>砫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov ebx,dword[esi+2]
|
||||
mov dword[eax+4],ebx ;ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
add esi,6 ;<3B><><EFBFBD><EFBFBD>室<EFBFBD><E5AEA4> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
inc dword[level_stack]
|
||||
add eax,8
|
||||
.end_f:
|
||||
pop ecx
|
||||
ret
|
||||
|
||||
;<3B><><EFBFBD><EFBFBD>室 <20> <><E1ABA5>饬<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ⥪<>饣<EFBFBD> <20><EFBFBD><E0AEA2>
|
||||
@@ -599,12 +631,10 @@ align 4
|
||||
block_next:
|
||||
push ebx
|
||||
add esi,dword[esi+2] ;<3B>ய<EFBFBD>᪠<EFBFBD><E1AAA0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
add esi,6
|
||||
|
||||
;<3B><EFBFBD>ઠ ࠧ<><E0A0A7> த<>⥫<EFBFBD><EFBFBD><E1AAAE> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>室<EFBFBD> <20><> <20><><EFBFBD>孨<EFBFBD> <20><EFBFBD><E0AEA2><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov ebx,dword[eax-8]
|
||||
add ebx,dword[eax-4]
|
||||
add ebx,6
|
||||
cmp esi,ebx
|
||||
jl @f
|
||||
dec dword[level_stack]
|
||||
@@ -1080,7 +1110,7 @@ procinfo process_information
|
||||
|
||||
align 4
|
||||
buf_0: dd 0 ;㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
||||
dw 155 ;+4 left
|
||||
dw 205 ;+4 left
|
||||
dw 35 ;+6 top
|
||||
.w: dd 340 ;+8 w
|
||||
.h: dd 250 ;+12 h
|
||||
@@ -1099,7 +1129,7 @@ buf_1:
|
||||
|
||||
el_focus dd tree1
|
||||
tree1 tree_list size_one_list,100+2, tl_key_no_edit+tl_draw_par_line,\
|
||||
16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,35,145-16,250, 0,8,0, el_focus,\
|
||||
16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,35,195-16,250, 0,8,0, el_focus,\
|
||||
w_scr_t1,0
|
||||
|
||||
align 4
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.7 KiB |
Reference in New Issue
Block a user