Co zepsułem podczas kopiowania skryptów? 1358 3

O temacie

Autor Graveir

Zaczęty 13.05.2015 roku

Wyświetleń 1358

Odpowiedzi 3

Graveir

Graveir

Użytkownicy
Avatar Twilight Sparkle / Pożeracz serc
posty1275
Propsy235
ProfesjaGracz
  • Użytkownicy
  • Avatar Twilight Sparkle / Pożeracz serc
Otóż usłyszałem od @Sawik 'a, że przy pomocy Ikarusa i Lego można zmienić obrażenia broni. Zauważyłem, że bronie bliskodystansowe wymagające zręczności skalują się z posiadaną siłą, a kusze wymagające siły skalują obrażenia ze zręcznością. Więc "poradził" mi znaleźć tutorial Bogdana Zwei o manipulowaniu obrażeniami i chyba znalazłem poprawny temat(http://themodders.org/index.php?topic=23935.0). Robiłem to opcją kopiuj->wklej. No i problem jest taki, że bronie(testowałem na mieczach)dalej się skalują z siłą, chociaż powinny skalować ze zręcznością. Skrypt:
func int DMG_OnDmg(var int victimPtr, var int attackerPtr, var int dmg) {
// Trafienia krytyczne
var int CritChances; CritChances = r_Max(100);
if (CritChances<=oth.hitchance[1])
{
dmg = dmg*2;
};
// Diese Funktion anpassen, wenn ihr den Schaden verändern wollt! 'dmg' ist der von Gothic berechnete Schaden.
var c_npc slf; slf = _^(attackerptr);
var c_npc oth; oth = _^(victimPtr);
var C_Item EQWeapon; EQWeapon = Npc_GetReadiedWeapon(oth);
if (Hlp_IsItem(EQWeapon, ItMw_Addon_BanditTrader))
||(Hlp_IsItem(EQWeapon, ItMw_Addon_Betty))
||(Hlp_IsItem(EQWeapon, ItMw_1h_Vlk_Sword))
||(Hlp_IsItem(EQWeapon, ItMw_Rapier))
||(Hlp_IsItem(EQWeapon, ItMw_Meisterdegen))
{
if (Npc_IsPlayer (hero))
{
dmg = oth.attribute[ATR_DEXTERITY];
};
 };
return dmg;
};


func void _DMG_OnDmg() {
EDI = DMG_OnDmg(EBP, MEM_ReadInt(MEM_ReadInt(ESP+644)+8), EDI);
};
func void InitDamage() {
const int dmg = 0;
if (dmg) { return; };
HookEngineF(6736583/*0x66CAC7*/, 5, _DMG_OnDmg);
dmg = 1;
};
Funkcję zainicjowałem. Jest tutaj coś do prostej poprawy czy lepiej po prostu zmienić wymóg atrybutu do założenia konkretnych broni?
 
Mój obecny sprzęt PC:
Intel core i5-4590
8 gb ram
Geforce GTX 1050Ti

Splash

Splash

Moderator
posty4211
Propsy3414
ProfesjaNierób
  • Moderator
func void _DMG_OnDmg() {
    EDI = twoje obrażenia
};
func void InitDamage() {
    const int dmg = 0;
    if (dmg) { return; };
    HookEngineF(6736583/*0x66CAC7*/, 5, _DMG_OnDmg);
    dmg = 1;
};
Tyle.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Twój problem polega na tym, że tylko HERO będzie zadawał obrażenia w wysokości twojej zręczności podczas używania danych broni.
Masz zainicjowane LeGo i Ikarusa poprawnie?
Swoją drogą; var'y powinny być inicjowane na samym początku tej funkcji.
Najlepiej przeczytaj dokładnie mój temat, bo może coś przeoczyłeś.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio

chicken
RaveN Studio

Co zepsułem podczas kopiowania skryptów?
#3 2015-05-13, 15:06(Ostatnia zmiana: 2015-05-14, 08:56)
Czemu skalujesz ze zręcznością atakowanego, a nie osoby atakującej?


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry