Jump to content

Recommended Posts

Geplaatst:

Ik wou dus iets zoals de stinger drop mod maken maar dan met mijnen dus maakte ik deze code, hij werkt niet goed ingame wat is er mis mee of welke fouten zie je ?

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 04.08.2007
DEFINE OBJECTS 2
DEFINE OBJECT SANNY BUILDER 3.01	  
DEFINE OBJECT MINE					 // Object number -1

DEFINE MISSIONS 0

DEFINE EXTERNAL_SCRIPTS 0 // Use -1 in order not to compile AAA script

DEFINE UNKNOWN_EMPTY_SEGMENT 0

DEFINE UNKNOWN_THREADS_MEMORY 0

{$VERSION 3.1.0023}

//-------------MAIN---------------
thread 'MAIN' 
01F0: set_max_wanted_level_to 6 
042C: set_total_missions_to 1 
030D: set_max_progress 1 
set_wb_check_to 0 
00C0: set_current_time_hours_to 8 minutes_to 0 
04E4: unknown_refresh_game_renderer_at 2488.56 -1666.84 
Camera.SetAtPos(2488.56, -1666.84, 13.38)
$PLAYER_CHAR = Player.Create(#NULL, 2488.56, -1666.84, 13.38)
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
Camera.SetBehindPlayer
set_weather 0 
wait 0 
0180: set_on_mission_flag_to $ON_MISSION // Note: your missions have to use the variable defined here 
Player.SetClothes($PLAYER_CHAR, "PLAYER_FACE", "HEAD", Head)
Player.SetClothes($PLAYER_CHAR, "JEANSDENIM", "JEANS", Legs)
Player.SetClothes($PLAYER_CHAR, "SNEAKERBINCBLK", "SNEAKER", Shoes)
Player.SetClothes($PLAYER_CHAR, "VEST", "VEST", Torso)
Player.Build($PLAYER_CHAR)
Player.CanMove($PLAYER_CHAR) = True
fade 1 0 
select_interior 0 
0629: change_integer_stat 181 to 4 
016C: restart_if_wasted_at 2027.77 -1420.52 15.99 angle 137.0 town_number 0 
016D: restart_if_busted_at 1550.68 -1675.49 14.51 angle 90.0 town_number 0 

:MAIN_287
Model.Load(#MINE)
038B: load_requested_models 

:MAIN_293
if 
Model.Load(#MINE)
else_jump @MAIN_343 
wait 0 
jump @MAIN_293 

:MAIN_343
if 
  Actor.Driving($PLAYER_ACTOR)
else_jump @MAIN_343															 
Actor.StorePos($PLAYER_ACTOR, $X, $Y2, $Z)
$Z += 0.1 
wait 0 
00E1:   player 0 pressed_key 8 
$MINE = Object.Create(#MINE, $X, $Y, $Z)
071F: set_object 1@($MINE,5i) health_to 1 
Object.CollisionDetection($MINE) = True
Object.StorePos($MINE, $X2, $Y2, $Z2)
jump @MAIN_448 

:MAIN_448
wait 0 
84DA:   not has_object $MINE collided 
else_jump @MAIN_448 
0948: create_explosion_at $X2 $Y2 $Z2 type 11 camera_shake 1.0 
0948: create_explosion_at $X2 $Y2 $Z2 type 11 camera_shake 1.0 
0948: create_explosion_at $X2 $Y2 $Z2 type 11 camera_shake 1.0 
Object.Destroy($MINE)
0249: release_model #MINE
jump @MAIN_287

Tom :cya:

Geplaatst:

Een melding " hij doet het niet" is wel erg magertjes.

Als je iets meer beschrijving geeft van wat er wel of niet gebeurd ingame, dan kunnen anderen gerichter zoeken naar het probleem.

Maar goed, alvast een paar opmerkingen van dingen die ik sowieso al fout zie:

In deze lus, ontbreekt een "wait":

:MAIN_343
if
  Actor.Driving($PLAYER_ACTOR)
else_jump @MAIN_343

Dit is een conditionele opcode, en moet dus in een IF constructie ofzo gebruikt worden:

00E1:   player 0 pressed_key 8

Er moet nog het nodige aan de structuur van het programma gewijzigd worden, maar het lijkt me in ieder geval handig dat je de positie van de speler pas opvraagt op het moment dat je op de knop drukt en niet ruim ervoor, zodra je ziet dat de speler in een auto zit.

Wat is het idee erachter om de mine te spawnen op 10 cm boven de huidige player positie ?

Dat is ongeveer in het lichaam van de speler en dus in de auto waarin je rijdt.

Deze regel is tamelijk overbodig:

Object.StorePos($MINE, $X2, $Y2, $Z2)

Wat de waarden die in $X2,$Y2 en $Z2 zullen komen, zullen gelijk zijn aan $X, $Y en $Z, want daar heb je die mine net gespawned.

Als je aan het eind toch terug springt naar het begin, dan is het onzin om eerst het model te releasen, en vervolgens het direct weer te laden.

Je kunt dus beter de release weglaten, en dan daaronder een jump doen naar MAIN_343.

Als algemene opmerking zou ik je willen aanraden, om dit soort dingen niet in 1 keer helemaal uit te programmeren, maar klein te beginnen.

B.V. eerst een mod, waarbij je de mine op een vast plek legt, en er dan met je auto er tegenaan rijden, om te kijken of hij ontploft. Op moment dat je dat hebt, kun je gaan uitbreiden. Stap voor stap.

Op die manier kun je ook makkelijker bepalen waar de fout zit, als het niet meer werkt. Want het zit dan waarschijnlijk in het stukje wat je als laatste hebt toegevoegd.

Geplaatst: (bewerkt)

Bedankt voor de tips ! :@ toch nog een wait vergeten dan ?

En voor "hij doet het niet" --> schermpie blijft gewoon zwart bij new game.

Tevens heb ik geen code boxje gebruikt omdat

je daar geen kleur in kan gebruiken, misschien nog handig om te fixen ?

Tom :cya:

Nu twijfel ik over iets in het begin van men code bij define objects moet het dan niet 1 zijn ?

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 04.08.2007

DEFINE OBJECTS 2

DEFINE OBJECT SANNY BUILDER 3.01

DEFINE OBJECT MINE // Object number -1

DEFINE MISSIONS 0

DEFINE EXTERNAL_SCRIPTS 0 // Use -1 in order not to compile AAA script

DEFINE UNKNOWN_EMPTY_SEGMENT 0

DEFINE UNKNOWN_THREADS_MEMORY 0

{$VERSION 3.1.0023}

//-------------MAIN---------------

thread 'MAIN'

01F0: set_max_wanted_level_to 6

042C: set_total_missions_to 1

030D: set_max_progress 1

set_wb_check_to 0

00C0: set_current_time_hours_to 8 minutes_to 0

04E4: unknown_refresh_game_renderer_at 2488.56 -1666.84

Camera.SetAtPos(2488.56, -1666.84, 13.38)

$PLAYER_CHAR = Player.Create(#NULL, 2488.56, -1666.84, 13.38)

$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)

Camera.SetBehindPlayer

set_weather 0

wait 0

0180: set_on_mission_flag_to $ON_MISSION // Note: your missions have to use the variable defined here

Player.SetClothes($PLAYER_CHAR, "PLAYER_FACE", "HEAD", Head)

Player.SetClothes($PLAYER_CHAR, "JEANSDENIM", "JEANS", Legs)

Player.SetClothes($PLAYER_CHAR, "SNEAKERBINCBLK", "SNEAKER", Shoes)

Player.SetClothes($PLAYER_CHAR, "VEST", "VEST", Torso)

Player.Build($PLAYER_CHAR)

Player.CanMove($PLAYER_CHAR) = True

fade 1 0

select_interior 0

0629: change_integer_stat 181 to 4

016C: restart_if_wasted_at 2027.77 -1420.52 15.99 angle 137.0 town_number 0

016D: restart_if_busted_at 1550.68 -1675.49 14.51 angle 90.0 town_number 0

:MAIN_287

Model.Load(#MINE)

038B: load_requested_models

:MAIN_293

if

Model.Load(#MINE)

else_jump @MAIN_319

wait 0

jump @MAIN_293

:MAIN_319

0001: wait 0 ms

if

Actor.Driving($PLAYER_ACTOR)

else_jump @MAIN_319

:MAIN_359

wait 0

if

00E1: player 0 pressed_key 8 // Nu komt alles erna

jf @MAIN_359

Actor.StorePos($PLAYER_ACTOR, $X, $Y2, $Z)

$Z += 1.0 // Nu is het onder de auto

$MINE = Object.Create(#MINE, $X, $Y, $Z)

071F: set_object 1@($MINE,5i) health_to 1

Object.CollisionDetection($MINE) = True

jump @MAIN_424

:MAIN_424

wait 0

84DA: not has_object $MINE collided

else_jump @MAIN_424

0948: create_explosion_at $X $Y $Z type 11 camera_shake 1.0 // Geen X2 Y2 Z2

0948: create_explosion_at $X $Y $Z type 11 camera_shake 1.0

0948: create_explosion_at $X $Y $Z type 11 camera_shake 1.0

Object.Destroy($MINE) // release model is weg

jump @MAIN_287

Bewerkt: door .:TOM:.
Geplaatst:
Bedankt voor de tips ! :@ toch nog een wait vergeten dan ?

En voor "hij doet het niet" --> schermpie blijft gewoon zwart bij new game.

Dat verwachtte ik al, toen ik de code zag :), maar het was ook meer als algemene opmerking bedoeld. Hoe nauwkeuriger je het probleem omschrijft hoe beter je kunt worden geholpen.

Nu twijfel ik over iets in het begin van men code bij define objects moet het dan niet 1 zijn ?

Als dat niet zou kloppen, dan klaagt sannybuilder wel bij het compileren :)

Geplaatst:

Daarjuist crashte hij maar deed niks, heb nu iets aan de code veranderd maar nu werkt hij niet meer :(

Ik plaats de code hier als iemand ze wil gebruiken of afwerken doe maar, geef me wel een seintje als ij werkt.

Tom :cya:

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 04.08.2007
DEFINE OBJECTS 2
DEFINE OBJECT SANNY BUILDER 3.01	  
DEFINE OBJECT MINE					 // Object number -1

DEFINE MISSIONS 0

DEFINE EXTERNAL_SCRIPTS 0 // Use -1 in order not to compile AAA script

DEFINE UNKNOWN_EMPTY_SEGMENT 0

DEFINE UNKNOWN_THREADS_MEMORY 0

{$VERSION 3.1.0023}

//-------------MAIN---------------
thread 'MAIN' 
01F0: set_max_wanted_level_to 6 
042C: set_total_missions_to 1 
030D: set_max_progress 1 
set_wb_check_to 0 
00C0: set_current_time_hours_to 8 minutes_to 0 
04E4: unknown_refresh_game_renderer_at 2488.56 -1666.84 
Camera.SetAtPos(2488.56, -1666.84, 13.38)
$PLAYER_CHAR = Player.Create(#NULL, 2488.56, -1666.84, 13.38)
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
Camera.SetBehindPlayer
set_weather 0 
wait 0 
0180: set_on_mission_flag_to $ON_MISSION // Note: your missions have to use the variable defined here 
Player.SetClothes($PLAYER_CHAR, "PLAYER_FACE", "HEAD", Head)
Player.SetClothes($PLAYER_CHAR, "JEANSDENIM", "JEANS", Legs)
Player.SetClothes($PLAYER_CHAR, "SNEAKERBINCBLK", "SNEAKER", Shoes)
Player.SetClothes($PLAYER_CHAR, "VEST", "VEST", Torso)
Player.Build($PLAYER_CHAR)
Player.CanMove($PLAYER_CHAR) = True
fade 1 0 
select_interior 0 
0629: change_integer_stat 181 to 4 
016C: restart_if_wasted_at 2027.77 -1420.52 15.99 angle 137.0 town_number 0 
016D: restart_if_busted_at 1550.68 -1675.49 14.51 angle 90.0 town_number 0 

:MAIN_287
Model.Load(#MINE)
038B: load_requested_models 

:MAIN_293
if   
Model.Load(#MINE)
jf @MAIN_293 
wait 0 
jump @MAIN_319 

:MAIN_319
0001: wait 0 ms
if and
  Actor.Driving($PLAYER_ACTOR)
  00E1:   player 0 pressed_key 8
else_jump @MAIN_319 

:MAIN_359
0001: wait 0 ms
Actor.StorePos($PLAYER_ACTOR, $X, $Y2, $Z)
$Z += 1.0 
$MINE = Object.Create(#MINE, $X, $Y, $Z)
071F: set_object 1@($MINE,5i) health_to 1 
Object.CollisionDetection($MINE) = True
jump @MAIN_424 

:MAIN_424
wait 0 
84DA:   not has_object $MINE collided 
else_jump @MAIN_424 
0948: create_explosion_at $X $Y $Z type 11 camera_shake 1.0 
0948: create_explosion_at $X $Y $Z type 11 camera_shake 1.0 
0948: create_explosion_at $X $Y $Z type 11 camera_shake 1.0 
Object.Destroy($MINE)
jump @MAIN_287

Geplaatst:

Begrijp ik het goed dat je hiermee niet meer verder gaat ?

In dat geval wil ik wel een poging wagen op basis van mijn stringer-drop mod een versie te maken :

Geplaatst:

Ik m'n code gebaseerd op die van jou :puh: Als je wil mag je, zelfs graag !

Dus doe maar, en zeg me erna wat er fout was, kan ik nog iets bijleren.

Tom :cya:

Geplaatst:

mmmmh.. dan heb je wss de code niet helemaal goed begrepen. Kijk eens hier voor een tamelijk diepgaande uitleg van de code.

Hieronder volgt de SCM code, die ik in elkaar heb gedraaid op basis van de SA versie van mijn "stinger drop"-mod.

Ik heb op het moment even geen mogelijkheid om het te testen, maar het zou gewoon moeten werken :D.

DEFINE OBJECTS 1
DEFINE OBJECT (noname)				
DEFINE MISSIONS 0
//DEFINE MISSION {ID} 0 AT {LABEL} @
DEFINE EXTERNAL_SCRIPTS -1 // Use -1 in order not to compile AAA script
//DEFINE SCRIPT {NAME}  AT {LABEL} @
DEFINE UNKNOWN_EMPTY_SEGMENT 0
DEFINE UNKNOWN_THREADS_MEMORY 0

{$VERSION 3.0.0000}
thread 'MAIN'
var
 $PLAYER_CHAR: Player 
end // var
01F0: set_max_wanted_level_to 6 
set_wb_check_to 0 
00C0: set_current_time 8 0 
04E4: unknown_refresh_game_renderer_at 2488.5601 -1666.84 
Camera.SetAtPos(2488.5601, -1666.84, 13.38)
$PLAYER_CHAR = Player.Create(#NULL, 2488.5601, -1666.84, 13.38)
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
07AF: $PLAYER_GROUP = player $PLAYER_CHAR group
Camera.SetBehindPlayer
set_weather 0		  
wait 0 ms
$PLAYER_CHAR.SetClothes("PLAYER_FACE", "HEAD", Head)
$PLAYER_CHAR.SetClothes("JEANSDENIM", "JEANS", Legs)
$PLAYER_CHAR.SetClothes("SNEAKERBINCBLK", "SNEAKER", Shoes)
$PLAYER_CHAR.SetClothes("VEST", "VEST", Torso)
$PLAYER_CHAR.Build
$PLAYER_CHAR.CanMove = True
fade 1 (out) 0 ms					 
select_interior 0
0629: change_stat 181 (islands unlocked) to 4
016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 for_town_number 0
016D: restart_if_busted at 1550.68 -1675.49 14.51 angle 90.0 for_town_number 0
0180: set_on_mission_flag_to $ONMISSION // Note: your missions have to use the variable defined here ($ONMISSION)
03E6: remove_text_box
// put your create_thread commands here
004F: create thread @Mine_sniff_thread


:end_loop
wait 100
jump @end_loop

end_thread

// put your mods (threads) here
:Mine_thread
03A4: name thread "MINE"
0247: request_model #MINE
038B: load_requested_models
0004: 32@ = 0
029B: 7@ = init_object #MINE at 0@ 1@ 2@
01C7: remove_object_from_mission_cleanup_list 7@
0007: 4@ = 0@
000F: 4@ -= 2.0
0007: 8@ = 0@
000B: 8@ += 2.0
0007: 5@ = 1@
000F: 5@ -= 2.0
0007: 9@ = 1@
000B: 9@ += 2.0

:Mine_loop
0001: wait 250 ms
0007: 6@ = -1
053E: 6@ = get_random_car_with_actors -1 in_area 4@ 5@ 8@ 9@
00D6: if 0
8039: NOT 6@ == -1// integer values
004D: jump_if_false @Mine_timer

// create explosions, explode car and create fire 
0948: create_explosion_at 0@ 1@ 2@ type 11 camera_shake 1.0
wait 500 ms
08CB: explode_car 6@ shake 1 effect 1 sound 1 
02CF: 10@ = create_fire_at 0@ 1@ 2@ propagation 3 size 2 
wait 500 ms
0948: create_explosion_at 0@ 1@ 2@ type 11 camera_shake 1.0

:Mine_timer
00D6: if 0
0019: 32@ > 10000
004D: jump_if_false @Mine_loop
0249: release_model #MINE
0108: destroy object 7@
004E: end_thread

:Mine_sniff_thread
03A4: name thread "MI_SNIF"

:Mine_sniff_loop
0001: wait 100 ms
00D6: if 0
0256: player $PLAYER_CHAR defined
004D: jump_if_false @Mine_sniff_loop
00D6: if 1
00E1: key pressed 0 17
00DF: actor $PLAYER_ACTOR driving
004D: jump_if_false @Mine_sniff_loop
03C0: 10@ = actor $PLAYER_ACTOR car
0407: create coordinate 0@ 1@ 2@ from car 10@ offset 0.0 -2.5 1.0
02CE: 2@ = ground z 0@ 1@ 2@
000B: 2@ += 0.1
004F: create thread @Mine_thread 0@ 1@ 2@
0001: wait 500 ms
0002: jump @Mine_sniff_loop


//-------------Mission 0---------------
// put your missions here



//-------------External script 0---------------
// put your external scripts here

Geplaatst:

Werkt perfect alleen zit er een timer op ? Kan die weg of crash hij dan als je er teveel maakt ?

Tom :cya:

PS: Aangezien men muis 3/4 van de tijd niet werkt heb ik ook de knop veranderd.

Geplaatst:
Werkt perfect alleen zit er een timer op ? Kan die weg of crash hij dan als je er teveel maakt ?

Tom :cya:

PS: Aangezien men muis 3/4 van de tijd niet werkt heb ik ook de knop veranderd.

Er zit inderdaad met opzet een timer op, omdat je anders uit het maximum aantal threads gaat lopen.

Je moet bij een mod namelijk wel zorgen dat je alles op een of andere manier na een tijd weer opruimt.

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.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...