|
You last visited: Today at 21:48
Advertisement
PWI Eclipse changes
Discussion on PWI Eclipse changes within the PW Hacks, Bots, Cheats, Exploits forum part of the Perfect World category.
03/29/2015, 15:19
|
#91
|
elite*gold: 0
Join Date: May 2011
Posts: 111
Received Thanks: 94
|
Quote:
Originally Posted by jasty
Seems perfect for this! I will also be able to coordinate the autopotter with my bot to share the genie more efficiently between tree of protection and cloud erupt.
|
When I was coding with GWA2 for Guild Wars we would always put a function within the Kill code to check our health and use a skill to heal when needed. I imagine It would be much easier to do it that way then to AdLib a function every 10 seconds. AdLib is bad unless your trying to keep track of coords or something to find out if your still moving. In your kill script I imagine it would be something like
Code:
If SkillIsRecharged($DeadlyShot) then UseSkill($DeadlyShot, 1)
Just add in there
Code:
If $MyHp < 6000 Then
HealMe($Mana = 0, $Health = 1)
EndIf
If $MyMana < 1000 Then
HealMe($Mana = 1, $Health = 0)
EndIf
Something like that should work great. It saves a lot of memory and is pretty universal to any script that needs to heal in it. You also save a lot of memory by not checking the function every 10 seconds. Just set some constants to read memory of hp and mana and it should only do it when it's needed.
|
|
|
04/05/2015, 20:06
|
#92
|
elite*gold: 0
Join Date: Sep 2013
Posts: 146
Received Thanks: 84
|
Does anyone know how to read the current location of your character (map name)?
|
|
|
04/05/2015, 23:54
|
#93
|
elite*gold: 0
Join Date: Jul 2011
Posts: 145
Received Thanks: 97
|
Quote:
Originally Posted by Stark77
Does anyone know how to read the current location of your character (map name)?
|
From what I can tell the instance ID is at
[[0xD2EBE4]+14]+90
I'm not sure if there's a better chain but that D2EBE4 is static.
This is the list of instance IDs I found (from configs.pck/configs/instance.txt)
1 = Perfect World
101 = 鬼城
102 = Secret Passage
103 = 盘丝洞
104 = 土蝼洞穴
105 = Firecrag Grotto
106 = Den of Rabid Wolves
107 = Cave of the Vicious
108 = Hall of Deception
109 = The Gate of Delirium
110 = Secret Frostcover Grounds
111 = Valley of Disaster
112 = Jungle Ruins
113 = Cave of Sadistic Glee
114 = Wraithgate
115 = 楼兰古都
116 = Eden
117 = Brimstone Pit
118 = Dragon Temple
119 = 海盗岛
120 = Snake Isle
121 = Sage
122 = Demon
123 = Seat of Torment
124 = Abaddon
125 = 飘渺城
126 = 神威狱
127 = The Lunar Glade
128 = Valley of Reciprocity
129 = Frostcovered City
131 = Twilight Temple
132 = Cube of Fate
133 = 天怒神罚
134 = Wedding Church
135 = Faction Base
137 = [Morai]
138 = Phoenix Valley
139 = Endless Universe
140 = Morai Dungeon
141 = Endless Universe Super Mode
142 = Wargod Gulch
143 = Five Emperors
144 = Test Scene
145 = Test Scene
146 = Test Scene
147 = Sunset Valley
148 = Shutter Palace
150 = BOT Island
149 = Dragon Hidden Den
161 = Celestial Vale
162 = Origination
163 = Primal World
166 = Flowsilver Palace
167 = Undercurrent Hall
168 = Primal World Story Mode
169 = Lightsail Cave
170 = Cube of Fate
201 = Etherblade Arena
202 = Lost City Arena
203 = Plume City Arena
204 = Archosaur Arena
213 = Mirage Deserts
214 = Quicksand Maze
230 = Territory War 1
231 = Territory War 2
232 = Territory War 3
233 = Territory War 4
234 = Territory War 5
235 = Territory War 6
|
|
|
04/10/2015, 23:24
|
#94
|
elite*gold: 0
Join Date: Jun 2011
Posts: 18
Received Thanks: 20
|
jasty, can you help me with getting all nearby items (loot)? According to new offsets, I am trying to reach them in this way:
pointer = [ [ [ [base] + 1C] + 14] + 24]
itemBase = [ [pointer + i*4] + 4]
I am checking all 'i' from 0 to 768 if it equals zero, but no results. Only trash. What am I doing wrong?
|
|
|
04/11/2015, 02:15
|
#95
|
elite*gold: 0
Join Date: Sep 2013
Posts: 146
Received Thanks: 84
|
Quote:
Originally Posted by bestvlad
jasty, can you help me with getting all nearby items (loot)? According to new offsets, I am trying to reach them in this way:
pointer = [ [ [ [base] + 1C] + 14] + 24]
itemBase = [ [pointer + i*4] + 4]
I am checking all 'i' from 0 to 768 if it equals zero, but no results. Only trash. What am I doing wrong?
|
try: pointer = [[ [ [ [base] + 1C] + 14] + 24] + 1C]
ItemCounter = [[ [ [ [base] + 1C] + 14] + 24] + 14]
itemBase = [ [pointer + i*4] + 4]
i loop to 1000 using an additional counter (thisCounter) like this
Code:
if !(itemBase = 0) AND (ItemCounter > (thisCounter - 1))
~ read infos...
thisCounter += 1
|
|
|
04/11/2015, 07:36
|
#96
|
elite*gold: 0
Join Date: Jun 2011
Posts: 18
Received Thanks: 20
|
Quote:
Originally Posted by Stark77
try: pointer = [[ [ [ [base] + 1C] + 14] + 24] + 1C]
ItemCounter = [[ [ [ [base] + 1C] + 14] + 24] + 14]
itemBase = [ [pointer + i*4] + 4]
i loop to 1000 using an additional counter (thisCounter) like this
Code:
if !(itemBase = 0) AND (ItemCounter > (thisCounter - 1))
~ read infos...
thisCounter += 1
|
Thanks for reply. And what is initial value of thisCounter? I am initializing it with 0 but no results, even no trash.
|
|
|
04/11/2015, 15:18
|
#97
|
elite*gold: 0
Join Date: Sep 2013
Posts: 146
Received Thanks: 84
|
have you added those the offsets in red text to to chain?
it might be good to just try to print (msgbox) the itemcounter after u droped a few items.
thisCounter is initialed with 1 in my code.
|
|
|
04/11/2015, 20:20
|
#98
|
elite*gold: 0
Join Date: Jun 2011
Posts: 18
Received Thanks: 20
|
Yes, I have added offsets. Thanks for reply, bacause I have initialized ItemCounter with 0. Now it works!
Is there any way to detect if player is moving? For example, I found item, sent packet to pick it and need to wait until pickup.
|
|
|
04/11/2015, 23:50
|
#99
|
elite*gold: 0
Join Date: Sep 2013
Posts: 146
Received Thanks: 84
|
one solution is already posted in this thread here:
see post 35 and 36:
|
|
|
04/12/2015, 00:25
|
#100
|
elite*gold: 0
Join Date: Jun 2011
Posts: 18
Received Thanks: 20
|
Stark, I am thankful to you for replies. While you were offline, I have read this thread and figured out that people found some new ways to move character. I am trying to write my resource harvest bot based on PWFramework (C#). I have rewritten following  function code posted by Remmm:
Code:
public void moveto(float x, float y, float z)
{
ASM asm = new ASM(this.memory);
asm.Pushad();
asm.Mov_EAX((Int32)AddressesAndOffsets.base_address);
asm.Mov_EAX_DWORD_Ptr_EAX();
asm.Mov_EAX_DWORD_Ptr_EAX_Add((Int32)AddressesAndOffsets.base_offset);
asm.Mov_ESI_DWORD_Ptr_EAX_Add((Int32)AddressesAndOffsets.player_offset);
asm.Mov_ECX_DWORD_Ptr_ESI_Add((Int32)AddressesAndOffsets.player_action_struct_offset);
asm.Push6A(1);
asm.Mov_EDX((Int32)AddressesAndOffsets.action1_address);
asm.Call_EDX();
asm.Mov_EDI_EAX();
asm.Lea_EAX_DWORD_Ptr_ESP_Add(18);
asm.Push_EAX();
asm.Mov_EDX(0);
asm.Push_EDX();
asm.Mov_ECX_EDI();
asm.Mov_EDX((Int32)AddressesAndOffsets.action2_address);
asm.Call_EDX();
asm.Mov_ECX_DWORD_Ptr_ESI_Add((Int32)AddressesAndOffsets.player_action_struct_offset);
asm.Mov_EAX(x);
asm.Mov_EDX_EDI();
asm.Add_EDX(20);
asm.Mov_DWORD_Ptr_EDX_EAX();
asm.Mov_EAX(y);
asm.Mov_EDX_EDI();
asm.Add_EDX(24);
asm.Mov_DWORD_Ptr_EDX_EAX();
asm.Mov_EAX(z);
asm.Mov_EDX_EDI();
asm.Add_EDX(28);
asm.Mov_DWORD_Ptr_EDX_EAX();
asm.Push6A(0);
asm.Push6A(1);
asm.Push_EDI();
asm.Push6A(1);
asm.Mov_EDX((Int32)AddressesAndOffsets.action3_address);
asm.Call_EDX();
asm.Popad();
asm.Ret();
asm.RunAsm();
}
}
Here are my offsets (PWI version 844):
Code:
//[Base]
public static uint base_address = 0xD2E444;
public static uint send_packet_adderess = 0x789820;
public static uint unfreeze_offset = 0x4D0;
public static uint autopath_address = 0x456F20;
public static uint gather_address = 0x4975A0;
public static uint action1_address = 0x4A1AA0;
public static uint action2_address = 0x4A7DE0;
public static uint action3_address = 0x4A2090;
public static uint cast_address = 0x48F8A0;
public static uint party_invite_offset = 0xD38B98;
public static uint chat_base_offset = 0xD34128;
public static uint base_offset = 0x1C;
public static uint list_offset = 0x14;
public static uint x_pos_offset = 0x3C;
public static uint y_pos_offset = 0x44;
public static uint z_pos_offset = 0x40;
public static uint packet_function_address = 0x789820;
//[NPC]
public static uint npc_list_offset = 0x20;
public static uint sorted_npc_list_offset = 0x5C;
public static uint npc_counter_offset = 0x18;
public static uint npc_uid_offset = 0x114;
public static uint npc_id_offset = 0x118;
public static uint npc_name_offset = 0x254;
public static uint npc_level_offset = 0x120;
public static uint npc_hp_offset = 0x128;
public static uint npc_max_hp_offset = 0x174;
public static uint npc_special_offset = 0x244;
//[Item]
public static uint item_list_offset = 0x24;
public static uint sorted_item_list_offset = 0x1C;
public static uint item_counter_offset = 0x14;
public static uint item_name_offset = 0x168;
public static uint item_uid_offset = 0x110;
public static uint item_id_offset = 0x114;
//[Player]
public static uint player_offset = 0x28;
public static uint player_list_offset = 0x1C;
public static uint sorted_player_list_offset = 0x98;
public static uint player_counter_offset = 0x9C;
public static uint player_name_offset = 0x6D8;
public static uint player_id_offset = 0x4B8;
public static uint player_hp_offset = 0x4CC;
public static uint player_max_hp_offset = 0x518;
public static uint player_mp_offset = 0x4D0;
public static uint player_max_mp_offset = 0x51C;
public static uint player_lvl_offset = 0x4C4;
public static uint player_chi_offset = 0x4E0;
public static uint player_coins_offset = 0x5A0; //59C
public static uint player_class_offset = 0x6DC;
public static uint player_target_offset = 0x59C;
//[Inventory]
public static uint inventory_list_offset = 0xF90;
public static uint sorted_inventory_list_offset = 0xC;
public static uint inventory_size_offset = 0x14;
public static uint inv_name_offset = 0x4C;
public static uint inv_id_offset = 0xC;
public static uint inv_stack_amount_offset = 0x14;
public static uint inv_max_stack_amount_offset = 0x18;
public static uint inv_durability_offset = 0x74;
public static uint inv_max_durability_offset = 0x78;
public static uint refine_level_offset = 0x90;
public static uint inv_sell_price_offset = 0x1C;
public static uint flyer_id_offset = 0x5D8;
public static uint def_charm_offset = 0x160D;
//[Actions]
public static uint move_mode_offset = 0x6E8;
public static uint player_action_struct_offset = 0x13F0;
public static uint skill_base_offset = 0x141C;
public static uint skills_count_offset = 0x1420;
It works, but what coords should I pass? In-game coords or floating?
|
|
|
04/12/2015, 01:34
|
#101
|
elite*gold: 0
Join Date: Sep 2013
Posts: 146
Received Thanks: 84
|
i designed my movement like this:
Code:
MoveTo(X,Y,Z=0,flyflag=0)
{
if (X < 1000)
{
X := floattohex((X*10)-4000)
Y := floattohex((Y*10)-5500)
Z := floattohex(Z*10)
}
revHex(revX, X)
revHex(revY, Y)
revHex(revZ, Z)
revHex(revBaseAddress, realbaseAddress) ;~0xD2E444
revHex(revADDRESS_ACTION1, ADDRESS_ACTION1) ;~0x4A1AA0
revHex(revADDRESS_ACTION2, ADDRESS_ACTION2) ;~0x4A7DE0
revHex(revADDRESS_ACTION3, ADDRESS_ACTION3) ;~0x4A2090
revHex(OFFSET_ACTIONBASE, playerActionStructOffset) ;~0x13F0
revHex(FLYMODE, flyflag)
func =
func = %func%60
func = %func%B8%revBaseAddress%
func = %func%8B00
func = %func%8B401C
func = %func%8B7028
func = %func%8B8E%OFFSET_ACTIONBASE%
func = %func%6A01
func = %func%BA%revADDRESS_ACTION1%
func = %func%FFD2
func = %func%8BF8
func = %func%8D442418
func = %func%50
func = %func%BA%FLYMODE%
func = %func%52
func = %func%8BCF
func = %func%BA%revADDRESS_ACTION2%
func = %func%FFD2
func = %func%8B8E%OFFSET_ACTIONBASE%
func = %func%B8%revX%
func = %func%8BD7
func = %func%83C220
func = %func%8902
func = %func%B8%revZ%
func = %func%8BD7
func = %func%83C224
func = %func%8902
func = %func%B8%revY%
func = %func%8BD7
func = %func%83C228
func = %func%8902
func = %func%6A00
func = %func%6A01
func = %func%57
func = %func%6A01
func = %func%BA%revADDRESS_ACTION3%
func = %func%FFD2
func = %func%61
func = %func%C3
injectCode(func)
}
help functions:
FloatToHex(f) {
form := A_FormatInteger
SetFormat Integer, HEX
v := DllCall("MulDiv", Float,f, Int,1, Int,1, UInt)
SetFormat Integer, %form%
Return v
}
revHex(byref CodeRev, Code, requestedLength=8)
{
SetFormat, IntegerFast, hex
Code += 0
Code .= ""
SetFormat, IntegerFast, d
CodeRev =
temp2 := substr(Code, 3)
temp2 := "00000000" . temp2
temp := strlen(temp2)-requestedLength + 1
temp2 := substr(temp2, temp)
i := requestedLength - 1
looplength := requestedLength // 2
loop %loopLength%
{
CodeRev := CodeRev . substr(temp2, i, 2)
i := i - 2
}
}
injectCode(opcode)
{
winget, pid, PID, ahk_pid %processID%
ProcessHandle := DllCall("OpenProcess", "int", 2035711, "char", 1, "UInt", PID, "UInt")
functionSize := strlen(opcode)/2
functionAddress := DllCall("VirtualAllocEx", "Uint", ProcessHandle, "Uint", 0, "Uint", functionSize, "Uint", 0x1000, "Uint", 0x40)
MCode(InjectFunction, opcode)
DllCall("WriteProcessMemory", "UInt", ProcessHandle, "UInt", functionAddress, "Uint", &InjectFunction, "Uint", functionSize, "Uint *", 0)
SetFormat, IntegerFast, d
hThrd := DllCall("CreateRemoteThread", "Uint", ProcessHandle, "Uint", 0, "Uint", 0, "Uint", functionAddress, "Uint", 0, "Uint", 0, "Uint", 0)
loop
{
result := DllCall( "WaitForSingleObject", UInt,hThrd, UInt,50 )
if(result <> 258)
{
break
}
sleep 50
if(A_Index > 100)
{
break
}
}
DllCall( "CloseHandle", UInt,hThrd )
DllCall("VirtualFreeEx", "Uint", ProcessHandle, "Uint", functionAddress, "Uint", 0, "Uint", 0x8000)
DllCall( "CloseHandle", UInt,ProcessHandle )
}
so if u pass the ingame coordinates it will recalculate them. using the reversed hexa form is ofc necessary. dont know if that helps.
short example:
ingameX := 500.0
X := floattohex((ingameX*10)-4000) ; = 0x447A0000
revHex(revX, X) ; = 0x00007a44 -> pass this to injected code
|
|
|
04/12/2015, 17:27
|
#102
|
elite*gold: 0
Join Date: Jul 2011
Posts: 145
Received Thanks: 97
|
Anyone have code that can quickly switch between characters and accounts?
Something more accurate than blindly sending keypresses and hoping for the best. What is everyone doing for this?
|
|
|
04/12/2015, 19:55
|
#103
|
elite*gold: 0
Join Date: Sep 2013
Posts: 146
Received Thanks: 84
|
Do you mean how others play on mutliple clients and select the one they want? Or do u mean how we log accounts?
|
|
|
04/12/2015, 20:08
|
#104
|
elite*gold: 0
Join Date: Jun 2011
Posts: 18
Received Thanks: 20
|
Stark77, thanks for coords transform function btw. I was using simple true floating coords obtained from player struct but when I excecute my function, character begins to move to the south permanently (Y --> 0). I don't know, what is wrong. I have checked all bytes and numbers. Everything is right when the bytecode executes. Did you have such kind of problem?
|
|
|
04/12/2015, 20:34
|
#105
|
elite*gold: 0
Join Date: Jul 2011
Posts: 145
Received Thanks: 97
|
Quote:
Originally Posted by Stark77
Do you mean how others play on mutliple clients and select the one they want? Or do u mean how we log accounts?
|
Logging out and logging in, choosing characters from the character select screen. You could do it kinda with mouse/keyboard presses but I don't know how to verify when controls have focus or how long you have to wait. I was wondering what people are doing if it is more reliable.
Controlling multiple clients is just managing multiple pid and doesn't require specific game knowledge.
|
|
|
 |
