Wywalenie 4144 19

O temacie

Autor EdekSumo

Zaczęty 21.02.2011 roku

Wyświetleń 4144

Odpowiedzi 19

EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
Zrobiłem skrypt:    var int ckeey;  
ckeey  = MEM_KeyState(KEY_C);
 
if (ckeey == KEY_PRESSED)  
{
Mdl_ApplyOverlayMDSTimed (self, "HUMANS_SPRINT.MDS", 60000);

};
   
dodałem do tick tocka i jak wchodzę do świata z tym tick tockiem to mnie wywala do pulpitu
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja

Adanos
Administrator

Wywalenie
#1 2011-02-21, 21:53(Ostatnia zmiana: 2011-02-21, 21:55)
Bo wywołujesz w nieskończoność. Dodaj zmienną, która wyłączy to wywołanie.

   var int ckeey;  
          vat int koniec;
        ckeey  = MEM_KeyState(KEY_C);
                 
if (ckeey == KEY_PRESSED) && (koniec==0)          
{
                Mdl_ApplyOverlayMDSTimed        (self, "HUMANS_SPRINT.MDS", 60000);
                koniec = 1;
       
};

EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
tak ale to przecież sprawdza czy przycisk nie jest wciśnięty to chyba musi być cały czas wywoływany
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Edytowałem przed chwilą post wyżej. Być może nie zauważyłeś...

EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
to też nic nie dało cały czas wywala może to coś z ikarusem ale co dziwne świat się uruchamia nawet przez chwilę widać ale później się wyłącza
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Wywalenie
#5 2011-02-21, 22:23(Ostatnia zmiana: 2011-02-21, 22:28)
Spróbuj skasować to z triggera, i dać w jednorazowo wywoływanej funkcji, np przy item.on_state.
Ogólnie to testowałeś inne funkcje Ikarusa, np proste wyświetlenie waynetu przez polecenie skryptowe?MEM_InitGlobalInst(); MEM_Game.game_showwaynet = 1;

EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
Nie nic nie testowałem ale zaraz to zrobię. I dalej wywala nawet przy itemie
 

EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
Sory za dubla ale przy tej funkcji też wywala czyli to coś z ikarusem
 

orcwarrior

orcwarrior

The Modders
posty475
Propsy317
Profesjabrak
  • The Modders
Wersja pliku exe to 2.6.0.0 (fix) ? Z tego co pamietam w wypadku g2 ta wlasnie obowiazuje, ale jest z tym lekkie zamieszanie, w kazdym razie na innej nie ma prawa działac i jest prawdopodobne ze to powoduje problem. Tymbardziej skoro nawet proste przypisanie do MEM_GAME nie działa, mozesz jeszcze sprobować np.

Cytuj
      MEM_SetShowDebug (1);
      var oCnpc test; var int ptr;
      test = hlp_getnpc(pc_hero);
      printdebug("Blad:MEM_InstToPtr(Ikarus nie inicjuje sie poprawnie)");
      ptr = MEM_InstToPtr(test);
      printdebug("Blad:MEM_ReadInt");
      ptr = MEM_ReadInt(ptr);
      if (ptr != oCNpc_vtbl)
      {
         printdebug("Blad:Zla wersja gothica (niezprawidlowy adres tablicy wirtualnej funkcji)");
      };
           

Z tego co pamietam to ikarus w sumie obecnie nie potrzebuje zadnej inicjacji (nie liczac przypisywania do np MEM_GAME itp.) robi sie to automatycznie. Ja w kazdym razie stawiam na błędną wersje pliku exe. Sproboj pobrać jakiś patch z WoG z dopiskiem Report Version czy coś takiego.
 



EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
Dzięki działa prócz tego że na klawiaturze teraz zamiast = mam a-umlałt ale teraz mi nie wywala ale skrypt nie działa
 

orcwarrior

orcwarrior

The Modders
posty475
Propsy317
Profesjabrak
  • The Modders

orcwarrior
The Modders

Wywalenie
#10 2011-02-22, 00:21(Ostatnia zmiana: 2011-02-22, 00:23)
Dzięki działa prócz tego że na klawiaturze teraz zamiast = mam a-umlałt ale teraz mi nie wywala ale skrypt nie działa

