Unmantained Guida [RELEASE] Qualche DIF che stava a far niente nell'hard disk

Una guida contrassegnata come Unmantained contiene informazioni su un argomento obsoleto, non più utile o files non aggiornati da parte del creatore.
Stato
Discussione chiusa ad ulteriori risposte.

BlackYuko

Utente Gold
26 Agosto 2010
522
22
459
341
Ultima modifica da un moderatore:
Quella che segue è una "raccolta" di qualche dif che mi avevano commissionato i più svariati "clienti" di diverse nazioni, che, dopo aver creato, testato e consegnato avevo lasciato nell'hard disk a far nulla. Alcune sono sicuramente di dubbia utilità, ma non si sa mai che qualcuno possa usarle. Sempre meglio che lasciarle a far niente.

Preciso che queste dif erano state fatte gratis, quindi non faccio torti a nessuno postandole.


Dif numero 1

Questa dif permetterà di uppare le armi "epiche" (per intenderci, con refine set maggiore di 499) anche dai fabbri della torre:

Codice:
This difference file is created by The Interactive Disassembler

game2089m
0004C148: F3 1F
0004C149: 01 03
000E482E: F3 1F
000E482F: 01 03

Dif numero 2

Questa dif permetterà di uppare le le armi "epiche" (intendo sempre refine set maggiore di 499) anche dal fabbro normale, rendendo inutile quello leggendario. Utilità? Non lo so, però me la hanno fatta fare.

Codice:
This difference file is created by The Interactive Disassembler

game2089m
0004AFED: F3 1F
0004AFEE: 01 03


Dif numero 3

Questa dif vi permetterà di utilizzare quell'orribile ballo del gnam gnam style (a.k.a. dance6), senza eliminare altre emozioni. Ovviamente dovrete avere il ballo nel client. Sovrascrive il comando "grrandom", se lo usavate dovrete farvene una ragione.

Codice:
This difference file is created by The Interactive Disassembler

game2089m
002FAA15: 67 64
002FAA16: 72 61
002FAA17: 72 6E
002FAA18: 61 63
002FAA19: 6E 65
002FAA1A: 64 36
002FAA1B: 6F 00
0042D2F9: FA 33
0042D304: 03 00
0042E2C0: 03 64
0042E2C1: A6 31
0042E2C2: 36 34
0042E2C4: 03 15
0042E2C5: A6 2A
0042E2C6: 36 34
0042E2CE: 00 80
0042E2CF: 00 3F


Dif numero 4

Questa dif vi permetterà di specificare quanti item si possono uppare dai fabbri della torre. Come sapete, nella deviltower_zone.quest, allo spawn dei fabbri, viene settato il flag per poter uppare:
Codice:
d.setqf("can_refine", 1)

Ma se invece di 1 provate a mettere un altro numero, non cambierà nulla e potrete uppare sempre e solo un item. Con questa dif invece, i giocatori potranno uppare il numero di item definiti nel flag. Quindi, mettendo:

Codice:
d.setqf("can_refine", 2)

potranno uppare due item, mettendo:

Codice:
d.setqf("can_refine", 3)

potranno upparne tre e così via. Può essere un'idea per i nuovi piani della torre, o modificare il sesto.

Codice:
This difference file is created by The Interactive Disassembler

game2089
000E48F5: C7 8B
000E48F6: 44 55
000E48F7: 24 DC
000E48F8: 08 4A
000E48F9: 00 89
000E48FA: 00 54
000E48FB: 00 24
000E48FC: 00 08

Dif numero 5

Questa dif aggiunge la funzione pc.set_lev, che vi permetterà di settare il livello che volete al personaggio. Ora si potrebbe fare direttamente in una lib, ma quando l'avevo fatta le lib non erano ancora state "create". Utilizzo:

Codice:
pc.set_lev(livello)

La funzione sovrascrive pc.teleport, che pochi sanno che esista.

Codice:
This difference file is created by Dif Reverse v1.0


