Soly Posted March 17, 2016 Share Posted March 17, 2016 (edited) Where was it before? Btw, I'll be giving it a try myself today or tomorrow and see if we can get stuff up and running. Nvm, just downloaded and got to try it. Few things right away: - Is it intentional that the description says "Regal"? - You could disable player's movement when Elly is talking to you at the very beginning in CCA's entrance... so when you skip the chat bubbles, you don't attack. - I got stuck in the areas 5 - 6 - 7, the portal in 5 was behind the fence and I hit the switch at 7... what to do? /lobby ? Edited March 17, 2016 by Soly 2 Quote Link to comment Share on other sites More sharing options...
Lemon Posted March 17, 2016 Author Share Posted March 17, 2016 (edited) Where was it before? Btw, I'll be giving it a try myself today or tomorrow and see if we can get stuff up and running. Nvm, just downloaded and got to try it. Few things right away: - Is it intentional that the description says "Regal"? - You could disable player's movement when Elly is talking to you at the very beginning in CCA's entrance... so when you skip the chat bubbles, you don't attack. - I got stuck in the areas 5 - 6 - 7, the portal in 5 was behind the fence and I hit the switch at 7... what to do? /lobby ? First off, Thank you for the great feedback! I'll go at them 1 at a time. - No, thanks for catching that typo. - Never even thought to try that... I put in the fix - So the switch along the room 7 wall in room 6 actually opens up the laser gate in room 16. You are suppose to split your party in room 3. Half going through the warp and the other half going through the door into room 4. The switches on each path let the other path proceed. It was my attempt at forcing multiplayer and cooperation. Though now the boss warp doesn't work x,.,x I'll fix before I put up another version. Edited March 17, 2016 by Lemon 2 Quote Link to comment Share on other sites More sharing options...
Soly Posted March 17, 2016 Share Posted March 17, 2016 Alright, let me know... if you need help with anything I can lend a hand, I haven't done any quests but looking at older quests to fix things helps a bit. 1 Quote Link to comment Share on other sites More sharing options...
Lemon Posted March 18, 2016 Author Share Posted March 18, 2016 Didn't think I'd need you this quick, but I decided to do away with the boss warp (because I had no idea what was up with it) and put in a computer like the one at the beginning of roct. When you talk to the computer, function 200 is suppose to run. it disables player movement, yet it seems to not thread functions 212 or 210. And even though R76 is equal to 2, it won't continue with function 222 (if it ever gets there, which I'm not sure actually happens). Just freezes them at the computer. Maybe a fresh set of eye's will see the problem. Any ideas? pasm script below 0: set_episode 00000001 set_qt_exit 1 set_qt_cancel 1 set_qt_success 20 set_qt_failure 30 set_floor_handler 00000000, 1 set_floor_handler 00000005, 100 set_floor_handler 0000000C, 9 BB_Map_Designate 00, 0012, 00, 00 BB_Map_Designate 05, 0017, 00, 00 BB_Map_Designate 06, 001E, 00, 00 initial_floor 00000005 get_slotnumber R250 get_difflvl2 R252 p_disablewarp get_number_of_player1 R251 ret 1: ret 9: thread 10 ret 10: jmpi_= R255, 00000001, 1 leti R2, 00000006 leti R3, 00000001 if_zone_clear R2, R3 let R255, R2 jmpi_= R255, 00000000, 10 sync_register R255, 00000001 jmp 1 20: window_msg 'You completed the quest. This is only a beta<cr>so you don't get any prize.<cr>Please post your thoughts on the forums.' winend ret 30: window_msg 'WOW... you broke the quest.... Please post on the forums what you did<cr>so the creator can fix it.' winend ret 100: hud_hide freeze_and_hide_equip p_action_disable cine_enable thread 500 disable_movement1 00000000 disable_movement1 00000001 disable_movement1 00000002 disable_movement1 00000003 window_msg 'looks like the portal worked. Elly here.<cr>The power plant has been overrun by monsters.' window_msg 'You must clear them out before too much damage is done<cr>if we ever plan on colonizing Regol.' window_msg 'Good luck!' winend thaw_and_show_equip p_action_enable cine_disable enable_movement1 00000000 enable_movement1 00000001 enable_movement1 00000002 enable_movement1 00000003 hud_show warp_on p_disablewarp ret 200: switch_call R251, 4:1:212:213:214 thread 210 disable_movement2 R250 switch_jmp R250, 4:201:202:203:204 201: sync_register R70, 00000001 ret 202: sync_register R71, 00000001 ret 203: sync_register R72, 00000001 ret 204: sync_register R73, 00000001 ret 500: sync leti R75, 00000000 add R75, R70 add R75, R71 add R75, R72 add R75, R73 let R76, R75 switch_call R76, 2:10001:10002 jmp 500 222: sync jmpi_!= R76, 00000002, 222 leti R80, 0000000C enable_movement2 R250 go_floor R250, R80 ret 10001: sync_register R76, 00000001 ret 10002: sync_register R76, 00000002 ret 223: sync leti R75, 00000000 add R75, R70 add R75, R71 add R75, R72 add R75, R73 let R76, R75 jmpi_!= R75, 00000003, 223 leti R80, 0000000C winend enable_movement2 R250 go_floor R250, R80 ret 224: sync leti R75, 00000000 add R75, R70 add R75, R71 add R75, R72 add R75, R73 let R76, R75 jmpi_!= R75, 00000004, 224 leti R80, 0000000C winend enable_movement2 R250 go_floor R250, R80 ret 210: leti R80, 00000000 sync scroll_text 000000C8, 000000C8, 0000000A, 00000006, 00000002, 1, R85, 'Please wait for<cr>all players to<cr>arrive.' sync sync sync winend jmp 210 212: thread 222 ret 213: thread 223 ret 214: thread 224 ret 1000: window_msg 'R76 = <r76> = <r70> + <r71> + <r72> + <r73><cr>Players = <r251>' winend ret Quote Link to comment Share on other sites More sharing options...
Soly Posted March 18, 2016 Share Posted March 18, 2016 (edited) Ugh... had some good reply... but a tiny blackout and all to the trashcan...Here we go again First of all... the thread is just like any other multi threading in programming? .. the function doing stuff in the background until it finishes? disable_movement1 00000000 enable_movement1 00000000 These you should use the other one that takes a register... there is no point in freezing other clients that might not be there... and the other function seems to be the "standard" 200: switch_call R251, 4:1:212:213:214 thread 210 disable_movement2 R250 switch_jmp R250, 4:201:202:203:204 What's all this function 200 (and the 21X and 22X) for?Is just to get all the players in the same place?I think it could be better but can't think of anything right now looking at the spoiler, need to mess in QEdit with it 210: leti R80, 00000000 sync scroll_text 000000C8, 000000C8, 0000000A, 00000006, 00000002, 1, R85, 'Please wait for<cr>all players to<cr>arrive.' sync sync sync winend jmp 210 That's a loop without exit, because: -You never really wait until the message is done (check when R85 is set) -You close the message right away, nobody is gonna see that -You jump to leti R80, 0 which will then sync and send the message again, aka rinse and repeat getting stuck You need something like this 210: sync scroll_text 000000C8, 000000C8, 0000000A, 00000006, 00000002, 1, R85, 'Please wait for<cr>all players to<cr>arrive.' // Use other number, I think 211 is taken 2100: sync sync sync jmpi_= R85, 00000000, 2100 // if R85 == 0, jump to the sync, wait again winend //close message clear R85 //clear register if needed ret having solved this bug in the scroll_text... I think you could make an easier approach for syncing registers dedicating a single register to all clients (although it could cause issues if someone lags) For example R100 = 0; // whether or not a player has gone down a specific pipe if (player1 goes down) R100 += 0x00000001; sync_to_all; if (player2 goes down) R100 += 0x00000010; sync_to_all; if (player3 goes down) R100 += 0x00000100; sync_to_all; if (player4 goes down) R100 += 0x00001000; sync_to_all; switch (number_of_players) { case 1: if (R100 == 0x00000001) // everybody is down case 2: if (R100 == 0x00000011) // everybody is down case 3: if (R100 == 0x00000111) // everybody is down case 4: if (R100 == 0x00001111) // everybody is down } Edited March 18, 2016 by Soly 2 Quote Link to comment Share on other sites More sharing options...
Lemon Posted March 18, 2016 Author Share Posted March 18, 2016 Ugh... had some good reply... but a tiny blackout and all to the trashcan... Here we go again First of all... the thread is just like any other multi threading in programming? .. the function doing stuff in the background until it finishes? disable_movement1 00000000 enable_movement1 00000000 These you should use the other one that takes a register... there is no point in freezing other clients that might not be there... and the other function seems to be the "standard" 200: switch_call R251, 4:1:212:213:214 thread 210 disable_movement2 R250 switch_jmp R250, 4:201:202:203:204 What's all this function 200 (and the 21X and 22X) for? Is just to get all the players in the same place? I think it could be better but can't think of anything right now looking at the spoiler, need to mess in QEdit with it 210: leti R80, 00000000 sync scroll_text 000000C8, 000000C8, 0000000A, 00000006, 00000002, 1, R85, 'Please wait for<cr>all players to<cr>arrive.' sync sync sync winend jmp 210 That's a loop without exit, because: -You never really wait until the message is done (check when R85 is set) -You close the message right away, nobody is gonna see that -You jump to leti R80, 0 which will then sync and send the message again, aka rinse and repeat getting stuck You need something like this 210: sync scroll_text 000000C8, 000000C8, 0000000A, 00000006, 00000002, 1, R85, 'Please wait for<cr>all players to<cr>arrive.' // Use other number, I think 211 is taken 2100: sync sync sync jmpi_= R85, 00000000, 2100 // if R85 == 0, jump to the sync, wait again winend //close message clear R85 //clear register if needed ret having solved this bug in the scroll_text... I think you could make an easier approach for syncing registers dedicating a single register to all clients (although it could cause issues if someone lags) For example R100 = 0; // whether or not a player has gone down a specific pipe if (player1 goes down) R100 += 0x00000001; sync_to_all; if (player2 goes down) R100 += 0x00000010; sync_to_all; if (player3 goes down) R100 += 0x00000100; sync_to_all; if (player4 goes down) R100 += 0x00001000; sync_to_all; switch (number_of_players) { case 1: if (R100 == 0x00000001) // everybody is down case 2: if (R100 == 0x00000011) // everybody is down case 3: if (R100 == 0x00000111) // everybody is down case 4: if (R100 == 0x00001111) // everybody is down } Thank you so much, I was thinking about it all wrong. I think I've got it all working now. I'm going to run more tests tonight, and fix those annoyingly green switches in room 9 before I release 1.03. Quote Link to comment Share on other sites More sharing options...
Soly Posted March 18, 2016 Share Posted March 18, 2016 Alright... Quote Link to comment Share on other sites More sharing options...
Lemon Posted March 18, 2016 Author Share Posted March 18, 2016 Ok, it seemed to work when I was duo\trio\quad logging. I intentionally put it in a loop on solo so that cheaters couldn't win. Thank you Soly and Mud for all you're help and suggestions! 1 Quote Link to comment Share on other sites More sharing options...
Soly Posted March 18, 2016 Share Posted March 18, 2016 Why a loop for solo? ... just make it so you can't play and be done with it lol, kick the person back to lobby or disable the warps etc... Quote Link to comment Share on other sites More sharing options...
Lemon Posted March 18, 2016 Author Share Posted March 18, 2016 Oh... that would work really well too... can't believe I didn't think of it. Implemented. Quote Link to comment Share on other sites More sharing options...
Lemon Posted March 23, 2016 Author Share Posted March 23, 2016 (edited) Added a count up timer since time attack seems to be a thing now. I figured I'd do it now while it wasn't a major thing. As of now it counts up until you win, and then freezes the timer (which displays in all areas) so that you can take a picture if you want. v1.04 does not have any of these changes, so it can act as a fallback. Changes to script. 0: set_episode 00000001 set_qt_exit 1 set_qt_cancel 1 set_qt_success 20 set_qt_failure 30 set_floor_handler 00000000, 2 set_floor_handler 00000005, 100 set_floor_handler 0000000C, 9 BB_Map_Designate 00, 0012, 00, 00 BB_Map_Designate 05, 0017, 00, 00 BB_Map_Designate 0C, 001E, 00, 00 initial_floor 00000005 get_slotnumber R250 get_difflvl2 R252 p_disablewarp get_number_of_player1 R251 ret 1: ret // New handler for labo // This will allow us to display the time 2: window_time winset_time R51 thread 20001 ret 9: thread_stg 10 // This lets timer run during Gal fight window_time winset_time R51 thread 20001 ret 10: jmpi_= R255, 00000001, 1 sync leti R2, 0000000C clear R255 leti R3, 00000001 if_zone_clear R255, R2 jmpi_= R255, 00000000, 10 sync_register R255, 00000001 jmp 1 20: window_msg 'You completed the quest. This is only a beta<cr>so you dont get any prize.<cr>Please post your thoughts on the forums.' winend ret 30: window_msg 'WOW... you broke the quest.... Please post on the forums what you did<cr>so the creator can fix it.' winend ret 100: hud_hide freeze_and_hide_equip // start the timer when they start the quest thread 20000 p_action_disable p_disablewarp cine_enable disable_movement2 R250 jmpi_= R251, 00000001, 10000 window_msg 'Looks like the portal worked. Elly here.<cr>The power plant has been overrun by monsters.' add_msg 'You must clear them out before too much damage is done<cr>if we ever plan on colonizing Ragol.' add_msg 'Good luck!' winend thaw_and_show_equip p_action_enable cine_disable enable_movement2 R250 hud_show warp_on p_disablewarp ret 10000: window_msg 'This is a multiplayer quest. <cr>Please find a team to play with.' winend QEXIT ret 200: thread_stg 210 switch_call R250, 4:201:202:203:204 2000: clear R75 sync get_number_of_player1 R251 add R75, R70 add R75, R71 add R75, R72 add R75, R73 get_number_of_player1 R251 jmp_!= R251, R75, 2000 leti R80, 0000000C go_floor R250, R80 ret 201: sync_register R70, 00000001 ret 202: sync_register R71, 00000001 ret 203: sync_register R72, 00000001 ret 204: sync_register R73, 00000001 ret 210: leti R85, 00000000 sync scroll_text 000000C8, 000000C8, 0000000A, 00000006, 00000002, 1, R85, 'Please wait for<cr>all players to<cr>arrive.' 215: sync sync sync jmpi_= R85, 00000000, 215 winend jmp 210 // This starts the timer 20000: sync clear R50 window_time // R49 is reserved for start time // It never gets changed gettime R49 clear R51 // Now loop the next 3 lines 30 times // since each loop is 1 frame and // the game runs 30 frames per second 20001: sync jmpi_= R255, 00000001, 1 addi R50, 00000001 jmpi_< R50, 0000001E, 20001 // Roughly a second has passed // display currentTime - startTime gettime R51 sub R51, R49 winset_time R51 // If we havent beaten the quest go back // and wait another second and update again clear R50 jmpi_!= R255, 00000001, 20001 Edited March 23, 2016 by Lemon 1 Quote Link to comment Share on other sites More sharing options...
Soly Posted March 23, 2016 Share Posted March 23, 2016 Alright... hmm I'll give it a shot and try to upload today. Quote Link to comment Share on other sites More sharing options...
Soly Posted March 24, 2016 Share Posted March 24, 2016 You left the portal visible at the beginning of CCA xD Quote Link to comment Share on other sites More sharing options...
Lemon Posted March 24, 2016 Author Share Posted March 24, 2016 (edited) You left the portal visible at the beginning of CCA xD oh... wow.... well that would have made for a very short quest... EDIT: If you haven't already changed that, I just re-uploaded. Edited March 24, 2016 by Lemon Quote Link to comment Share on other sites More sharing options...
Soly Posted March 24, 2016 Share Posted March 24, 2016 I changed here... but the server is too crowded to restart it. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.