.:TOM:. Geplaatst: 28 december 2008 Auteur Rapport Geplaatst: 28 december 2008 Ik ben zo ongeveer iets meer dan de helft klaar maar blijf eigenlijk vastzitten bij dit probleem. Ik spawn een actor met model #NULL, pedtype dealer of 17 dus. Dan check ik of het model een dealer is indien niet verwijder ik de references en begin ik weer opnieuw. Ik weet niet echt hoe ik dit moet uitleggen, ik zou gewoon een manier moeten vinden zodat er dealers op straat rondlopen, dus allevier modellen, #BIKDRUG, #BMYDRUG, #HMYDRUG en #WMYDRUG. Hopelijk begrijpt er iemand wat ik bedoel en kan die me uitleggen wat ik fout doe of hoe het wel moet, ik heb al geprobeert om Rockstars code na te bootsen maar daar staat zoveel overbodige code in volgens mij dat ik er niet uit wijs raak. Hier dan mijn cleo, ik gebruik een stripped scm. // This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007 {$VERSION 3.1.0027} {$CLEO .cs} //-------------MAIN--------------- 03A4: name_thread 'DEALER' :DEALER_11 00A0: store_actor $PLAYER_ACTOR position_to 3@ 4@ 5@ 08F1: get_zone_at 3@ 4@ 5@ nameB_to s$9451 // 8-byte string 076A: set_zone s$9451 dealer_density_to 10 009A: $411 = create_actor_pedtype 17 model #NULL at 0.0 0.0 0.0 05DE: AS_actor $411 walk_around_ped_path :DEALER_43 04ED: load_animation "DEALER" 0001: wait 0 ms 00D6: if 84EE: not animation "DEALER" loaded 004D: jump_if_false @DEALER_85 0002: jump @DEALER_43 :DEALER_85 00A0: store_actor $PLAYER_ACTOR position_to $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 091C: get_actor_in_sphere $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 radius 20.0 model #BMYDRUG external_script_named "DEALER" handle_as $411 0001: wait 0 ms 00D6: if 02F2: actor 2@ model == #BMYDRUG 004D: jump_if_false @DEALER_157 0002: jump @DEALER_333 :DEALER_157 091C: get_actor_in_sphere $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 radius 20.0 model #WMYDRUG external_script_named "DEALER" handle_as $411 0001: wait 0 ms 00D6: if 02F2: actor 2@ model == #WMYDRUG 004D: jump_if_false @DEALER_215 0002: jump @DEALER_333 :DEALER_215 091C: get_actor_in_sphere $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 radius 20.0 model #HMYDRUG external_script_named "DEALER" handle_as $411 0001: wait 0 ms 00D6: if 02F2: actor $411 model == #HMYDRUG 004D: jump_if_false @DEALER_273 0002: jump @DEALER_333 :DEALER_273 091C: get_actor_in_sphere $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 radius 20.0 model #BIKDRUG external_script_named "DEALER" handle_as $411 0001: wait 0 ms 00D6: if 02F2: actor $411 model == #BIKDRUG 004D: jump_if_false @DEALER_290 0002: jump @DEALER_333 :DEALER_290 01C2: remove_references_to_actor $411 // Like turning an actor into a random pedestrian jump @DEALER_11 :DEALER_333 03FE: set_actor $411 money 10000 0605: actor $411 perform_animation_sequence "DEALER_IDLE" IFP_file "DEALER" 4.0 loop 1 0 0 0 time -1 // versionA :DEALER_382 0001: wait 0 ms 00D6: if 00F3: actor $PLAYER_ACTOR near_actor $411 radius 2.0 2.0 0 on_foot 004D: jump_if_false @DEALER_382 074D: AS_actor $411 turns_to_and_look_at_actor $PLAYER_ACTOR timelimit -1 0001: wait 300 ms 0001: wait 400 ms 00BC: show_text_highpriority GXT 'DEAL1' time 2000 flag 1 // You want some weed? 0967: actor $411 move_mouth 2000 ms 03E5: show_text_box 'TALK_1' // To reply negatively press ~k~~CONVERSATION_NO~~n~To reply positively press ~k~~CONVERSATION_YES~ :DEALER_472 0001: wait 0 ms 00D6: if 00E1: player 0 pressed_key 10 004D: jump_if_false @DEALER_500 0002: jump @DEALER_549 :DEALER_500 0001: wait 0 ms 00D6: if 00E1: player 0 pressed_key 11 004D: jump_if_false @DEALER_528 0002: jump @DEALER_815 :DEALER_528 0050: gosub @DEALER_815 0050: gosub @DEALER_884 0002: jump @DEALER_472 :DEALER_549 03E6: remove_text_box 0001: wait 500 ms 0050: gosub @DEALER_815 0050: gosub @DEALER_884 00BC: show_text_highpriority GXT 'DEAL3' time 2500 flag 1 // Fuck off man, lose your shit somewhere else! 0967: actor $PLAYER_ACTOR move_mouth 2500 ms 0812: AS_actor $PLAYER_ACTOR perform_animation "FUCKU" IFP_file "PED" 4.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1 // versionB 0001: wait 1000 ms 0050: gosub @DEALER_815 0050: gosub @DEALER_884 0001: wait 1500 ms 0050: gosub @DEALER_815 0050: gosub @DEALER_884 0968: actor $PLAYER_ACTOR stop_mouth 0001: wait 300 ms 0050: gosub @DEALER_815 0050: gosub @DEALER_884 054C: use_GXT_table 'TRU2' 00BC: show_text_highpriority GXT 'TRU2_FF' time 2700 flag 1 // ~z~Damn dude! You don't know what you're missing 0967: actor $411 move_mouth 2700 ms 0812: AS_actor $411 perform_animation "IDLE_CHAT" IFP_file "PED" 4.0 loopA 0 lockX 0 lockY 0 lockF 0 time 1000 // versionB 0001: wait 1000 ms 0050: gosub @DEALER_815 0050: gosub @DEALER_884 0001: wait 1700 ms 0050: gosub @DEALER_815 0050: gosub @DEALER_884 0968: actor $411 stop_mouth 0001: wait 300 ms 0002: jump @DEALER_1055 :DEALER_815 0001: wait 0 ms 00D6: if or 80F2: not actor $PLAYER_ACTOR near_actor $411 radius 4.0 4.0 0 0118: actor $411 dead 0118: actor $PLAYER_ACTOR dead 844B: not actor $PLAYER_ACTOR on_foot 004D: jump_if_false @DEALER_872 0002: jump @DEALER_1055 :DEALER_872 074D: AS_actor $411 turns_to_and_look_at_actor $PLAYER_ACTOR timelimit -1 0051: return :DEALER_884 0001: wait 0 ms 00D6: if or 8457: not player $PLAYER_CHAR aiming_at_actor $411 851A: not actor $411 damaged_by_actor $PLAYER_ACTOR 004D: jump_if_false @DEALER_927 074D: AS_actor $411 turns_to_and_look_at_actor $PLAYER_ACTOR timelimit -1 0051: return :DEALER_927 0687: clear_actor $411 task 07A5: AS_actor $411 attack_actor $PLAYER_ACTOR -1 ms 03E6: remove_text_box 03D5: remove_text 'TRU2_FF' // ~z~Damn dude! You don't know what you're missing 03D5: remove_text 'DEAL1' // You want some weed? 03D5: remove_text 'DEAL3' // Fuck off man, lose your shit somewhere else! 0249: release_model #BMYDRUG 04EF: release_animation "DEALER" 04EF: release_animation "PED" :DEALER_998 0001: wait 0 ms 00D6: if or 0118: actor $PLAYER_ACTOR dead 0118: actor $411 dead 80F2: not actor $PLAYER_ACTOR near_actor $411 radius 30.0 30.0 0 004D: jump_if_false @DEALER_998 01C2: remove_references_to_actor $411 // Like turning an actor into a random pedestrian 0002: jump @DEALER_1121 :DEALER_1055 0687: clear_actor $411 task 03E6: remove_text_box 03D5: remove_text 'TRU2_FF' // ~z~Damn dude! You don't know what you're missing 03D5: remove_text 'DEAL1' // You want some weed? 03D5: remove_text 'DEAL3' // Fuck off man, lose your shit somewhere else! 0249: release_model #BMYDRUG 04EF: release_animation "DEALER" 04EF: release_animation "PED" 01C2: remove_references_to_actor $411 // Like turning an actor into a random pedestrian :DEALER_1121 0A93: end_custom_thread Tom Reageren
PatrickW Geplaatst: 29 december 2008 Rapport Geplaatst: 29 december 2008 Een hele belangrijke opmerking vooraf, je mag in een CLEO script geen gebruik maken van globale ($xx) variabelen, maar moet lokale variabelen gebruiken. Ik heb geen idee waarom je in het begin deze opcode hebt staan: 009A: $411 = create_actor_pedtype 17 model #NULL at 0.0 0.0 0.0 Je spawn hiermee een actor met de skin van CJ (#null) ergens in Blueberry Acres. R* gebruikt dit soort dingen om aan te geven dat de betreffende variabele een actor is, maar de code zelf wordt nooit uitgevoerd, er wordt altijd met een jump overheen gesprongen. Maar dit soort dingen hoef je zelf niet te doen, want ze zijn niet noodzakelijk. Opcode 091c is niet de correcte opcode, deze wordt gebruikt om een ped in de buurt van een object van een bepaald model te zoeken. In dit geval heb je opcode 08E5 nodig, je krijgt dan een willekeurige ped binnen de opgegeven straal. Je moet de variabele die je bij die opcode gebruikt, vooraf op -1 zetten, en als de opcode een ped vind van het model dat je opgeeft binnen de straal die je meegeeft, dan zet hij de handle van die ped in de variabele. Achteraf moet je dus kijken of de variabele nog steeds de oude waarde (-1) heeft of niet. In dat laatste geval heeft hij dus een ped gevonden. Dan kun je checken of het om een dealer gaat ( pedtype == 17 ), zoniet, dan moet je dus verder zoeken. Je zou dus het zoeken naar een dealer in de buurt van de player op deze manier kunnen maken: 3@ = -1 repeat wait 100 ms if player.defined($PLAYER_CHAR) then 00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@ 08E5: get_actor_in_sphere 0@ 1@ 2@ radius 20.0 handle_as 3@ if not 3@ == -1 then // Een ped gevonden 089F: get_actor 3@ pedtype_to 4@ if not 4@ == 17 then // Geen dealer: vrijgeven en 3@ weer op -1 zetten 01C2: remove_references_to_actor 3@ 3@ = -1 end end end until not 3@ == -1 // Hieronder kun je 3@ als dealer-actor gebruiken :DEALER_333 Ongetest, maar het gaat om het idee. Verder heb ik de code nog niet doorgenomen, maar ik hoop dat je er zo weer verder mee komt. Reageren
Recommended Posts
Een reactie plaatsen
Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.