Ich kommentier mal einiges unlogisches in rot.
Quote:
Originally Posted by R3d~F!st
Code:
void ASMThread( void )
{
__asm
{
loc_playerthread:
mov eax, dword ptr ds:[ADR_PLAYERPOINTER]
test eax, eax
jz loc_callsleep
mov float ptr ds:[ADR_FASTAMMO],99
mov float ptr ds:[ADR_FASTHEALTH],99
mov float ptr ds:[ADR_FASTREPAIR],99
mov float ptr ds:[ADR_FASTFLAG],99
jz loc_callsleep2 [color=red]JUMP ZERO ohne bedingung?[/color]
loc_serverthread:
mov esi, dword ptr ds:[ADR_SERVERPOINTER][color=red]eher ecx / edx nutzen.[/color]
test esi,esi
jz loc_callsleep2
mov int ptr ds:[esi + OFS_SLOT5], 1[color=red]int ptr? byte = align 1, word = align 2, dword align 4...[/color]
push 10
call 10[color=red]du legst den wert 10 auf den stack, callst dann etwas fehlerhaftes an [0Ah] (error) und weil das kein stdcall ist, da fehlerhaft, fehlt pop um es vom stack runterzunehmen[/color]
[color=red]... usw... kein bock mehr alles zu kommentieren, 95% bullshit.[/color]
jz loc_jumptoprone
loc_prone:
test dword ptr ds:[OFS_GAMEMODE], 1
push 30
call 30
mov int ptr ds:[ADR_MEMCQCPRONE], 1; not sure which operand CQCPRONE is
jz loc_callsleep
loc_callsleep:
push 30
call 30
jmp loc_playerthread
loc_callsleep2:
push 50
call 50
jmp loc_serverthread
loc_jumptoprone:
push 25
call 25
jmp loc_prone
}
}
|
vielleicht solltest du erstmal lernen, was die einzelnen befehle bewirken. asm ist keine sprache, die man spielend erlernen kann, wie etwa c oder c++.
int zum beispiel steht nicht für integer, sondern für interrupt. statt "int ptr" solltest du eher "dword ptr" verwenden. ein fehler, den du immer wieder machst. auch versuchst du, funktionen via adressen zu callen, die kleiner sind als möglich für funktionen. dementsprechend kannst du dir auch nicht sicher sein, dass diese funktionen die standard calling convention haben, bei der die funktion selbst den stack aufräumt.
du solltest dir auch überlegen, welche register schon verwendet werden, immerhin castest du den thread zu DWORD __stdcall (__in LPVOID). einhergehend mit der standard calling convention sind einige register benutzt.