Kilka pytań (Gothic I) 2851 17

O temacie

Autor BlackSwordsman

Zaczęty 29.12.2016 roku

Wyświetleń 2851

Odpowiedzi 17

BlackSwordsman

BlackSwordsman

Użytkownicy
posty22
Propsy2
Profesjabrak
  • Użytkownicy

Po pierwsze czy istnieje możliwość modyfikacji ceny SPRZEDAŻY u kupców za pomocą jakiejś zmiennej (nie ogólnej wartości)np. na zamiast 1/2 na 1/3 albo 1/5 wartości.

2. Czy istnieje możliwość zmiany tekstury nieba w trakcie dialogu.

3. Jak wiadomo podczas ataku z łuku do obrażeń nie jest dodawana zręczność w przeciwieństwie do ataku wręcz gdzie dodawana jest siła. Czy jest jakiś sposób żeby to zmienić?

 

BlackSwordsman

BlackSwordsman

Użytkownicy
posty22
Propsy2
Profesjabrak
  • Użytkownicy
Naprawdę nikt nic nie wie?
 

Siemekk

Siemekk

Złote Wrota
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • online
  • Untersturmfuhrer
1)Tak
2)Tak
3)Tak

Wystarczy Ikarus i jego znajomość.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Splash

Splash

Moderator
posty4207
Propsy3403
ProfesjaNierób
  • Moderator
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Lehona

Lehona

Użytkownicy
posty196
Propsy190
  • Użytkownicy
3. Jak wiadomo podczas ataku z łuku do obrażeń nie jest dodawana zręczność w przeciwieństwie do ataku wręcz gdzie dodawana jest siła. Czy jest jakiś sposób żeby to zmienić?

Maybe I'm just understanding this wrong (Google Translate...), but ranged Attacks (Bows/Crossbows) get additional damage from dexterity, just like melee attacks get additional damage from strength.

The difference is that, essentially, ranged hits (iff they actually hit) always crit (really a critical strike is just "normal damage"), while melee attacks normally only do 1/10 of their actual damage.
 
Unless specified otherwise, my posts are always about Gothic 2 Night of the Raven.

pawbuj

pawbuj

Użytkownicy
posty1623
Propsy135
ProfesjaSkrypter
  • Użytkownicy

3. Jak wiadomo podczas ataku z łuku do obrażeń nie jest dodawana zręczność w przeciwieństwie do ataku wręcz gdzie dodawana jest siła. Czy jest jakiś sposób żeby to zmienić?
Tak.
 Tylko trzeba to zrobić z głową,np masz 100 dext. i zadajesz z łuku extra 100 damage? bez sensu.
 

BlackSwordsman

BlackSwordsman

Użytkownicy
posty22
Propsy2
Profesjabrak
  • Użytkownicy
pawbuj dokładnie o to chodzi symetrycznie jak broń do walki wręcz (pamiętaj że mówimy o Gothic 1 nie 2). Dzięki chłopaki powinienem sobie poradzić teraz.
 

pawbuj

pawbuj

Użytkownicy
posty1623
Propsy135
ProfesjaSkrypter
  • Użytkownicy
pawbuj dokładnie o to chodzi symetrycznie jak broń do walki wręcz (pamiętaj że mówimy o Gothic 1 nie 2). Dzięki chłopaki powinienem sobie poradzić teraz.
punkt 3  nie zrobisz hookiem, przykład dotyczy Splasha dla g2nk, ja zrobiłem to inaczej. wg mnie nadal jednak nie ma to sensu, tak jak jest mi pasuje.
 

BlackSwordsman

BlackSwordsman

Użytkownicy
posty22
Propsy2
Profesjabrak
  • Użytkownicy
W takim razie jak?
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Zrobi hookiem. Jeśli znasz assemblera, albo kogoś, kto go ogarnia - easy.
 
: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.

BlackSwordsman

BlackSwordsman

Użytkownicy
posty22
Propsy2
Profesjabrak
  • Użytkownicy
