kosticn101 Posted August 2, 2017 Share Posted August 2, 2017 (edited) I wrote a script to extend limited number of group members. Basically I'm creating 7 new groups (if I try to add more, game crashes) in a array. So limit is now 7 * 7 = 49 (+ maybe 7 more members recruited using G). Idea is if you target an actor that is not in any group and press 1, he gets added to the first available group. If you do that again, he should be removed from the group. But that doesn't happen for me. Looks like 06EE: actor ACTOR in_group GROUP is always returning false so instead of removing an actor from the group, I'm adding him again. Is my game broken, or something is wrong with my script? {$CLEO}0000: const VK_KEY_1 = 49 MAX_GROUPS = 7 MAX_INDEX = 6 MAX_MEMBERS = 7 ACTOR = [email protected] INDEX = [email protected] GROUP_LEADERS = [email protected] GROUP_MEMBERS = [email protected] GROUP = [email protected](INDEX,MAX_GROUPSi)end :beginningwait 0if 0256: player $PLAYER_CHAR definedjf @beginning for INDEX = 0 to MAX_INDEX 062F: GROUP = create_group_type 0 0630: put_actor $PLAYER_ACTOR in_group GROUP as_leaderend while true wait 0 if 8256: not player $PLAYER_CHAR defined then for INDEX = 0 to MAX_INDEX 0632: release_group GROUP end jump @beginning end if and 0AB0: key_pressed VK_KEY_1 0AD2: ACTOR = player $PLAYER_CHAR targeted_actor //IF and SET then for INDEX = 0 to MAX_INDEX //HERE IS THE PROBLEM //0AD1: show_formatted_text_highpriority "Checking group %d." time 1000 INDEX //wait 1000 if 06EE: actor ACTOR in_group GROUP then 0ACE: show_formatted_text_box "Actor removed from the group %d." INDEX 06C9: remove_actor ACTOR from_group jump @break end end for INDEX = 0 to MAX_INDEX 07F6: get_group GROUP number_of_leaders_to GROUP_LEADERS number_of_members_to GROUP_MEMBERS if MAX_MEMBERS > GROUP_MEMBERS then 0631: put_actor ACTOR in_group GROUP 0ACE: show_formatted_text_box "Actor added to the group %d." INDEX jump @break end end 0ACA: show_text_box "All groups are full." :break while 0AB0: key_pressed VK_KEY_1 wait 0 end endend 0A93: end_custom_thread Edited August 2, 2017 by kosticn101 Link to comment Share on other sites More sharing options...
kosticn101 Posted August 2, 2017 Author Share Posted August 2, 2017 (edited) Why is this: for INDEX = 0 to MAX_INDEX if 06EE: actor ACTOR in_group GROUP then 0ACE: show_formatted_text_box "Actor removed from the group %d." INDEX 06C9: remove_actor ACTOR from_group jump @break endend decompiled as: :Noname_16700D6: if 06EE: actor [email protected] in_group [email protected] //should be "in_group [email protected]([email protected],7i)" 004D: jump_if_false @Noname_238 0ACE: show_formatted_text_box "Actor removed from the group %d." [email protected] 06C9: remove_actor [email protected] from_group 0002: jump @Noname_399 Whatever variable I put there, like [email protected], it always gets (de)compiled as [email protected].Temporary solution: for INDEX = 0 to MAX_INDEX hex EE 06 03 1F 00 08 00 00 1E 00 07 00 //06EE: actor ACTOR in_group GROUP end jf continue 0ACE: show_formatted_text_box "Actor removed from the group %d." INDEX 06C9: remove_actor ACTOR from_group jump @breakend Edited August 3, 2017 by kosticn101 Link to comment Share on other sites More sharing options...
MKKJ Posted August 3, 2017 Share Posted August 3, 2017 (edited) I'm not sure about the group thing. But about compile/decompile thing, does your SB's 'Add Extra info to SCM' is checked? I've had similiar problem, it seems SB compiles high-level structure and constants differently if it's unchecked. Usually causes crash. Edited August 3, 2017 by MKKJ Link to comment Share on other sites More sharing options...
kosticn101 Posted August 3, 2017 Author Share Posted August 3, 2017 (edited) It's same if I turn it off. 06EE: actor AAA in_group XXX This is what happens: AAA takes place of XXX, and [email protected] takes place of AAA. Can someone compile and decompile the script, to see if I'm the one with a problem? Edited August 3, 2017 by kosticn101 Link to comment Share on other sites More sharing options...
MKKJ Posted August 3, 2017 Share Posted August 3, 2017 (edited) I've tried it and got same result. I solved it by changing 'ACTOR' constant to 'ACTIR'. Maybe you should avoid short and literal constants like ACTOR, CAR, GROUP, WEAPON, etc. just in case. Edited August 3, 2017 by MKKJ kosticn101 1 Link to comment Share on other sites More sharing options...
kosticn101 Posted August 3, 2017 Author Share Posted August 3, 2017 (edited) I guess that I'll just use numbers from now on... {$CLEO}0000: const VK_KEY_1 = 49 MAX_GROUPS = 7 MAX_INDEX = 6 MAX_MEMBERS = 7end :beginningwait 0if 0256: player $PLAYER_CHAR definedjf @beginning for [email protected] = 0 to MAX_INDEX 062F: [email protected]([email protected],MAX_GROUPSi) = create_group_type 0 0630: put_actor $PLAYER_ACTOR in_group [email protected]([email protected],MAX_GROUPSi) as_leaderend while true wait 0 if 8256: not player $PLAYER_CHAR defined then for [email protected] = 0 to MAX_INDEX 0632: release_group [email protected]([email protected],MAX_GROUPSi) end jump @beginning end if and 0AB0: key_pressed VK_KEY_1 0AD2: [email protected] = player $PLAYER_CHAR targeted_actor //IF and SET then for [email protected] = 0 to MAX_INDEX if 06EE: actor [email protected] in_group [email protected]([email protected],MAX_GROUPSi) then 0ACE: show_formatted_text_box "Actor removed from the group %d." [email protected] 06C9: remove_actor [email protected] from_group jump @break end end for [email protected] = 0 to MAX_INDEX 07F6: get_group [email protected]([email protected],MAX_GROUPSi) number_of_leaders_to [email protected] number_of_members_to [email protected] if MAX_MEMBERS > [email protected] then 0631: put_actor [email protected] in_group [email protected]([email protected],MAX_GROUPSi) 0ACE: show_formatted_text_box "Actor added to the group %d." [email protected] jump @break end end 0ACA: show_text_box "All groups are full." :break while 0AB0: key_pressed VK_KEY_1 wait 0 end endend 0A93: end_custom_thread Edited August 3, 2017 by kosticn101 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now