Patchování souborů pomocí WeiDU


Dabus Uživatelský avatar
Registrován: 24.9.2005 22:54
Bydliště: Sigil

Příspěvek Napsal: 29.7.2006 14:04

Patchování souborů pomocí WeiDU

Zajímalo by mě, jak s pomocí WeiDU nastavit nebo vypnout u předmětu určitý flag (Unsellable, Two-handed, ...)?

Potřebuji u jednoho předmětu nastavit flag Magical a nechci ten předmět přepisovat.
Kód: Vybrat vše, Rozšířit náhled
IF
  Detect([SPAMMER])
THEN
    RESPONSE #100
             ReallyForceSpell(WIZARD_POWER_WORD_KILL,LastSeenBy(Myself))
END
offline  • 
Zobrazit autorovy stránkyICQ
 •  Zobrazit profil uživatele

Sigil Team Uživatelský avatar
Registrován: 24.9.2005 22:28
Bydliště: Jihlava, Czech Republic

Příspěvek Napsal: 29.7.2006 14:45

COPY_EX...
READ_LONG 0x18 flags
WRITE_LONG 0x18 (flags | 0x00000040)

možná jsem to číslo nenapsal dobře, ale takhle se to dělá.

Edit: a vypnutí se dělá:
WRITE_LONG 0x18 (flags & ~0x00000040)
Žralok, který štěká, nekouše.
offline  • 
Zobrazit autorovy stránky
 •  Zobrazit profil uživatele

Dabus Uživatelský avatar
Registrován: 24.9.2005 22:54
Bydliště: Sigil

Příspěvek Napsal: 29.7.2006 14:52

Já právě netuším, jak se spočítá to číslo (0x00000040). V NI jsou pouze celá čísla. Třeba zrovna flag magical má 6.
Kód: Vybrat vše, Rozšířit náhled
IF
  Detect([SPAMMER])
THEN
    RESPONSE #100
             ReallyForceSpell(WIZARD_POWER_WORD_KILL,LastSeenBy(Myself))
END
offline  • 
Zobrazit autorovy stránkyICQ
 •  Zobrazit profil uživatele

Sigil Team Uživatelský avatar
Registrován: 24.9.2005 22:28
Bydliště: Jihlava, Czech Republic

Příspěvek Napsal: 29.7.2006 14:59

To je pořadí bitu. Pokud je to v NI značené správně a rozmezí je od 1 do 32, potom jsou to hodnoty:
0x00000001
0x00000002
0x00000004
0x00000008
0x00000010
0x00000020
...
0x80000000
Žralok, který štěká, nekouše.
offline  • 
Zobrazit autorovy stránky
 •  Zobrazit profil uživatele

Dabus Uživatelský avatar
Registrován: 24.9.2005 22:54
Bydliště: Sigil

Příspěvek Napsal: 5.8.2006 13:32

Jak zapsat pomocí weidu na nějaký offset zápornou hodnotu?
Kód: Vybrat vše, Rozšířit náhled
IF
  Detect([SPAMMER])
THEN
    RESPONSE #100
             ReallyForceSpell(WIZARD_POWER_WORD_KILL,LastSeenBy(Myself))
END
offline  • 
Zobrazit autorovy stránkyICQ
 •  Zobrazit profil uživatele

Sigilan Uživatelský avatar
Registrován: 26.9.2005 7:56
Bydliště: Praha

Příspěvek Napsal: 5.8.2006 14:50

Záleží, jak je tam nula. Osobně bych tipl, že přes dvojkový doplněk - tak se často zapisují záporná čísla, ale uvidíme. Máš např. -5. Decimálních 5 převedeš na binárních 5, tj. 101. Zneguješ (tj. dle "šířky" byte/word/dword to bude na začátku několik jedniček výsledkem nezapsaných znegovaných nul), pro byte: 11111010. A následně přičteš 1, takže 11111011. A to do hexadecimálního tvaru FB.

Ale weidu myslím podporuje i zápis decimálních a binárních hodnot, ne? To by se pak dalo zapsat rovnou...
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
offline  • 
Zobrazit autorovy stránkyICQ
 •  Zobrazit profil uživatele

Dabus Uživatelský avatar
Registrován: 24.9.2005 22:54
Bydliště: Sigil

