Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Tut] Mój Sposób Na Pro Serwer


Rekomendowane odpowiedzi

Opublikowano

TUTORIAL

Uwaga! Odrazu mówie że ten poradnik jest by GM GameMenel (ja)tylko na tamtym koncie mam warna na pisanie tematów na 3dni a chciałem koniecznie napisać tego TUT;a więc dawajcie GM GameMenel'owi + ;)

Zaczynamy...

1.Towrzymy priva.... Pobieramy pliki (byle jakie) gdy je pobierzemy instalujemy hamachi i VPC po zainstalowaniu tych programów otwieramy folder z plikami serwerowymi i mamy tam komputerek i dysk zmieniacie ich nazwe albo na m2 albo na mt2 ... teraz otwieracie komputerek za pomocą notatnika i tam szukacie linijek chinskich (linijka 38-48 nie pamiętam) i tam powinniście mieć C:\chinskieznaki\mt2.vhd i niżej mt2(albo zamiast mt2 chinskie znaki nie pamiętam dokładnie)no i jeśli zmieniliście ten komputerek i dysk na m2 to piszecie tam m2 jeśli mt2 to piszecie tam mt2 tak to powinno wyglądać:

http://img694.imageshack.us/i/47019007.png/

teraz 2xklik na komputerek albo otwieramy VPC klikamy new....next 1 albo 3opcja...(polecam 1)>nazwa serwera>system(najlepiej wybrać other)next>adjusting the ram i dajecie ram na serwer(1500mb+)>next>an exiting>next>lokalizacja plików i teraz jeśli wybraiście 1opcje klikacie enable... a jeśli 3 to nie klikacie>next>finish teraz jeśli 3opcje wybraliście samo pojawi wam się okiengo settings a jeśli 1 klikacie sami na settings i teraz jeśli 2x razy klikneliście na komputerek interesują was 2 rzeczy jeśli nie interesuje was jedna ci co 2x na komputerek: przechodzą na File Name wpisują nazwe serwera i potem przechodzcie do networking(ci co zrobili w VPC też) i tam wybieracie hamachi network... i teraz klikacie na start.... Gdy będzie welcome Free BSD klikacie 1 czekacie aż będzie polecenie na wpisanie loginu i hasła login : root hasło mcncc.com wpisujecie sysinstall i przechdzicie configure>networking>interface>de0 i tak to 2 po lewej stronie ip hamachi Ipv4 Adres IP hamachi koncówka 100 Netmask: 255.0.0.0 teraz tworzycie sieć hamachi.....

Potem wychodzicie z sysinstall i wpisujecie w konsoli /etc/rc.d/netif restart teraz przyszedł czas na odblokowanie PortMap pobieracie go i tak 1 rubryka nr portu 2. IP hamachi 3 nr portu 4. IP hamachi konc 100 5. nr portu...

Potem wpisujecie ./start i macie serwer....

2.Baza Mysql.... Najpierw musimy skonfigurować baze Mysql na nasz serwer.... Robimy to tak pobieramy Navicata (lub inną baze Mysql) i klikamy connection/połonczenie i tak 1 to MT2 (lub nazwa serwera) musi być MT2 w 2 Host(IP hamachi) 3 to port : 3306 nazwa użyt. root hasło 123456 i klikamy na zapamiętaj hasło... klikamy testuj połonczenie jeśli będzie połonczono to znaczy że all mamy dobrze... Teraz się łaczymy

a) Jak zrobić konto i swoje hasło... wchodzimy w account.... i klkikamy na tabela account i klikamy strzalka w dól i tak 1. kolejny numer 2.login 3.password 4.12345 5.1234567 teraz opracowanie hasła jeśli chcemy zwykłe kopiujemy od Rain'a(wtedy będzie 12345) a jeśli chcemy swoje w google piszemy hasch generator(coś takiego) i tam w 1 rubryce wpisujemy hasło potem zjeżdżamy niżej i szukamy tam Mysql5 kopiujemy i otwieramy notanik w notaniku wklejamy to i zmieniamy małe litery na duże i dodajemy * przed tym kodem potem wklejamy to do password i mamy hasło....

B) tworzymy postać na naszym koncie i otwieramy navicat wchodzimy w common GMhost tam wpisujemy swoje IP hamachi GMlist tam klikamy strzałke 2 dól i tak kolejny numer czyli to 2będzie login nick i na koncu IP hamachi (to co w GMhost) zapisujecie reset serwera i się bawicie GM'em ....

c) Jak zrobić kowala za 0yang bez ulepszaczy i na 100% wchodzimy w refine_proto i teraz tak count1 vnum1 count2 vnum2 count3 vnum3 i count4 i vnum4 cost to koszt ulepszenia a prob to na ile % będzie ulepszanie...

d) Jak edytować moba? Wchodzimy w mob_proto :

 

 

1.Kolumna=Vnum

 

Znajduje się tutaj Id danego Moba

 

2.Kolumna=Name

 

Znajduje się tu nazwa moba (jest ona wyświetlana w grze)

 

3.Kolumna=Gb2312Name

 

Nazwa na dole na czacie (pokazuje się tam nazwa np gdy podniesiemy FMS będzie napisane że to miecz Pełni Księżyca) oraz w Itemshopie

 

4.Kolumna=Rank

 

Niezrozumiałe tłumaczenie

 

5.Kolumna=Type

 

Brak Danych

 

6.Kolumna=Battle_Type

 

 

0 - Scrappers(???)

1 - Ranged(???)

2 - Mag(???)

3 - Nie walczące (Metiny, dekoracje mapy (domy, drzewa itp)

4 - 2 opcje Ataku np: Niedźwiedź może atakować w pozycji pionowej jak i z ziemi gryźć

5 - Kilka opcji ataku podstawową bronią np: Arahan czasem uderza od lewej a czasem od prawej strony

 

7.Kolumna=Level

 

Poziom danego moba np: 1 poziom dziki pies

 

8.Kolumna=Size

 

Ile zajmuje miejsca w eq dany przedmiot

 

9.Kolumna=ai_flag

 

Ustawiamy tutaj agresywność (lub jej brak) moba

Aggr-Mob sam atakuje np:Podłe w DT

NOMOVE-Nie porusza się np:Drzewa w lesie

Godspeed-Jest bardzo szybki

Reszta brak danych

 

10.Kolumna=Mount_capacity

 

Brak Danych

 

11.Kolumna=Rasse

 

Rasa moba czyli jakie bony na niego działają

ANIMAL = Zwierzęta

UNDEAD = Nieumarłe

DEVIL = Diabły

HUMAN = Ludzie

ORC = Orki

MILGYO = Brak Danych

INSECT = Insekty (???)

FIRE =Ogień

ICE = Lód

DESERT = Pustynia

 

12.Kolumna=setimmunflag

 

Ustawiamy tutaj co może nam dany mob zrobić np:

Stun-Ogłusza nas

Slow-Spowalnia nas

Fall-Przewrócić, odrzuca Cię

Curse-Nie wiem

Poision-Zatruwa nas

Terror-Nie wiem

13.Kolumna=Empire

 

Królestwo gdzie będzie występował mob 0=wszędzie

 

14.Kolumna=Folder

 

Folder to jest jak zachowuje sie dany mob, tzn. jesli ustawi sie inny folder, a dany mob ma skille, nie bedzie ich wyswietlal (tym samym nie odbierze dmg).

 

15.Kolumna=on_click

 

Jeżeli ustawimy

0-Da się walczyć z mobem

1-Nie wiem

2-Da się z danym mobem/npc Handlować

 

16.Kolumna=St

 

Statystyki siły moba

St-Pkt siły ile posiada mob

 

17.Kolumna=Dx

 

Statystyki zręczności moba

Dx-Pkt zręcznośći ile posiada mob

 

18.Kolumna=Ht

 

Statystyki Witalności Moba

 

19.Kolumna=IQ

 

Statystyki inteligencji moba

IQ-Pkt inteligencji ile posiada mob

 

 

20.Kolumna=Damage_min

 

Minimalna siła ataku moba

 

21.Kolumna=Damage_max

 

Maksymalna siła ataku moba

 

22.Kolumna=Max_hp

 

Ilość Hp jaką posiada mob

 

23.Kolumna=Regen_cycle

 

Wpisujemy tu co ile sekund ma się regenerować Hp moba

 

24.Kolumna=Regen_percent

 

Łączy się ta kolumna z kolumną Regen_cycle

Tylko że w tej wpisujemy w % ilośc regenerującego się HP

 

25.Kolumna=Gold_min

 

Minimalna ilość yang jaka wypadnie z moba

 

26.Kolumna=Gold_max

 

Maksymalna ilość yang jaka wypadnie z moba

 

27.Kolumna=exp

 

Ilość expa jaką otrzymamy za zabicie moba

 

28.Kolumna=Def

 

Ilość obrony jaką posiada Mob

 

29.Kolumna=attack_speed

 

Szybkość ataku moba

 

30.Kolumna=move_speed

 

Szybkość poruszania się moba

 

31.Kolumna=Aggressive_hp_pct

 

Krytyczna regeneracja hp, czyli jak wejdzie krytyczna regeneracja to 2x tyle mu sie regeneruje hp

 

 

32.Kolumna=agrressive_sight

 

Szybkość poruszania się moba

 

33.Kolumna=attack_range

 

Odległość na jaką bije mob

 

34.Kolumna=drop_item

 

Id ulepszacza jaki dropi z moba

 

e)jak dać na początek [GM] [sGM] [GA] itp. wchodzimy w Player i tabela Player tam mamy wszystkie postacie edytowywujemy jakąś i dajemy tam np. [GA] podam jeszcze jak przywrócić usuniętą postać wchodzimy w player_deleted i otwieramy jeszcze player i w player_deleted mamy usunięte postacie.... przepisujemy wszystko z danej postaci (z player_deleted) do player i mamy przywrconą postać... możemy też dodać staty przechodzimy w hp np. i tam piszemy 9999 to da full hp...

f) Jak dać max lvl danej postaci przechodzimy do player i w player tabele tam mamy gdzieś podany lvl i obok max lvl tam obok piszemy jaki ma mieć max lvl

g) Jak zmienić itemy w shopach? PRzehocdzimy do shop item i tam mamy wszystkie itemy... możemy je zmieniać

h) Jak dodać kilka sklepów u 1NPC?

Witam,napisałem ten tutek gdyż niektórzy userzy nadal mają problemy ze zrobieniem NPC z paroma sklepami...

...Co potrzebujemy..?...

1. Filezille (lub jakiś inny program z obsługą FTP)

2. Navicat

3. NotePad ++

 

Etap 1

 

(Wgrywanie npc'tów do MySQL przez Navicata)

 

1. Łączymy się z bazą MySQL przez Navicata

2. Wchodzimy do zakładki "player"

3. Otwieramy Tabale "shop" (w zakładce Player) i wpisujemy tak(Należy dodać minimum dwa sklepy czyli ID NPC i Nazwa się powtórzy nam):

http://gfx.efotek.pl/images/0ljuii6g2edc8yys7cb.jpg

4. Otwieramy Tabele "shop_item" (w zakładce Player) I dodajemy Npc.... tabele oznaczają:

9e7tgm6ryoae8lye99.jpg

 

Etap 2

 

(Wgrywanie plików NPC do FTP)

 

1. Łączymy sie z bazą FTP przez FileZille

2. Wchodzimy na ścieżkę:

Pliki serwerowe Sui:

 

/usr/home/sui/metin/channel/share_data/locale/hongkong/quest/object

 

 

Pliki serwerowe rain

 

/usr/rain/channel/share_data/locale/hongkong/quest/object

 

 

3. Wchodzimy w Folder naszego NPC a następnie w chat (nazwy Folderów to ID ich) ,Jezeli nie ma Id naszego npc na którego wgrywamy to tworzymy

 

.... /object/Wpisz_tu nazwe NPC/chat

 

 

4. Pobieramy Moje pliki:

Download Skan

Następnie je edytujemy w ten sposób:

lo6bri25kfkc9dff5xls.jpg

Dołączona grafika

5. Z edytowane pliki wklejamy do :

 

...object/Folder_naszego_NPC/chat

 

 

Jeżeli macie już takie pliki to 0 zmięcie na 1 (zmiencie w nazwach moich plików)

 

Etap3

 

(Zapisanie ustawień na serwerze)

 

 

Wpisujemy komendy w danej kolejności:

1, ./stop (czekamy aż wywali błędy na plikach raina)

2. /etc/rc.d/netif restart

3. ./start

 

 

Na sam koniec zostało się cieszyć nowym NPC z paroma sklepami B) i postawić mi + :P

 

Aktualizacja:

Druga wersja plików NPC

 

Co w niej jest ..?....

Prosto po kliknięciu na NPC wybieramy sklep

Download Skan

Jak Edytować:

- Nazwe sklepu zmieniasz w plikach o końcówkach arg

- W plikach o końcówce .script zmieniamy napis ID na ID Sklepu (edytujemy przez Notepada,W KAŻDYM PLIKU ZMIENIAMY NA INNE ID SKLEPU)

UWAGA ten poradnik by FirQ http://www.mpcforum.pl/public/style_images/ipbs/add.png

Dawajcie mu + ;)

i) Jak zmienić ceny itemów w shopach - wchodzimy w zakładke Player i item proto.. Szukamy tam gold gold-koszt kupienia obok mamy jeszcze shop_buy_priece czyli za ile się sprzedaje...

Baza FTTP

Zacznijmy od połączenia się pobieramy FilleZille lub WinSCP łączymy się 1 to jest adres IP konc 100 2 to jest root 3 mcncc.com 4 22 teraz logujemy się

a Jak dać max lvl 127... Video TUT:

http://www.youtube.com/watch?v=lD0Dn31A3k0

TO krótki tut....

b

Jak zrobić konia na start.... oibueramy Quest Generator By Mroziak albo sami robimy własnoręcznie:

Własnoręcznie:

VideoTUT:

VideoTUT2:

http://www.youtube.com/watch?v=6Z-KpRBsqCM&feature=related

TUT tekst:

 

Więc tak...

Logujemy się do naszego serwera najlepiej poprzez FileZilla.

Następnie wchodzimy w: /usr/rain/channel/share_data/locale/hongkong/quest/object/notarget/letter

Jeżeli weszliśmy to szukamy: main_quest_lv1.gotoinformation - Kopiujemy na nasz komputer najlapiej na pulpit.

 

Teraz kod:

say_title ( "Witamy" )

say ( "Witamy Na Serwerze Nazwa_Serwera" )

say ( "http://IPhamachi.index.php)

say ( "Miłej gry!" )

say ( "" )

pc . give_exp2 ( 100000 )

set_quest_state ( "levelup" , "run" )

pc . change_money ( 100000 )

pc . give_item2 ( "27003" , 200 )

pc . give_item2 ( "27003" , 200 )

pc . give_item2 ( "27003" , 200 )

pc . give_item2 ( "27003" , 200 )

pc . give_item2 ( "27003" , 200 )

pc . give_item2 ( "27006" , 200 )

pc . give_item2 ( "27006" , 200 )

pc . give_item2 ( "71050" , 200 )

pc . give_item2 ( "72702" , 1 )

pc . give_item2 ( "50051" , 1 )

horse . advance ( )

say_reward ( "Dostales 33lvl." )

say_reward ( "Dostales 100000 yang." )

say_reward ( "Dostales 1000 Czerwonych potow (D)." )

say_reward ( "Dostales 400 Niebieskich potow(D)." )

say_reward ( "Dostales eq, buty wiatru oraz mikstury szybkosci." )

say_reward ( "Dostales konia." )

clear_letter ( )

set_state ( "__COMPLETE__" )

if pc . job == 0 then

pc . give_item2 ( "75" , 1 )

pc . give_item2 ( "3069" , 1 )

pc . give_item2 ( "11239" , 1 )

pc . give_item2 ( "12229" , 1 )

pc . give_item2 ( "13029" , 1 )

pc . give_item2 ( "14109" , 1 )

pc . give_item2 ( "15089" , 1 )

pc . give_item2 ( "16109" , 1 )

pc . give_item2 ( "17109" , 1 )

say_reward ( "Jestes wojownikiem!" )

elseif pc . job == 1 then

pc . give_item2 ( "1039" , 1 )

pc . give_item2 ( "2069" , 1 )

pc . give_item2 ( "8009" , 200 )

pc . give_item2 ( "8008" , 200 )

pc . give_item2 ( "8007" , 200 )

pc . give_item2 ( "8006" , 200 )

pc . give_item2 ( "11439" , 1 )

pc . give_item2 ( "12369" , 1 )

pc . give_item2 ( "13029" , 1 )

pc . give_item2 ( "14109" , 1 )

pc . give_item2 ( "15089" , 1 )

pc . give_item2 ( "16109" , 1 )

pc . give_item2 ( "17109" , 1 )

say_reward ( "Jestes ninja!" )

elseif pc . job == 2 then

pc . give_item2 ( "75" , 1 )

pc . give_item2 ( "11639" , 1 )

pc . give_item2 ( "12509" , 1 )

pc . give_item2 ( "13029" , 1 )

pc . give_item2 ( "14109" , 1 )

pc . give_item2 ( "15089" , 1 )

pc . give_item2 ( "16109" , 1 )

pc . give_item2 ( "17109" , 1 )

say_reward ( "Jestes sura!" )

elseif pc . job == 3 then

pc . give_item2 ( "5039" , 1 )

pc . give_item2 ( "7069" , 1 )

pc . give_item2 ( "11839" , 1 )

pc . give_item2 ( "12649" , 1 )

pc . give_item2 ( "13029" , 1 )

pc . give_item2 ( "14109" , 1 )

pc . give_item2 ( "15089" , 1 )

pc . give_item2 ( "16109" , 1 )

pc . give_item2 ( "17109" , 1 )

say_reward ( "Jestes shaman!" )

end

 

Następnie zapisujemy i wrzucamy do: /usr/rain/channel/share_data/locale/hongkong/quest/object/notarget/letter

 

Na start otrzymuje się Eq +9, buty wiatru, mikstury szybkości, 1000 czerwonych potów (D), 400 niebieskich potów (D) oraz konia :) To wszystko można oczywiście zmienić.

 

 

 

Jak zrobić generatorem by mroziak poprostu pobieracie netframework i ten generator i tam wszystko macie ;)

c Jak spolsczyć serwer? Pobieracie pliki english i wklejacie je do /usr/rain/channel/share_data/locale i klikacie prawym właściwości i tam dajecie prawa pliku 777 potem przechodzicie w navicata i w common>locale i zmieniacie tam z hongkong na english

VideoTUT:

d Jak dodać questa i wgrać na serw?

 

quest Kamienie Metin begin - quest nazwa

questa begin

state start begin - state -state start begin-state ktory startuje questa

when login or levelup with pc.get_level >= 1 - na jakim lvlu

set_state(infrmation) - state taki state musi być

end-end (koniec)