Możesz sprawdzić czy po wklejeniu mojego ZSpy wywala jakiś z błędów które wpisałem, jezeli nie to Ikarus działa już poprawnie.
Mozesz zrobic filtrowanie wiadomosci na tylko te które zawieraja ciag: "Skript" (bez cudzysłowiu).
Skrypt nie dziala z prostej przyczyny jest wywoływany co jakis czas który mu tam wpisałeś, szansa na to że akurat wtedy klawisz zostaje nacisniety (a trwa to jedną "klatkę" potem jego stan jest zmieniany na "HOLD" czyli przytrzymywany, az do momentu puszczenia) Możesz zmienic KEY_PRESSED na KEY_HOLD co jest wysoce nie doskonałe, ale powinno w sumie działać, albo zrobić triggera wywoływanego co klatke, czyli tak jak nalezy, co zresztą pewnie jeszcze ci się przyda, dodajać na poczatku:


Cytuj
   Wld_SendTrigger ("PERFRAMETRIGGER"); //Nazwa mojego triggera, tutaj odpowiednio wstawiasz swoją.
   //Triggerscript find pointer
   if(PerFrameCallTrigger_Init)//zmienna którą ustawiasz w INIT_KazdyswiatzTwojegoModa (np. INIT_WORLD) na true
   {
      ptr = MEM_SearchVobByName ("PERFRAMETRIGGER");
      MEM_AssignInst (trigger, ptr);
      PerFrameCallTrigger_Init=FALSE;
   };


Na końcu po wykonaniu wszystkich operacji, choc tak wlasciwie może raczej być gdziekolwiek ;p

Cytuj
   trigger._zCVob_nextOnTimer = MEM_ReadInt(MEMINT_zTimer_Address+8);//MEM_Timer.totalTimeFloat;


edit:
Zapomniałem, potrzeba jeszcze ów "trigger"a z którego korzystam
Cytuj
instance trigger (oCTriggerScript);
dodaj gdzieś przed blokiem tej funkcji
 



EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
Wielkie dzięki skrypt działa przy użyciu key_hold a co do tigera co klatkę czy on nie obciąża zbyt silnika gothica?
 


EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
Dzięki trochę po zmieniałem i wszystko działa czyli temat do zamknięcia
 

orcwarrior

orcwarrior

The Modders
posty475
Propsy317
Profesjabrak
  • The Modders
Raczej nie ma czego się obawiać, byleby wszystko było w miare logicznie pomyslane i pisane pod w miare możlwiości jaknajbardziej optymalnie.
U mnie co klatkę dzieje się już naprawde dużo co skutkuje spadkiem ok 1fps co tak naprawde przy np. 120fpsach trudno udowodnic, a zauwazyć się nie da.
 



EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
Co do tego tigera co klatkę to jeszcze nie próbowałem bo w ikarusie robię od nie dawna dlatego nie chcę się zagłeciać w takie skrypty
 

orcwarrior

orcwarrior

The Modders
posty475
Propsy317
Profesjabrak
  • The Modders
Co do tego tigera co klatkę to jeszcze nie próbowałem bo w ikarusie robię od nie dawna dlatego nie chcę się zagłeciać w takie skrypty

Trigger jak trigger, jedyne co w nim może wydawać się niezwykłego to to że przy wywołaniu czas następnego wywołania ustawia się na czas na który "zaplanowana" będzie kolejna klatka, za co odpowiada przypisanie:
Cytuj
trigger._zCVob_nextOnTimer = MEM_ReadInt(MEMINT_zTimer_Address+8);//MEM_Timer.totalTimeFloat;
[/font][/color]

 



EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
Czyli to:
Wld_SendTrigger ("sprint"); //Nazwa mojego triggera, tutaj odpowiednio wstawiasz swoją.
//Triggerscript find pointer
if(PerFrameCallTrigger_Init)//zmienna którą ustawiasz w INIT_KazdyswiatzTwojegoModa (np. INIT_WORLD) na true
{
ptr = MEM_SearchVobByName ("sprint");
MEM_AssignInst (trigger, ptr);
PerFrameCallTrigger_Init=FALSE;
};
wkleić do tick tocka i będzie działać
i to też ?
trigger._zCVob_nextOnTimer = MEM_ReadInt(MEMINT_zTimer_Address+8);//MEM_Timer.totalTimeFloat;
 

orcwarrior

orcwarrior

The Modders
posty475
Propsy317
Profesjabrak
  • The Modders
Tak, muszisz tylko tą zmienna: PerFrameCallTrigger_Init ustawiac na true przy Inicjacji każdego ze światów tzn INIT_WORLD INIT_MOJZEN itp.
 



EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
przetestowałem tego tick tocka poklatkowego i działa i może okazać się bardzo przydatne dzięki orc (i na szczęście nie zamula gothica ;d ) temat chyba do zamknięcia
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry