CLEO Help It seems like @iftextcontains has a problem

CLEO related

auma

Member
Joined
Jul 31, 2022
Messages
21
Reaction score
0
{$CLEO .cs}

thread 'FISH'
repeat
wait 10000



32@ = 0
33@ = 0

while true
wait 0

if
0ADC: test_cheat "FISH"
then
0AB1: @get_samp_version_id 0 _returned: ID 10@

if
30@ == false
then
30@ = true
0AD1: show_formatted_text_highpriority "Fish ~g~Activated" time 1337
32@ = 0
33@ = 0
else
30@ = false
0AD1: show_formatted_text_highpriority "Fish ~r~Deactivated" time 1337
end
end

if
30@ == true
then

if
33@ > 62000
then
0AC8: 11@ = allocate_memory_size 1024
0AD3: 11@ = format "/fish"
0AB1: @PROCESS_CHAT_INPUT 1 InputText 11@
33@ = 0
end
0AC9: free_allocated_memory 11@


if 0256: player $PLAYER_CHAR defined
then
0AC8: 0@ = allocate_memory_size 1024
0AC8: 1@ = allocate_memory_size 1024
0AB1: @getChatString 1 ChatID 99 _Returned: Text 0@ PrefixText 1@ Color 2@ PrefixColor 3@

0AC8: 4@ = allocate_memory_size 1024
0AD3: 4@ = format "Your fish bag is full"
if 0AB1: @IfTextContains 2 String1 0@ String2 4@ _returned: Text 5@
then

0AC8: 6@ = allocate_memory_size 1024
0AD3: 6@ = format "/char play fish1"
0AB1: @PROCESS_CHAT_INPUT 1 InputText 6@
0AC9: free_allocated_memory 6@
wait 7000
0AC8: 12@ = allocate_memory_size 1024
0AD3: 12@ = format "/enter"
0AB1: @PROCESS_CHAT_INPUT 1 InputText 12@
0AC9: free_allocated_memory 12@
end

if 00ED: actor $PLAYER_ACTOR sphere 0 near_point 6.44 -30.9 radius 1.0 1.0 on_foot
then
0AC8: 7@ = allocate_memory_size 1024
0AD3: 7@ = format "/sellfish"
0AB1: @PROCESS_CHAT_INPUT 1 InputText 7@
0AC9: free_allocated_memory 7@
wait 1000
if 0AB1: @isDialogOpen 1 SampVersionID 10@
then
0AC8: 8@ = allocate_memory_size 1024
0AD3: 8@ = format "50"
0AB1: @SetDialogInputEditBoxText 2 SampVersionID 10@ text 8@
wait 100
0AB1: @CloseCurrentDialogWithButton 2 SampVersionID 10@ Button 1 // 1 = Left , 0 = Right
end
wait 2000
0AC8: 9@ = allocate_memory_size 1024
0AD3: 9@ = format "/exit"
0AB1: @PROCESS_CHAT_INPUT 1 InputText 9@
0AC9: free_allocated_memory 9@
wait 1000
0AC8: 13@ = allocate_memory_size 1024
0AD3: 13@ = format "/char play fish2"
0AB1: @PROCESS_CHAT_INPUT 1 InputText 13@
0AC9: free_allocated_memory 13@

end
0AC9: free_allocated_memory 0@
0AC9: free_allocated_memory 1@
0AC9: free_allocated_memory 4@

end
0AC9: free_allocated_memory 8@
end
end



:SetDialogInputEditBoxText
// 0AB1: @SetDialogInputEditBoxText 2 SampVersionID 0@ text 1@
IF 0AA2: 2@ = "samp.dll"
THEN
IF 0@ == 1 // 0.3.7 R1
THEN
0A8E: 3@ = 2@ + 0x21A0B8 // SAMP_DIALOG_INFO_OFFSET
0A8D: 3@ = readMem 3@ sz 4 vp 0 // pDialog;
0A8E: 4@ = 3@ + 0x24 // pDialog->pEditBox;
0A8D: 4@ = readMem 4@ sz 4 vp 0 // pEditBox;

0A8E: 5@ = 2@ + 0x80F60 // CDXUTEditBox::SetText
END

