Witaj Nieznajomy!
|
temat: [poradnik] Skrypty w MM7 komnata: Cytadela Mocy i Magii (Might and Magic) |
wróć do komnaty |
Kirin |
W MM7, podobnie jak w wielu innych grach RPG, wszystkie zdarzenia są kontrolowane za pomocą specjalnych skryptów, w tym przypadku umieszczonych w plikach *.evt. Występują dwa rodzaje skryptów: lokalne i globalne. Skrypty lokalne są przechowywane w plikach nazwa_obszaru.evt (np.Out01.evt). Odpowiadają one za zdarzenia na danym obszarze, jak np. premie z studni, wejście do budynku, teksty na znakach czy też przeniesienie do innego obszaru, itd. Skrypty globalne są natomiast przechowywane w pliku global.evt, a odpowiadają za wszelkie zdarzenia globalne - premie z beczek i piedestałów, zadania, nauczanie umiejętności, wyświetlanie tekstów u NPC, itd. Pliki *.evt znajdują się w archiwum events.lod. Wszystkie skrypty składają się z kodu operacji (2 znaki), numeru skryptu (4 znaki), kolejności wykonania (2 znaki) oraz argumentów, parametrów, itd. Ponadto wszystkie skrypty są zapisywane przy pomocy systemu heksadecymalnego. Najczęściej używane komendy, to m.in. (numer skryptu i kolejność wykonania zostały oznaczone zerami): a.) 0A000000 xxyy zzzzzzzzzz - komenda modyfikująca. xx - liczby od 10-12 (10 - dodaje daną wartość, 11 - odejmuje daną wartość, 12 - równa z daną wartością). yy - kod danej wartości. [lista znajduje się w kolejnym poście.] zzzzzzzzzz - określa który przedmiot/zadanie, ile odporności/punktów umiejętności, itd. ma być dodane/odjęte/do jakiej wartości ma być zrównane. Przykładowa linijka dodająca przedmiot o numerze 16DEC (10HEX): 0A010000 1011 (dodaje [10] przedmiot [11]) 0010000000 (przy tej komendzie znaków musi być dziesięć; zazwyczaj są używane znaki od 3-6). b.) 0B000000 0Exx yyyyyyyyyyzz - komenda warunkowa. xx - kod danej wartości. yyyyyyyyyy - określa obecność którego przedmiotu/zadania, jaka ilość odporności/punktów umiejętności, itd. ma być sprawdzona. zz - numer w kolejności wykonywania do którego jest przenoszone wykonanie skryptu jeśli warunek został spełniony. Przykładowa linijka sprawdzająca obecność zadania 16DEC (10HEX) i przenosząca do kolejności w wykonaniu nr 04 jeśli zadanie się znajduje: 0B010000 0E10 (sprawdza zadanie [10]) 001000000004 (przy tej komendzie znaków musi być dziesięć + dwa znaki określające gdzie wykonywanie ma zostać przeniesione) c.) 0C000000 xx yyyy zzzzzzzzzzzz - komenda przenosząca NPC, grupy stworzeń, itd. xx - kod danej funkcji yyyy - kod danej grupy, danego NPC, itd. zzzzzzzzzzzz - kod lokacji. Przykładowa komenda przenosząca NPC 16DEC (10HEX) do lokacji 08DEC/HEX: 0C010000 28 [przenosi NPC] 1000 [numer NPC] 000008000000 [numer lokacji; zazwyczaj jest zapisywany na znakach 5-8) d.) 0D000000 xx yyyy zzzzzzzzzzzzzz - komenda modyfikująca różne wartości danego NPC/danej grupy. xx - kod danej funkcji. yyyy - kod danej grupy, danego NPC, itd. zzzzzzzzzzzz - dodatkowe wartości. Przykładowa linijka dodająca niewidzialność grupie stworzeń nr 5: 0D010000 39 [kod funkcji] 0500 [numer grupy] 00000000010001 [wartości określające zmianę statusu na niewidzialność] e.) 05000000 xxxx - komenda kontrolująca wykonanie skryptu. xxxx - kod funkcji i/lub parametry. Przykładowe gotowe funkcje: 05010000 0100 - stopuje wykonanie skryptu. 05010000 24xx - przenosi wykonanie skryptu do kolejności wykonania xx. 05010000 23xx - modyfikuje skrypt tak, aby działał na danego członka drużyny (01, 02, 03, 04 + 05 - cała drużyna) f.) 08000000 xx yyyyyyyy - komenda show. xx - kod danej funkcji. yyyyyyyy - numer danego tekstu. Przykładowa linijka wyświetlająca NPCtext nr 04: 08010000 1E 04000000 Te skrypty są skryptami podstawowymi, które powtarzają się najczęściej. Jeśli ktokolwiek ma problemy ze zrozumieniem tych skryptów, to polecam wyeksportować któryś z plików *.evt, skopiować zawartość do notatnika i podzielić go na linijki oraz skomentować każdą z nich. Przykładowo skomentowany skrypt wygląda następująco (skrypt z global.evt na zadanie z poszukiwaniem skarbów na Szmaragdowej Wyspie): 05060000 2305 //stosuje [następne linijki] dla członka drużyny 5 (dla wszystkich członków) 0b060001 0e10 00080000000a //przenosi do [linijki] 0a jeśli zadanie [nr] 08 znajduje się w księdze {jeśli jest zadanie} 0b060002 0e11 00de00000004 //przenosi do 04 jeśli przedmiot DE jest w ekwipunku {jeśli jest przedmiot} 05060003 240a //przechodzi do 0a 0a060004 1110 0001000000 //usuwa zadanie 01 [z księgi] 0a060005 100d 00f4010000 //dodaje 500 doświadczenia 0a060006 1010 0008000000 //dodaje zadanie 08 [do księgi] 0a060007 1111 00de000000 //usuwa przedmiot DE [z ekwipunku] 08060008 1e 1f000000 //pokazuje NPCtext 1F 05060009 0100 //stop 0b06000a 0e10 000900000014 //przenosi do 14 jeśli jest zadanie 09 0506000b 240c //przenosi do 0C 0b06000c 0e11 007b0200000e //przenosi do 0E jeśli jest przedmiot 27B 0506000d 2414 //przenosi do 14 0a06000e 1110 0002000000 //usuwa zadanie 02 0a06000f 1111 007b020000 //usuwa przedmiot 27B 0a060010 1010 0009000000 //dodaje zadanie 09 0a060011 100d 00f4010000 //dodaje 500 doświadczenia 08060012 1e 1e000000 //pokazuje NPCtext 1E 05060013 0100 //stop 0b060014 0e10 000a0000001e //przenosi do 1E jeśli jest zadanie 0A 05060015 2416 //przenosi do 16 0b060016 0e11 002b00000018 //przenosi do 18 jeśli jest przedmiot 2B 05060017 241e //przenosi do 1E 08060018 1e 1d000000 //pokazuje NPCtext 1D 0a060019 1111 002b000000 //usuwa przedmiot 2B 0a06001a 1110 0003000000 //usuwa zadanie 03 0a06001b 100d 00f4010000 //dodaje 500 doświadczenia 0a06001c 1010 000a000000 //dodaje zadanie 0A 0506001d 0100 //stop 0b06001e 0e10 000b00000028 //przenosi do 28 jeśli jest zadanie 0B 0506001f 2420 //przenosi do 20 0b060020 0e11 007c02000022 //przenosi do 22 jeśli jest przedmiot 27C 05060021 2428 //przenosi do 28 08060022 1e 1c000000 //pokazuje NPCtext 1C 0a060023 1111 007c020000 //usuwa przedmiot 27C 0a060024 1110 0004000000 //usuwa zadanie 04 0a060025 100d 00f4010000 //dodaje 500 doświadczenia 0a060026 1010 000b000000 //dodaje zadanie 0B 05060027 0100 //stop 0b060028 0e10 000c00000032 //przenosi do 32 jeśli jest zadanie 0C 05060029 242a //przenosi do 2A 0b06002a 0e11 00780200002c //przenosi do 2C jeśli jest przedmiot 278 0506002b 2432 //przenosi do 32 0806002c 1e 1b000000 //pokazuje NPCtext 1B 0a06002d 1111 0078020000 //usuwa przedmiot 278 0a06002e 1110 0005000000 //usuwa zadanie 05 0a06002f 100d 00f4010000 //dodaje 500 doświadczenia 0a060030 1010 000c000000 //dodaje zadanie 0C 05060031 0100 //stop 0b060032 0e10 000d0000003c //przenosi do 3C jeśli jest zadanie 0D 05060033 2434 //przenosi do 34 0b060034 0e11 007702000036 //przenosi do 36 jeśli jest przedmiot 277 05060035 2451 //przenosi do 51 08060036 1e 1a000000 //pokazuje NPCtext 1A 0a060037 1111 0077020000 //usuwa przedmiot 277 0a060038 1110 0006000000 //usuwa zadanie 06 0a060039 100d 00f4010000 //dodaje 500 doświadczenia 0a06003a 1010 000d000000 //dodaje zadanie 0D 0506003b 0100 //stop 0b06003c 0e10 000100000051 //przenosi do 51 jeśli jest zadanie 01 0506003d 243e //przenosi do 3E 0b06003e 0e10 000200000051 //przenosi do 51 jeśli jest zadanie 02 0506003f 2440 //przenosi do 40 0b060040 0e10 000300000051 //przenosi do 51 jeśli jest zadanie 03 05060041 2442 //przenosi do 42 0b060042 0e10 000400000051 //przenosi do 51 jeśli jest zadanie 04 05060043 2444 //przenosi do 44 0b060044 0e10 000500000051 //przenosi do 51 jeśli jest zadanie 05 05060045 2446 //przenosi do 46 0b060046 0e10 000600000051 //przenosi do 51 jeśli jest zadanie 06 05060047 2449 //przenosi do 49 05060048 0100 //stop 0a060049 1010 0007000000 //dodaje zadanie 07 0806004a 1e 20000000 //pokazuje NPCtext 20 0d06004b 27 0200 00000000000000 //ustawia NPC topic 02 na GlobalEvent {GlEv} 00 0d06004c 27 0200 00000100000000 //ustawia NPC topic 02 na GlEv 01 0c06004d 28 0200 000000000000 //ustawia NPC 02 na lokację 00 (opisane w 2Devents) 0d06004e 27 0100 00000100000000 //ustawia NPC topic 01 na GlEv 01 0c06004f 32 0600 000009000000 //ustawia NPC 06 tekst 09 05060050 0100 //stop 08060051 1e 21000000 //pokazuje NPCtext 21 Uwagi: -termin "zadanie" oznacza albo zadanie, albo niektóre zmienne, jak np. zmienna określająca zdolność do wypłynięcia statkiem z Szmaragdowej Wyspy. -wszystkie wartości (oprócz doświadczenia) podane są w heksach. -Przy liczbach z trzema znakami, np. 14f, zapis wygląda następująco: 4f01. |
Kirin |
Lista kodów poszczególnych parametrów: 01 - brak widocznego efektu. 02 - przy próbie ustalenia tej wartości na 50 max PŻ i PM spada. 03 - PŻ [punkty życia] 04 - brak efektu. 05 - PM [punkty many] 06 - brak efektu. 07 - brak efektu. 08 - KP [klasa pancerza] 09 - przy próbie zmiany tej wartości na 50 max PŻ i PM wzrasta. 0a - -||- 0b - wiek 0c - nagrody 0d - doświadczenie 0e - brak efektu 0f - brak efektu 10 - zadania 11 - przedmioty 12 - brak efektu 13 - brak efektu 14 - brak efektu 15 - złoto 16 - losuje ilość złota z podanego zakresu 17 - jedzenie 18 - losuje ilość jedzenia z podanego zakresu 19 - czasowa moc 1a - czasowy intelekt 1b - czasowa osobowość 1c - czasowa wytrzymałość 1d - czasowa celność 1e - czasowa szybkość 1f - czasowe szczęście 20 - permamentna moc 21 - permamentny intelekt 22 - permamentna osobowość 23 - permamentna wytrzymałość 24 - permamentna celność 25 - permamentna szybkość 26 - permamentne szczęście 27 - czasowa moc 28 - czasowy intelekt 29 - czasowa osobowość 2a - czasowa wytrzymałość 2b - czasowa celność 2c - czasowa szybkość 2d - czasowe szczęście 2e - odporność na ogień 2f - odporność na powietrze 30 - odporność na wodę 31 - odporność na ziemię 32 - odporność na umysł 33 - odporność na ? 34 - odporność na ciało 35 - brak widocznego efektu 36 - brak widocznego efektu 37 - brak efektu 38 - brak widocznego efektu 39 - tymczasowa odp. na ogień 40 - brak widocznego efektu 41 - brak widocznego efektu 42 - brak efektu 43 - brak efektu 44 - kij 45 - miecz 46 - sztylet 47 - topór 48 - włócznia 49 - łuk 4a - maczuga 4b - miotacz 4c - tarcza 4d - zbroja skórzana 4e - kolczuga 4f - zbroja płytowa 50 - magia ognia 51 - magia powietrza 52 - magia wody 53 - magia ziemi 54 - magia ducha 55 - magia umysłu 56 - magia ciała 57 - magia światła 58 - magia ciemności 59 - identyfikacja przedmiotów 5a - kupiectwo 5b - naprawa przedmiotów 5c - atletyka 5d - medytacja 5e - percepcja Dalsze wpisy to zmienne, używane np. przy studzienkach. FAQ Q: Czym dokładnie jest ta lista? A: spisem kodów używanych w komendzie 0B000000 0Exx oraz w komendzie 0A000000 10xx Q: Dlaczego tyle pozycji nie ma efektu albo nie ma widocznego efektu? A: Nie wiem. Możliwe, że ma to związek z tym, że próbowałem ustalać wszystkie wartości na 50. Q: Jak została ułożona ta lista? A: Metodą prób i błędów. Q: Dlaczego niektóre umiejętności nie mają swojego kodu? A: Też nie wiem. Możliwe jednak, że wiąże się to z tym, że nie są one potrzebne/znajdują sie dalej. Q: Lista będzie rozwijana? A: Tak, będzie. Czekam na wszelkie sugestie, błędy, propozycje, itd, itp. |
Zu |
Chciałem się dopytać o powiązany temat w MM8. Mianowicie chciałem zrobić dwie rzeczy: 1) Zmienić to jak często kursują statki i karawany. Jak przypuszczam, aby to zrobić musiałbym zmodyfikować pliki EVT, ale nie wiem gdzie mogę w nich znaleźć powiązaną informację (przeglądałem je za pomocą HexEdit). 2) Poprawić błąd w tłumaczeniu w jednym konkretnym miejscu (mała litera tam, gdzie powinna być duża). Błąd jest zawarty w pliku STR, ale zmienienie go w jakikolwiek sposób, czy to HexEditem czy Notepatem++ wywołuje crash gry kiedy próbuje ona wywołać tekst ze zmienionego pliku. Bardzo bym prosił o pomoc. |
Alamar |
Spróbuj otworzyć i edytować pliki MM8 level editorem. |
temat: [poradnik] Skrypty w MM7 | wróć do komnaty |
powered by phpQui
beware of the two-headed weasel