end-end(koniec

send_letter("List od Uriela")- nazwa listu

state info begin-state info

when letter begin - musi byc

local v = find_npc_by_vnum(20011)-do jakiego NPC mamy się udać

if v != 0 then -musi być

target.vid("__TARGET__", v, "Uriel")-target.vid("__TARGET__", v, "nazwa_npc") nie musi być chinska

end - end koniec

send_letter("Prosba Uriela")-nazwa listu

when button or info begin - musi być (when button or INFO(state ) begin

 

say_title("Uriel cię szuka idź i mu pomuz!")-tekst na zolto

say("Uriel ma do ciebie")-tekst na bialo

say("prośbę prosze idz")-tekst na bialo

say("do niego")

say_reward("Musisz znajsc Uriela i mu pomuc!")-tekst na czerwono

end-end koniec

when __TARGET__.target.click or -musi być

20011.chat."Test" begin - 20011.-ID npc.chat."test" begin

target.delete("__TARGET__")-musi być oznacza to zniknięcie strzałki nad NPC

say_title("Kamienie Metin")-tekst na zolto

say("Musisz mi pomuc")-na bialo

say("Ostatnio duzo kamieni")-na bialo

say("metin spadało na ta ziemie ale")-na bialo

say("kilka wyjatkowych spadlo ktore musisz pokonac!")-na bialo

say_title("Pokonaj 4kamienie metin : Metin Chunjo,Metin Jinno,Metin Shinso i kamien imperialny")-czerwono

set_state(Zadanie)-kolejny state (już dowolny)

end -wiecie

end -wiecie

state Zadanie begin - state wasze_state begin

when letter begin - musi być

send_letter("Zniszcz je!") - nazwa listu

end - wiecie

when button or info begin - musi byc

say("Znisz 4 kamienie metin: : Metin Chunjo,Metin Jinno,Metin Shinso i kamien imperialny ")-na bialo

end - wiecie

 

when 8020.kill with pc.countitem(70021)==0 begin - co trzeba zabic i co ma wydropic :8020 mob 70021 co dropi mozecie zmienic oczywiscie

 

local random = math.random(3) - musi byc

if random == 1 then - musi byc

pc.give_item2(70021, 1) - co droplo

say("Gratulacje zdobyles blogoslawienstwo aniola") - na czacie tekst

say("zdobyles blogoslawienstwo aniola idz i zaniej je Urielowi") - na czacie tekst

local v = find_npc_by_vnum(20011) - do jakiego NPC mamy się udać

if v != 0 then - musi byc

target.vid("__TARGET__", v, "Uriel") - wiecie ale wytlumacze : target.vid("__TARGET__", v, (nazwa NPC)

end - wiecie

end - wiecie

end - wiecie

when 20011.chat."Test!" with pc.countitem(70021)>0 begin - co nam zabiera dany NPC

target.delete("__TARGET__") - musi byc

say_title("Udalo ci sie!") - co NPC mowi

say("O masz blogoslawienstwo aniola !!! Oto twoja nagroda:") - co NPC mowi

say_reward("Dstales od Uriela Miecz Barona,swietliste sztylety,Zabojce zoltego smoka, oraz smoczy dzwon ") tekst na czerwono

pc.remove_item(70021, 4) - co dany NPC zabiera

pc.give_item2(263, 1)- co dostajemy

pc.give_item2(1159, 1)

pc.give_item2(3172, 1)

pc.give_item2(5143, 1)

set_state(__COMPLETE__) - musi byc

end - wiecie

end - wiecie

 

e

Jak podmienić pliki Mysql - przechodzimy do /var/db/mysql i tu możemy podmienić pliki mysql....

Inne

Jak zrobić spol? - pobieramy MT2connect changer i go otwieramy klikamy Open i tam wybiermay spolszczenie(plik .exe) i wpisujemy IP hamachi

VideoTUT:http://www.youtube.com/watch?v=yypMqIkUbOo

Jak zrobić pacha

VideoTUT:

http://www.youtube.com/watch?v=0-oYzcP-LKo

Jak zrobić stronke do rejestracji?

VideoTUT:

Jak zrobić clienta?

 

Siema , ostatnio się zastanawiałem jak zrobić clienta bez innego clienta... W końcu wpadłem na pomysł. Potrzebujemy :

Pełne pliki Pakery(do robienia pack):

Download:

 

http://www.speedyshare.com/files/22561146/Pakery_For_MPCforum_by_GameMenel.rar

 

 

Skan:

 

Skan mi nie za duże obciązenie sieci.... ale pliki są czyste

 

 

I plików ktorymi będziemy rozpakowywać pack itp.

Download:

 

http://www.speedyshare.com/files/2127...

 

 

Skan:

 

Skan mi nie za duże obciązenie sieci.... ale pliki są czyste

 

 

I teraz wypakowywujemy te rzeczy do C:\D&S\nazwa_konta\ I teraz macie tam plik m2 i Root Extract Root Extract otwieracie w notaniku i tam macie 11 linijka :

Etap 1 Pliki Locale_PL

Zmieniamy na lokalizacje swojego metka 2008 i pack>locale_pl czyli np. :

 

D:\Program Files\Metin2_2008\pack\locale_pl

 

 

Zapisujemy i wrzucamy na m2

Pojawia nam się folder source wchodzimy w niego i następująca scieżka:

 

Source>locale>pl>

 

 

I tu macie wszystko związane z grafiką.Najpierw wejdzmy w ui:

Co tu możemy zrobić?- Możemy zmienić tlo logowania i tapete wyboru postaci jeśli zmienimy zapisujemy i przechodzimy do effect> tu możemy zmienić ikonke GM.

Plik notanikowy locale_game można tu zmienić np. Jeśli kowal spali rzecz to możemy napisać że ulepszanie się powiodlo...

Etap 2 Pliki root

OK teraz wchodzimy znowu w C:\D&S\nasza_nazwa\ i otwieramy znowu root Extract notanikiem i znowu ta linijka i piszecie w niej teraz zamiast locale_pl piszemy

 

root

 

 

Znowu wrzucamy na m2 i wchodzimy w folder Source teraz pojawiło nam się dużo plików notanikowych .... Wchodzimy w serverinfo tu możemy dodać nowy serwer czyli będzie np. 5serwerów przykład:

 

import locale

 

if locale.IsEUROPE():

STATE_NONE = "..."

 

STATE_DICT = {

0 : "....",

1 : "NORM",

2 : "BUSY",

3 : "FULL"

}

 

SERVER01_CHANNEL_DICT = {

1:{"key":11,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER02_CHANNEL_DICT = {

1:{"key":21,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER03_CHANNEL_DICT = {

1:{"key":31,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

2:{"key":32,"name":"CH2 ","ip":"5.101.106.90","tcp_port":16000,"udp_port":16000,"state":STATE_NONE,},

}

SERVER04_CHANNEL_DICT = {

1:{"key":41,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

2:{"key":52,"name":"CH2 ","ip":"5.101.106.90","tcp_port":13007,"udp_port":13007,"state":STATE_NONE,},

3:{"key":53,"name":"CH3 ","ip":"5.101.106.90","tcp_port":16007,"udp_port":16007,"state":STATE_NONE,},

4:{"key":54,"name":"CH4 ","ip":"5.101.106.90","tcp_port":16007,"udp_port":16007,"state":STATE_NONE,},

5:{"key":55,"name":"CH5 ","ip":"5.101.106.90","tcp_port":16007,"udp_port":16007,"state":STATE_NONE,},

6:{"key":56,"name":"CH6 ","ip":"5.101.106.90","tcp_port":16007,"udp_port":16007,"state":STATE_NONE,},

7:{"key":57,"name":"CH7 ","ip":"5.101.106.90","tcp_port":16007,"udp_port":16007,"state":STATE_NONE,},

 

}

SERVER05_CHANNEL_DICT = {

1:{"key":51,"name":"CH1 ","ip":"5.101.106.90","tcp_port":19007,"udp_port":19007,"state":STATE_NONE,},

2:{"key":52,"name":"CH2 ","ip":"5.101.106.90","tcp_port":13007,"udp_port":13007,"state":STATE_NONE,},

3:{"key":53,"name":"CH3 ","ip":"5.101.106.90","tcp_port":16007,"udp_port":16007,"state":STATE_NONE,},

4:{"key":54,"name":"CH4 ","ip":"5.101.106.90","tcp_port":22007,"udp_port":22007,"state":STATE_NONE,},

}

SERVER06_CHANNEL_DICT = {

1:{"key":61,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13003,"udp_port":13003,"state":STATE_NONE,},

}

SERVER07_CHANNEL_DICT = {

1:{"key":71,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER08_CHANNEL_DICT = {

1:{"key":81,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER09_CHANNEL_DICT = {

1:{"key":91,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER10_CHANNEL_DICT = {

1:{"key":101,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER11_CHANNEL_DICT = {

1:{"key":111,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13019,"udp_port":13019,"state":STATE_NONE,},

}

SERVER12_CHANNEL_DICT = {

1:{"key":121,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER13_CHANNEL_DICT = {

1:{"key":131,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER14_CHANNEL_DICT = {

1:{"key":141,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER15_CHANNEL_DICT = {

1:{"key":151,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER16_CHANNEL_DICT = {

1:{"key":161,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER17_CHANNEL_DICT = {

1:{"key":171,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER18_CHANNEL_DICT = {

1:{"key":181,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER19_CHANNEL_DICT = {

1:{"key":191,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER20_CHANNEL_DICT = {

1:{"key":201,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER21_CHANNEL_DICT = {

1:{"key":211,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER22_CHANNEL_DICT = {

1:{"key":221,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER23_CHANNEL_DICT = {

1:{"key":231,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER24_CHANNEL_DICT = {

1:{"key":241,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER25_CHANNEL_DICT = {

1:{"key":251,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13019,"udp_port":13019,"state":STATE_NONE,},

}

SERVER26_CHANNEL_DICT = {

1:{"key":261,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13003,"udp_port":13003,"state":STATE_NONE,},

}

SERVER27_CHANNEL_DICT = {

1:{"key":271,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER28_CHANNEL_DICT = {

1:{"key":281,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER29_CHANNEL_DICT = {

1:{"key":291,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13000,"udp_port":13000,"state":STATE_NONE,},

}

SERVER30_CHANNEL_DICT = {

1:{"key":301,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13019,"udp_port":13019,"state":STATE_NONE,},

}

SERVER31_CHANNEL_DICT = {

1:{"key":311,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13019,"udp_port":13019,"state":STATE_NONE,},

}

SERVER32_CHANNEL_DICT = {

1:{"key":321,"name":"CH1 ","ip":"5.101.106.90","tcp_port":13019,"udp_port":13019,"state":STATE_NONE,},

}

REGION_NAME_DICT = {

0 : "POLAND",

}

 

REGION_AUTH_SERVER_DICT = {

0 : {

1 : { "ip":"5.101.106.90", "port":11002, },

2 : { "ip":"5.101.106.90", "port":11002, },

3 : { "ip":"5.101.106.90", "port":11002, },

4 : { "ip":"5.101.106.90", "port":11002, },

5 : { "ip":"5.101.106.90", "port":11003, },

6 : { "ip":"5.101.106.90", "port":11110, },

7 : { "ip":"5.101.106.90", "port":12002, },

8 : { "ip":"5.101.106.90", "port":11002, },

9 : { "ip":"5.101.106.90", "port":11002, },

10 : { "ip":"5.101.106.90", "port":11588, },

11 : { "ip":"5.101.106.90", "port":11002, },

12 : { "ip":"5.101.106.90", "port":11002, },

13 : { "ip":"5.101.106.90", "port":11002, },

14 : { "ip":"5.101.106.90", "port":11002, },

15 : { "ip":"5.101.106.90", "port":11002, },

16 : { "ip":"5.101.106.90", "port":11002, },

17 : { "ip":"5.101.106.90", "port":11002, },

18 : { "ip":"5.101.106.90", "port":19841, },

19 : { "ip":"5.101.106.90", "port":11110, },

20 : { "ip":"5.101.106.90", "port":11002, },

21 : { "ip":"5.101.106.90", "port":11002, },

22 : { "ip":"5.101.106.90", "port":11002, },

23 : { "ip":"5.101.106.90", "port":18866, },

24 : { "ip":"5.101.106.90", "port":11002, },

25 : { "ip":"5.101.106.90", "port":11002, },

26 : { "ip":"5.101.106.90", "port":11002, },

27 : { "ip":"5.101.106.90", "port":11002, },

28 : { "ip":"5.101.106.90", "port":11002, },

29 : { "ip":"5.101.106.90", "port":11002, },

30 : { "ip":"5.101.106.90", "port":11002, },

31 : { "ip":"5.101.106.90", "port":11002, },

32 : { "ip":"5.101.106.90", "port":11002, },

}

}

 

REGION_DICT = {

0 : {

1 : { "name" : "BosYMT2", "channel" : SERVER01_CHANNEL_DICT, },

2 : { "name" : "BosYMT2-1", "channel" : SERVER02_CHANNEL_DICT, },

3 : { "name" : "BosYMT2-2", "channel" : SERVER03_CHANNEL_DICT, },

4 : { "name" : "BosYMT2-3", "channel" : SERVER04_CHANNEL_DICT, },

5 : { "name" : "BosYMT2-4", "channel" : SERVER05_CHANNEL_DICT, },

6 : { "name" : "BosYMT2-5", "channel" : SERVER06_CHANNEL_DICT, },

7 : { "name" : "BosYMT2-6", "channel" : SERVER07_CHANNEL_DICT, },

8 : { "name" : "BosYMT2-7", "channel" : SERVER08_CHANNEL_DICT, },

9 : { "name" : "BosYMT2-8", "channel" : SERVER09_CHANNEL_DICT, },

10 : { "name" : "BosYMT2-9", "channel" : SERVER10_CHANNEL_DICT, },

11 : { "name" : "BosYMT2", "channel" : SERVER11_CHANNEL_DICT, },

12 : { "name" : "BosYMT2", "channel" : SERVER12_CHANNEL_DICT, },

13 : { "name" : "BosYMT2", "channel" : SERVER13_CHANNEL_DICT, },

14 : { "name" : "BosYMT2", "channel" : SERVER14_CHANNEL_DICT, },

15 : { "name" : "BosYMT2", "channel" : SERVER15_CHANNEL_DICT, },

16 : { "name" : "BosYMT2", "channel" : SERVER16_CHANNEL_DICT, },

17 : { "name" : "BosYMT2", "channel" : SERVER17_CHANNEL_DICT, },

18 : { "name" : "BosYMT2", "channel" : SERVER18_CHANNEL_DICT, },

19 : { "name" : "BosYMT2", "channel" : SERVER19_CHANNEL_DICT, },

20 : { "name" : "BosYMT2", "channel" : SERVER20_CHANNEL_DICT, },

21 : { "name" : "BosYMT2", "channel" : SERVER21_CHANNEL_DICT, },

22 : { "name" : "BosYMT2", "channel" : SERVER22_CHANNEL_DICT, },

23 : { "name" : "BosYMT2", "channel" : SERVER23_CHANNEL_DICT, },

24 : { "name" : "BosYMT2", "channel" : SERVER24_CHANNEL_DICT, },

25 : { "name" : "BosYMT2", "channel" : SERVER25_CHANNEL_DICT, },

26 : { "name" : "BosYMT2", "channel" : SERVER26_CHANNEL_DICT, },

27 : { "name" : "BosYMT2", "channel" : SERVER27_CHANNEL_DICT, },

28 : { "name" : "BosYMT2", "channel" : SERVER28_CHANNEL_DICT, },

29 : { "name" : "BosYMT2", "channel" : SERVER29_CHANNEL_DICT, },

30 : { "name" : "BosYMT2", "channel" : SERVER30_CHANNEL_DICT, },

31 : { "name" : "BosYMT2", "channel" : SERVER31_CHANNEL_DICT, },

32 : { "name" : "BosYMT2", "channel" : SERVER32_CHANNEL_DICT, },

},

}

 

MARKADDR_DICT = {

10 : { "ip" : "5.101.106.90", "tcp_port" : 21000, "mark" : "10.tga", "symbol_path" : "10", },

20 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "20.tga", "symbol_path" : "20", },

30 : { "ip" : "5.101.106.90", "tcp_port" : 16000, "mark" : "30.tga", "symbol_path" : "30", },

40 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "40.tga", "symbol_path" : "40", },

50 : { "ip" : "5.101.106.90", "tcp_port" : 13007, "mark" : "01.tga", "symbol_path" : "10", },

60 : { "ip" : "5.101.106.90", "tcp_port" : 13003, "mark" : "40.tga", "symbol_path" : "60", },

70 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "50.tga", "symbol_path" : "70", },

80 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "60.tga", "symbol_path" : "80", },

90 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "20.tga", "symbol_path" : "20", },

100 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "80.tga", "symbol_path" : "100", },

110 : { "ip" : "5.101.106.90", "tcp_port" : 13019, "mark" : "90.tga", "symbol_path" : "110", },

120 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "120", },

130 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "130", },

140 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "140", },

150 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "110", },

160 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "120", },

170 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "130", },

180 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "140", },

190 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "140", },

200 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "140", },

210 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "140", },

220 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "140", },

230 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "140", },

240 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "10.tga", "symbol_path" : "10", },

250 : { "ip" : "5.101.106.90", "tcp_port" : 13019, "mark" : "90.tga", "symbol_path" : "140", },

260 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "140", },

270 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "140", },

280 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "140.tga", "symbol_path" : "140", },

290 : { "ip" : "5.101.106.90", "tcp_port" : 13000, "mark" : "90.tga", "symbol_path" : "140", },

300 : { "ip" : "5.101.106.90", "tcp_port" : 13019, "mark" : "90.tga", "symbol_path" : "140", },

310 : { "ip" : "5.101.106.90", "tcp_port" : 13019, "mark" : "90.tga", "symbol_path" : "140", },

320 : { "ip" : "5.101.106.90", "tcp_port" : 13019, "mark" : "90.tga", "symbol_path" : "140", },

}

 

TESTADDR = { "ip" : "5.101.106.90", "tcp_port" : 50000, "udp_port" : 50000, }

 

 

Tam gdzie macie 5.101.106.90 piszecie swoje IP (wtedy to umożliwi graczowi wejście na serwer na bylee jakim spol)

A tam gdzie BosYMT2 piszecie swoją nazwe serwera...

Zapisujecie....

Teraz plik:

 

PlayerSettingsModule_New

 

 

Możemy zrobić w nim skillhack

Czyli jeśli gracz będzie brał skille np. Bodego to będzie miał w nim Ognistego Ducha od sury

Przykład:

 

import chr

import chrmgr

import skill

import net

import item

import player

import effect

import constInfo

import locale

import emotion

 

import app

 

JOB_WARRIOR = 0

JOB_ASSASSIN = 1

JOB_SURA = 2

JOB_SHAMAN = 3

 

RACE_WARRIOR_M = 0

RACE_ASSASSIN_W = 1

RACE_SURA_M = 2

RACE_SHAMAN_W = 3

RACE_WARRIOR_W = 4

RACE_ASSASSIN_M = 5

RACE_SURA_W = 6

RACE_SHAMAN_M = 7

 

COMBO_TYPE_1 = 0

COMBO_TYPE_2 = 1

COMBO_TYPE_3 = 2

 

COMBO_INDEX_1 = 0

COMBO_INDEX_2 = 1

COMBO_INDEX_3 = 2

COMBO_INDEX_4 = 3

COMBO_INDEX_5 = 4

COMBO_INDEX_6 = 5

 

 

HORSE_SKILL_WILDATTACK = chr.MOTION_SKILL+121

HORSE_SKILL_CHARGE = chr.MOTION_SKILL+122

HORSE_SKILL_SPLASH = chr.MOTION_SKILL+123

 

GUILD_SKILL_DRAGONBLOOD = chr.MOTION_SKILL+101

GUILD_SKILL_DRAGONBLESS = chr.MOTION_SKILL+102

GUILD_SKILL_BLESSARMOR = chr.MOTION_SKILL+103

GUILD_SKILL_SPPEDUP = chr.MOTION_SKILL+104

GUILD_SKILL_DRAGONWRATH = chr.MOTION_SKILL+105

GUILD_SKILL_MAGICUP = chr.MOTION_SKILL+106

 

 

SKILL_INDEX_DICT = {

JOB_WARRIOR : {

1 : (1, 2, 3, 4, 5, 0, 0, 0, 137, 0, 138, 0, 139, 0,),

2 : (16, 17, 18, 19, 20, 0, 0, 0, 137, 0, 138, 0, 139, 0,),

"SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),

},

JOB_ASSASSIN : {

1 : (31, 32, 33, 34, 35, 0, 0, 0, 137, 0, 138, 0, 139, 0, 140,),

2 : (46, 47, 48, 49, 50, 0, 0, 0, 137, 0, 138, 0, 139, 0, 140,),

"SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),

},

JOB_SURA : {

1 : (61, 62, 63, 64, 65, 66, 0, 0, 137, 0, 138, 0, 139, 0,),

2 : (76, 77, 78, 79, 80, 81, 0, 0, 137, 0, 138, 0, 139, 0,),

"SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),

},

JOB_SHAMAN : {

1 : (91, 92, 93, 94, 95, 96, 0, 0, 137, 0, 138, 0, 139, 0,),

2 : (106, 107, 108, 109, 110, 111, 0, 0, 137, 0, 138, 0, 139, 0,),

"SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),

},

}

 

PASSIVE_GUILD_SKILL_INDEX_LIST = ( 151, )

ACTIVE_GUILD_SKILL_INDEX_LIST = ( 152, 153, 154, 155, 156, 157, )

 

def RegisterSkill(race, group, empire=0):

 

job = chr.RaceToJob(race)

 

## Character Skill

if SKILL_INDEX_DICT.has_key(job):

 

if SKILL_INDEX_DICT[job].has_key(group):

 

activeSkillList = SKILL_INDEX_DICT[job][group]

for i in xrange(len(activeSkillList)):

 

skillIndex = activeSkillList

player.SetSkill(i+1, skillIndex)

 

supportSkillList = SKILL_INDEX_DICT[job]["SUPPORT"]

for i in xrange(len(supportSkillList)):

player.SetSkill(i+100+1, supportSkillList)

 

## Language Skill

if 0 != empire:

languageSkillList = []

for i in xrange(3):

if (i+1) != empire:

languageSkillList.append(player.SKILL_INDEX_LANGUAGE1+i)

for i in xrange(len(languageSkillList)):

player.SetSkill(107+i, languageSkillList)

 

## Guild Skill

for i in xrange(len(PASSIVE_GUILD_SKILL_INDEX_LIST)):

player.SetSkill(200+i, PASSIVE_GUILD_SKILL_INDEX_LIST)

for i in xrange(len(ACTIVE_GUILD_SKILL_INDEX_LIST)):

player.SetSkill(210+i, ACTIVE_GUILD_SKILL_INDEX_LIST)

 

FACE_IMAGE_DICT = {

RACE_WARRIOR_M : "d:/ymir work/ui/game/windows/face_warrior.sub",

RACE_ASSASSIN_W : "d:/ymir work/ui/game/windows/face_assassin.sub",

RACE_SURA_M : "d:/ymir work/ui/game/windows/face_sura.sub",

RACE_SHAMAN_W : "d:/ymir work/ui/game/windows/face_shaman.sub",

}

 

isInitData=0

 

def SetGeneralMotions(mode, folder):

chrmgr.SetPathName(folder)

chrmgr.RegisterMotionMode(mode)

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_WAIT, "wait.msa")

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE, "damage.msa", 50)

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE, "damage_1.msa", 50)

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE_BACK, "damage_2.msa", 50)

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE_BACK, "damage_3.msa", 50)

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE_FLYING, "damage_flying.msa")

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_STAND_UP, "falling_stand.msa")

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE_FLYING_BACK, "back_damage_flying.msa")

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_STAND_UP_BACK, "back_falling_stand.msa")

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DEAD, "dead.msa")

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DIG, "dig.msa")

 

def SetIntroMotions(mode, folder):

chrmgr.SetPathName(folder)

chrmgr.RegisterMotionMode(mode)

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_INTRO_WAIT, "wait.msa")

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_INTRO_SELECTED, "selected.msa")

chrmgr.RegisterCacheMotionData(mode, chr.MOTION_INTRO_NOT_SELECTED, "not_selected.msa")

 

 

 

def __InitData():

global isInitData

 

if isInitData:

return

 

isInitData = 1

 

chrmgr.SetDustGap(250)

chrmgr.SetHorseDustGap(500)

 

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DUST, "", "d:/ymir work/effect/etc/dust/dust.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HORSE_DUST, "", "d:/ymir work/effect/etc/dust/running_dust.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HIT, "", "d:/ymir work/effect/hit/blow_1/blow_1_low.mse")

 

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HPUP_RED, "", "d:/ymir work/effect/etc/recuperation/drugup_red.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SPUP_BLUE, "", "d:/ymir work/effect/etc/recuperation/drugup_blue.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SPEEDUP_GREEN, "", "d:/ymir work/effect/etc/recuperation/drugup_green.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DXUP_PURPLE, "", "d:/ymir work/effect/etc/recuperation/drugup_purple.mse")

 

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_PENETRATE, "Bip01", "d:/ymir work/effect/hit/gwantong.mse")

#chrmgr.RegisterCacheEffect(chrmgr.EFFECT_BLOCK, "", "d:/ymir work/effect/etc/")

#chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DODGE, "", "d:/ymir work/effect/etc/")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_FIRECRACKER, "", "d:/ymir work/effect/etc/firecracker/newyear_firecracker.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SPIN_TOP, "", "d:/ymir work/effect/etc/firecracker/paing_i.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SELECT, "", "d:/ymir work/effect/etc/click/click_select.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_TARGET, "", "d:/ymir work/effect/etc/click/click_glow_select.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_STUN, "Bip01 Head", "d:/ymir work/effect/etc/stun/stun.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_CRITICAL, "Bip01 R Hand", "d:/ymir work/effect/hit/critical.mse")

player.RegisterCacheEffect(player.EFFECT_PICK, "d:/ymir work/effect/etc/click/click.mse")

 

 

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_TARGET, "", "d:/ymir work/effect/affect/damagevalue/target.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_NOT_TARGET, "", "d:/ymir work/effect/affect/damagevalue/nontarget.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_SELFDAMAGE, "", "d:/ymir work/effect/affect/damagevalue/damage.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_SELFDAMAGE2, "", "d:/ymir work/effect/affect/damagevalue/damage_1.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_POISON, "", "d:/ymir work/effect/affect/damagevalue/poison.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_MISS, "", "d:/ymir work/effect/affect/damagevalue/miss.mse")

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_TARGETMISS, "", "d:/ymir work/effect/affect/damagevalue/target_miss.mse")

#chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_CRITICAL, "", "d:/ymir work/effect/affect/damagevalue/critical.mse")

 

#chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SUCCESS, "", "season1/effect/success.mse")

#chrmgr.RegisterCacheEffect(chrmgr.EFFECT_FAIL, "", "season1/effect/fail.mse")

 

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_LEVELUP_ON_14_FOR_GERMANY, "","season1/effect/paymessage_warning.mse") #·ąş§ľ÷ 14Ŕ϶§ ( µ¶ŔĎŔüżë )

chrmgr.RegisterCacheEffect(chrmgr.EFFECT_LEVELUP_UNDER_15_FOR_GERMANY, "", "season1/effect/paymessage_decide.mse" )#·ąş§ľ÷ 15Ŕ϶§ ( µ¶ŔĎŔüżë )

 

 

 

##############

# WARRIOR

##############

chrmgr.CreateRace(RACE_WARRIOR_M)

chrmgr.SelectRace(RACE_WARRIOR_M)

chrmgr.LoadLocalRaceData("warrior_m.msm")

SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/warrior/intro/")

 

chrmgr.CreateRace(RACE_WARRIOR_W)

chrmgr.SelectRace(RACE_WARRIOR_W)

chrmgr.LoadLocalRaceData("warrior_w.msm")

SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/warrior/intro/")

 

 

##############

# ASSASSIN

##############

chrmgr.CreateRace(RACE_ASSASSIN_W)

chrmgr.SelectRace(RACE_ASSASSIN_W)

chrmgr.LoadLocalRaceData("assassin_w.msm")

SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/assassin/intro/")

 

chrmgr.CreateRace(RACE_ASSASSIN_M)

chrmgr.SelectRace(RACE_ASSASSIN_M)

chrmgr.LoadLocalRaceData("assassin_m.msm")

SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/assassin/intro/")

 

 

##############

# SURA

##############

chrmgr.CreateRace(RACE_SURA_M)

chrmgr.SelectRace(RACE_SURA_M)

chrmgr.LoadLocalRaceData("sura_m.msm")

SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/sura/intro/")

 

chrmgr.CreateRace(RACE_SURA_W)

chrmgr.SelectRace(RACE_SURA_W)

chrmgr.LoadLocalRaceData("sura_w.msm")

SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/sura/intro/")

 

 

##############

# SHAMAN

##############

chrmgr.CreateRace(RACE_SHAMAN_W)

chrmgr.SelectRace(RACE_SHAMAN_W)

chrmgr.LoadLocalRaceData("shaman_w.msm")

SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/shaman/intro/")

 

chrmgr.CreateRace(RACE_SHAMAN_M)

chrmgr.SelectRace(RACE_SHAMAN_M)

chrmgr.LoadLocalRaceData("shaman_m.msm")

SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/shaman/intro/")

 

 

 

def __LoadGameSound():

item.SetUseSoundFileName(item.USESOUND_DEFAULT, "sound/ui/drop.wav")

item.SetUseSoundFileName(item.USESOUND_ACCESSORY, "sound/ui/equip_ring_amulet.wav")

item.SetUseSoundFileName(item.USESOUND_ARMOR, "sound/ui/equip_metal_armor.wav")

item.SetUseSoundFileName(item.USESOUND_BOW, "sound/ui/equip_bow.wav")

item.SetUseSoundFileName(item.USESOUND_WEAPON, "sound/ui/equip_metal_weapon.wav")

item.SetUseSoundFileName(item.USESOUND_POTION, "sound/ui/eat_potion.wav")

item.SetUseSoundFileName(item.USESOUND_PORTAL, "sound/ui/potal_scroll.wav")

 

item.SetDropSoundFileName(item.DROPSOUND_DEFAULT, "sound/ui/drop.wav")

item.SetDropSoundFileName(item.DROPSOUND_ACCESSORY, "sound/ui/equip_ring_amulet.wav")

item.SetDropSoundFileName(item.DROPSOUND_ARMOR, "sound/ui/equip_metal_armor.wav")

item.SetDropSoundFileName(item.DROPSOUND_BOW, "sound/ui/equip_bow.wav")

item.SetDropSoundFileName(item.DROPSOUND_WEAPON, "sound/ui/equip_metal_weapon.wav")

 

def __LoadGameEffect():

chrmgr.RegisterEffect(chrmgr.EFFECT_SPAWN_APPEAR, "Bip01", "d:/ymir work/effect/etc/appear_die/monster_appear.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_SPAWN_DISAPPEAR, "Bip01", "d:/ymir work/effect/etc/appear_die/monster_die.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_ATTACK, "equip_right_hand", "d:/ymir work/effect/hit/blow_flame/flame_3_weapon.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_HIT, "", "d:/ymir work/effect/hit/blow_flame/flame_3_blow.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_ATTACH, "", "d:/ymir work/effect/hit/blow_flame/flame_3_body.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_ATTACK, "equip_right", "d:/ymir work/effect/hit/blow_electric/light_1_weapon.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_HIT, "", "d:/ymir work/effect/hit/blow_electric/light_1_blow.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_ATTACH, "", "d:/ymir work/effect/hit/blow_electric/light_1_body.mse")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_LEVELUP, "", "d:/ymir work/effect/etc/levelup_1/level_up.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_SKILLUP, "", "d:/ymir work/effect/etc/skillup/skillup_1.mse")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+1, "Bip01", "d:/ymir work/effect/etc/empire/empire_A.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+2, "Bip01", "d:/ymir work/effect/etc/empire/empire_B.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+3, "Bip01", "d:/ymir work/effect/etc/empire/empire_C.mse")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_sword_loop.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_spear_loop.mse")

 

# LOCALE

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+0, "Bip01", locale.FN_GM_MARK)

# END_OF_LOCALE

 

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+3, "Bip01", "d:/ymir work/effect/hit/blow_poison/poison_loop.mse") ## Áßµ¶

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+4, "", "d:/ymir work/effect/affect/slow.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+5, "Bip01 Head", "d:/ymir work/effect/etc/stun/stun_loop.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+6, "", "d:/ymir work/effect/etc/ready/ready.mse")

#chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+8, "", "d:/ymir work/guild/effect/10_construction.mse")

#chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+9, "", "d:/ymir work/guild/effect/20_construction.mse")

#chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+10, "", "d:/ymir work/guild/effect/20_upgrade.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+16, "", "d:/ymir work/pc/warrior/effect/gyeokgongjang_loop.mse") ## õ±ŮĂß (ąŘżˇµµ ŔÖµű-_-)

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+17, "", "d:/ymir work/pc/assassin/effect/gyeonggong_loop.mse") ## ŔÚ°´ - °ć°ř

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+19, "Bip01 R Finger2", "d:/ymir work/pc/sura/effect/gwigeom_loop.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+20, "", "d:/ymir work/pc/sura/effect/fear_loop.mse") ## Ľö¶ó - °řĆ÷

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+21, "", "d:/ymir work/pc/sura/effect/jumagap_loop.mse") ## Ľö¶ó - ÁÖ¸¶°©

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+22, "", "d:/ymir work/pc/shaman/effect/3hosin_loop.mse") ## ą«´ç - ČŁ˝Ĺ

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+23, "", "d:/ymir work/pc/shaman/effect/boho_loop.mse") ## ą«´ç - ş¸ČŁ

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+24, "", "d:/ymir work/pc/shaman/effect/10kwaesok_loop.mse") ## ą«´ç - ÄčĽÓ

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+25, "", "d:/ymir work/pc/sura/effect/heuksin_loop.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+26, "", "d:/ymir work/pc/sura/effect/muyeong_loop.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+28, "Bip01", "d:/ymir work/effect/hit/blow_flame/flame_loop.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+29, "Bip01 R Hand", "d:/ymir work/pc/shaman/effect/6gicheon_hand.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+30, "Bip01 L Hand", "d:/ymir work/pc/shaman/effect/jeungryeok_hand.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+32, "Bip01 Head", "d:/ymir work/pc/sura/effect/pabeop_loop.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+33, "", "d:/ymir work/pc/warrior/effect/gyeokgongjang_loop.mse") ## õ±ŮĂß (Fallen)