IF 0@ == 2 // 0.3.7 R2
THEN
0A8E: 3@ = 2@ + 0x21A0C0 // SAMP_DIALOG_INFO_OFFSET
0A8D: 3@ = readMem 3@ sz 4 vp 0 // pDialog;
0A8E: 4@ = 3@ + 0x24 // pDialog->pEditBox;
0A8D: 4@ = readMem 4@ sz 4 vp 0 // pEditBox;

0A8E: 5@ = 2@ + 0x81000 // CDXUTEditBox::SetText
END

IF 0@ == 3 // 0.3.DL
THEN
0A8E: 3@ = 2@ + 0x2AC9E0 // SAMP_DIALOG_INFO_OFFSET
0A8D: 3@ = readMem 3@ sz 4 vp 0 // pDialog;
0A8E: 4@ = 3@ + 0x24 // pDialog->pEditBox;
0A8D: 4@ = readMem 4@ sz 4 vp 0 // pEditBox;

0A8E: 5@ = 2@ + 0x85000 // CDXUTEditBox::SetText
END

IF 0@ == 4 // 0.3.7 R3
THEN
0A8E: 3@ = 2@ + 0x26E898 // SAMP_DIALOG_INFO_OFFSET
0A8D: 3@ = readMem 3@ sz 4 vp 0 // pDialog;
0A8E: 4@ = 3@ + 0x24 // pDialog->pEditBox;
0A8D: 4@ = readMem 4@ sz 4 vp 0 // pEditBox;

0A8E: 5@ = 2@ + 0x84E70 // CDXUTEditBox::SetText
END

IF 0@ == 5 // 0.3.7 R4
THEN
0A8E: 3@ = 2@ + 0x26E9C8 // SAMP_DIALOG_INFO_OFFSET
0A8D: 3@ = readMem 3@ sz 4 vp 0 // pDialog;
0A8E: 4@ = 3@ + 0x24 // pDialog->pEditBox;
0A8D: 4@ = readMem 4@ sz 4 vp 0 // pEditBox;

0A8E: 5@ = 2@ + 0x855B0 // CDXUTEditBox::SetText
END
// CDXUTEditBox::SetText takes 2 params
// 1 - pointer to zero terminated string
// 2 - bool, if text is to be selected or not

0AA8: call_function_method 5@ struct 4@ num_params 2 pop 0 _bSelected 0 _pszText 1@ _retVal 6@
END
0AB2: 0

:CloseCurrentDialogWithButton
// 0AB1: @CloseCurrentDialogWithButton 2 SampVersionID 0@ Button 1 // 1 = Left , 0 = Right
IF 0AA2: 10@ = "samp.dll"
THEN
IF 0@ == 1 // 0.3.7 R1
THEN
0A8E: 11@ = 10@ + 0x21A0B8 // SAMP_DIALOG_INFO_OFFSET
0A8D: 12@ = readMem 11@ sz 4 vp 0
0A8E: 11@ = 10@ + 0x6C040 //SAMP_DIALOG_CLOSE
END

IF 0@ == 2 // 0.3.7 R2
THEN
0A8E: 11@ = 10@ + 0x21A0C0 // SAMP_DIALOG_INFO_OFFSET
0A8D: 12@ = readMem 11@ sz 4 vp 0
0A8E: 11@ = 10@ + 0x6C0F0 //SAMP_DIALOG_CLOSE
END

IF 0@ == 3 // 0.3.DL
THEN
0A8E: 11@ = 10@ + 0x2AC9E0 // SAMP_DIALOG_INFO_OFFSET
0A8D: 12@ = readMem 11@ sz 4 vp 0
0A8E: 11@ = 10@ + 0x700D0 //SAMP_DIALOG_CLOSE
END

IF 0@ == 4 // 0.3.7 R3
THEN
0A8E: 11@ = 10@ + 0x26E898 // SAMP_DIALOG_INFO_OFFSET
0A8D: 12@ = readMem 11@ sz 4 vp 0
0A8E: 11@ = 10@ + 0x6FF40 //SAMP_DIALOG_CLOSE
END

IF 0@ == 5 // 0.3.7 R4
THEN
0A8E: 11@ = 10@ + 0x26E9C8 // SAMP_DIALOG_INFO_OFFSET
0A8D: 12@ = readMem 11@ sz 4 vp 0
0A8E: 11@ = 10@ + 0x70660 //SAMP_DIALOG_CLOSE
END

0AA8: call_function_method 11@ struct 12@ num_params 1 pop 0 Button 1@ _retVal 6@
END
0AB2: 0
:isDialogOpen
// 0AB1: @isDialogOpen 1 SampVersionID 0@
0AA2: 1@ = "samp.dll"
IF 0@ == 1 // 0.3.7 R1
THEN
0A8E: 2@ = 1@ + 0x21A0B8
END
IF 0@ == 2 // 0.3.7 R2
THEN
0A8E: 2@ = 1@ + 0x21A0C0
END

IF 0@ == 3 // 0.3.DL
THEN
0A8E: 2@ = 1@ + 0x2AC9E0
END

IF 0@ == 4 // 0.3.7 R3
THEN
0A8E: 2@ = 1@ + 0x26E898
END

IF 0@ == 5 // 0.3.7 R4
THEN
0A8E: 2@ = 1@ + 0x26E9C8
END
0A8D: 2@ = readMem 2@ sz 4 vp 0
0A8E: 2@ = 2@ + 0x28
0A8D: 2@ = readMem 2@ sz 4 vp 0
IF 2@ == 1
THEN
0485: dialog_open
ELSE
059A: dialog_closed
END
0AB2: ret 0



:get_samp_version_id
// 0AB1: @get_samp_version_id 0 _returned: ID 0@
30@ = 0
IF 0AA2: 31@ = "samp.dll" // IF and SET
THEN
31@ += 0x128
0A8D: 29@ = read_memory 31@ size 4 virtual_protect 1
IF 29@ == 0x5542F47A
THEN // 0.3.7 R1
30@ = 1
END

IF 29@ == 0x59C30C94
THEN // 0.3.7 R2
30@ = 2
END

IF 29@ == 0x5A6A3130
THEN // 0.3.DL
30@ = 3
END
31@ -= 8 // reading samp.dll + 0x120
0A8D: 29@ = read_memory 31@ size 4 virtual_protect 1
IF 29@ == 0x5C0B4243
THEN // 0.3.7 R3
30@ = 4
END

IF 29@ == 0x5DD606CD
THEN // 0.3.7 R4
30@ = 5
END
IF 29@ == 0x6094ACAB
THEN // 0.3.7 R4 - v2
30@ = 6
END
IF 29@ == 0x6372C39E
THEN // 0.3.7 R5
30@ = 7
END
END
0AB2: ret 1 30@

:getChatString
{
0AC8: 0@ = allocate_memory_size 144
0AC8: 1@ = allocate_memory_size 144
0AB1: @getChatString 1 ChatID 99 _Returned: Text 0@ PrefixText 1@ Color 2@ PrefixColor 3@
0AC9: free_allocated_memory 0@
0AC9: free_allocated_memory 1@
}
IF 0AA2: 31@ = "samp.dll"
THEN
0AB1: @get_samp_version_id 0 _returned: ID 17@
IF 17@ > 0
THEN
IF 17@ == 1 // 0.3.7 R1
THEN
31@ += 0x21A0E4 // SAMP_CHAT_INFO_OFFSET
0A8D: 31@ readMem 31@ sz 4 vp 0
31@ += 0x132
0@ *= 0xFC
005A: 31@ += 0@
0A8E: 30@ = 31@ + 0x20 // CHAT_TEXT_OFFSET
0A8E: 29@ = 31@ + 0x4 // CHAT_PREFIX_TEXT_OFFSET
0A8E: 28@ = 31@ + 0xF4 // CHAT_COLOR_OFFSET
0A8D: 27@ readMem 28@ sz 4 vp 0 // HEX Color
0A8E: 26@ = 31@ + 0xF8 // CHAT_PREFIX_COLOR_OFFSET
0A8D: 25@ readMem 26@ sz 1 vp 0
IF NOT 25@ > 0
THEN 24@ = 0
ELSE 0A8D: 24@ readMem 26@ sz 4 vp 0
END
END
IF 17@ == 2 // 0.3.7 R2
THEN
31@ += 0x21A0EC // SAMP_CHAT_INFO_OFFSET
0A8D: 31@ readMem 31@ sz 4 vp 0
31@ += 0x132
0@ *= 0xFC
005A: 31@ += 0@
0A8E: 30@ = 31@ + 0x20 // CHAT_TEXT_OFFSET
0A8E: 29@ = 31@ + 0x4 // CHAT_PREFIX_TEXT_OFFSET
0A8E: 28@ = 31@ + 0xF4 // CHAT_COLOR_OFFSET
0A8D: 27@ readMem 28@ sz 4 vp 0 // HEX Color
0A8E: 26@ = 31@ + 0xF8 // CHAT_PREFIX_COLOR_OFFSET
0A8D: 25@ readMem 26@ sz 1 vp 0
IF NOT 25@ > 0
THEN 24@ = 0
ELSE 0A8D: 24@ readMem 26@ sz 4 vp 0
END
END

