Offtopic, but ... you also need computer
Mr.Wolna said:I just need the glofal.fx for rhe filter and sfall or something other?
Mr.Wolna said:I just need the glofal.fx for rhe filter and sfall or something other?
Not really anything to do with fallout then.gracul said:...i get a dxwin.exe error...
I'll make one once my exams are over.Sorrow said:Any chances for a Win9* version of Sfall for Fallout1?
Ah. If fallout is crashing too then that's different.gracul said:Well, any key i bind (-1 -2 -3 in .ini file) crashes the game instantly after i click it. And its a Fallout2 error, followed by a dxwin error. Like i said its not happening on older versions of {I'm trying to say your, you are, or you're, but I'm likely too stupid to know which to use.} sfall.
As long as the resolution is better than the length of one frame any error should average itself out, so a 10ms resolution should be sufficient for accurately measuring 100fps.Alray said:By the way, do you know, that function GetTickCount has fallibility something about 10 ms? I have a lot of problems with worldmap patch when I used GetTickCount. I use TimeGetTime function for all time calculations. I saw GetTickCount in WorldMapSpeedPatch3 function in main.cpp
That looks fine, but when are you calling it? Remember that it will only have any effect if it is the players turn in combat. Also the graphics don't update until you spend some ap, so the ap bar will be incorrect.Mario_Dweller said:set_critter_current_ap(dude_obj,get_critter_current_ap(dude_obj) + 1);
That looks fine, but when are you calling it? Remember that it will only have any effect if it is the players turn in combat. Also the graphics don't update until you spend some ap, so the ap bar will be incorrect.Mario_Dweller said:set_critter_current_ap(dude_obj,get_critter_current_ap(dude_obj) + 1);
bJmp:
MOV EDX,DWORD PTR DS:[ESI+4] ; start of damage loop
MOV EAX,DWORD PTR DS:[ESI] ;
MOV EBX,DWORD PTR SS:[ESP+18] ;
CALL fallout2.00478448 ;
ADD EBX,EAX ; raw damage
SUB EBX,DWORD PTR SS:[ESP+28] ; damage minus threshold
TEST EBX,EBX ;
JLE SHORT nJmp ; no damage
CMP DWORD PTR SS:[ESP+2C],64 ;
JL SHORT vJmp ;
MOV EAX,0 ; adjustor equals zero
JMP SHORT nJmp ;
vJmp:
CMP DWORD PTR SS:[ESP+2C],0 ;
JLE SHORT wJmp ;
MOV EAX,64 ;
SUB EAX,DWORD PTR SS:[ESP+2C] ;
JMP SHORT mJmp ;
wJmp:
MOV EAX,64 ; adjustor equals one hundred
mJmp:
IMUL EBX,EAX ; damage multiplied by adjustor
IMUL EBX,DWORD PTR SS:[ESP+20] ; damage multiplied by the difficulty setting
IMUL EBX,DWORD PTR SS:[ESP+24] ; damage multiplied by damage multiplier
SAR EBX,1 ;
MOV DWORD PTR SS:[ESP+30],64 ;
MOV EDX,EBX ;
MOV EAX,EBX ;
SAR EDX,1F ;
IDIV DWORD PTR SS:[ESP+30] ; damage divided by one hundred
MOV EBX,EAX ; assign new damage value
MOV EDX,EBX ;
MOV EAX,EBX ;
SAR EDX,1F ;
IDIV DWORD PTR SS:[ESP+30] ; damage divided by one hundred
MOV EBX,EAX ; assign new damage value
TEST EBP,EBP ;
JLE SHORT aJmp ; add damage
MOV EDX,EBX ;
MOV EAX,EBX ;
SAR EDX,1F ;
IDIV EBP ; damage divided by the damage divisor
MOV EBX,EAX ; assign new damage value
CMP DWORD PTR SS:[ESP+24],4 ;
JG SHORT aJmp ; add damage
JE SHORT zJmp ; JHP ammo damage decrease
CMP EBP,2 ;
JNZ SHORT aJmp ; add damage
CMP DWORD PTR SS:[ESP+28],4 ;
JGE SHORT xJmp ; AP ammo damage increase
JL SHORT yJmp ; AP ammo damage decrease
xJmp:
IMUL EAX,3 ; multiple damage by three
SAR EAX,1 ; divide damage by two
ADD EBX,EAX ; add result to previous damage value
JMP SHORT aJmp ; add damage
yJmp:
SAR EAX,1 ; divide damage by two
ADD EBX,EAX ; add result to previous damage value
JMP SHORT aJmp ; add damage
zJmp:
CMP EBP,1 ;
JNZ SHORT aJmp ; add damage
CMP DWORD PTR SS:[ESP+28],4 ;
JGE SHORT cJmp ;
IMUL EAX,0D ; multiple damage by thirteen
SAR EAX,6 ; divide damage by sixty-four
SUB EBX,EAX ; subtract result from previous damage value
JMP SHORT aJmp ; add damage
cJmp:
SAR EAX,2 ; divide damage by four
SUB EBX,EAX ; subtract result from previous damage value
aJmp:
ADD DWORD PTR DS:[EDI],EBX ; accumulate damage
nJmp:
MOV EAX,DWORD PTR SS:[ESP+1C] ; no damage
INC ECX ;
CMP ECX,EAX ;
JL SHORT bJmp ; loop back to beginning
OK, I've been able to fix that, but it has an interesting side effect in that it lets you store up multiple perks. That means that if you don't want a perk at level 6, you could wait till level 9 and then pick 2. Anyone have any opinions on whether that counts as a cheat? I'll probably default it to on, but leave an option in to turn it off. Also get_perk_owed and set_perk_owed will start returning/accepting numbers bigger than 1.Mario_Dweller said:-E-D-I-T- : It's because of engine. get_perk_owed function returns 1(if owed is set by engine)only after enter to CHAR window(PERK window showed). Is there some solution? Something like override_next_perk_owed ??
static DWORD _stdcall CalcKnockback(int flags, int damage,DWORD target,DWORD attacker,DWORD weapon) {
double result=(double)damage/(flags==0x3d?5.0:10.0);
result=ApplyModifiers(&mWeapons, weapon, result);
result=ApplyModifiers(&mAttackers, attacker, result);
result=ApplyModifiers(&mTargets, target, result);
return (DWORD)floor(result);
}
static const DWORD KnockbackRetAddr=0x00424B85;
static void _declspec(naked) KnockbackHook() {
_asm {
mov ecx, [esp+0x14];
push ebx;
mov ebx, [esi+8];
push ebx; //Weapon
mov ebx, [esi];
push ebx; //Attacker
push ecx; //target
mov edi, [edi];
push edi; //Damage
push eax; //Weapon flags
call CalcKnockback;
pop ebx;
mov ecx, [esp+0x10];
mov [ecx], eax;
jmp KnockbackRetAddr;
}
}
Let me know whether or not it works.Mario_Dweller said:OK. I will test it once again
More comfortable with asm than C?Glovz said:@Timeslip
Currently I am more comfortable with Assembly, but I will think about dusting off my rusty C skills.