## 34 Polymoph

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+35, "", "d:/ymir work/effect/etc/guild_war_flag/flag_red.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+36, "", "d:/ymir work/effect/etc/guild_war_flag/flag_blue.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+37, "", "d:/ymir work/effect/etc/guild_war_flag/flag_yellow.mse")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+1, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_7.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+2, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_8.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+3, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_9.mse")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+4, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_7_b.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+5, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_8_b.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+6, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_9_b.mse")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+7, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_7_f.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+8, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_8_f.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+9, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_9_f.mse")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+10, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_7_s.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+11, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_8_s.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+12, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_9_s.mse")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+13, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_7_s.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+14, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_8_s.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+15, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_9_s.mse")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+16, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_7.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+17, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_8.mse")

chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+18, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_9.mse")

 

## FlyData

effect.RegisterIndexedFlyData(effect.FLY_EXP, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_yellow_small2.msf") ## łë¶ő»ö (EXP)

effect.RegisterIndexedFlyData(effect.FLY_HP_MEDIUM, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_red_small.msf") ## »ˇ°Ł»ö (HP) ŔŰŔş°Ĺ

effect.RegisterIndexedFlyData(effect.FLY_HP_BIG, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_red_big.msf") ## »ˇ°Ł»ö (HP) Ĺ«°Ĺ

effect.RegisterIndexedFlyData(effect.FLY_SP_SMALL, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_blue_warrior_small.msf") ## ĆĶő»ö ˛ż¸®¸¸ Ŕִ°Ĺ

effect.RegisterIndexedFlyData(effect.FLY_SP_MEDIUM, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_blue_small.msf") ## ĆĶő»ö ŔŰŔş°Ĺ

effect.RegisterIndexedFlyData(effect.FLY_SP_BIG, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_blue_big.msf") ## ĆĶő»ö Ĺ«°Ĺ

effect.RegisterIndexedFlyData(effect.FLY_FIREWORK1, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_1.msf") ## ĆřÁ× 1

effect.RegisterIndexedFlyData(effect.FLY_FIREWORK2, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_2.msf") ## ĆřÁ× 2

effect.RegisterIndexedFlyData(effect.FLY_FIREWORK3, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_3.msf") ## ĆřÁ× 3

effect.RegisterIndexedFlyData(effect.FLY_FIREWORK4, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_4.msf") ## ĆřÁ× 4

effect.RegisterIndexedFlyData(effect.FLY_FIREWORK5, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_5.msf") ## ĆřÁ× 5

effect.RegisterIndexedFlyData(effect.FLY_FIREWORK6, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_6.msf") ## ĆřÁ× 6

effect.RegisterIndexedFlyData(effect.FLY_FIREWORK_XMAS, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_xmas.msf") ## ĆřÁ× X-Mas

effect.RegisterIndexedFlyData(effect.FLY_CHAIN_LIGHTNING, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/pc/shaman/effect/pokroe.msf") ## Ćř·Ú°Ý

effect.RegisterIndexedFlyData(effect.FLY_HP_SMALL, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_red_smallest.msf") ## »ˇ°Ł»ö ¸Ĺżě ŔŰŔş°Ĺ

effect.RegisterIndexedFlyData(effect.FLY_SKILL_MUYEONG, effect.INDEX_FLY_TYPE_AUTO_FIRE, "d:/ymir work/pc/sura/effect/muyeong_fly.msf") ## ą«żµÁř

 

#########################################################################################

## Emoticon

EmoticonStr = "d:/ymir work/effect/etc/emoticon/"

 

chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+0, "", EmoticonStr+"sweat.mse")

net.RegisterEmoticonString("(Ȳ´ç)")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+1, "", EmoticonStr+"money.mse")

net.RegisterEmoticonString("(µ·)")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+2, "", EmoticonStr+"happy.mse")

net.RegisterEmoticonString("(±â»Ý)")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+3, "", EmoticonStr+"love_s.mse")

net.RegisterEmoticonString("(ÁÁľĆ)")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+4, "", EmoticonStr+"love_l.mse")

net.RegisterEmoticonString("(»ç¶ű)")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+5, "", EmoticonStr+"angry.mse")

net.RegisterEmoticonString("(şĐłë)")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+6, "", EmoticonStr+"aha.mse")

net.RegisterEmoticonString("(ľĆÇĎ)")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+7, "", EmoticonStr+"gloom.mse")

net.RegisterEmoticonString("(żěżď)")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+8, "", EmoticonStr+"sorry.mse")

net.RegisterEmoticonString("(ÁËĽŰ)")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+9, "", EmoticonStr+"!_mix_back.mse")

net.RegisterEmoticonString("(!)")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+10, "", EmoticonStr+"question.mse")

net.RegisterEmoticonString("(?)")

 

chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+11, "", EmoticonStr+"fish.mse")

net.RegisterEmoticonString("(fish)")

 

 

## Emoticon

#########################################################################################

 

 

def __LoadGameWarrior():

__LoadGameWarriorEx(RACE_WARRIOR_M, "d:/ymir work/pc/warrior/")

__LoadGameWarriorEx(RACE_WARRIOR_W, "d:/ymir work/pc2/warrior/")

 

def __LoadGameAssassin():

__LoadGameAssassinEx(RACE_ASSASSIN_W, "d:/ymir work/pc/assassin/")

__LoadGameAssassinEx(RACE_ASSASSIN_M, "d:/ymir work/pc2/assassin/")

 

def __LoadGameSura():

__LoadGameSuraEx(RACE_SURA_M, "d:/ymir work/pc/sura/")

__LoadGameSuraEx(RACE_SURA_W, "d:/ymir work/pc2/sura/")

 

def __LoadGameShaman():

__LoadGameShamanEx(RACE_SHAMAN_W, "d:/ymir work/pc/shaman/")

__LoadGameShamanEx(RACE_SHAMAN_M, "d:/ymir work/pc2/shaman/")

 

def __LoadGameWarriorEx(race, path):

 

## Warrior

#########################################################################################

chrmgr.SelectRace(race)

 

## GENERAL MODE

SetGeneralMotions(chr.MOTION_MODE_GENERAL, path + "general/")

chrmgr.SetMotionRandomWeight(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, 0, 70)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "wait_1.msa", 30)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack_1.msa", 50)

 

## SKILL

chrmgr.SetPathName(path + "skill/")

for i in xrange(skill.SKILL_EFFECT_COUNT):

END_STRING = ""

if i != 0: END_STRING = "_%d" % (i+1)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+1, "samyeon" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+2, "palbang" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+3, "jeongwi" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+4, "geomgyeong" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+5, "tanhwan" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+16, "gigongcham" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+17, "gyeoksan" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+18, "daejin" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+19, "cheongeun" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+20, "geompung" + END_STRING + ".msa")

 

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLOOD, "guild_yongsinuipi.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLESS, "guild_yongsinuichukbok.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_BLESSARMOR, "guild_seonghwigap.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_SPPEDUP, "guild_gasokhwa.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONWRATH, "guild_yongsinuibunno.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_MAGICUP, "guild_jumunsul.msa")

 

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, 1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

 

## EMOTION

emotion.RegisterEmotionAnis(path)

 

## ONEHAND_SWORD BATTLE

chrmgr.SetPathName(path + "onehand_sword/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_ONEHAND_SWORD)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT, "wait.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT, "wait_1.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE, "damage.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE, "damage_1.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK, "damage_2.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK, "damage_3.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_4, "combo_04.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_5, "combo_05.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_6, "combo_06.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_7, "combo_07.msa")

 

## Combo Type 1

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, 4)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)