game2089m
00156013: F9 D7
00156030: E8 90
00156031: 57 90
00156032: F0 90
00156033: EA 90
00156034: FF 90
00156079: 8D 89
0015607A: 04 44
0015607B: 40 24
0015607C: C1 04
0015607D: E0 C7
0015607E: 02 04
0015607F: 8B 24
00156080: 8C 01
00156081: 05 00
00156082: 7C 00
00156083: FF 00
00156084: FF A1
00156085: FF 40
00156086: 8B 63
00156087: 54 47
00156088: 05 08
00156089: 80 89
0015608A: 6B 44
0015608B: DA 24
0015608C: 64 08
0015608D: 6B E8
0015608E: F1 DE
0015608F: 64 7C
00156090: C7 17
00156091: 44 00
00156092: 24 89
00156093: 08 44
00156094: 0F 24
00156095: 4A 04
00156096: 34 89
00156097: 08 3C
00156098: C7 24
00156099: 44 E8
0015609A: 24 D2
0015609B: 04 BC
0015609C: 01 ED
0015609D: 00 FF
0015609E: 00 89
0015609F: 00 3C
001560A0: 89 24
001560A1: 5C E8
001560A2: 24 6A
001560A3: 10 EC
001560A4: 89 F0
001560A5: 74 FF
001560A6: 24 EB
001560A7: 0C 46
001560F8: 01 00
00312E0C: 74 73
00312E0E: 6C 74
00312E0F: 65 5F
00312E10: 70 6C
00312E11: 6F 65
00312E12: 72 76
00312E13: 74 00

Dif numero 6

Funzione npc.get_vid(), che è come la npc.get_level() che avevo già postato ma restituisce il vid invece del livello, così con un pc.select si può selezionare il personaggio e leggere tutto quello che serve. Non potete usarla con i mob in quanto non selezionabili con pc.select. La funzione sovrascrive npc.dec_remain_skill_book_count. In realtà questa l'avevo già postata su epvp ma mai su inforge. Come prima, si potrebbe fare con una lib ma non c'erano quando l'avevo fatta.
Esempio utilizzo:

Codice:
when kill with npc.is_pc() begin
    local vid = npc.get_vid()
    local old_pc = pc.select(vid)
    if old_pc != 0 then
        local lev = pc.get_level()
        local name = pc.get_name()
        pc.select(old_pc)
        chat("Hai ucciso: "..name..", livello: "..lev)
    end
end

Codice:
This difference file is created by The Interactive Disassembler