IF 17@ == 3 // 0.3.DL
THEN
31@ += 0x2ACA10 // SAMP_CHAT_INFO_OFFSET
0A8D: 31@ readMem 31@ sz 4 vp 0
31@ += 0x132
0@ *= 0xFC
005A: 31@ += 0@
0A8E: 30@ = 31@ + 0x20 // CHAT_TEXT_OFFSET
0A8E: 29@ = 31@ + 0x4 // CHAT_PREFIX_TEXT_OFFSET
0A8E: 28@ = 31@ + 0xF4 // CHAT_COLOR_OFFSET
0A8D: 27@ readMem 28@ sz 4 vp 0 // HEX Color
0A8E: 26@ = 31@ + 0xF8 // CHAT_PREFIX_COLOR_OFFSET
0A8D: 25@ readMem 26@ sz 1 vp 0
IF NOT 25@ > 0
THEN 24@ = 0
ELSE 0A8D: 24@ readMem 26@ sz 4 vp 0
END
END

IF 17@ == 4 // 0.3.7 R3
THEN
31@ += 0x26E8C8 // SAMP_CHAT_INFO_OFFSET
0A8D: 31@ readMem 31@ sz 4 vp 0
31@ += 0x132
0@ *= 0xFC
005A: 31@ += 0@
0A8E: 30@ = 31@ + 0x20 // CHAT_TEXT_OFFSET
0A8E: 29@ = 31@ + 0x4 // CHAT_PREFIX_TEXT_OFFSET
0A8E: 28@ = 31@ + 0xF4 // CHAT_COLOR_OFFSET
0A8D: 27@ readMem 28@ sz 4 vp 0 // HEX Color
0A8E: 26@ = 31@ + 0xF8 // CHAT_PREFIX_COLOR_OFFSET
0A8D: 25@ readMem 26@ sz 1 vp 0
IF NOT 25@ > 0
THEN 24@ = 0
ELSE 0A8D: 24@ readMem 26@ sz 4 vp 0
END
END

IF 17@ == 5 // 0.3.7 R4
THEN
31@ += 0x26E9F8 // SAMP_CHAT_INFO_OFFSET
0A8D: 31@ readMem 31@ sz 4 vp 0
31@ += 0x132
0@ *= 0xFC
005A: 31@ += 0@
0A8E: 30@ = 31@ + 0x20 // CHAT_TEXT_OFFSET
0A8E: 29@ = 31@ + 0x4 // CHAT_PREFIX_TEXT_OFFSET
0A8E: 28@ = 31@ + 0xF4 // CHAT_COLOR_OFFSET
0A8D: 27@ readMem 28@ sz 4 vp 0 // HEX Color
0A8E: 26@ = 31@ + 0xF8 // CHAT_PREFIX_COLOR_OFFSET
0A8D: 25@ readMem 26@ sz 1 vp 0
IF NOT 25@ > 0
THEN 24@ = 0
ELSE 0A8D: 24@ readMem 26@ sz 4 vp 0
END
END

IF 17@ == 6 // 0.3.7 R4 - v2
THEN
31@ += 0x26E9F8 // SAMP_CHAT_INFO_OFFSET
0A8D: 31@ readMem 31@ sz 4 vp 0
31@ += 0x132
0@ *= 0xFC
005A: 31@ += 0@
0A8E: 30@ = 31@ + 0x20 // CHAT_TEXT_OFFSET
0A8E: 29@ = 31@ + 0x4 // CHAT_PREFIX_TEXT_OFFSET
0A8E: 28@ = 31@ + 0xF4 // CHAT_COLOR_OFFSET
0A8D: 27@ readMem 28@ sz 4 vp 0 // HEX Color
0A8E: 26@ = 31@ + 0xF8 // CHAT_PREFIX_COLOR_OFFSET
0A8D: 25@ readMem 26@ sz 1 vp 0
IF NOT 25@ > 0
THEN 24@ = 0
ELSE 0A8D: 24@ readMem 26@ sz 4 vp 0
END
END

