Czy wiesz, że... rejestracja trwa tylko 20 sekund?
Strona główna forum Szukaj Rejestracja
Witaj, nieznajomy!
Poprzedni 1 Następny
Postów: 21 Dołączył: 2009-02-01
#
Siema. Co jest źle z tym kodem:
Kod:
{$CLEO .cs}

thread 'ZIOMEK'

0247: load_model #FAM1
0247: load_model #FAM2
0247: load_model #FAM3

:ZIOMEK
wait 10
if
Player.Defined($PLAYER_CHAR)
jf @ZIOMEK

:ZIOMEK1_A
wait 10
if
00E1: player $PLAYER_CHAR pressed_key 55
jf @ZIOMEK1_A

:ZIOMEK1_B
wait 10
if
09C7: change_player $PLAYER_CHAR model_to #FAM1
jf @ZIOMEK1_A 

:ZIOMEK2
wait 10
if
00E1: player $PLAYER_CHAR pressed_key 56
jf @ZIOMEK2

:ZIOMEK2_B
wait 10
if
09C7: change_player $PLAYER_CHAR model_to #FAM2
jf @ZIOMEK2

:ZIOMEK3
wait 10
if
00E1: player $PLAYER_CHAR pressed_key 57
jf @ZIOMEK3

:ZIOMEK3_B
wait 10
if
09C7: change_player $PLAYER_CHAR model_to #FAM3
jf @ZIOMEK3

:NOP
0000: NOP
0A93: end_custom_thread


Dawno nie pisałem więc nie pamiętam, ale postanowiłem znowu coś se porobić i w każdym kodzie mam ufoluda. Kilka razy próbowałem zmieniać kod.

Próbowałem też tak:
Kod:
{$CLEO .cs}

thread 'ZIOMEK'

0247: load_model #FAM1
0247: load_model #FAM2
0247: load_model #FAM3

:ZIOMEK
wait 10
   if
     Player.Defined($PLAYER_CHAR)
jf @ZIOMEK

00E1: player $PLAYER_CHAR pressed_key 55

:ZIOMEK1_A
wait 10
   if
     00E1: player $PLAYER_CHAR pressed_key 55
jf @ZIOMEK1_A

09C7: change_player $PLAYER_CHAR model_to #FAM1

:ZIOMEK1_B
wait 10
   if
     09C7: change_player $PLAYER_CHAR model_to #FAM1
jf @ZIOMEK1_A 

00E1: player $PLAYER_CHAR pressed_key 56

:ZIOMEK2
wait 10
  if
     00E1: player $PLAYER_CHAR pressed_key 56
jf @ZIOMEK2

09C7: change_player $PLAYER_CHAR model_to #FAM2

:ZIOMEK2_B
wait 10
   if
     09C7: change_player $PLAYER_CHAR model_to #FAM2
jf @ZIOMEK2

00E1: player $PLAYER_CHAR pressed_key 57

:ZIOMEK3
wait 10
   if
     00E1: player $PLAYER_CHAR pressed_key 57
jf @ZIOMEK3

09C7: change_player $PLAYER_CHAR model_to #FAM3

:ZIOMEK3_B
wait 10
   if
     09C7: change_player $PLAYER_CHAR model_to #FAM3
   jf @ZIOMEK3
jump @ZIOMEK

:NOP
0000: NOP
0A93: end_custom_thread


A tu najnowszy kawałek skryptu:
Kod:
{$CLEO .cs}

thread 'ZIOMEK'

0247: load_model #FAM1
0247: load_model #FAM2
0247: load_model #FAM3

:ZIOMEK
wait 10
   if
     Player.Defined($PLAYER_CHAR)
jf @ZIOMEK

:ZIOMEK1
wait 10
   if
     0AB0: key_pressed 0x37
     0001: wait 1000 ms
     09C7: change_player $PLAYER_CHAR model_to #FAM1
jf @ZIOMEK1

:ZIOMEK2
wait 10
  if
     0AB0: key_pressed 0x38
     0001: wait 1000 ms
     09C7: change_player $PLAYER_CHAR model_to #FAM2
jf @ZIOMEK2

:ZIOMEK3
wait 10
   if
     0AB0: key_pressed 0x39
     0001: wait 1000 ms
     09C7: change_player $PLAYER_CHAR model_to #FAM3
jf @ZIOMEK3
jump @ZIOMEK