## Combo Type 2

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, 5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)

## Combo Type 3

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, 6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)

 

## TWOHAND_SWORD BATTLE

chrmgr.SetPathName(path + "twohand_sword/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_TWOHAND_SWORD)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_WAIT, "wait.msa", 70)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_WAIT, "wait_1.msa", 30)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE, "damage.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE, "damage_1.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE_BACK, "damage_2.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE_BACK, "damage_3.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_4, "combo_04.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_5, "combo_05.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_6, "combo_06.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_7, "combo_07.msa")

 

## Combo Type 1

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, 4)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)

## Combo Type 2

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, 5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)

## Combo Type 3

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, 6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)

 

## FISHING

chrmgr.SetPathName(path + "fishing/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_FISHING)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WAIT, "wait.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_THROW, "throw.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_WAIT, "fishing_wait.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_STOP, "fishing_cancel.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_REACT, "fishing_react.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_CATCH, "fishing_catch.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_FAIL, "fishing_fail.msa")

 

## HORSE

chrmgr.SetPathName(path + "horse/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT, "wait.msa", 90)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT, "wait_1.msa", 9)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT, "wait_2.msa", 1)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE, "damage.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE_BACK, "damage.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DEAD, "dead.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, HORSE_SKILL_CHARGE, "skill_charge.msa")

 

## HORSE_ONEHAND_SWORD

chrmgr.SetPathName(path + "horse_onehand_sword/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_ONEHAND_SWORD)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, 3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, HORSE_SKILL_SPLASH, "skill_splash.msa")

 

## HORSE_TWOHAND_SWORD

chrmgr.SetPathName(path + "horse_twohand_sword/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_TWOHAND_SWORD)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, COMBO_TYPE_1, 3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, HORSE_SKILL_SPLASH, "skill_splash.msa")

 

## Bone

chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON, "equip_right_hand")

 

def __LoadGameAssassinEx(race, path):

## Assassin

#########################################################################################

chrmgr.SelectRace(race)

 

## GENERAL MOTION MODE

SetGeneralMotions(chr.MOTION_MODE_GENERAL, path + "general/")

chrmgr.SetMotionRandomWeight(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, 0, 70)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "wait_1.msa", 30)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack_1.msa", 50)

 

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, 1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

 

## SKILL

chrmgr.SetPathName(path + "skill/")

for i in xrange(skill.SKILL_EFFECT_COUNT):

END_STRING = ""

if i != 0: END_STRING = "_%d" % (i+1)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+1, "amseup" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+2, "gungsin" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+3, "charyun" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+4, "eunhyeong" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+5, "sangong" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+16, "yeonsa" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+17, "gwangyeok" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+18, "hwajo" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+19, "gyeonggong" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+20, "dokgigung" + END_STRING + ".msa")

 

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLOOD, "guild_yongsinuipi.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLESS, "guild_yongsinuichukbok.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_BLESSARMOR, "guild_seonghwigap.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_SPPEDUP, "guild_gasokhwa.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONWRATH, "guild_yongsinuibunno.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_MAGICUP, "guild_jumunsul.msa")

 