game2089
0014E673: 53 56
0014E674: 83 53
0014E675: EC 83
0014E676: 24 EC
0014E677: A1 20
0014E678: F8 8B
0014E679: 28 0D
0014E67A: 4C 20
0014E67B: 08 37
0014E67C: 89 4C
0014E67D: 45 08
0014E67E: F8 A1
0014E67F: 31 F8
0014E680: C0 28
0014E681: A1 4C
0014E682: 20 08
0014E683: 37 89
0014E684: 4C 45
0014E685: 08 F4
0014E686: 85 31
0014E688: 74 8B
0014E689: 74 75
0014E68A: A1 08
0014E68B: 20 90
0014E68C: 37 90
0014E68D: 4C 90
0014E68E: 08 90
0014E68F: 89 90
0014E690: 04 85
0014E691: 24 C9
0014E692: E8 74
0014E693: 59 5C
0014E694: FE A1
0014E695: 00 20
0014E696: 00 37
0014E697: 85 4C
0014E698: C0 08
0014E69A: C3 04
0014E69B: 74 24
0014E69C: 07 E8
0014E69D: 8B 4F
0014E69E: 40 FE
0014E69F: 24 00
0014E6A0: 85 00
0014E6A1: C0 85
0014E6A2: 74 C0
0014E6A3: 13 75
0014E6A4: 31 2F
0014E6A5: C0 C7
0014E6A6: 8B 44
0014E6A7: 55 24
0014E6A8: F8 04
0014E6A9: 33 00
0014E6AA: 15 00
0014E6AB: F8 00
0014E6AC: 28 00
0014E6AD: 4C C7
0014E6AE: 08 44
0014E6AF: 75 24
0014E6B0: 76 08
0014E6B1: 83 00
0014E6B2: C4 00
0014E6B3: 24 00
0014E6B4: 5B 00
0014E6B5: 5D 89
0014E6B6: C3 34
0014E6B7: 89 24
0014E6B8: 1C E8
0014E6B9: 24 03
0014E6BA: E8 63
0014E6BB: 31 18
0014E6BC: 38 00
0014E6BD: ED 8B
0014E6BE: FF 55
0014E6BF: 66 F4
0014E6C0: 3D 33
0014E6C1: 3F 15
0014E6C2: 4E F8
0014E6C3: 75 28
0014E6C4: DF 4C
0014E6C5: C7 08
0014E6C6: 44 B8
0014E6C7: 24 01
0014E6C8: 04 00
0014E6C9: 5F 00
0014E6CB: 00 75
0014E6CC: 00 4C
0014E6CD: 89 83
0014E6CE: 1C C4
0014E6CF: 24 20
0014E6D0: E8 5B
0014E6D1: 3B 5E
0014E6D2: 56 5D
0014E6D3: ED C3
0014E6D4: FF 8B
0014E6D5: C7 80
0014E6D6: 04 FC
0014E6D7: 24 00
0014E6DA: 00 52
0014E6DB: 00 50
0014E6DC: 83 DB
0014E6DD: E8 04
0014E6DE: 01 24
0014E6DF: 89 83
0014E6E0: 44 C4
0014E6E1: 24 08
0014E6E2: 04 DD
0014E6E3: E8 5C
0014E6E4: 68 24
0014E6E5: F6 04
0014E6E6: 17 89
0014E6E7: 00 34
0014E6E8: C7 24
0014E6E9: 44 E8
0014E6EA: 24 D2
0014E6EB: 04 62
0014E6EC: 5F 18
0014E6EE: 00 EB
0014E6EF: 00 CD
0014E6F0: 89 C7
0014E6F1: 1C 44
0014E6F3: 89 0C
0014E6F4: 44 E4
0014E6F5: 24 7B
0014E6F6: 08 33
0014E6F7: E8 08
0014E6F8: 74 C7
0014E6F9: 90 44
0014E6FA: ED 24
0014E6FB: FF 08
0014E6FC: EB 1A
0014E6FD: A6 00
0014E6FE: C7 00
0014E6FF: 44 00
0014E700: 24 C7
0014E701: 0C 44
0014E702: E4 24
0014E703: 7B 04
0014E704: 33 CA
0014E705: 08 7B
0014E706: C7 33
0014E707: 44 08
0014E708: 24 C7
0014E709: 08 04
0014E70A: 1A 24
0014E70B: 00 50
0014E70C: 00 A4
0014E70D: 00 35
0014E70E: C7 08
0014E70F: 44 E8
0014E710: 24 98
0014E711: 04 64
0014E712: CA EB
0014E713: 7B FF
0014E714: 33 E9
0014E715: 08 7B
0014E716: C7 FF
0014E717: 04 FF
0014E718: 24 FF
0014E719: 50 E8
0014E71A: A4 5E
0014E71B: 35 6A
0014E71C: 08 EB
0014E71D: E8 FF
0014E71E: 8A 90
0014E71F: 64 90
0014E720: EB 90
0014E721: FF 90
0014E722: E9 90
00312361: 64 67
00312363: 63 74
00312365: 72 76
00312366: 65 69
00312367: 6D 64
00312368: 61 00


Dif numero 7

Questa dif elimina il tempo di attesa di 1 giorno per entrare in una gilda, quando il pg è stato cacciato, o l'ha sciolta, o altro. Insomma, in tutti i casi in cui c'era, non me li ricordo tutti. L'avevo fatta tanto tanto tempo fa, probabilmente non sarà il massimo ma funziona.

Codice:
This difference file is created by The Interactive Disassembler

game2089m
000C30BC: 2B 90
000C30BD: 75 90
000C30BE: B8 90
000C3129: 2B 90
000C312A: 75 90
000C312B: C0 90
000E3A70: 2B 90
000E3A71: B5 90
000E3A72: 28 90
000E3A73: FF 90
000E3A74: FF 90
000E3A75: FF 90
000E3BAF: 2B 90
000E3BB0: B5 90
000E3BB1: 30 90
000E3BB2: FF 90
000E3BB3: FF 90
000E3BB4: FF 90


Dovrebbero funzionare tutte, i "clienti" non si erano mai lamentati. Tuttavia, nel caso ci fossero problemi segnalatemelo.

Se dif simili erano già state postate, chiedo venia. In ogni caso queste sono state fatte da me.
Se ne trovo altre le aggiungerò qui, dovrei avere una pc.set_hp da qualche parte.
 
Beh come ha detto anche lui può essere utile.

Ma ho una domanda. Li ci sono le scritte che vanno messe nel file DIF, ma il DIF patcher accetta il file solo. Come lo creo quel file?
Premetto che ho già provato a creare un file con estensione "DIF" e mettergli dentro tutto. Ma quando provo a usare la nuova funzione (dimenticavo, ho provato a mettere quella del pc.get level(livello)) con uno script, manda off il server.

Quindi c'è qualche problema. Ci tengo a precisare prima di ricevere solo insulti che io con WinScp in generale sto a livello zero quasi.
 
A me non va la dif della nuova funzione:
pc.set_level(livello)


La inserisco ma appena la provo ad usare su un npc crasha il server.

 
Non mi sono spiegato. Intendo la dif che crea la nuova funzione per settare il livello di un personaggio a scelta. Per sempio:
pc.set_level(100)

Setta il livello del personaggio a 100, indipendentemente dal livello a cui è il personaggio.
 
sarebbe possibile fare una DIF in grado di sottrarre hp ogni 5 s ? probabilmente esiste qualcosa, ma con pc.get_hp non funziona o per lo meno non nel modo in cui vorrei. Se puoi e se hai tempo faresti un enorme favore, un pò come se fosse avvelenato.
 
Yuko non c'è una .dif che mi possa interessare :asd: comunque sia ti rilascio un Like per l'impegno che hai dimostrato l'altra volta dandomi una mano! :)
 
Ultima modifica:
Ho controllato la dif della funzione per il livello, controllando sia il codice assembly sia testandola in game, mi risulta funzionante. Tuttavia, ho aggiornato la dif perché ho notato un errorino per cui non controllava correttamente che il livello inserito fosse minore del massimo del server (ma nulla che provocasse crash), quindi riscaricatela.
Comunque, mi sono accorto di aver sbagliato a scrivere il nome della funzione, che è "pc.set_lev" e non "pc.set_level"

Codice:
pc.set_lev(livello)

Chiedo scusa per l'errore, l'ho fatta tempo fa e non mi ricordavo più il nome esatto.

Se continua a crashare, qualcuno mi mandi un game dove crasha.

sarebbe possibile fare una DIF in grado di sottrarre hp ogni 5 s ? probabilmente esiste qualcosa, ma con pc.get_hp non funziona o per lo meno non nel modo in cui vorrei. Se puoi e se hai tempo faresti un enorme favore, un pò come se fosse avvelenato.

Una funzione pc.change_hp messa in un loop timer dovrebbe fare quello che ti serve, anche se non è il modo più bello per farlo. Dovrei averla da qualche parte quella funzione.
 
Ah quello era l'errore allore. Funzione incorretta, però non dovrebbe crashare il server per la funzione errata. Bah, ricontrollo. Grazie dell'attenzione :)
 
Stato
Discussione chiusa ad ulteriori risposte.
Indietro
Top Bottom