Announcement

Collapse
No announcement yet.

SOCOM Fireteam Bravo II : Anti-Knife

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • SOCOM Fireteam Bravo II : Anti-Knife

    Credit: Linblow

    Code:
    void ::native_antiPlayerKnifeGrabber( Player *knifer, Anim *anim, Anim *animCopy, int unknown )
    {
    addiu sp , sp , -128
    sw ra , 0(sp)
    sw s0 , 4(sp)	# Player *knifer
    sw s1 , 8(sp)	# Config start addr
    sw s2 , 12(sp) # Is the player being knifed?
    sw s3 , 16(sp) # Victim's struct Player
    		# sp + 20 <=> text buffer (100 bytes)
    or s0 , a0 , zero
    lui s1 , $0974
    	
    lw t0 , 0(a2) # Loads the current animation
    xori t1 , t0 , $001B	
    xori s2 , t0 , $001C	
    sltiu t1 , t1 , 1
    sltiu s2 , s2 , 1
    or t0 , t1 , s2
    beq t0 , zero , $__END	# No player's being grabbed/knifed?
    nop
    	
    jal $088FCD54 # ::getPlayerBySealObjectIndex( int sealObjectIndex )
    lhu a0 , 8(a2)
    beq v0 , zero , $__END
    or s3 , v0 , zero # Victim's struct Player
    	
    -- IS_USER
    lui t0 , $08D0
    lw t0 , $5858(t0)
    bne s3 , t0 , $__NORMAL_PLAYER # The victim isn't the user?
    	
    /* We format the notification message for the user */
    addiu a2 , s1 , $0730	# MSG_USERGRABBED
    bnel s2 , zero , $__CONTINUE
    addiu a2 , s1 , $06E0	# MSG_USERKNIFED
    	
    -- CONTINUE
    lw a3 , $0010(s0)	# Cheater's nickname
    ori a1 , zero , 100
    jal $08C13480  # libc::snprintf( char *buff, int size, char *fmt, .. )
    addiu a0 , sp , 20	# Text buffer
    beq zero , zero , $__ALERT_USER
    	
    	
    -- NORMAL_PLAYER
    lw t0 , $0014(s1)	# CHEAT->detectPlayerKnifeGrab
    beq t0 , zero , $__END	# The detector is disabled?
    	
    addiu a2 , s1 , $0690	# MSG_BEINGGRABBED
    bnel s2 , zero , $__CONTINUE_2
    addiu a2 , s1 , $0640	# MSG_BEINGKNIFED
    	
    -- CONTINUE_2
    lw t0 , $0010(s3)	# Victim's nickname
    lw a3 , $0010(s0)	# Cheater's nickname
    ori a1 , zero , 100
    jal $08C13480 # libc::snprintf( char *buff, int size, char *fmt, .. )
    addiu a0 , sp , 20	# Text buffer
    	
    	
    	
    -- ALERT_USER
    ori a2 , zero , 1 # Yellow
    addiu a1 , sp , 20	# Text buffer
    jal $09730700 # lpl::alertCheaterDetected( int cheaterPID, char* msg, int color ) 
    lw a0 , $09CC(s0)	 # Cheater's PID
    	
    	
    -- END
    lw ra , 0(sp)
    lw s0 , 4(sp)
    lw s1 , 8(sp)
    lw s2 , 12(sp)
    lw s3 , 16(sp)
    jr ra
    addiu sp , sp , 128
    }
    Last edited by Professor-X; 05-07-2017, 12:23:18 AM.
Working...
X