## EMOTION

emotion.RegisterEmotionAnis(path)

 

## ONEHAND_SWORD BATTLE

chrmgr.SetPathName(path + "onehand_sword/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_ONEHAND_SWORD)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT, "wait.msa", 70)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT, "wait_1.msa", 30)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE, "damage.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE, "damage_1.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK, "damage_2.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK, "damage_3.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_4, "combo_04.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_5, "combo_05.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_6, "combo_06.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_7, "combo_07.msa")

 

## Combo Type 1

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, 4)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)

## Combo Type 2

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, 5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)

## Combo Type 3

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, 6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)

 

## DUALHAND_SWORD BATTLE

chrmgr.SetPathName(path + "dualhand_sword/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_DUALHAND_SWORD)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_WAIT, "wait.msa", 70)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_WAIT, "wait_1.msa", 30)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_DAMAGE, "damage.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_DAMAGE, "damage_1.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_DAMAGE_BACK, "damage_2.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_DAMAGE_BACK, "damage_3.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_4, "combo_04.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_5, "combo_05.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_6, "combo_06.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_7, "combo_07.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_8, "combo_08.msa")

 

## Combo Type 1

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_1, 4)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)

## Combo Type 2

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_2, 5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)

## Combo Type 3

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, 6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_8)

 

## BOW BATTLE

chrmgr.SetPathName(path + "bow/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_BOW)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_WAIT, "wait.msa", 70)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_WAIT, "wait_1.msa", 30)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_DAMAGE, "damage.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_DAMAGE, "damage_1.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_DAMAGE_BACK, "damage_2.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_DAMAGE_BACK, "damage_3.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_COMBO_ATTACK_1, "attack.msa")

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_BOW, COMBO_TYPE_1, 1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BOW, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

 

## FISHING

chrmgr.SetPathName(path + "fishing/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_FISHING)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WAIT, "wait.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_THROW, "throw.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_WAIT, "fishing_wait.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_STOP, "fishing_cancel.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_REACT, "fishing_react.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_CATCH, "fishing_catch.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_FAIL, "fishing_fail.msa")

 

## HORSE

chrmgr.SetPathName(path + "horse/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT, "wait.msa", 90)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT, "wait_1.msa", 9)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT, "wait_2.msa", 1)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE, "damage.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE_BACK, "damage.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DEAD, "dead.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, HORSE_SKILL_CHARGE, "skill_charge.msa")

 

## HORSE_ONEHAND_SWORD

chrmgr.SetPathName(path + "horse_onehand_sword/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_ONEHAND_SWORD)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, HORSE_SKILL_SPLASH, "skill_splash.msa")

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, 3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

 

## HORSE_DUALHAND_SWORD

chrmgr.SetPathName(path + "horse_dualhand_sword/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_DUALHAND_SWORD)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, HORSE_SKILL_SPLASH, "skill_splash.msa")

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, COMBO_TYPE_1, 3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

 

## HORSE_BOW

chrmgr.SetPathName(path + "horse_bow/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_BOW)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_WAIT, "wait.msa", 90)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_WAIT, "wait_1.msa", 9)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_WAIT, "wait_2.msa", 1)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_DAMAGE, "damage.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_DEAD, "dead.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_COMBO_ATTACK_1, "attack.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, HORSE_SKILL_SPLASH, "skill_splash.msa")

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_BOW, COMBO_TYPE_1, 1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_BOW, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

 

chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON, "equip_right")

chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON_LEFT, "equip_left")

 

def __LoadGameSuraEx(race, path):

## Sura

#########################################################################################

chrmgr.SelectRace(race)

 

## GENERAL MOTION MODE

SetGeneralMotions(chr.MOTION_MODE_GENERAL, path + "general/")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack_1.msa", 50)

 

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, 1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

 

## SKILL

chrmgr.SetPathName(path + "skill/")

# chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+4, "geongon.msa")

 

for i in xrange(skill.SKILL_EFFECT_COUNT):

END_STRING = ""

if i != 0: END_STRING = "_%d" % (i+1)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+1, "swaeryeong" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+2, "yonggwon" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+3, "gwigeom" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+4, "gongpo" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+5, "jumagap" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+6, "pabeop" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+16, "maryeong" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+17, "hwayeom" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+18, "muyeong" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+19, "heuksin" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+20, "tusok" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+21, "mahwan" + END_STRING + ".msa")

 

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLOOD, "guild_yongsinuipi.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLESS, "guild_yongsinuichukbok.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_BLESSARMOR, "guild_seonghwigap.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_SPPEDUP, "guild_gasokhwa.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONWRATH, "guild_yongsinuibunno.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_MAGICUP, "guild_jumunsul.msa")

 

## EMOTION

emotion.RegisterEmotionAnis(path)

 

## ONEHAND_SWORD BATTLE

chrmgr.SetPathName(path + "onehand_sword/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_ONEHAND_SWORD)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT, "wait.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE, "damage.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE, "damage.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE, "damage_1.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK, "damage_2.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK, "damage_3.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_4, "combo_04.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_5, "combo_05.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_6, "combo_06.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_7, "combo_07.msa")

 

## Combo Type 1

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, 4)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)

## Combo Type 2

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, 5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)

## Combo Type 3

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, 6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)

 

