[Low]Pet System, le írás by: GeNiKe

Started by TakiLaci, 2012-12-12, 12:46:45

Sziasztok!

Nos nemrégiben publikáltak egy dif kódot a pet system-hez, ami alapjáraton jó is lenne, ha nem ilyen egyszerű módon megoldva, ló szinthez kötve ez is, na de mindegy, ki hoztam belőle a maximumot (szerintem) és most le írom nektek:

A diff kód a 3 új parancsal:

http://www.mediafire.com/?g61w7r97beici3n

Diff kód ahhoz, hogy több pet-et meglehessen idézni, ne csak egyet, sajnos ebbe van egy kis bugg, lentebb le írom mi az, tehát a diff:
This difference file is created by GeNiKe

game_r2089M_32
000072E6: 80 90
000072E7: 7E 90
000072E8: 74 90
000072E9: 00 90
00007374: 0F 90
00007375: 85 90
00007376: 76 90
00007377: FF 90
00007378: FF 90
00007379: FF 90


A következő diff arra kell nekünk, hogy több ló szintünk legyen ezáltal több petünk is lesz, mivel ez a petsystem azt az id-jü mob-ot hívja ahányas a lóvad, tehát ha a lóvad 21-es a 20101-es idjü mobot hívja elő, ezzel a diffel pedig kapunk +ba 9 ló szintet, amikhez a következő id-k társulnak:
22-----20120
23-----20123
24-----20126
25-----20129
26-----20132
27-----20135
28-----20138
29-----20141
30-----20144


Itt a diff kód: This difference file is created by The Interactive Disassembler

game_r2089M_32
00035011: 74 0F
00035012: 43 8C
00035013: 66 15
00035014: 3D 01
00035015: 86 00
00035016: 4E 00
00035017: 74 90
00035018: 3D 90
0003501B: 87 B6
00035020: 74 7E
00035022: 66 90
00035023: 3D 90
00035024: 88 90
00035025: 4E 90
00035026: 74 90
00035027: 2E 90
00035028: 66 90
00035029: 3D 90
0003502A: 89 90
0003502B: 4E 90
0003502C: 8D 90
0003502D: 74 90
0003502E: 26 90
0003502F: 00 90
00035030: 74 90
00035031: 24 90
00035032: 66 90
00035033: 3D 90
00035034: 8A 90
00035035: 4E 90
00035036: 74 90
00035037: 1E 90
00035038: 66 90
00035039: 3D 90
0003503A: 8B 90
0003503B: 4E 90
0003503C: 8D 90
0003503D: 74 90
0003503E: 26 90
0003503F: 00 90
00035040: 74 90
00035041: 14 90
00035042: 66 90
00035043: 3D 90
00035044: 8C 90
00035045: 4E 90
00035046: 74 90
00035047: 0E 90
0003504A: 8D B6
00430784: 8B 98
004307B4: 8B 9B
004307E4: 8B 9E
00430814: 8B A1
00430844: 8B A4
00430874: 8B A7
004308A4: 8B AA
004308D4: 8B AD
00430904: 8B B0


A diff kódokról ennyit, fel diffelitek a game fájlt, vissza töltitek a szerverre és ezzel végeztetek is, mármint a game fájlal.
A /usr/home/game/share/locale/germany/quest-en belől a  quest_functions-ba 3 új parancsot kell beírni:
pet.is_summon
pet.unsummon
pet.summon

Elmentitek, vissza töltitek szerverre és ezzel ez a rész is kész.

Most jöhetnek a questek, itt van egy általam meg írt quest pet bónusz nélkül:quest pett begin
state start begin
when 53003.use begin
if pc.get_level(50) then
        local your_horse_name = horse.get_name()--Ló nevének ellenőrzése
        local your_horse_level = horse.get_level()--Ló szintjének ellenőrzése
        pc.setqf("horse_level_save", your_horse_level)--Ló szintjének mentése
        pc.setqf("horse_name_save", your_horse_name)--Ló nevének mentése
        horse.set_name(pc.get_name().." Főnixe")--Állat nevének változtatása       
        horse.set_level("23")--20123-as idjü mobot hívja elő
pet.summon()--Pet hívása
local horse_settings = pc.getqf("horse_level_save")
local horse_sett = pc.getqf("horse_name_save")
horse.set_level(horse_settings)--Ló szintjének visszarakása az eredetire
horse.set_name(horse_sett)--Ló nevének visszarakása az eredetire
else
        chat("Még fejlődnöd kell!")   
end
end
end
end

A quest-ről annyit kell tudni, hogy ez úgy működik ha megvan az 50-es szint korlát akkor le ellenőrzi a lóvad szintjét és nevét  azután a lovatok szintjét át teszi annyira ahányas mobot akarsz hívni, úgye én a quest-ben 23-as szintet írtam akkor a 20123-as idjü mobot fogja elő hívni és át írja a nevét a játékos nevére + jégfőnix,főnix,kutya,vaddisznó,mini-azrael vagy amit ti akartok.

És akkor ugye fent említettem egy buggot, akárhány petet elő tudtok hívni viszont elküldeni nem tudjátok ezért hogyha mégsem akarjátok, hogy több pet legyen egyszerre elő hívva akkor azt a diffet ne tegyétek be, akkor viszont a quest is változhat ily módon:
quest pett begin
state start begin
when 53003.use begin
if pet.is_summon() then
          pet.unsummon()
      else   
        local your_horse_name = horse.get_name()
        local your_horse_level = horse.get_level()
        pc.setqf("horse_level_save", your_horse_level)
        pc.setqf("horse_name_save", your_horse_name)
        horse.set_name(pc.get_name().." Főnixe")       
        horse.set_level("23")
pet.summon()
local horse_settings = pc.getqf("horse_level_save")
local horse_sett = pc.getqf("horse_name_save")
horse.set_level(horse_settings)
horse.set_name(horse_sett)
end
end
end
end

Ha mindent jól csináltatok, amikor ki próbáljátok ilyesmi képet kell látnotok:



Bár véleményem szerint az igazi pet system nem így kellene működjön, a lóhoz semmi köze nem kellene legyen és a quest is csak ennyiből kellene áljon amenyiből nálam is áll, mivel nekem másképp van megoldva game fájlba (saját petsystem), nálam így van megoldva most csak a questet mutatom: quest pett begin
state start begin
when 53003.use begin
if pc.pet_is_summon() then
          pc.pet_unsummon()
          chat("Elküldted az állatodat pihenni!")
      else   
pc.pet_summon(20123)
chat("Az állatodat sikeresen megidézted!")
end
end
end
end

Az, hogy mi legyen a petek neve azt is game fájlba ellenőriztettem le.

Mindegy, sok sikert a ti pet rendszeretekhez! ;)

A diffek nem az enyémek egy kivételével, a le írást 100%-ig én készítettem. Sok sikert! :)