IF 17@ == 7 // 0.3.7 R5
THEN
31@ += 0x26EB80 // SAMP_CHAT_INFO_OFFSET
0A8D: 31@ readMem 31@ sz 4 vp 0
31@ += 0x132
0@ *= 0xFC
005A: 31@ += 0@
0A8E: 30@ = 31@ + 0x20 // CHAT_TEXT_OFFSET
0A8E: 29@ = 31@ + 0x4 // CHAT_PREFIX_TEXT_OFFSET
0A8E: 28@ = 31@ + 0xF4 // CHAT_COLOR_OFFSET
0A8D: 27@ readMem 28@ sz 4 vp 0 // HEX Color
0A8E: 26@ = 31@ + 0xF8 // CHAT_PREFIX_COLOR_OFFSET
0A8D: 25@ readMem 26@ sz 1 vp 0
IF NOT 25@ > 0
THEN 24@ = 0
ELSE 0A8D: 24@ readMem 26@ sz 4 vp 0
END
END
0AA3: 31@
END
END
0AB2: ret 4 30@ 29@ 27@ 24@



:IfTextContains
{
0AC8: 3@ = allocate_memory_size 1024
0AD3: 3@ = format "Ar"
if 0AB1: @IfTextContains 2 String1 2@ String2 3@ _returned: Text 4@
}
0AB1: @strlenA 1 string 0@ _length 31@
0AB1: @strlenA 1 string 1@ _length 30@

//initial length check (the phrase can't be longer than the main text)
if 001D: 30@ > 31@ // (int)
then
059A: return_false
0AB2: ret 1 0
end

31@ -= 1
26@ = 0 // counter of the same chars in a row
for 29@ = 0 to 31@ // for each char of the main text (29@ = index)
0085: 24@ = 0@ // (int)
005A: 24@ += 29@ // (int)
0A8D: 28@ = read_memory 24@ size 1 virtual_protect 0

0085: 23@ = 1@ // (int)
005A: 23@ += 26@ // (int)
0A8D: 27@ = read_memory 23@ size 1 virtual_protect 0

if 003B: 28@ == 27@ // (int)
then
26@++
if 002D: 26@ >= 30@ // (int)
then
0485: return_true
0062: 24@ -= 30@ // (int)
24@ += 1
0AB2: ret 1 24@
end
else
if 26@ > 0
then
29@-- //check the same char again and assume it's the begining of the string but only if there was matching parts before (otherwise it would go back all the time and make infinite loop)
end
26@ = 0
end
end

059A: return_false
0AB2: ret 1 0

:StrlenA
// 0AB1: @StrlenA 1 String 0@ _Returned: Length 1@
0A8D: 26@ = readmem 0x8580DC sz 4 vp 0 // 0x8580DC - KERNEL32.lstrlenA
0AA7: strlen_addr 26@ num_params 1 pop 0 string 0@ _returned_length 25@
0AB2: ret 1 25@


:pROCESS_CHAT_INPUT
{
0.3.DL
Ex.:
0AB1: @PROCESS_CHAT_INPUT 1 InputText 0@
}
IF 0AA2: 20@ = "samp.dll"
THEN
0A8E: 21@ = 20@ + 0x2ACA14 // SAMP_CHAT_INPUT_INFO_OFFSET
0A8D: 22@ = readMem 21@ sz 4 vp 0 // pChatInput;
0A8E: 26@ = 22@ + 0x8 // pChatInput->pEditBox;
0A8D: 27@ = readMem 26@ sz 4 vp 0 // pEditBox;

0A8E: 24@ = 20@ + 0x85000 // CDXUTEditBox::SetText

0AA8: call_function_method 24@ struct 27@ num_params 2 pop 0 _bSelected 0 _pszText 0@ _retVal 6@

0A8E: 25@ = 20@ + 0x69410 // PROCESS_INPUT
0AA8: call_function_method 25@ struct 22@ num_params 0 pop 0 _retVal 7@
END
0AB2: 0

everything works fine except @iftextcontains, I can't understand where I made a mistake.
0.3DL
 