Příspěvek Napsal: 5.8.2006 15:02

Zkoušel jsem to s -50, ale háže to chybu.
Kód: Vybrat vše, Rozšířit náhled
IF
  Detect([SPAMMER])
THEN
    RESPONSE #100
             ReallyForceSpell(WIZARD_POWER_WORD_KILL,LastSeenBy(Myself))
END
offline  • 
Zobrazit autorovy stránkyICQ
 •  Zobrazit profil uživatele

Sigilan Uživatelský avatar
Registrován: 26.9.2005 7:56
Bydliště: Praha

Příspěvek Napsal: 5.8.2006 15:06

Jak jsi tam zadal těch -50?
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
offline  • 
Zobrazit autorovy stránkyICQ
 •  Zobrazit profil uživatele

Dabus Uživatelský avatar
Registrován: 24.9.2005 22:54
Bydliště: Sigil

Příspěvek Napsal: 5.8.2006 15:08

WRITE_BYTE 0x5a -50
Kód: Vybrat vše, Rozšířit náhled
IF
  Detect([SPAMMER])
THEN
    RESPONSE #100
             ReallyForceSpell(WIZARD_POWER_WORD_KILL,LastSeenBy(Myself))
END
offline  • 
Zobrazit autorovy stránkyICQ
 •  Zobrazit profil uživatele

Sigilan Uživatelský avatar
Registrován: 26.9.2005 7:56
Bydliště: Praha

Příspěvek Napsal: 5.8.2006 15:13

aha, tak to asi bude třeba převést na hexa... mínus tam asi falíruje...

50 = 110010b
neg: 11001101b
+1: 11001110b = 0xCE
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
offline  • 
Zobrazit autorovy stránkyICQ
 •  Zobrazit profil uživatele

Dabus Uživatelský avatar
Registrován: 24.9.2005 22:54
Bydliště: Sigil

Příspěvek Napsal: 5.8.2006 15:18

Díky moc ;-)
Kód: Vybrat vše, Rozšířit náhled
IF
  Detect([SPAMMER])
THEN
    RESPONSE #100
             ReallyForceSpell(WIZARD_POWER_WORD_KILL,LastSeenBy(Myself))
END
offline  • 
Zobrazit autorovy stránkyICQ
 •  Zobrazit profil uživatele

Sigilan Uživatelský avatar
Registrován: 26.9.2005 7:56
Bydliště: Praha

Příspěvek Napsal: 5.8.2006 15:21

Ale pro jistotu si to v nějakém prohlížeči zkontroluj. Jde i o to, jak "široká" ta hodnota je, pokud word, tak tam musíš doplnit ještě dvě FF, atp.
Infinity forever! - Baldur's Gate II add-on CZ
Fórum plné RPG - RPG fórum


Obrázek
offline  • 
Zobrazit autorovy stránkyICQ
 •  Zobrazit profil uživatele

Dabus Uživatelský avatar
Registrován: 24.9.2005 22:54
Bydliště: Sigil

Příspěvek Napsal: 5.8.2006 15:42

Vlasák píše:Ale pro jistotu si to v nějakém prohlížeči zkontroluj. Jde i o to, jak "široká" ta hodnota je, pokud word, tak tam musíš doplnit ještě dvě FF, atp.

Jo, jde to. Na to převádění stačí windowská kalkulačka, lze převést záporné decimální číslo přímo na hexadecimální.
Kód: Vybrat vše, Rozšířit náhled
IF
  Detect([SPAMMER])
THEN
    RESPONSE #100
             ReallyForceSpell(WIZARD_POWER_WORD_KILL,LastSeenBy(Myself))
END
offline  • 
Zobrazit autorovy stránkyICQ
 •  Zobrazit profil uživatele

Sigil Team Uživatelský avatar
Registrován: 24.9.2005 22:28
Bydliště: Jihlava, Czech Republic

Příspěvek Napsal: 6.8.2006 1:42

Ano, Windows kalkulačka to spočte dobře a ještě si můžeš vybrat velikost (qword, dword, word, byte).
Žralok, který štěká, nekouše.
offline  • 
Zobrazit autorovy stránky
 •  Zobrazit profil uživatele

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků

cron