## FISHING

chrmgr.SetPathName(path + "fishing/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_FISHING)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WAIT, "wait.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_THROW, "throw.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_WAIT, "fishing_wait.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_STOP, "fishing_cancel.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_REACT, "fishing_react.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_CATCH, "fishing_catch.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_FAIL, "fishing_fail.msa")

 

## HORSE

chrmgr.SetPathName(path + "horse/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT, "wait.msa", 90)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT, "wait_1.msa", 9)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT, "wait_2.msa", 1)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE, "damage.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE_BACK, "damage.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DEAD, "dead.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, HORSE_SKILL_CHARGE, "skill_charge.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, HORSE_SKILL_SPLASH, "skill_splash.msa")

 

## HORSE_ONEHAND_SWORD

chrmgr.SetPathName(path + "horse_onehand_sword/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_ONEHAND_SWORD)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, 3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")

 

chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON, "equip_right")

 

def __LoadGameShamanEx(race, path):

## Shaman

#########################################################################################

chrmgr.SelectRace(race)

 

## GENERAL MOTION MODE

SetGeneralMotions(chr.MOTION_MODE_GENERAL, path + "general/")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack_1.msa", 50)

 

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, 1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

 

## EMOTION

emotion.RegisterEmotionAnis(path)

 

## Fan

chrmgr.SetPathName(path + "fan/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_FAN)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_WAIT, "wait.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_DAMAGE, "damage.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_DAMAGE, "damage_1.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_DAMAGE_BACK, "damage_2.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_DAMAGE_BACK, "damage_3.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_4, "combo_04.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_5, "combo_05.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_6, "combo_06.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_7, "combo_07.msa")

 

## Combo Type 1

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_1, 4)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)

## Combo Type 2

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_2, 5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)

## Combo Type 3

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, 6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)

 

## Bell

chrmgr.SetPathName(path + "Bell/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_BELL)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_WAIT, "wait.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_DAMAGE, "damage.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_DAMAGE, "damage_1.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_DAMAGE_BACK, "damage_2.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_DAMAGE_BACK, "damage_3.msa", 50)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_4, "combo_04.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_5, "combo_05.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_6, "combo_06.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_7, "combo_07.msa")

 

## Combo Type 1

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_1, 4)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)

## Combo Type 2

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_2, 5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)

## Combo Type 3

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, 6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)

 

## SKILL

chrmgr.SetPathName(path + "skill/")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+1, "bipabu.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+2, "yongpa.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+3, "paeryong.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+4, "hosin_target.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+5, "boho_target.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+6, "gicheon_target.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+16, "noejeon.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+17, "byeorak.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+18, "pokroe.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+19, "jeongeop_target.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+20, "kwaesok_target.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+21, "jeungryeok_target.msa")

#chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+10, "budong.msa")

 

START_INDEX = 0

#skill.SKILL_EFFECT_COUNT ±îÁö//

for i in (1, 2, 3):

END_STRING = ""

if i != 0: END_STRING = "_%d" % (i+1)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+1, "bipabu" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+2, "yongpa" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+3, "paeryong" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+4, "hosin" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+5, "boho" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+6, "gicheon" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+16, "noejeon" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+17, "byeorak" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+18, "pokroe" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+19, "jeongeop" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+20, "kwaesok" + END_STRING + ".msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+21, "jeungryeok" + END_STRING + ".msa")

#chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+10, "budong" + END_STRING + ".msa")

 

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLOOD, "guild_yongsinuipi.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLESS, "guild_yongsinuichukbok.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_BLESSARMOR, "guild_seonghwigap.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_SPPEDUP, "guild_gasokhwa.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONWRATH, "guild_yongsinuibunno.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_MAGICUP, "guild_jumunsul.msa")

 

## FISHING

chrmgr.SetPathName(path + "fishing/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_FISHING)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WAIT, "wait.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_THROW, "throw.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_WAIT, "fishing_wait.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_STOP, "fishing_cancel.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_REACT, "fishing_react.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_CATCH, "fishing_catch.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_FAIL, "fishing_fail.msa")

 

## HORSE

chrmgr.SetPathName(path + "horse/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT, "wait.msa", 90)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT, "wait_1.msa", 9)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT, "wait_2.msa", 1)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE, "damage.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE_BACK, "damage.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DEAD, "dead.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, HORSE_SKILL_CHARGE, "skill_charge.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, HORSE_SKILL_SPLASH, "skill_splash.msa")

 

## HORSE_FAN

chrmgr.SetPathName(path + "horse_fan/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_FAN)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_FAN, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_FAN, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_FAN, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_FAN, COMBO_TYPE_1, 3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_FAN, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_FAN, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_FAN, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_FAN, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")

 

## HORSE_BELL

chrmgr.SetPathName(path + "horse_bell/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_BELL)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BELL, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BELL, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BELL, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")

chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_BELL, COMBO_TYPE_1, 3)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_BELL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_BELL, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)

chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_BELL, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)

chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BELL, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")

 

chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON, "equip_right")

chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON_LEFT, "equip_left")

 

 

def __LoadGameSkill():

 

try:

skill.LoadSkillData()

except:

import exception

exception.Abort("__LoadGameSkill")

 

def __LoadGameEnemy():

pass

 

def __LoadGameNPC():

try:

lines = pack_open("npclist.txt", "r").readlines()

except IOError:

import dbg

dbg.LogBox("LoadLocaleError(%(srcFileName)s)" % locals())

app.Abort()

 

for line in lines:

tokens = line[:-1].split("\t")

if len(tokens) == 0 or not tokens[0]:

continue

 

try:

vnum = int(tokens[0])

except ValueError:

import dbg

dbg.LogBox("LoadGameNPC() - %s - line #%d: %s" % (tokens, lines.index(line), line))

app.Abort()

 

try:

if vnum:

chrmgr.RegisterRaceName(vnum, tokens[1].strip())

else:

chrmgr.RegisterRaceSrcName(tokens[1].strip(), tokens[2].strip())

except IndexError:

import dbg

dbg.LogBox("LoadGameNPC() - %d, %s - line #%d: %s " % (vnum, tokens, lines.index(line), line))

app.Abort()

 

 

# GUILD_BUILDING

def LoadGuildBuildingList(filename):

import uiGuild

uiGuild.BUILDING_DATA_LIST = []

 

handle = app.OpenTextFile(filename)

count = app.GetTextFileLineCount(handle)

for i in xrange(count):

line = app.GetTextFileLine(handle, i)

tokens = line.split("\t")

 

TOKEN_VNUM = 0

TOKEN_TYPE = 1

TOKEN_NAME = 2

TOKEN_LOCAL_NAME = 3

NO_USE_TOKEN_SIZE_1 = 4

NO_USE_TOKEN_SIZE_2 = 5

NO_USE_TOKEN_SIZE_3 = 6

NO_USE_TOKEN_SIZE_4 = 7

TOKEN_X_ROT_LIMIT = 8

TOKEN_Y_ROT_LIMIT = 9

TOKEN_Z_ROT_LIMIT = 10

TOKEN_PRICE = 11

TOKEN_MATERIAL = 12

TOKEN_NPC = 13

TOKEN_GROUP = 14

TOKEN_DEPEND_GROUP = 15

TOKEN_ENABLE_FLAG = 16

LIMIT_TOKEN_COUNT = 17

 

if not tokens[TOKEN_VNUM].isdigit():

continue

 

if len(tokens) < LIMIT_TOKEN_COUNT:

import dbg

dbg.TraceError("Strange token count [%d/%d] [%s]" % (len(tokens), TOKEN_COUNT, line))

continue

 

ENABLE_FLAG_TYPE_NOT_USE = FALSE

ENABLE_FLAG_TYPE_USE = TRUE

ENABLE_FLAG_TYPE_USE_BUT_HIDE = 2

 

if ENABLE_FLAG_TYPE_NOT_USE == int(tokens[TOKEN_ENABLE_FLAG]):

continue

 

vnum = int(tokens[TOKEN_VNUM])

type = tokens[TOKEN_TYPE]

name = tokens[TOKEN_NAME]

localName = tokens[TOKEN_LOCAL_NAME]

xRotLimit = int(tokens[TOKEN_X_ROT_LIMIT])

yRotLimit = int(tokens[TOKEN_Y_ROT_LIMIT])

zRotLimit = int(tokens[TOKEN_Z_ROT_LIMIT])

price = tokens[TOKEN_PRICE]

material = tokens[TOKEN_MATERIAL]

 

folderName = ""

if "HEADQUARTER" == type:

folderName = "headquarter"

elif "FACILITY" == type:

folderName = "facility"

elif "OBJECT" == type:

folderName = "object"

elif "WALL" == type:

folderName = "fence"

 

materialList = ["0", "0", "0"]

if material:

if material[0] == "\"":

material = material[1:]

if material[-1] == "\"":

material = material[:-1]

for one in material.split("/"):

data = one.split(",")

if 2 != len(data):

continue

itemID = int(data[0])

count = data[1]

 

if itemID == uiGuild.MATERIAL_STONE_ID:

materialList[uiGuild.MATERIAL_STONE_INDEX] = count

elif itemID == uiGuild.MATERIAL_LOG_ID:

materialList[uiGuild.MATERIAL_LOG_INDEX] = count

elif itemID == uiGuild.MATERIAL_PLYWOOD_ID:

materialList[uiGuild.MATERIAL_PLYWOOD_INDEX] = count

 

## GuildSymbol Ŕş ŔĎąÝ NPC µé°ú ÇÔ˛˛ µî·ĎÇŃ´Ů.

import chrmgr

chrmgr.RegisterRaceSrcName(name, folderName)

chrmgr.RegisterRaceName(vnum, name)

 

appendingData = { "VNUM":vnum,

"TYPE":type,

"NAME":name,

"LOCAL_NAME":localName,

"X_ROT_LIMIT":xRotLimit,

"Y_ROT_LIMIT":yRotLimit,

"Z_ROT_LIMIT":zRotLimit,

"PRICE":price,

"MATERIAL":materialList,

"SHOW" : TRUE }

 

if ENABLE_FLAG_TYPE_USE_BUT_HIDE == int(tokens[TOKEN_ENABLE_FLAG]):

appendingData["SHOW"] = FALSE

 

uiGuild.BUILDING_DATA_LIST.append(appendingData)

 

app.CloseTextFile(handle)

 

# END_OF_GUILD_BUILDING

 

loadGameDataDict={

"INIT" : __InitData,

"SOUND" : __LoadGameSound,

"EFFECT" : __LoadGameEffect,

"WARRIOR" : __LoadGameWarrior,

"ASSASSIN" : __LoadGameAssassin,

"SURA" : __LoadGameSura,

"SHAMAN" : __LoadGameShaman,

"SKILL" : __LoadGameSkill,

"ENEMY" : __LoadGameEnemy,

"NPC" : __LoadGameNPC,

}

 

def LoadGameData(name):

global loadGameDataDict

 

load=loadGameDataDict.get(name, 0)

if load:

loadGameDataDict[name]=0

try:

load()

except:

print name

import exception

exception.Abort("LoadGameData")

raise

 

 

## NPC

 

def SetMovingNPC(race, name):

chrmgr.CreateRace(race)

chrmgr.SelectRace(race)

 

## RESERVED

chrmgr.SetPathName("d:/ymir work/npc/" + name + "/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_GENERAL)

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "wait.msa")

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WALK, "walk.msa")

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_RUN, "run.msa")

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DEAD, "die.msa")

chrmgr.LoadRaceData(name + ".msm")

 

def SetOneNPC(race, name):

chrmgr.CreateRace(race)

chrmgr.SelectRace(race)

 

