Wanting to drop by from GTAForums
#1

I'm from GTAForums, a scm scripter and I REALLY REALLY hope this forum is connected to SA-MP Wiki but I just wanted to say thank you to SA-MP Wiki because I use it for all the ID's like Objects, Pickups, Car, Skins and defiantly the interiors (those are hard to find on da web)

(This part is for the PAWN scripters

I want to show you a scm mission I made and you say if it looks like PAWN code or doesent (I havent seen a PAWN script)

Код:
//-----------MAIN-------------
0000: NOP // No operation

:0
0@ = Marker.CreateIconAndSphere(28, 2536.4219, -1694.3494, 13.6471)

repeat
wait 0 ms
until 0102:   actor $PLAYER_ACTOR in_sphere 2536.4219 -1694.3494 13.6471 radius 1.6 1.6 1.6 sphere 0 stopped_on_foot 

023C: load_special_actor 'OGLOC' as 1 // models 290-299
Model.Load(#GREENWOO)
Model.Load(#BALLAS1)
Model.Load(#BALLAS2)
Model.Load(#BALLAS3)
Model.Load(#FAM1)
023C: load_special_actor 'SMOKEV' as 2 // models 290-299
Model.Load(#MP5LNG)
Model.Load(#M4)
038B: load_requested_models 
04ED: load_animation "GANGS"
Marker.Disable(0@)
$ONMISSION == 1

:1
wait 0
if and
Model.Available(#GREENWOO)
Model.Available(#BALLAS1)
Model.Available(#BALLAS2)
Model.Available(#BALLAS3)
Model.Available(#MP5LNG)
Model.Available(#MP5LNG)
Model.Available(#M4)
023D:   special_actor 1 loaded
023D:   special_actor 2 loaded 
jf @1

:2
wait 0
if and
Model.Available(#FAM1)
04EE:   animation "GANGS" loaded 
jf @2

:3
09C7: change_player $PLAYER_CHAR model_to #FAM1 // Changes CJ to a Grove Member
1@ = Actor.Create(CivMale, #SPECIAL01, 2535.6638, -1711.4127, 13.4528)
Actor.Angle(1@) = 92.0506
Actor.PutAt($PLAYER_ACTOR, 2531.6365, -1711.2782, 13.463)
Actor.Angle($PLAYER_ACTOR) = 267.9048
Player.CanMove($PLAYER_CHAR) = False
02A3: enable_widescreen 1
Camera.SetPosition(2533.3523, -1704.2892, 13.3828, 0.0, 0.0, 0.0)
Camera.PointAt(2533.2375, -1717.7877, 13.5119, 2)
0605: actor 1@ perform_animation_sequence "prtial_gngtlkA" IFP_file "GANGS" 4.0 loop 1 0 0 0 time -1 // versionA
0605: actor $PLAYER_ACTOR perform_animation_sequence "prtial_gngtlkC" IFP_file "GANGS" 4.0 loop 1 0 0 0 time -1 // versionA
00BC: show_text_highpriority GXT 'HCISI' time 3000 flag 0  // ~y~OG LOC~s~ ~s~Hey CJ I heard Smoke is plotting something against us.
wait 3000
00BC: show_text_highpriority GXT 'BCWAT' time 3000 flag 0  // ~b~CJ~s~ ~s~What!?
wait 3000
00BC: show_text_highpriority GXT 'HWTGB' time 3000 flag 0  // ~y~OG LOC~s~ ~s~He wants to give the Ballas ~g~Grove Street~g~
wait 3000
00BC: show_text_highpriority GXT 'TMFO' time 3000 flag 0  // ~b~CJ~s~ I'm gonna teach him a lesson, I'll bring back his head.
wait 2000
0687: clear_actor 1@ task 
0687: clear_actor $PLAYER_ACTOR task
Actor.DestroyInstantly(1@)
Camera.Restore_WithJumpCut
02A3: 0
Player.CanMove($PLAYER_CHAR) = True
20@ = Pickup.Create(1242, 3, 2533.8599, -1692.5447, 13.684)
21@ = Pickup.Create(1240, 3, 2531.9709, -1691.2676, 13.7228)
2@ = Car.Create(#GREENWOO, 2509.1758, -1671.2665, 13.0802)
Car.Angle(2@) = 349.416
Marker.CreateAboveCar(3@, 2@)
Marker.SetColor(3@, 1)
00BC: show_text_highpriority GXT 'GITC' time 3000 flag 0  // Get in the ~g~Car~g~


:4
wait 0
if or
not Car.Wrecked(2@)
not Actor.Dead($PLAYER_ACTOR)
jf @8
if
Actor.InCar($PLAYER_ACTOR, 2@)
jf @4  
00BC: show_text_highpriority GXT 'GTBSD' time 3000 flag 0  // ~s~Go to ~y~Big Smoke's Dealing Place~s~
Marker.Disable(3@)
018A: 3@ = create_checkpoint_at 2580.396 -2113.0833 1.2353
03BC: 4@ = create_sphere_at 2580.396 -2113.0833 1.2353 radius 3.0 

:5
wait 0
if or
not Car.Wrecked(2@)
not Actor.Dead($PLAYER_ACTOR)
jf @8
if
0103:   actor $PLAYER_ACTOR in_sphere 2580.396 -2113.0833 1.2353 radius 3.0 3.0 3.0 sphere 0 stopped_in_car
jf @5
Marker.Disable(3@)
03BD: destroy_sphere 4@
Player.CanMove($PLAYER_CHAR) = False
02A3: enable_widescreen 1
Camera.SetPosition(2571.2976, -2131.1406, 0.2417, 0.0, 0.0, 0.0)
Camera.PointAt(2553.8467, -2131.9604, 0.1888, 2)
5@ = Actor.Create(CivMale, #SPECIAL02, 2559.7205, -2135.7397, -0.0114)
Actor.Angle(5@) = 357.2468
6@ = Actor.Create(Gang1, #BALLAS1, 2559.7141, -2133.241, 0.1261)
Actor.Angle(6@) = 183.6585
7@ = Actor.Create(Gang1, #BALLAS2, 2554.731, -2130.6677, 0.2599)
Actor.Angle(7@) = 267.3192
8@ = Actor.Create(Gang1, #BALLAS3, 2554.9951, -2130.3743, 0.276) 
Actor.Angle(8@) = 271.0067
01B2: give_actor 5@ weapon 31 ammo 100000 // Load the weapon model before using this 
01B2: give_actor 6@ weapon 29 ammo 100000 // Load the weapon model before using this 
01B2: give_actor 7@ weapon 29 ammo 100000 // Load the weapon model before using this 
01B2: give_actor 8@ weapon 29 ammo 100000 // Load the weapon model before using this
0687: clear_actor 5@ task 
0687: clear_actor 6@ task
01B9: set_actor 5@ armed_weapon_to 31 
01B9: set_actor 6@ armed_weapon_to 29
01B9: set_actor 7@ armed_weapon_to 29
01B9: set_actor 8@ armed_weapon_to 29
081A: set_actor 5@ weapon_skill_to 0
0946: set_actor 5@ actions_uninterupted_by_weapon_fire 1 
0946: set_actor 6@ actions_uninterupted_by_weapon_fire 1 
0946: set_actor 7@ actions_uninterupted_by_weapon_fire 1 
0946: set_actor 8@ actions_uninterupted_by_weapon_fire 1
087E: set_actor 5@ weapon_droppable 0 
087E: set_actor 6@ weapon_droppable 0 
087E: set_actor 7@ weapon_droppable 0 
087E: set_actor 8@ weapon_droppable 0   
0605: actor 5@ perform_animation_sequence "prtial_gngtlkB" IFP_file "GANGS" 4.0 loop 1 0 0 0 time -1 // versionA
0605: actor 6@ perform_animation_sequence "prtial_gngtlkD" IFP_file "GANGS" 4.0 loop 1 0 0 0 time -1 // versionA
00BC: show_text_highpriority GXT 'IGIT' time 3000 flag 0  // ~r~Smoke~s~ I'll give to y'all at--Wait...CJ!?
wait 2000
Player.CanMove($PLAYER_CHAR) = True
02A3: enable_widescreen 0
Camera.Restore_WithJumpCut
062F: 9@ = create_group_type 0
0630: put_actor 5@ in_group 9@ as_leader
0631: put_actor 6@ in_group 9@ 
0631: put_actor 7@ in_group 9@ 
0631: put_actor 8@ in_group 9@
05E2: AS_actor 5@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 6@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 7@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 8@ kill_actor $PLAYER_ACTOR
Marker.CreateAboveActor(10@, 5@)
Marker.CreateAboveActor(11@, 6@)
Marker.CreateAboveActor(12@, 7@)
Marker.CreateAboveActor(13@, 8@)
Marker.SetColor(10@, 0)
0165: set_marker 11@ color_to 0x400080FF 
0165: set_marker 12@ color_to 0x400080FF
0165: set_marker 13@ color_to 0x400080FF

:6
wait 0
if
not Actor.Dead($PLAYER_ACTOR)
jf @8
if and
Actor.Dead(5@)
Actor.Dead(6@)
Actor.Dead(7@)
Actor.Dead(8@)
jf @6
Marker.Disable(10@)
Marker.Disable(11@)
Marker.Disable(12@)
Marker.Disable(13@)
Actor.StorePos(5@, 14@, 15@, 16@)
17@ = Pickup.Create(1254, 3, 14@, 15@, 16@)
04C4: store_coords_to 30@ 31@ 32@ from_actor 5@ with_offset 0.0 -3.0 0.0
Camera.SetPosition(30@, 31@, 32@, 0.0, 0.0, 0.0)
Camera.PointAt(14@, 15@, 16@, 2) 
0512: show_permanent_text_box 'CHBH'
03DC: 25@ = create_marker_above_pickup 17@
Marker.SetColor(25@, 0) 

:7
wait 0
if
not Actor.Dead($PLAYER_ACTOR)
jf @8
if
Pickup.Picked_up(17@)
jf @7
09C7: change_player $PLAYER_CHAR model_to #NULL
03D5: remove_text 'CHBH'
Pickup.Destroy(17@)
Pickup.Destroy(20@)
Pickup.Destroy(21@)
Camera.Restore
0394: play_music 1
01E3: show_text_1number_styled GXT 'M_PASS' number 2000 time 5000 style 1  // NEW HIGH SCORE!!~n~~w~~1~
Player.Money($PLAYER_CHAR) += 2000
$ONMISSION == 0
Actor.RemoveReferences(5@)
Car.RemoveReferences(2@)
Actor.RemoveReferences(6@)
Actor.RemoveReferences(7@)
Actor.RemoveReferences(8@)
0249: release_model #GREENWOO 
0249: release_model #M4
0249: release_model #MP5LNG
0249: release_model #BALLAS1
0249: release_model #BALLAS2
0249: release_model #BALLAS3
04EF: release_animation "GANGS"
jump @0

:8 // Mission CleanUp list for dieing
00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1
$ONMISSION == 0
09C7: change_player $PLAYER_CHAR model_to #NULL
Actor.RemoveReferences(5@)
Car.RemoveReferences(2@)
Actor.RemoveReferences(6@)
Actor.RemoveReferences(7@)
Actor.RemoveReferences(8@)
04EF: release_animation "GANGS"
0249: release_model #GREENWOO 
0249: release_model #M4
0249: release_model #MP5LNG
0249: release_model #BALLAS1
0249: release_model #BALLAS2
0249: release_model #BALLAS3
jump @0
Reply
#2

Looks more like batch scripting.
Reply
#3

That stuff is confusing if you ask me.
Reply
#4

No, it doesn't look like PAWN code.
Reply
#5

Why not just download a script and have a look?
Reply
#6

Quote:
Originally Posted by oliverrud
Посмотреть сообщение
That stuff is confusing if you ask me.
What part is confusing?

Model.Load() Loads the model
Model.Available() Checks if the model is loaded
jf means jump_if_false
jump it means that it jumps to a label
numbers with @ behind it like 1@ is just like playerid
$PLAYER_CHAR is you
$PLAYER_ACTOR is CJ
$ONMISSION make it like you are actually on a mission

:3 just spawns the actors and makes a cutscene. I hope its clear now.

EDIT: I just looked at https://sampforum.blast.hk/showthread.php?tid=297563

And downloaded it and it was so HARD to understand, the only thing i understood was AddStaticVehicle and the Gang Rank names lol
Reply
#7

This has nothing to do with SA-MP nor PAWN, it's just .scm code, not even similar to PAWN.
Reply
#8

Well, some of the functions in Pawn resemble some functions in the SCM, that's pretty clear.

Код:
Marker.CreateIconAndSphere = SetPlayerCheckpoint
until 0102:   actor $PLAYER_ACTOR in_sphere = OnPlayerEnterCheckpoint
Actor.Angle = SetPlayerFacingAngle
Actor.PutAt = SetPlayerPos
Player.CanMove = TogglePlayerControllable
Camera.SetPosition = SetPlayerCameraPos
Camere.PointAt = SetPlayerCameraLookAt
Pickup.Destroy = DestroyPickup
This however, is something I'd like to see in SA:MP
Код:
Marker.CreateAboveCar(3@, 2@)
Marker.SetColor(3@, 1)
Changing the color of a marker above a car.
Reply
#9

It doesn't look like PAWN at all, but that kind of missions would be easy to make because we have pretty much all the same functions as you have there. Except for the actors, SA-MP NPC's are too simple and stupid if I could say.

You should definitely try PAWN scripting too if you enjoy doing that kind of scripts.
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)