Nie znam :(

Post połączony: 2017-01-11, 14:44
Trochę zmodyfikowałem skrypt, ale wiadomo że nie będzie działać. Musi być jakieś "połączenie" między tym, a skryptem który oblicza obrażenia, a wiadomo że nie ma go w zwykłych skryptach. A ja wogóle nie ogarniam Ikarusa. Zdaje sobie sprawe, że to forum jest do nauki, a nie wyręczania się ludzmi, ale proszę o pomoc. Podejrzewam, że tu wystarczy zmienić parę linijek. Dla kogoś ogarniętego to jest moment. Ja nie mam pojęcia od której strony to ugryźć.


func int DMG_OnDmg(var int victimPtr, var int attackerPtr, var int dmg)
{
// Diese Funktion anpassen, wenn ihr den Schaden verändern wollt! 'dmg' ist der von Gothic berechnete Schaden.

//dmg = 10; ///jeder Angriff = 10 Schaden just testing

//Var c_npc slf; slf = attackerptr;
//Var c_npc oth; slf = victimPtr;
var int meleedamage;

var c_item tmpItm; tmpItm = Npc_GetEquippedRangedWeapon(self);
var c_item wpn; wpn = Npc_GetEquippedRangedWeapon(self);

var int wpnDmg; wpnDmg = tmpItm.damageTotal;

if (Npc_HasReadiedRangedWeapon(self)) //Fernkampf  ist buggy
{
//var c_item wpn; wpn = Npc_GetEquippedRangedWeapon(self);
//var int rangecritchance;
    //if wpn2.flags & ITEM_BOW { rangecritchance = slf.HitChance[NPC_TALENT_BOW]; }
//else if wpn2.flags & ITEM_CROSSBOW { rangecritchance = slf.HitChance[NPC_TALENT_CROSSBOW]; };


meleedamage = (wpnDmg + self.attribute[ATR_DEXTERITY]);  /////testing ändern

};

dmg = meleedamage;
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;
};
 

pawbuj

pawbuj

Użytkownicy
posty1623
Propsy135
ProfesjaSkrypter
  • Użytkownicy
nie zadziała, ja to obeszłem uzywając perców przy assessdamage.ale chyba chicken publikował ten skrypt do g1, powinien być w temacie z ikariusem.
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
To jest potrzebne. Określa npc, który dostaje po dupie i npc który atakuje.
   //Var c_npc slf; slf = attackerptr;
   //Var c_npc oth; slf = victimPtr;

W tym skrypcie jedyne co robisz to pisanie swojej funkcji damage.

--------------------------------------------------------------------------------------------------------

func void _DMG_OnDmg()
{
EDI = DMG_OnDmg(EBP, MEM_ReadInt(MEM_ReadInt(ESP+644)+8), EDI);
};
Tutaj, EDI to ilość zadawanych obrażeń. Jak widać, wcześniejsza funkcja podmienia wartość obrażeń (albo nic nie podmienia). W tym hooku, EDI może Ci posłużyć do zmieniania obrażeń zadawanych albo do pokazywania (używając printów) ilości zadawanych obraż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.

BlackSwordsman

BlackSwordsman

Użytkownicy
posty22
Propsy2
Profesjabrak
  • Użytkownicy
Cytuj
  //Var c_npc slf; slf = attackerptr;
   //Var c_npc oth; slf = victimPtr;
Nie działa. Wywala błąd i wyrzuca do pulpitu.

To samo z tym drugim skryptem.
 

Splash

Splash

Moderator
posty4207
Propsy3403
ProfesjaNierób
  • Moderator
Ta funkcja i tak nie zadziała, bo jest ona do drugiej części Gothica.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Lehona

Lehona

Użytkownicy
posty196
Propsy190
  • Użytkownicy
Sorry for the misunderstanding, I did not notice this is about G1.

Trochę zmodyfikowałem skrypt, ale wiadomo że nie będzie działać. Musi być jakieś "połączenie" między tym, a skryptem który oblicza obrażenia, a wiadomo że nie ma go w zwykłych skryptach. A ja wogóle nie ogarniam Ikarusa. Zdaje sobie sprawe, że to forum jest do nauki, a nie wyręczania się ludzmi, ale proszę o pomoc. Podejrzewam, że tu wystarczy zmienić parę linijek. Dla kogoś ogarniętego to jest moment. Ja nie mam pojęcia od której strony to ugryźć.
Again, bear with if I'm misunderstanding you, but the connection to the actual damage calculation from the engine comes from this line:
   HookEngineF(6736583/*0x66CAC7*/, 5, _DMG_OnDmg);
This magic number is specific to G2, so someone will have to look it up for Gothic 1 (which is non-trivial). This line probably needs to be changes as well:
   EDI = DMG_OnDmg(EBP, MEM_ReadInt(MEM_ReadInt(ESP+644)+8), EDI);
Although once you have the proper address, finding the correct offsets (the numbers in this line) will be comparatively easy.

And lastly I just want to leave this link: https://app.assembla.com/spaces/lego2/subversion/commits/list
Make of it what you want, but I'm sure some of you will figure out what I mean by this :)



 
Unless specified otherwise, my posts are always about Gothic 2 Night of the Raven.

Splash

Splash

Moderator
posty4207
Propsy3403
ProfesjaNierób
  • Moderator
Here is for G1:
func int DMG_OnDmg (var int victimPtr, var int attackerPtr, var int dmg)
{
    return dmg;
};
   
func void _DMG_OnDmg ()
{
    EAX = DMG_OnDmg (ECX, MEM_ReadInt (MEM_ReadInt (ESP+548)+4), EAX);
};

func void InitDamage () {
    const int dmg = 0;
    if (dmg) { return; };
    HookEngineF(7567329, 6, _DMG_OnDmg);
    dmg = 1;
};
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

BlackSwordsman

BlackSwordsman

Użytkownicy
posty22
Propsy2
Profesjabrak
  • Użytkownicy
Działa! Tak wgląda gotowy skrypt:

func int DMG_OnDmg(var int victimPtr, var int attackerPtr, var int dmg)
{
// Diese Funktion anpassen, wenn ihr den Schaden verändern wollt! 'dmg' ist der von Gothic berechnete Schaden.

//dmg = 10; ///jeder Angriff = 10 Schaden just testing

var c_npc slf; slf = _^(attackerptr);
var c_npc oth; oth = _^(victimPtr);
var int meleedamage;


var c_item tmpItm;
var c_item wpn;

var int wpnDmg;
       
    var int armRes;
If tmpItm.damagetype == DAM_EDGE { armRes = oth.protection[PROT_EDGE]; }
else if tmpItm.damagetype == DAM_BLUNT { armRes = oth.protection[PROT_BLUNT]; }
else if tmpItm.damagetype == DAM_POINT { armRes = oth.protection[PROT_POINT]; };

if (Npc_HasReadiedRangedWeapon(slf)) //Fernkampf  ist buggy
{

tmpItm = Npc_GetReadiedWeapon(slf);
wpn = Npc_GetEquippedRangedWeapon(slf);
wpnDmg = tmpItm.damageTotal;

meleedamage = ((wpnDmg + slf.attribute[ATR_DEXTERITY])-armRes);  /////testing ändern

}
else
{
tmpItm = Npc_GetReadiedWeapon(slf);
wpn = Npc_GetReadiedWeapon(slf);
wpnDmg = tmpItm.damageTotal;

meleedamage = wpnDmg ;  /////testing ändern
};

dmg = meleedamage;
return dmg;
};

func void _DMG_OnDmg()
{
EAX = DMG_OnDmg(ECX, MEM_ReadInt(MEM_ReadInt(ESP+548)+4), EAX);
};

func void InitDamage()
{
const int dmg = 0;
    if (dmg) { return; };
    HookEngineF(7567329, 6, _DMG_OnDmg);
    dmg = 1;
};

Oczywiście lecą propsy!
Teraz tylko muszę ogarnąć pozostałe rzeczy.
 


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