:NOP
0000: NOP
0A93: end_custom_thread
Postów: 1004 Dołączył: 2009-01-20
#
Powinno być chyba if and w kodzie a nie samo if i zmień wait 10 na wait 0.
Postów: 304 Dołączył: 2010-10-02
#
Według mnie przydałoby się jump w większości pętli.
Postów: 21 Dołączył: 2009-02-01
#
@SubaruPL
Nie zadziałało to (patrzyłem to w 3 kodzie bo wydaje mi się on najlepszy)
@Kolo33
Dokładnie, w której pętli ?
Postów: 878 Dołączył: 2009-01-20
#
- Funkcje sprawdzające wkładasz do konstrukcji if, a funkcje wykonujące później.
- Po ładowaniu modeli użyj opcode'a 038B.
- Na końcu skryptu nie musisz przeskakiwać do procedury "ZIOMEK", bo już na początku sprawdziłeś, czy gracz jest zdefiniowany (tj. gra się załadowała).

Kod:
{$CLEO .cs}

thread 
'ZIOMEK'

0247: load_model #FAM1
0247: load_model #FAM2
0247: load_model #FAM3
038B: load_requested_models

:ZIOMEK
wait 
10
   if
     
Player.Defined($PLAYER_CHAR)
jf 
@ZIOMEK

:ZIOMEK1
wait 
10
if
     
0AB0: key_pressed 0x37
jf 
@ZIOMEK1

09C7: change_player $PLAYER_CHAR model_to #FAM1


:ZIOMEK2
wait 
10
if
     
0AB0: key_pressed 0x38
jf 
@ZIOMEK2

09C7: change_player $PLAYER_CHAR model_to #FAM2


:ZIOMEK3
wait 
10
if
     
0AB0: key_pressed 0x39
jf 
@ZIOMEK3

09C7: change_player $PLAYER_CHAR model_to #FAM3


jump 
@ZIOMEK1

:NOP
0000: NOP
0A93: end_custom_thread

___________________
Administrator
Postów: 21 Dołączył: 2009-02-01
#
Dzięki za pomoc, działa.
Postów: 628 Dołączył: 2009-01-22
#
Można by się uprzeć i skrypt uprościć i skrócić w taki sposób + przesunąć ładowanie modeli na później, by nie zawalały pamięci.

Kod:
{$CLEO}

0000: NOP   // CLEO dobiera nazwę watku samodzielnie, nie ma potrzeby definiowania jej


while 
true
    0001: wait 0 ms
    if
        
0256:   player 0 defined // 0 = $PLAYER_CHAR, tyle że zajmuje mniej miejsca w pliku. Mniejszy skrypt CLEO = lepiej.

    then
        
if
            0AB0:  key_pressed 0x37
        then
            
0247: load_model #FAM1
            038B: load_requested_models
            09C7: change_player 0 model_to #FAM1    // j/w

            0249: release_model #FAM1
        end
        
if
            0AB0:  key_pressed 0x38
        then
            
// Tego typu konstrukcja nie wymusza na graczu kolejności FAM1 - FAM2 - FAM3, która

            // wymuszała stara wersja skryptu.

            0247: load_model #FAM2
            038B: load_requested_models
            09C7: change_player 0 model_to #FAM2
            0249: release_model #FAM2
        end
        
if
            0AB0:  key_pressed 0x39
        then
            
0247: load_model #FAM3
            038B: load_requested_models
            09C7: change_player 0 model_to #FAM3
            0249: release_model #FAM3
        end
    
end
end


Używając gosubów można to zoptymalizować jeszcze bardziej agresywnie (to już tylko kosmetyka i parę bajtów skryptu mniej):

Kod:
{$CLEO}

while 
true
    0001: wait 0 ms
    if
        
0256:   player 0 defined
    then
        
if
            0AB0:  key_pressed 0x37
        then
            
0006: 0@ = #FAM1    // 0@ będzie nasza zmienna, która najlepiej by było określić jako

                                // skin_do_ustawienia

            gosub 
@CHANGE_SKIN
        end
        
if
            0AB0:  key_pressed 0x38
        then
            
0006: 0@ = #FAM2
            gosub 
@CHANGE_SKIN
        end
        
if
            0AB0:  key_pressed 0x39
        then
            
0006: 0@ = #FAM3
            gosub 
@CHANGE_SKIN
        end
    
end
end

:CHANGE_SKIN
0247: load_model 0@
038B: load_requested_models
09C7: change_player 0 model_to 0@
0249: release_model 0@
return



Tak napisany kod jest dużo bardziej "Rockstarowy", jak nie wiesz o co gdzieś chodzi to pytaj + tut "Konstrukcje wysokiego poziomu".

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 21 Dołączył: 2009-02-01
#
A wiecie jak zamienić gracza z powrotem w CJ'a ? Chodzi mi o ID czy coś w tym stylu.
Postów: 628 Dołączył: 2009-01-22
#
Zmień skin na ID 0, czy tam #NULL (przy kompilacji to jedno i to samo), nie potrzeba go też wczytywać.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 21 Dołączył: 2009-02-01
#
Właśnie też tak myślałem, ale chciałem się upewnić.
Poprzedni 1 Następny
Zaloguj się lub zarejestruj się, żeby pisać na forum.
Created & Powered by MakG