Postów:
21
Dołączył:
2013-01-01
Napisano dnia: 2013-01-26 16:25:50
Witam. Eksperymentuje z przeniesieniem biurowca z VC do SA. Chcialem zrobic przesuwane drzwi w windzie, utworzylem obiekty i uzylem opcodu 034E: . Wlaczylem gre, i: 1. obiekty sa zle ustawione i maja wyzerowany obrot; 2. wcale sie nie poruszaja, pomimo ustawienia Object.ToggleInMovingList(1@) = TRUE.
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2013-01-26 18:06:49
Ziomo105 napisał(a):
Wlaczylem gre, i: 1. obiekty sa zle ustawione i maja wyzerowany obrot
To poprawne zachowanie, domyślnie obrót obiektu jest ustawiony na 0.0. Możesz go dostosować opcodem:
Kod:
0453: set_object
$CRANE_MAGNET XY_rotation 15.0 0.0 angle
$TEMPVAR_ANGLE
Opcode 034E trzeba umieścić w pętli, aby obiekt cały czas się poruszał:
Kod:
while true
034E: move_object
0@ to 1.0 2.0 3.0 speed 0.2 0.2 0.2 flag 0
if
04E6: object
0@ near_point 1.0 2.0 3.0 radius 0.1 0.1 0.1 flag 0
then
break
end
end
___________________
Administrator
Postów:
21
Dołączył:
2013-01-01
Napisano dnia: 2013-01-27 16:58:23
Zadzialalo, tylko ze pojawil sie kolejny problem: drzwi zapisuja sie wraz z gra. Gdy ja wczytam to te zapisane stoja w miejscu, a wygenerowane przez cleo poruszaja sie.
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2013-01-27 17:56:46
Wszystkie obiekty tworzone przez zwykłe skrypty (skrypty CLEO zaliczają się do nich) są zapisywane w save. Wystarczy zmienić obiektowi przynależność tak, by 'należał' do external scripta - takowe się nie zapisują.
Napisałem do tego funkcję SCM, która działa jakby była zwykłą funkcją (opcodem):
Kod:
:DONT_SAVE_OBJECT{\__[void]_(handle)__}
{
Param
etry:
-
0@ - uchwyt obiektu
Zwra
cane:
- Nic
}
0A98: 1@ = object
0@ struct
000A: 1@ += 0x13C
0A8C: write_memory
1@ size 1 value 6 virtual_protect 0
0AB2: ret 0
W skrypcie używasz tego jak zwykłego opcodu, np:
Kod:
0107: 10@ = create_object #AD_FLATDOOR at 1833.36 -1995.45 12.5
0AB1: call_scm_func
@DONT_SAVE_OBJECT 1
10@
___________________
Moderator