Jump to content

Cafalorn

Members
  • Posts

    108
  • Credits

  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by Cafalorn

  1. You must use l2net and script

     

    //**** Fighter script v0.2 ****//

     

    //Remember to set weapon ID at line 133 and 137 (in the killtarget sub)

     

    //****** User Settings ******//

    DEFINE INT MIN_ATTACKDELAY 500

    DEFINE INT MAX_ATTACKDELAY 700

    DEFINE INT LOOT_RANGE 120

    DEFINE INT MIN_PICKUPDELAY 150

    DEFINE INT MAX_PICKUPDELAY 300

    DEFINE INT MIN_TARGETDELAY 200

    DEFINE INT MAX_TARGETDELAY 300

    DEFINE INT MOVETO_DISTANCE 400

     

    //***********************Kite Stuff*********************//

    DEFINE INT KiteRange 450

    DEFINE DOUBLE VX 0

    DEFINE DOUBLE VY 0

    DEFINE DOUBLE VX1 0

    DEFINE DOUBLE VY1 0

    DEFINE DOUBLE LEN 0

    //*****************************************************//

     

    //*******time*******//

    DEFINE INT StartTime 0

    DEFINE INT EndTime 0

    DEFINE INT UsedTime 0

    DEFINE INT MaxTime 100000000

    DEFINE INT MaxPickTime 50000000

     

    //******Rest Settings******//

    //set here at what hp/mp to rest. (in %)

    DEFINE INT RESTHPPERCENT 40

    DEFINE INT RESTMPPERCENT 0

     

    DEFINE INT TEMP 0

    DEFINE INT i 0

    DEFINE INT TEN 10

    DEFINE INT FOUR 4

    DEFINE INT HUNDRED 100

    DEFINE INT COUNT 0

    DEFINE INT Rest 0

    DEFINE INT RESTHP 0

    DEFINE INT RESTMP 0

    DEFINE INT SKILLMP 0

    DEFINE INT DISTANCE_TO_TARGET 0

    DEFINE INT PICKUP_X 0

    DEFINE INT PICKUP_Y 0

    DEFINE INT TEMPX 3

    DEFINE DOUBLE X 0

    DEFINE DOUBLE Y 0

    DEFINE DOUBLE Range 50

     

     

    MATH RESTHP CHAR_MAX_HP MULTIPLY RESTHPPERCENT

    MATH RESTHP RESTHP DIVIDE HUNDRED

    MATH RESTMP CHAR_MAX_MP MULTIPLY RESTMPPERCENT

    MATH RESTMP RESTMP DIVIDE HUNDRED

     

    //****** MAIN ******//

     

    //just a printout

    PRINT_TEXT "rest below <&RESTHP&> HP"

    DO

    TARGET_NEAREST

    GET_RAND TEMP "<&MIN_TARGETDELAY&>" "<&MAX_TARGETDELAY&>"

    SLEEP "<&TEMP&>"

    IF TARGET_CUR_HP > ZERO

    CALLSUB MovetoTarget

    SLEEP 500

    CALLSUB KillTarget

    ENDIF

     

    //Target is dead, pick up

    GET_TIME StartTime

    SET PICKUP_X "<&CHAR_X&>"

    SET PICKUP_Y "<&CHAR_Y&>"

    WHILE NEAREST_ITEM_DISTANCE < LOOT_RANGE

    GET_TIME EndTime

    MATH UsedTime EndTime SUBTRACT StartTime

    IF UsedTime > MaxPickTime

    BREAK 2

    ENDIF

    DISTANCE TEMP CHAR_X CHAR_Y TEMP PICKUP_X PICKUP_Y TEMP

    IF TEMP > LOOT_RANGE

    BREAK 2

    ENDIF

    CALLSUB Pickup

    WEND

     

    IF COUNT_NPC_TARGETME == ZERO

    IF CHAR_CUR_HP < RESTHP

    CALLSUB Rest

    ENDIF

    ENDIF

    LOOP ZERO == ZERO

    SCRIPT_END

     

    //***************** SUBS *****************//

    SUB MovetoTarget

    SET i 0

    GET_TIME StartTime

    DISTANCE DISTANCE_TO_TARGET CHAR_X CHAR_Y CHAR_Z TARGET_X TARGET_Y TARGET_Z

    IF DISTANCE_TO_TARGET <= MOVETO_DISTANCE

    RETURNSUB

    ENDIF

    SET TEMPX "<&TARGET_X&>"

    MOVE_TO "<&TARGET_X&>" "<&TARGET_Y&>" "<&TARGET_Z&>"

    WHILE DISTANCE_TO_TARGET > MOVETO_DISTANCE

                   GET_TIME EndTime

    MATH UsedTime EndTime SUBTRACT StartTime

    DISTANCE DISTANCE_TO_TARGET CHAR_X CHAR_Y CHAR_Z TARGET_X TARGET_Y TARGET_Z

    GET_RAND TEMP "<&MIN_TARGETDELAY&>" "<&MAX_TARGETDELAY&>"

    SLEEP "<&TEMP&>"

    IF UsedTime > MaxTime

    CALLSUB Stuck

    RETURNSUB

    ENDIF

    IF TARGET_X != TEMPX

    MOVE_TO "<&TARGET_X&>" "<&TARGET_Y&>" "<&TARGET_Z&>"

    ENDIF

    WEND

    RETURNSUB

    //******************************************************************************//

    SUB KillTarget

    GET_TIME StartTime

    DO

    MATH i i ADD ONE

    PRINT_TEXT "Entering loop <&i&>"

    GET_TIME EndTime

    MATH UsedTime EndTime SUBTRACT StartTime

    IF i == FOUR

    IF TARGET_CUR_HP == TARGET_MAX_HP

    USE_ITEM 13 //Equip Short Bow

    SLEEP 1000

    ATTACK_TARGET

    SLEEP 3500

    USE_ITEM 2543 //Equip duals

    SET i 0

    ENDIF

    ENDIF

    IF UsedTime > MaxTime

    IF TARGET_CUR_HP == TARGET_MAX_HP

    CALLSUB Stuck

    RETURNSUB

    ENDIF

    ENDIF

    ATTACK_TARGET

    GET_RAND TEMP "<&MIN_ATTACKDELAY&>" "<&MAX_ATTACKDELAY&>"

    SLEEP "<&TEMP&>"

    LOOP TARGET_CUR_HP > ZERO

    RETURNSUB

    //******************************************************************************//

    SUB Pickup

    CLICK_NEAREST_ITEM

    GET_RAND TEMP "<&MIN_PICKUPDELAY&>" "<&MAX_PICKUPDELAY&>"

    SLEEP "<&TEMP&>"

    RETURNSUB

    //******************************************************************************//

    SUB Rest

    PRINT_TEXT "starting to rest"

    SLEEP 1000

    COMMAND "/sit"

    //USE_SKILL 226

    WHILE CHAR_CUR_HP < CHAR_MAX_HP

    IF COUNT_NPC_TARGETME != ZERO

    COMMAND "/stand"

    RETURNSUB

    ENDIF

    SLEEP 1000

    WEND

    //done resting lets stand

    COMMAND "/stand"

    SLEEP 200

    RETURNSUB

    //******************************************************************************//

    SUB Stuck

    //need to get a vector for from the monster to us

    MATH VX CHAR_X SUBTRACT TARGET_X

    MATH VY CHAR_Y SUBTRACT TARGET_Y

    //now we have the vector from the target to us... lets normalize it now

    DISTANCE LEN ZERO ZERO ZERO VX VY ZERO

    MATH VX VX DIVIDE LEN

    MATH VY VY DIVIDE LEN

    //now lets scale back up to our range

    MATH VX VX MULTIPLY KiteRange

    MATH VY VY MULTIPLY KiteRange

    SET VX1 "<&VX&>"

    SET VY1 "<&VY&>"

    //then we add this offset to our location

    MATH VX VX ADD CHAR_X

    MATH VY VY ADD CHAR_Y

    //and finally... we move

    MOVE_TO "<&VX&>" "<&VY&>" "<&CHAR_Z&>"

    SLEEP 1500

    //left turn

    MATH VX CHAR_X SUBTRACT VY1

    MATH VY CHAR_Y ADD VX1

    MOVE_TO "<&VX&>" "<&VY&>" "<&CHAR_Z&>"

    SLEEP 1500

    MOVE_TO "<&TARGET_X&>" "<&TARGET_Y&>" "<&TARGET_Z&>"

    SLEEP 1500

    RETURNSUB

     

    i proposes you to use IG l2net :)

  2. L2Walker.exe = http://www.virustotal.com/pl/analisis/74b3f641636d3a2ce4474ae940339c8d971ba1ccc865b92d25429db930794289-1256230108

     

    Patcher.exe = http://www.virustotal.com/pl/analisis/d2d5539a155cf8f7fc3852bf290b2d7069e44c80e44b6888d27f5776a3f279dd-1246921946

     

    [DEFAULT]

    CountryList=Kastien;

    DefaultCountry=0

    DefaultServer=-1

    DefaultCharacter=0

    DefaultAccount=dfgdfg

    DefaultPassWord=

    [DarkAngels]

    LoginServerIP=87.98.239.87

    LoginServerPort=2106

    ProtocolVersion=744

    ServerList=[1]Kastien;

     

     

    This IP 87.98.239.87 is WEBmail so WTF ???

     

     

  3. HI guys. I have script for normal farm but character dont use soulshots S grade :( i found scripts but i dont know how joint it into one whole

     

    Script farm:

    //**** Fighter script v0.2 ****//
    
    //Remember to set weapon ID at line 133 and 137 (in the killtarget sub)
    
    //****** User Settings ******//
    DEFINE INT MIN_ATTACKDELAY 1500
    DEFINE INT MAX_ATTACKDELAY 2500
    DEFINE INT LOOT_RANGE 100
    DEFINE INT MIN_PICKUPDELAY 150
    DEFINE INT MAX_PICKUPDELAY 300
    DEFINE INT MIN_TARGETDELAY 500
    DEFINE INT MAX_TARGETDELAY 1000
    DEFINE INT MOVETO_DISTANCE 400
    
    //***********************Kite Stuff*********************//
    DEFINE INT KiteRange 450
    DEFINE DOUBLE VX 0
    DEFINE DOUBLE VY 0
    DEFINE DOUBLE VX1 0
    DEFINE DOUBLE VY1 0
    DEFINE DOUBLE LEN 0
    //*****************************************************//
    
    //*******time*******//
    DEFINE INT StartTime 0
    DEFINE INT EndTime 0
    DEFINE INT UsedTime 0
    DEFINE INT MaxTime 100000000
    DEFINE INT MaxPickTime 50000000
    
    //******Rest Settings******//
    //set here at what hp/mp to rest. (in %)
    DEFINE INT RESTHPPERCENT 40
    DEFINE INT RESTMPPERCENT 0
    
    DEFINE INT TEMP 0
    DEFINE INT i 0
    DEFINE INT TEN 10
    DEFINE INT FOUR 4
    DEFINE INT HUNDRED 100
    DEFINE INT COUNT 0
    DEFINE INT Rest 0
    DEFINE INT RESTHP 0
    DEFINE INT RESTMP 0
    DEFINE INT SKILLMP 0
    DEFINE INT DISTANCE_TO_TARGET 0
    DEFINE INT PICKUP_X 0
    DEFINE INT PICKUP_Y 0
    DEFINE INT TEMPX 3
    DEFINE DOUBLE X 0
    DEFINE DOUBLE Y 0
    DEFINE DOUBLE Range 50
    
    
    MATH RESTHP CHAR_MAX_HP MULTIPLY RESTHPPERCENT
    MATH RESTHP RESTHP DIVIDE HUNDRED
    MATH RESTMP CHAR_MAX_MP MULTIPLY RESTMPPERCENT
    MATH RESTMP RESTMP DIVIDE HUNDRED
    
    //****** MAIN ******//
    
    //just a printout 
    PRINT_TEXT "rest below <&RESTHP&> HP"
    DO
    TARGET_NEAREST
    GET_RAND TEMP "<&MIN_TARGETDELAY&>" "<&MAX_TARGETDELAY&>"
    SLEEP "<&TEMP&>"
    IF TARGET_CUR_HP > ZERO
    	CALLSUB MovetoTarget
    	SLEEP 500
    	CALLSUB KillTarget
    ENDIF	
    
    //Target is dead, pick up
    GET_TIME StartTime
    SET PICKUP_X "<&CHAR_X&>"
    SET PICKUP_Y "<&CHAR_Y&>"
    	WHILE NEAREST_ITEM_DISTANCE < LOOT_RANGE
    		GET_TIME EndTime
    		MATH UsedTime EndTime SUBTRACT StartTime
    		IF UsedTime > MaxPickTime
    			BREAK 2
    		ENDIF
    		DISTANCE TEMP CHAR_X CHAR_Y TEMP PICKUP_X PICKUP_Y TEMP
    		IF TEMP > LOOT_RANGE
    			BREAK 2
    		ENDIF
    		CALLSUB Pickup
    	WEND
    
    	IF COUNT_NPC_TARGETME == ZERO
    		IF CHAR_CUR_HP < RESTHP
    			CALLSUB Rest
    		ENDIF
    	ENDIF
    LOOP ZERO == ZERO
    SCRIPT_END
    
    //***************** SUBS *****************//
    SUB MovetoTarget
    SET i 0
    GET_TIME StartTime
    DISTANCE DISTANCE_TO_TARGET CHAR_X CHAR_Y CHAR_Z TARGET_X TARGET_Y TARGET_Z
    IF DISTANCE_TO_TARGET <= MOVETO_DISTANCE
    	RETURNSUB
    ENDIF
    SET TEMPX "<&TARGET_X&>"
    MOVE_TO "<&TARGET_X&>" "<&TARGET_Y&>" "<&TARGET_Z&>"
    WHILE DISTANCE_TO_TARGET > MOVETO_DISTANCE
                   GET_TIME EndTime
    	MATH UsedTime EndTime SUBTRACT StartTime
    	DISTANCE DISTANCE_TO_TARGET CHAR_X CHAR_Y CHAR_Z TARGET_X TARGET_Y TARGET_Z
    	GET_RAND TEMP "<&MIN_TARGETDELAY&>" "<&MAX_TARGETDELAY&>"
    	SLEEP "<&TEMP&>"
    	IF UsedTime > MaxTime
    		CALLSUB Stuck
    		RETURNSUB
    	ENDIF	
    	IF TARGET_X != TEMPX
    		MOVE_TO "<&TARGET_X&>" "<&TARGET_Y&>" "<&TARGET_Z&>"
    	ENDIF	
    WEND
    RETURNSUB
    //******************************************************************************//
    SUB KillTarget
    GET_TIME StartTime
    DO
    	MATH i i ADD ONE
    	PRINT_TEXT "Entering loop <&i&>"		
    	GET_TIME EndTime
    	MATH UsedTime EndTime SUBTRACT StartTime
    	IF i == FOUR
    		IF TARGET_CUR_HP == TARGET_MAX_HP
    			USE_ITEM 13 //Equip Short Bow
    			SLEEP 1000
    			ATTACK_TARGET
    			SLEEP 3500
    			USE_ITEM 2543 //Equip duals
    			SET i 0
    		ENDIF
    	ENDIF	
    	IF UsedTime > MaxTime
    		IF TARGET_CUR_HP == TARGET_MAX_HP
    			CALLSUB Stuck
    			RETURNSUB
    		ENDIF
    	ENDIF	
    	ATTACK_TARGET
    	GET_RAND TEMP "<&MIN_ATTACKDELAY&>" "<&MAX_ATTACKDELAY&>"
    	SLEEP "<&TEMP&>"
    LOOP TARGET_CUR_HP > ZERO
    RETURNSUB
    //******************************************************************************//
    SUB Pickup
    CLICK_NEAREST_ITEM
    GET_RAND TEMP "<&MIN_PICKUPDELAY&>" "<&MAX_PICKUPDELAY&>"
    SLEEP "<&TEMP&>"
    RETURNSUB
    //******************************************************************************//
    SUB Rest
    PRINT_TEXT "starting to rest"
    SLEEP 1000
    COMMAND "/sit"
    //USE_SKILL 226
    WHILE CHAR_CUR_HP < CHAR_MAX_HP
    	IF COUNT_NPC_TARGETME != ZERO
    		COMMAND "/stand"
    		RETURNSUB
    	ENDIF
    SLEEP 1000
    WEND
    //done resting lets stand
    COMMAND "/stand"
    SLEEP 200
    RETURNSUB
    //******************************************************************************//
    SUB Stuck
    //need to get a vector for from the monster to us
    MATH VX CHAR_X SUBTRACT TARGET_X
    MATH VY CHAR_Y SUBTRACT TARGET_Y
    //now we have the vector from the target to us... lets normalize it now
    DISTANCE LEN ZERO ZERO ZERO VX VY ZERO
    MATH VX VX DIVIDE LEN
    MATH VY VY DIVIDE LEN
    //now lets scale back up to our range
    MATH VX VX MULTIPLY KiteRange
    MATH VY VY MULTIPLY KiteRange
    SET VX1 "<&VX&>"
    SET VY1 "<&VY&>"	
    //then we add this offset to our location
    MATH VX VX ADD CHAR_X
    MATH VY VY ADD CHAR_Y
    //and finally... we move
    MOVE_TO "<&VX&>" "<&VY&>" "<&CHAR_Z&>" 
    SLEEP 1500
    //left turn
    MATH VX CHAR_X SUBTRACT VY1
    MATH VY CHAR_Y ADD VX1
    MOVE_TO "<&VX&>" "<&VY&>" "<&CHAR_Z&>"
    SLEEP 1500
    MOVE_TO "<&TARGET_X&>" "<&TARGET_Y&>" "<&TARGET_Z&>"
    SLEEP 1500
    RETURNSUB
    
    
    //**** Developed by Oddi 2007 ****//
    //Thanks to Slothmo & Asmodin88 for providing useful pre-code

     

    Script use SS:

    DEFINE INT ITEMCOUNT 0
    
    //Will count how SoulShot S
    ITEM_COUNT ITEMCOUNT 1467 //Soulshot: S-grade
    
    //While u have less then 200 soulshot S will stop the loop and will use Blessed Scroll of Escape: Clan Hall
    WHILE ITEMCOUNT > i200
    
    //To save Sss, i’ll use only if the mob’s HP more then 8000 ( u can Edit this if u wanna)
       IF TARGET_CUR_HP > i8000
           USE_ITEM 1467 //Soulshot: S-grade
       ENDIF
    
       ITEM_COUNT ITEMCOUNT 1467 //Soulshot: S-grade
    
    WEND
    
    USE_ITEM 5858 //BsoeCH
    
    SCRIPT_END

     

    sorry for my bad english xD

    Plz for help

  4. OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

    OMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMGOMG

×
×
  • Create New...