|
You last visited: Today at 04:36
Advertisement
PWI Neverfall changes
Discussion on PWI Neverfall changes within the PW Hacks, Bots, Cheats, Exploits forum part of the Perfect World category.
04/30/2017, 13:37
|
#16
|
elite*gold: 0
Join Date: Aug 2013
Posts: 40
Received Thanks: 1
|
Quote:
Originally Posted by Stark77
My first post does not include the missing offsets (red highlighted) but you can find these in the posts of jasty and kruger.
To get this other bot to work simply compare the old offsets (check the end of my first post) with those of that other bot and replace them with the new offsets.
|
tried, doesnt work
|
|
|
05/01/2017, 20:06
|
#17
|
elite*gold: 0
Join Date: Dec 2009
Posts: 70
Received Thanks: 15
|
Hello everyone,
haven't been on for a long time due to real life stuff.
I just updated my offsets some with Starks offsetlist and others with Kruger and my own
searching. Thx everyone
However to add my Tribute.
Here is the Partyinv Offset etc.:
PARTYINV_ADDRESS=0xE5C0C8
UnfreezeOffset=0x508
PlayerParty_Offset=0x820
QuestList_Offset=0x15CC ; before 0x1554
PlayerCurrentSkill=0x83C ;skill used or not atm
The new Glyph system has different cooldowns which can be found the following way:
Code:
Func CheckCooldown($SKILL_ID, $GAME_PROCESS, $type)
;~ Type
;~ 0 = None
;~ 1 = Glyphs
$ADDRESS_BASE = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "ADDRESS_BASE", "")
$PlayerOffSet = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "PlayerOffSet", "")
$PlayerSkill_Offset = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "PlayerSkill_Offset", "")
$SkillID_Offset = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "SkillID_Offset", "")
$SkillCurCooldown_Offset = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "SkillCurCooldown_Offset", "")
$PlayerSkill_Offset_Glyphs = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "PlayerSkill_Offset_Glyphs", "")
$Player = _MemoryRead(_MemoryRead(_MemoryRead($ADDRESS_BASE, $GAME_PROCESS) + 0x1C, $GAME_PROCESS) + $PlayerOffSet, $GAME_PROCESS)
If $type = 0 Then
$skillOffset = $PlayerSkill_Offset
ElseIf $type = 1 Then
$skillOffset = $$PlayerSkill_Offset_Glyphs
EndIf
$SkillBase = _MemoryRead($Player + $skillOffset, $GAME_PROCESS)
$skillCount = _MemoryRead($Player + $skillOffset + 0x4, $GAME_PROCESS)
For $i = 0 To $skillCount - 1
$skill = _MemoryRead($SkillBase + 4 * $i, $GAME_PROCESS)
$ID = _MemoryRead($skill + $SkillID_Offset, $GAME_PROCESS)
If $ID == $SKILL_ID Then ExitLoop
Next
$cooldown = _MemoryRead($skill + $SkillCurCooldown_Offset, $GAME_PROCESS)
If $cooldown > 0 Then Return 1
Sleep(100)
Return 0
EndFunc ;==>CheckCooldown
Here are the Offsets for the Function:
ADDRESS_BASE=0xE4BAB0
PlayerOffSet=0x34
PlayerSkill_Offset=0x15F0
PlayerSkill_Offset_Glyphs=0x1668
SkillID_Offset=8
SkillCurCooldown_Offset=16
The function was once from jasty, if i remember right. Just tweaked it. The way to use it is simple, cooldown check for normal skills(with no glyph) as following:
CheckCooldown($SKILL_ID, $GAME_PROCESS, 0)
With Glyphs change the 0 to 1:
CheckCooldown($SKILL_ID, $GAME_PROCESS, 1)
The Structure of the glyph skillcooldown, id etc is the same as with the normal ones. They start at 1668+0 and go up to 1668+8 as we currently only have 3 Glyph spots free. Just take a look at it with ReClass. Should be easy, else i can provide screens.
Hope that helps
|
|
|
05/08/2017, 12:56
|
#18
|
elite*gold: 0
Join Date: Aug 2013
Posts: 40
Received Thanks: 1
|
So anyone managed to make an offset file for denzjh or an autopot?
|
|
|
05/08/2017, 22:15
|
#19
|
elite*gold: 0
Join Date: Dec 2009
Posts: 70
Received Thanks: 15
|
Here is a Version quickly thrown together for a Potbot that i use from time to time:
Code:
Func AutoPotBot()
$pid = _InfiniteCore_GetValue("AutopotPid")
$ItemalreadyUsed = 0
$Sleeptime = 0
$PlaceMPpot = CheckInventoryPlace(46877, $pid)
If $PlaceMPpot = -1 Then
MsgBox("", "", "Yo man, I got no Pots! What do you expect me to do?")
$AutopotBotCore = 0
_InfiniteCore_Delete($AutopotBotCore)
EndIf
While 1
$UseMPPotAt = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "UseMPPotAt", "")
If CheckMPPotNeeded($UseMPPotAt, $pid) = 1 And $ItemalreadyUsed = 0 Then
$PlaceMPpot = CheckInventoryPlace(46877, $pid)
If $PlaceMPpot = -1 Then
MsgBox("", "", "Yo man, I got no Pots!!!")
_InfiniteCore_Delete($AutopotBotCore)
$AutopotBotCore = 0
Else
useItem($PlaceMPpot, 46877, $pid, 0)
$ItemalreadyUsed = 1
EndIf
EndIf
Sleep(200)
If $ItemalreadyUsed = 1 Then
$Sleeptime += 1
EndIf
If $Sleeptime >= 10 Then
$Sleeptime = 0
$ItemalreadyUsed = 0
EndIf
WEnd
EndFunc ;==>AutoPotBot
Func CheckInventoryPlace($ItemIDtransfered, $pid)
$GAME_PROCESS = _MemoryOpen($pid)
$ADDRESS_BASE = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "ADDRESS_BASE", "")
$InventoryListOffset_ = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "InventoryListOffset", "")
$InventorySizeOffset = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "InventorySizeOffset", "")
$PlayerOffSet = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "PlayerOffSet", "")
$POINTER_BASE = _MemoryRead(_MemoryRead($ADDRESS_BASE, $GAME_PROCESS) + 0x1C, $GAME_PROCESS)
$POINTER_CHARACTER = _MemoryRead($POINTER_BASE + $PlayerOffSet, $GAME_PROCESS)
$InventoryListOffset = _MemoryRead($POINTER_CHARACTER + $InventoryListOffset_, $GAME_PROCESS) ; f90
$InventorySize = _MemoryRead($InventoryListOffset + $InventorySizeOffset, $GAME_PROCESS)
$i = 0
While $i < $InventorySize
$POINTER_BASE = _MemoryRead(_MemoryRead($ADDRESS_BASE, $GAME_PROCESS) + 0x1C, $GAME_PROCESS)
$POINTER_CHARACTER = _MemoryRead($POINTER_BASE + $PlayerOffSet, $GAME_PROCESS)
$InventoryList = _MemoryRead($POINTER_CHARACTER + $InventoryListOffset_, $GAME_PROCESS)
$sortedInventoryList = _MemoryRead($InventoryList + 0xC, $GAME_PROCESS)
$InventoryBase = _MemoryRead($sortedInventoryList + 0x4 * $i, $GAME_PROCESS)
$ItemID = _MemoryRead($InventoryBase + 0xC, $GAME_PROCESS)
If $ItemID = $ItemIDtransfered Then
$ItemStack = _MemoryRead($InventoryBase + 0x14, $GAME_PROCESS)
_MemoryClose($pid)
Return $i
EndIf
$i = $i + 1
WEnd
_MemoryClose($pid)
Return -1
EndFunc ;==>CheckInventoryPlace
Func CheckMPPotNeeded($Percentage, $pid)
$ADDRESS_BASE = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "ADDRESS_BASE", "")
$PlayerMPOffset = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "PlayerMPOffset", "")
$PlayerMPmaxOffset = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "PlayerMPmaxOffset", "")
$PlayerOffSet = IniRead(@ScriptDir & "\IniLogs\Offsets.ini", "Offsets", "PlayerOffSet", "")
$GAME_PROCESS = _MemoryOpen($pid)
$POINTER_BASE = _MemoryRead(_MemoryRead($ADDRESS_BASE, $GAME_PROCESS) + 0x1C, $GAME_PROCESS)
$POINTER_CHARACTER = _MemoryRead($POINTER_BASE + $PlayerOffSet, $GAME_PROCESS)
$POINTER_MP = _MemoryRead($POINTER_CHARACTER + $PlayerMPOffset, $GAME_PROCESS)
$POINTER_MAXMP = _MemoryRead($POINTER_CHARACTER + $PlayerMPmaxOffset, $GAME_PROCESS)
_MemoryClose($pid)
If (($POINTER_MP / $POINTER_MAXMP) * 100) <= $Percentage Then Return 1
Return 0
EndFunc ;==>CheckMPPotNeeded
Func useItem($index, $itemTypeId, $pid, $equip = 0)
;//uses the item located at index. By default inventory index
;//is used. If equip=1, then equipment index is used. This
;//is necessary when toggling fly mode, as your fly gear
;//is then used.
;//itemTypeId is the id for
;//the type of item it is. This would be the same as the last
;//part in the url on pwdatabase. example:
;//http://www.pwdatabase.com/pwi/items/3044
;//the itemTypeId for gold is 3044.
Local $packet, $packetSize
$packet = '2800'
$packet &= _Hex($equip, 2)
$packet &= '01'
$packet &= _Hex($index, 2)
$packet &= '00'
$packet &= _Hex($itemTypeId)
$packetSize = 10
sendPacket($packet, $packetSize, $pid)
EndFunc ;==>useItem
The item ID can be found on pwdatabase like here
Other than that i use InfiniteCore to simulate threads with Autopot.
You can just remove that and use it for you own needs. All the offsets are on the first page. If explanation needed, then lemme know, but this should be selfexplaining.
Cheers,
sasukezero
|
|
|
05/09/2017, 00:51
|
#20
|
elite*gold: 0
Join Date: Aug 2013
Posts: 40
Received Thanks: 1
|
what program do i use this in? Don't really understand where im supposed to copy that code to or wat to do with it. Thank you for writing it though. I hope it works well. Could you possibly explain exactly what im suppsoed to do with it or perhaps just upload a version of your own??
|
|
|
05/09/2017, 23:44
|
#21
|
elite*gold: 0
Join Date: Dec 2009
Posts: 70
Received Thanks: 15
|
Quote:
Originally Posted by bmurji
what program do i use this in? Don't really understand where im supposed to copy that code to or wat to do with it. Thank you for writing it though. I hope it works well. Could you possibly explain exactly what im suppsoed to do with it or perhaps just upload a version of your own??
|
Hello bmurji,
to answer your first part. We all are currently using Autoit except a few that use
Autohotkey. This Code however is for Autoit. I myself use SciTE
Version 3.5.4 to compile the Code.
Now to the second part. I'm happy to support with help, if you yourself try to get it to work yourself.
I think im not alone here with that opinion. I myself have come here to search for help, but have tried myself first. I sat down and watched youtube videos, read the forums, programmed, tested etc. to understand how to get things to work and to find/update addresses. You now have a base, especially with Starks offset list and everyone else's support. People are happy to help you when you first of all start and have overall experience in programming.
The informations i provided can be easily used to create the autopot. Everything except the sendpackage func is there. That one can be found here:
Dig yourself into it, test and try. After that I'm happy to help.
Cheers,
sasukezero
|
|
|
05/10/2017, 09:40
|
#22
|
elite*gold: 0
Join Date: Aug 2013
Posts: 40
Received Thanks: 1
|
Quote:
Originally Posted by sasukezero
Hello bmurji,
to answer your first part. We all are currently using Autoit except a few that use
Autohotkey. This Code however is for Autoit. I myself use SciTE
Version 3.5.4 to compile the Code.
Now to the second part. I'm happy to support with help, if you yourself try to get it to work yourself.
I think im not alone here with that opinion. I myself have come here to search for help, but have tried myself first. I sat down and watched youtube videos, read the forums, programmed, tested etc. to understand how to get things to work and to find/update addresses. You now have a base, especially with Starks offset list and everyone else's support. People are happy to help you when you first of all start and have overall experience in programming.
The informations i provided can be easily used to create the autopot. Everything except the sendpackage func is there. That one can be found here:
Dig yourself into it, test and try. After that I'm happy to help.
Cheers,
sasukezero
|
Thanks, I have experience with ini files and autohotkey. I will try to code the autopot myself. I am guessing you did not add a HP pot function so i will just try to copy and paste the parts of the script and edit it for HP pots, as well as charms and elexirs..but I really don't know what I'm doing. I don't really understand why everyone here doesnt just want to share their full scripts so people can edit them easier instead of having to learn programming themselves.. not everyone is a programmer/understands programming. I would happily save your life in hospital because that's my area of expertise
|
|
|
05/13/2017, 20:04
|
#23
|
elite*gold: 0
Join Date: Sep 2013
Posts: 146
Received Thanks: 84
|
I think it is not that people here do not share scripts but rather that everyone has own needs and adjusts the basic functions own their own. You can check several WQ bots or Refine Tolls and alike and you will find nearly every function that you need.
For this autopotter the simple command useItem($PlaceMPpot, 46877, $pid, 0) will use an MP Pot so there is no own pot-function. So for an HP pot all you need to do is change the item ID that you can find in the URL of
|
|
|
06/02/2017, 18:02
|
#24
|
elite*gold: 0
Join Date: Jul 2012
Posts: 1
Received Thanks: 0
|
Hi guys,
I want to scan and dig nearest resources but cant find them (unique id's ).
I thought it something about :
BASE + 0x1C + 0x24 + 0x1C + ??? + i*4 + 0x4 + ??? + 0x110 ...
Does anyone has a snipet how to scan and gather resources now?
-------
I found it! I was inattentive
BASE + 0x1C + 0x1C + 0x24 + 0x1C + i*4 + 0x4 + 0x110/0x114...
|
|
|
06/29/2017, 12:37
|
#25
|
elite*gold: 0
Join Date: Jan 2009
Posts: 16
Received Thanks: 12
|
@ 
Can you paste the working offsets.ini?
Many thanks
|
|
|
06/30/2017, 19:54
|
#26
|
elite*gold: 0
Join Date: Nov 2007
Posts: 17
Received Thanks: 0
|
i got the new offset here but i can't get "HZD v2.0.6.0.zip" FROM denzjh to work... when i open the program it say "LOG on to PW client first before running this app"
|
|
|
07/20/2017, 18:18
|
#27
|
elite*gold: 0
Join Date: Aug 2013
Posts: 40
Received Thanks: 1
|
Quote:
Originally Posted by Stark77
I think it is not that people here do not share scripts but rather that everyone has own needs and adjusts the basic functions own their own. You can check several WQ bots or Refine Tolls and alike and you will find nearly every function that you need.
For this autopotter the simple command useItem($PlaceMPpot, 46877, $pid, 0) will use an MP Pot so there is no own pot-function. So for an HP pot all you need to do is change the item ID that you can find in the URL of 
|
okay well i tried and failed  so some more active help would be appreciated. Thanks
|
|
|
07/21/2017, 10:14
|
#28
|
elite*gold: 0
Join Date: Jul 2011
Posts: 145
Received Thanks: 97
|
These are the offsets I use in my autopot, also can handle defense charms. Also how to read that data. My actual autopot function is weird because I dynamically change the behavior depending on which skills I am using and pvp status.
Code:
global $HP_OffSet = 0x4cc
global $MaxHP_OffSet = 0x520
global $MP_OffSet = $HP_OffSet + 0x4
global $MaxMP_OffSet = $MaxHP_OffSet + 0x4
global $HPCooldown_Offset = 0xc38
global $MPCooldown_Offset = $HPCooldown_Offset + 0x8
global $PlayerCharmActive_Offset = 0x182c
global $PlayerCharmActive_MagBit = 0x10000
global $PlayerCharmActive_PhysBit = 0x100
global $PlayerCharmCooldown_Offset = 0xc98
Func getHPMP()
local $hpmp[6] = [0,0,0,0,0,0]
$Player = _MemoryRead(_MemoryRead(_MemoryRead($ADDRESS_BASE, $GAME_PROCESS) + 0x1C, $GAME_PROCESS) + $Player_Offset, $GAME_PROCESS)
$hpmp[0] = _MemoryRead($Player + $HP_OffSet,$GAME_PROCESS)
$hpmp[1] = _MemoryRead($Player + $MaxHP_OffSet,$GAME_PROCESS)
$hpmp[2] = _MemoryRead($Player + $MP_OffSet,$GAME_PROCESS)
$hpmp[3] = _MemoryRead($Player + $MaxMP_OffSet,$GAME_PROCESS)
$hpmp[4] = _MemoryRead($Player + $HPCooldown_Offset,$GAME_PROCESS) ;If this is zero you can use a pot
$hpmp[5] = _MemoryRead($Player + $MPCooldown_Offset,$GAME_PROCESS)
Return $hpmp
EndFunc
Func getDefenseCharmStatus()
local $result[3] =[0, 0, 0]
$Player = _MemoryRead(_MemoryRead(_MemoryRead($ADDRESS_BASE, $GAME_PROCESS) + 0x1C, $GAME_PROCESS) + $Player_Offset, $GAME_PROCESS)
$result[0] = _MemoryRead($Player + $PlayerCharmCooldown_Offset, $GAME_PROCESS)
$status = _MemoryRead($Player + $PlayerCharmActive_Offset, $GAME_PROCESS)
$result[1] = (BitAND($status, $PlayerCharmActive_PhysBit) > 0)
$result[2] = (BitAND($status, $PlayerCharmActive_MagBit) > 0)
return $result
EndFunc
|
|
|
08/31/2017, 22:40
|
#29
|
elite*gold: 0
Join Date: Sep 2013
Posts: 146
Received Thanks: 84
|
Hey guys. Here an updated list of offsets for the latest PWI content update.
The red offsets are still missing. Would be great if anyone could add them.
;~ #---------- basics ----------#
global realBaseAddress := 0xE7D398
global SendPacketAddress := 0x843AD0
global AutoPathAddress := 0x40A600
global ADDRESS_ACTION1 := 0x4E6FB0
global ADDRESS_ACTION2 := 0x4EC720
global ADDRESS_ACTION3 := 0x4E8080
global ADDRESS_GATHER := 0x4D19B0
global CastAddress := 0x4E07A0
global ADDRESS_FOLLOW := 0x77C900
global partyInviteOffset := 0xE5C0C8
global UnfreezOffset := 0x508
global baseOffset:= 0x1C
global ListOffset := 0x1C
global XposOffset := 0x3C
global YposOffset := 0x44
global ZposOffset := 0x40
;~ #--------- Player ------------#
global PlayerListOffset := 0x1C
global sortedPlayerListOffset := 0x98
global PlayerCounterOffset := 0x18
global playerOffSet := 0x34
global playerNameOffset := 0x80C
global playerIDOffset := 0x4B8
global PlayerHPOffset := 0x4CC
global PlayerHPmaxOffset := 0x520
global PlayerMPOffset := 0x4D0
global PlayerMPmaxOffset := 0x524
global playerLvlOffset := 0x4C4
global PlayerChiOffset := 0x4E0
global PlayerCoins_Offset := 0x5A8
global PlayerClass_Offset := 0x754
global PlayerTarget_Offset := 0x5A4
;~ #-------- NPC ----------------#
global NpcListOffset := 0x20
global sortedNpcListOffset := 0x5c
global NpcCounterOffset := 0x18
global NpcUIDOffset := 0x114
global NpcIDOffset := 0x118
global NpcNameOffset := 0x260
global NpcLVLOffset := 0x120
global NpcHPOffset := 0x128
global NpcHPmaxOffset := 0x17C
global NpcSpecialOffset := 0x24C
;~ #-------- Item ---------------#
global ItemListOffset := 0x24
global sortedItemListOffset := 0x1C
global ItemCounterOffset := 0x14
global ItemNameOffset := 0x168
global ItemUIDOffset := 0x110
global ItemIDOffset := 0x114
;~ #----- Inventory -------------#
global InventoryListOffset := 0x1280
global sortedInventoryListOffset := 0xC
global InventorySizeOffset := 0x10
global InvName_Offset := 0x4C
global InvID_Offset := 0xC
global InvStackAmount_Offset := 0x14
global InvMAXStackAmount_Offset := 0x18
global InvDurability_Offset := 0x74
global InvMaxDurability_Offset := 0x78
global InvSellPrice_Offset := 0x1C
global FlyerID_Offset := 0x6AC
;~ #---------- actions ----------#
global MoveMode_Offset := 0x81C
global playerActionStructOffset := 0x16E4
global SkillsBase_Offset := 0x1710
global SkillsCount_Offset := 0x1714
|
|
|
09/01/2017, 06:40
|
#30
|
elite*gold: 0
Join Date: Dec 2011
Posts: 15
Received Thanks: 26
|
#GaverItem=$004D5980
#SkillCall=$4E4b90
;~ #-------- Item ---------------#
global ItemNameOffset := 0x168 correct = $164
|
|
|
All times are GMT +1. The time now is 04:36.
|
|