|
Similar Threads
|
WTS 4 lvl 50 -Red eclipse
04/27/2013 - Star Wars: The Old Republic Trading - 1 Replies
================High-End Account================
Hi there
I want to sell my High-end SWTOR account wich is based on the server " The Red-eclipse "
I am a Hard-core gamer and always want the best gear for my characters, this is no diferant with this account. I am a well known and respected player on this server ( the char names are in good standing :). How ever i dont have the time to play anymore wich ofcourse breaks my heart but my career comes first.
Here by i am offering my...
|
Fly For Eclipse !!
07/18/2011 - Flyff Private Server - 5 Replies
Kann es sein das der Server oft abkackt?:D
und wenn ja wie lange bleibt er dann off??
|
Eclipse Flyff
07/12/2011 - Flyff Trading - 2 Replies
Hey, hat jemand Interesse an mehrere Imba Eclipse Flyff Chars?
http://www7.pic-upload.de/thumb/01.06.11/y9n1bcfi twcx.png
Hab noch viele Rare Item's wo du locker 500b zusammen bekommst
hab noch mehrere Imba chars.
Interesse? dann schreib hier :>
|
My Eclipse to your Demon.
04/04/2011 - Flyff Trading - 0 Replies
Hi dears..
I'm Trading all my itens and money on Eclipse flyff to itens or money on demon flyff.
On Eclipse,I have Many Solar Weapon's,Cs Sets,Bike,Pets
and so much money.
If you are interested,add me on msn.
[email protected]
:mofo:
|
C++ in Eclipse
02/01/2010 - C/C++ - 2 Replies
Huhu,
kann mir mal bitte jemand helfen. Ich habe im Internet ein Tutorial befolgt um C++/C auf Eclipse zu programmieren. Ich habe alles befolgt wies sein sollte, laut Tutorial. Wenn ich nun build mache, dann kommt folgendes:
Habe die Eclipse CDT und MinGW installiert.
Habe danach auch ein wenig gegoogelt und nichts hilfreiches gefunden. Ich vermute, dass ich irgendwo noch einen Pfad verändern muss, aber ich weiß nicht wo.
|
All times are GMT +1. The time now is 21:49.
|
|