laynitroepic

Member
Joined
Jan 13, 2025
Messages
5
Reaction score
1
if 0256: player $PLAYER_CHAR defined
then
0AC8: 0@ = allocate_memory_size 1024
0AC8: 1@ = allocate_memory_size 1024
0AB1: @getChatString 1 ChatID 99 _Returned: Text 0@ PrefixText 1@ Color 2@ PrefixColor 3@

0AC8: 4@ = allocate_memory_size 1024
0AD3: 4@ = format "Your fish bag is full"
if 0AB1: @IfTextContains 2 String1 0@ String2 4@ _returned: Text 5@
then

change to

if 0256: player $PLAYER_CHAR defined
then


0AC8: 4@ = allocate_memory_size 1024
0AD3: 4@ = format "Your fish bag is full"

0AC8: 0@ = allocate_memory_size 1024
0AC8: 1@ = allocate_memory_size 1024
0AB1: @getChatString 1 ChatID 99 _Returned: Text 0@ PrefixText 1@ Color 2@ PrefixColor 3@

if 0AB1: @IfTextContains 2 String1 0@ String2 4@ _returned: Text 5@
and another thing, while u use /fish the chatlog last u see need Your fish bag is full , if not, function IfTextContains will fail
Example:

you use /fish
chatlog:

Your fish bag is full
Player_A: alo
Player_B: alo
not work

you use /fish
Player_A: alo
Player_B: alo
Your fish bag is full
this string show in the last chat, so iftextcontains work
 

auma

Member
Joined
Jul 31, 2022
Messages
21
Reaction score
0
if 0256: player $PLAYER_CHAR defined
then
0AC8: 0@ = allocate_memory_size 1024
0AC8: 1@ = allocate_memory_size 1024
0AB1: @getChatString 1 ChatID 99 _Returned: Text 0@ PrefixText 1@ Color 2@ PrefixColor 3@

0AC8: 4@ = allocate_memory_size 1024
0AD3: 4@ = format "Your fish bag is full"
if 0AB1: @IfTextContains 2 String1 0@ String2 4@ _returned: Text 5@
then

change to

if 0256: player $PLAYER_CHAR defined
then


0AC8: 4@ = allocate_memory_size 1024
0AD3: 4@ = format "Your fish bag is full"

0AC8: 0@ = allocate_memory_size 1024
0AC8: 1@ = allocate_memory_size 1024
0AB1: @getChatString 1 ChatID 99 _Returned: Text 0@ PrefixText 1@ Color 2@ PrefixColor 3@

if 0AB1: @IfTextContains 2 String1 0@ String2 4@ _returned: Text 5@
and another thing, while u use /fish the chatlog last u see need Your fish bag is full , if not, function IfTextContains will fail
Example:

you use /fish
chatlog:

Your fish bag is full
Player_A: alo
Player_B: alo
not work

you use /fish
Player_A: alo
Player_B: alo
Your fish bag is full
this string show in the last chat, so iftextcontains work
sa-mp-019.png

it still doesn't work. The strange thing is that when I replace it with numbers it works fine
 

auma

Member
Joined
Jul 31, 2022
Messages
21
Reaction score
0
if 0256: player $PLAYER_CHAR defined
then
0AC8: 0@ = allocate_memory_size 1024
0AC8: 1@ = allocate_memory_size 1024
0AB1: @getChatString 1 ChatID 99 _Returned: Text 0@ PrefixText 1@ Color 2@ PrefixColor 3@
0AC8: 4@ = allocate_memory_size 1024
0AB1: @DeleteColorCodeFromText 4 text 0@ FirstCharacter 123 SecondCharacter 125 memory_to_store_characters_as_text 4@
0AC8: 5@ = allocate_memory_size 1024
0AD3: 5@ = format "type /chapnhan refill to accept"
if 0AB1: @IfTextContains 2 String1 4@ String2 5@ _returned: Text 6@
then
0AC8: 6@ = allocate_memory_size 1024
0AD3: 6@ = format "/chapnhan refill"
0AB1: @PROCESS_CHAT_INPUT 1 InputText 6@
wait 1000
end
end

I found another cleo and it works fine. But when I go to sanny builder and press F6 it doesn't work anymore. maybe the error is in sannybuilder, Does anyone know how to fix it?
 
Top