## RESERVED

chrmgr.SetPathName("d:/ymir work/npc/" + name + "/")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_GENERAL)

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "wait.msa")

chrmgr.LoadRaceData(name + ".msm")

 

def SetGuard(race, name):

chrmgr.CreateRace(race)

chrmgr.SelectRace(race)

 

## Script Data

chrmgr.SetPathName("d:/ymir work/npc/" + name + "/")

chrmgr.LoadRaceData(name + ".msm")

 

## GENERAL

chrmgr.RegisterMotionMode(chr.MOTION_MODE_GENERAL)

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SPAWN, "00.msa")

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "00.msa")

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_RUN, "03.msa")

 

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DAMAGE, "30.msa", 50)

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DAMAGE, "30_1.msa", 50)

 

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DAMAGE_BACK, "34.msa", 50)

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DAMAGE_BACK, "34_1.msa", 50)

 

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DAMAGE_FLYING,"32.msa")

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_STAND_UP, "33.msa")

 

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DAMAGE_FLYING_BACK, "35.msa")

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_STAND_UP_BACK, "36.msa")

 

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DEAD, "31.msa")

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DEAD_BACK, "37.msa")

 

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_NORMAL_ATTACK, "20.msa")

 

## Attacking Data

chrmgr.RegisterNormalAttack(chr.MOTION_MODE_GENERAL, chr.MOTION_NORMAL_ATTACK)

 

def SetWarp(race):

chrmgr.CreateRace(race)

chrmgr.SelectRace(race)

 

chrmgr.SetPathName("d:/ymir work/npc/warp/")

chrmgr.LoadRaceData("warp.msm")

 

## GENERAL

chrmgr.RegisterMotionMode(chr.MOTION_MODE_GENERAL)

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "wait.msa")

 

def SetDoor(race, name):

chrmgr.CreateRace(race)

chrmgr.SelectRace(race)

chrmgr.SetPathName("d:/ymir work/npc/"+name+"/")

chrmgr.LoadRaceData(name + ".msm")

chrmgr.RegisterMotionMode(chr.MOTION_MODE_GENERAL)

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "close_wait.msa")

chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DEAD, "open.msa")

 

def SetGuildBuilding(race, name, grade):

chrmgr.CreateRace(race)

chrmgr.SelectRace(race)

chrmgr.SetPathName("d:/ymir work/guild/building/%s/" % name)

chrmgr.LoadRaceData("%s%02d.msm" % (name, grade))

chrmgr.RegisterMotionMode(chr.MOTION_MODE_GENERAL)

#chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DEAD, name + "_destruction.msa")

 

def OLD_SetNPC():

SetOneNPC(9001, "arms")

SetOneNPC(9002, "defence")

SetOneNPC(9003, "goods")

SetOneNPC(9004, "bank")

SetOneNPC(9005, "hotel_grandfa")

SetOneNPC(9006, "hotel_grandma")

SetOneNPC(9007, "arms")

SetOneNPC(9008, "defence")

SetOneNPC(9009, "sailor")

 

SetMovingNPC(20001, "alchemist")

SetMovingNPC(20002, "auntie")

SetMovingNPC(20003, "baby_and_mom")

SetMovingNPC(20004, "beggar")

SetMovingNPC(20005, "ceramist")

SetMovingNPC(20006, "girl_lost_elder_brother")

SetMovingNPC(20007, "hotel_grandfa")

SetMovingNPC(20008, "mr_restaurant")

SetMovingNPC(20009, "oldster")

SetMovingNPC(20010, "peddler")

SetMovingNPC(20011, "plant_researcher")

SetMovingNPC(20012, "rice_cake_seller")

SetMovingNPC(20013, "sailor")

SetMovingNPC(20014, "timid_boy")

SetMovingNPC(20015, "woodcutter")

SetMovingNPC(20016, "blacksmith")

SetMovingNPC(20017, "musician")

SetMovingNPC(20018, "doctor")

SetMovingNPC(20019, "hunter")

SetMovingNPC(20020, "old_pirate")

SetMovingNPC(20021, "widow")

SetMovingNPC(20022, "young_merchant")

SetMovingNPC(20023, "bookworm")

SetMovingNPC(20024, "yu_hwa_rang")

SetMovingNPC(20041, "beggar")

SetMovingNPC(20042, "peddler")

 

SetGuard(20300, "sinsu_patrol_spear")

SetGuard(20301, "sinsu_patrol_spear")

SetGuard(20302, "sinsu_patrol_spear")

SetGuard(20303, "sinsu_patrol_spear")

SetGuard(20304, "sinsu_patrol_spear")

SetGuard(20305, "sinsu_patrol_spear")

SetGuard(20306, "sinsu_patrol_spear")

SetGuard(20307, "sinsu_patrol_spear")

 

SetGuard(20320, "gangyo_patrol_spear")

SetGuard(20321, "gangyo_patrol_spear")

SetGuard(20322, "gangyo_patrol_spear")

SetGuard(20323, "gangyo_patrol_spear")

SetGuard(20324, "gangyo_patrol_spear")

SetGuard(20325, "gangyo_patrol_spear")

SetGuard(20326, "gangyo_patrol_spear")

SetGuard(20327, "gangyo_patrol_spear")

 

SetGuard(20340, "jinno_patrol_spear")

SetGuard(20341, "jinno_patrol_spear")

SetGuard(20342, "jinno_patrol_spear")

SetGuard(20343, "jinno_patrol_spear")

SetGuard(20344, "jinno_patrol_spear")

SetGuard(20345, "jinno_patrol_spear")

SetGuard(20346, "jinno_patrol_spear")

SetGuard(20347, "jinno_patrol_spear")

 

## Warp

for i in xrange(18):

SetWarp(10001 + i)

 

SetGuard(11000, "gangyo_patrol_spear")

SetGuard(11001, "gangyo_patrol_bow")

SetGuard(11002, "jinno_patrol_spear")

SetGuard(11003, "jinno_patrol_bow")

SetGuard(11004, "sinsu_patrol_spear")

SetGuard(11005, "sinsu_patrol_bow")

 

## Campfire (Bonfire)

chrmgr.CreateRace(12000)

chrmgr.SelectRace(12000)

chrmgr.SetPathName("d:/ymir Work/npc/campfire/")

chrmgr.LoadRaceData("campfire.msm")

 

## Door

SetDoor(13000, "wooden_door")

SetDoor(13001, "stone_door")

 

 

Job Warrior 1 to body Job Warrior 2 to mental Job Sura 1 to BM itd.

Etap 3 plik BGM

Tu nie ma co zadużo opisywać...

Poprostu otwieracie RootExtract notanikiem znowu ta linijka zamiast root biszecie BGM wrzucacie na m2 Teraz Source>BGM>i możecie podmienić muze....

UWAGA TEN PLIK TEŻ JEST WYMAGANY!

Etap 4 plik ETC

Też nie ma co zadużo opisywać wogóle w tym pliku nic nie zmieniacie robicie tak jak z BGM RootExtract>Notanik> linijka i zamiast BGM piszecje ETC wrzucacie na m2 W tym pliku nic nie zmieniacie....

UWAGA TEN PLIK TEŻ JEST WYMAGANY!

Etap 5 plik Icon

Tak jak z ETC tylko tu już możecie coś pozmieniać.... RootExtract>Notanik> linijka i zamiast ETC piszecie icon wrzucacie na m2 wchodzicie w Source macie folder ICON tu możecie zmieniać ikony różnych itemow...

Etap 6 plik Effect

Też tu nic nie zmieniacie.... Robicie tak jak zwykle...

UWAGA TEN PLIK TEŻ JEST WYMAGANY!

Etap 7 plik guild

Tak jak zwykle jeśli to zrobiliście..... Pobieracie GrannyViever http://www.radgameto...iewer_setup.exe

I np. Jeśli jest ten kowal kupiony przez gildie i zanim są takie budynki to można edytować je za pomocą GrannyVievera

Etap 8 plik indoordeviltower1

Tu jak zawsze i nic tu nie zmieniacie...

OK jak zawuważyliście większości plików sie nie zmienia teraz wymienie wam te pliki które się zmienia i te co nie:

Pliki do zmienienia:

 

root

 

 

locale_pl

 

 

icon

 

 

pc

 

(skille)

 

pc2

 

(skille)

 

item

 

(wygląd broni)

 

NPC

 

(jeśli chcecie zmienić/dodać NPC

 

NPC2

 

(jeśli chcecie zmienić/dodać NPC

 

monster

 

(jeśli chcecie zmienić/dodać nowego potwora

 

Monster2

 

(jeśli chcecie zmienić/dodać nowego potwora

 

Sound

 

(jeśli chcecie zmienić głos np. Atakującego potwora

 

Sound2

 

(jeśli chcecie zmienić głos np. Atakującej postaci

Pliki które się nie zmienia:

Reszta plików folderu pack z metin'a 2008

Te pliki które wymienilem też te co się nic nie zmienia wypakowywujecie czyli RootExtract> zamiast tam niewiem ETC chyba czy guild wpisujecie np. PC i wam wypakowuwuje (chyba już macie wypakowane kilka plików icon,locale_pl,root itd.)

Ostatni etap budowanie clienta:

Gdy już to wszystko macie przechodzimy do pakery.

I jeśli macie np. tam folder BGM i wnim macie plik RootPackGen kopiujecie go wrzucacie go tam gdzie macie m2 itd. teraz wrzucacie go na m2 i macie 2 pliki BGM.epc i BGM.eix tworzycie folder pack i je tam wrzucacie.... i robicie tak z kazdym...Teraz locale.... Tworzycie folder locale a wnim pl i do tego folderu pl wrzucacie to wszystko z tych plików locale co na początku było z tymi tapetami itp.

i macie locale....

Teraz folder BGM tworzycie go i wrzucacie do niego tą muze co zmienialiście też tam gdzieś na początku.... foler mark: wrzucacie do niego pliki takie co na metku 2008

Folder miles wrzucacie to co macie na metku 2008...

Folder lib z metka 2008....

Folder pactkshin czy jakoś....

metek 2008.....

I te pliki .ddl czyli np. devil.ddl itd. też z metka 2008

Teraz pliki z root ... czyli co mieliscie tak dużo plików notanikowych to kopiujecie je i wrzucacie....

KONIEC

Jeśli pomogłem dawajcie ++++++++ !!!!!!

 

No to na tyle jeśli potem dam jeszcze edita z innymi rzeczami narazie na tyle...

Odrazu mówie żebyście dawali + GM GameMenel ;)

GM GameMenel to ja !

18706.png

Opublikowano

w połowie dałeś kogoś filmik -.- jak piszesz tuta to all bo ja też moge dać filmik jak np dodać def do broni ktory nie bedzie mój nic tu specialnego nie jest niektórzy to w 30min robią ale ok masz tego +

Opublikowano

nieeee dawajcie + GM GameMenel bo to ja tylko sobie nowe konto zrobiłem bo na tamtym mam warna na pisanie na 3dni a chciałem napisać koniecznie tego tuta więc GameMenelowi dawajcie + link do profilu:http://www.mpcforum.pl/user/173305-gm-gamemenel/ lub klik

@Edit

bo GM GameMenel to moje konto a dostał bana na pisanie na 3dni...

GM GameMenel to ja !

18706.png

Opublikowano

@2up zrobił bym zchecią swój filmik ale coś mi się nie wysyłają na YouTube długie filmiki... Niewiem dlaczego jakiś błąd jest

GM GameMenel to ja !

18706.png

Opublikowano

Moze się przydać ;) oczywiście +..!!

Darmowe Porno ;d

Przycisnij

na

+

\/........................

\/........................

\/........................

\/........................

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...