-
[Development] Adding Effects to Items (Easy Way)
Well, I now have a much better method than this, so I made this for those who want to learn something interesting..
First thing to understand: Formulas for calc "ItemID" and "ObjectID"
for ItemID is: #define ItemId(x, y) ((x * 512) + y)
Small explain:
x = item type get of your: Item(XXX).txt from server side
y = item index get of your: Item(XXX).txt from server side
512 = is max item index possible on: Item.bmd from client side
For example:
for calculate ItemID for item: "Divine Sword of Archangel" you must apply the Formula
Divine Sword ItemId = 0 * 512 + 19 = 19 (This value must be passed to hexadecimal: 0x13)
then: 0x13 is ItemId for: Divine Sword of Archangel (on any main.exe version more than: 1.01 series)
but, for example for calculate ItemID for: "Wings of Storm" of Blade Master:
Wings of Storm ItemId = 12 * 512 + 36 = 6180 (This value must be passed to hexadecimal: 0x1824)
then: 0x1824 is ItemId for: Wings of Storm (of course than on any main.exe more than: 1.01 series, and in main.exe from versions more old not exists this wings :p)
for ObjectID is: #define ObjectId(x, y) ((x * 512) + y + ItemArray)
Well is the same.. but have 1 aditional factor: ItemArray?? is very simple to find for any version of main.exe, in my case is: 834 (in decimal value) but in hexadecimal value is: 0x342
Small Guide to find: "ItemArray" in any main.exe (more than: 1.01 series)
http://forum.ragezone.com/f508/item-...effect-868154/
Well then to calculate our ObjectID for each case of Item:
for example: Wings of Storm ObjectID = 12 * 512 + 36 + 834 = 7014 (in decimal value but passed to hexadecimal value is: 0x1B66)
then: 0x1B66 is ObjectID for: Wings of Storm in own main.exe version: 1.03.11 JPN :)
with main.exe open in ollydbg -> second click -> search for -> all constants and write: 1B66
http://i.imgur.com/Dz7gPDV.jpg
the function allocated on: 005CFAC0 is the function for identifier: Wings of Storm and Render Sprites and Effects on this..
Well here a Individual part of code for understand..
Code:
void __declspec(naked) WingsOfStormEffect(){
_asm
{
MOV EAX, DWORD PTR SS:[EBP+0x0C]
MOV dwItem, EAX
CMP dwItem,ObjectId(12,36) //Original case for Wings of Storm item
JE Return
Return:
MOV ECX,0x005CFAC7
JMP ECX
}
}
then.. If you add your own item to this Assembler Inline function re-writed of 1 asm Line of main.exe, and you put on your added item like: .smd the same count of Bones or Nodes, and convert to: .bmd, put on your client folder ussually: "Data/Item", and hook your compiled: Nemesis.dll to your: 1.03k JPN main.exe, you can see something like this:
http://i.imgur.com/QnrasgZ.jpg
Download FULL SOURCE CODE (100% FIXED NOT EXTRANGE CRASHS):
https://mega.co.nz/#!WJYgxIZJ!-kF7Xk...3dzix-Mt48uRoE
PS 1 :
Sorry for put the same effect on this Staff you must add your item case ObjectID in: WingsOfIllusion Inline function of my code and usage this model: https://mega.co.nz/#!fMhi1BJR!pnDeI6...VoKWzbzdfbHJfg
PS 2 :
For create your own items using this method of: "COPY" of original Wings 3 Effects every one of your added models .bmd must have exactly the same: counts of: Bones or Nodes, than original Wings Models effect, because main.exe get bone positions for calculate the effect lights positions.
Example with: Staff of Angel .smd:
Code:
version 1
nodes
0 "Box01" -1
1 "Bone01" 0
2 "Bone02" 1
3 "Bone03" 2
4 "Bone35" 2
5 "Bone34" 2
6 "Bone33" 2
7 "Bone32" 2
8 "Bone31" 2
9 "Bone36" 1
10 "Bone04" 1
11 "Bone05" 10
12 "Bone06" 11
13 "Bone37" 11
14 "Bone38" 1
15 "Bone07" 0
16 "Bone08" 15
17 "Bone09" 16
18 "Bone40" 16
19 "Bone39" 15
20 "Bone51" 0
21 "Bone52" 20
22 "Bone53" 21
23 "Bone43" 21
24 "Bone42" 21
25 "Bone41" 21
26 "Bone45" 21
27 "Bone44" 21
28 "Bone54" 20
29 "Bone55" 28
30 "Bone56" 29
31 "Bone47" 29
32 "Bone46" 20
33 "Bone48" 20
34 "Bone57" 0
35 "Bone58" 34
36 "Bone59" 35
37 "Bone50" 35
38 "Bone49" 34
end
skeleton
time 0
0 0.000000 -100.000000 -0.333302 1.570796 -0.000000 0.000000
1 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
2 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
3 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
4 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
5 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
6 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
7 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
8 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
9 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
10 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
11 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
12 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
13 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
14 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
15 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
16 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
17 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
18 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
19 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
20 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
21 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
22 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
23 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
24 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
25 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
26 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
27 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
28 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
29 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
30 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
31 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
32 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
33 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
34 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
35 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
36 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
37 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
38 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
end
38 is Bone count on: Wings of Illusion original one item than get this effects. :):
Credits for this: ONLY FOR ME (I create this method, like 1 easy way to render cool lights on Items)
And this is like Small Guide for noobs, because people with more knowledge, they may think that this is a silly method, but silly.. or not silly, this method works.
-
re: [Development] Adding Effects to Items (Easy Way)
Very interesting, Thanks for sharing I am the first to comment XD :tongue:
-
re: [Development] Adding Effects to Items (Easy Way)
Excelente,surely will help a lot :D
-
re: [Development] Adding Effects to Items (Easy Way)
I downloaded your code to analyze me and I noticed that you put the offsets of the wings ..
If I wanted to apply these effects in a wing custon, where in the code I put the id of this wing custon?
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
walter29
I downloaded your code to analyze me and I noticed that you put the offsets of the wings ..
If I wanted to apply these effects in a wing custon, where in the code I put the id of this wing custon?
for example:
Code:
void __declspec(naked) WingsOfStormEffect()
{
_asm
{
MOV EAX, DWORD PTR SS:[EBP+0x0C]
MOV dwItem, EAX
CMP dwItem,ObjectId(12,XX) //XX = your Wings Index get of your: Item(kor).txt file
JE Return
CMP dwItem,ObjectId(12,36) //Original case for Wings of Storm item
JE Return
Return:
MOV ECX,0x005CFAC7
JMP ECX
}
}
PS: is easy.. but remember that your custom model wings must have the same count of Bones, that original Wings model of the Effect.
-
re: [Development] Adding Effects to Items (Easy Way)
mauro07, analyzing the code again I realized that the offsets to find the two using the formula:
Quote:
for example: Wings of Storm ObjectID = 12 * 512 + 36 + 834 = 7014 (in decimal value but passed to hexadecimal value is: 0x1B66)
as shown in the image below:
http://i.imgur.com/cZob7iR.png
Thus I wonder then what the need to seek the ItemID as in the example below? :
Quote:
Wings of Storm ItemId = 12 * 512 + 36 = 6180 (This value must be passed to hexadecimal: 0x1824)
In that part of the offset or hexa this item fits in code?
and that number 5 after the offset refers to what?
Quote:
void WingsLevel3EffectsHook()
{
SetNop(0x005CFAC0, 5);
WriteJmp(0x005CFAC0, (DWORD)&WingsOfStormEffect);
From already thank you very much for your attention.
-
re: [Development] Adding Effects to Items (Easy Way)
Amazing! Thanks, Nemesis ;)
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
psychedelic
Amazing! Thanks, Nemesis ;)
with more work.. you can change too in code the: Bone Count look this:
Code:
CPU Disasm
Address Hex dump Command Comments
005CFB89 |. C785 24FEFFFF MOV DWORD PTR SS:[EBP-1DC],9
005CFB93 |. C785 28FEFFFF MOV DWORD PTR SS:[EBP-1D8],14
005CFB9D |. C785 2CFEFFFF MOV DWORD PTR SS:[EBP-1D4],13
005CFBA7 |. C785 30FEFFFF MOV DWORD PTR SS:[EBP-1D0],0A
005CFBB1 |. C785 34FEFFFF MOV DWORD PTR SS:[EBP-1CC],12
005CFBBB |. C785 38FEFFFF MOV DWORD PTR SS:[EBP-1C8],1C
005CFBC5 |. C785 3CFEFFFF MOV DWORD PTR SS:[EBP-1C4],1B
005CFBCF |. C785 40FEFFFF MOV DWORD PTR SS:[EBP-1C0],24
005CFBD9 |. C785 44FEFFFF MOV DWORD PTR SS:[EBP-1BC],23
005CFBE3 |. C785 48FEFFFF MOV DWORD PTR SS:[EBP-1B8],26
005CFBED |. C785 4CFEFFFF MOV DWORD PTR SS:[EBP-1B4],25
005CFBF7 |. C785 50FEFFFF MOV DWORD PTR SS:[EBP-1B0],35
005CFC01 |. C785 54FEFFFF MOV DWORD PTR SS:[EBP-1AC],30
005CFC0B |. C785 58FEFFFF MOV DWORD PTR SS:[EBP-1A8],3E
005CFC15 |. C785 5CFEFFFF MOV DWORD PTR SS:[EBP-1A4],46
005CFC1F |. C785 60FEFFFF MOV DWORD PTR SS:[EBP-1A0],48
005CFC29 |. C785 64FEFFFF MOV DWORD PTR SS:[EBP-19C],47
005CFC33 |. C785 68FEFFFF MOV DWORD PTR SS:[EBP-198],4E
005CFC3D |. C785 6CFEFFFF MOV DWORD PTR SS:[EBP-194],4F
005CFC47 |. C785 70FEFFFF MOV DWORD PTR SS:[EBP-190],50
005CFC51 |. C785 74FEFFFF MOV DWORD PTR SS:[EBP-18C],57
005CFC5B |. C785 78FEFFFF MOV DWORD PTR SS:[EBP-188],5A
005CFC65 |. C785 7CFEFFFF MOV DWORD PTR SS:[EBP-184],5B
005CFC6F |. C785 80FEFFFF MOV DWORD PTR SS:[EBP-180],6A
005CFC79 |. C785 84FEFFFF MOV DWORD PTR SS:[EBP-17C],66
005CFC83 |. C785 1CFEFFFF MOV DWORD PTR SS:[EBP-1E4],0
005CFC8D |. C785 20FEFFFF MOV DWORD PTR SS:[EBP-1E0],0
debugged from 1.03.11 jpn, this are: Bones from: Wings of Storm by: BoneId :lol:
and this:
Code:
005CFC83 |. C785 1CFEFFFF MOV DWORD PTR SS:[EBP-1E4],0
PS: 1E4 or: 0x1E4 is the total size of OBJ_STRUCT from this main :O:
-
re: [Development] Adding Effects to Items (Easy Way)
mauro07, sorry for my ignorance but if your answer was regarding my doubts I do not understand anything^^
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
walter29
mauro07, analyzing the code again I realized that the offsets to find the two using the formula:
as shown in the image below:
http://i.imgur.com/cZob7iR.png
Thus I wonder then what the need to seek the ItemID as in the example below? :
In that part of the offset or hexa this item fits in code?
and that number 5 after the offset refers to what?
From already thank you very much for your attention.
Search ItemID, at least for add Sprites on items.. not is necessary.. but I explain this, because in server side (gameserver), the formula used is: ItemID to find all procs related to Wings (for example), for make fixes. and main.exe use: ItemID formula for some another importants special properties from: Items.. in character inventory view for example.
5 is count of nops for the function: SetNop, because.. in this code I make a JMP from: main.exe code (to) -> Nemesis.dll re-writed code and again from: Nemesis.dll code (to) -> main.exe normal load code..
This code replaces that line of code in the main, by the content of the function in in-line assembly: WingsOfStorm, then the sum of the memory address in the main.exe which is no longer used must be annulled by the function in this case called: SetNop.
I think that you must learn more about assembler :lol:
-
re: [Development] Adding Effects to Items (Easy Way)
Yes friend you are absolutely right, I have to learn more about assembler ^ ^ I'm pretty novice in this area of programming of muonline, I am venturing to learn this because I found very interesting to add effects to items, I am very thankful to be sharing and also giving support for us.
-
re: [Development] Adding Effects to Items (Easy Way)
and here I leave full decompile from: 1.03.11 jpn main.exe -> Wings of Storm (12, 36) sprites effects with IDA:
Code:
switch ( a2 )
{
case 7014:
v263 = 0;
v264 = 0;
v265 = 0;
v230 = 0;
v231 = 0;
v232 = 0;
v48 = flt_596ABD8 * 0.00039999999;
v48 = sub_4A1F10(v48);
v266 = sub_5F5EB1(v48) * 0.40000001;
*(float *)&v233 = v266 + 0.5;
v234 = v266 + 0.5;
v235 = v266 + 0.5;
v238 = 9;
v239 = 20;
v240 = 19;
v241 = 10;
v242 = 18;
v243 = 28;
v244 = 27;
v245 = 36;
v246 = 35;
v247 = 38;
v248 = 37;
v249 = 53;
v250 = 48;
v251 = 62;
v252 = 70;
v253 = 72;
v254 = 71;
v255 = 78;
v256 = 79;
v257 = 80;
v258 = 87;
v259 = 90;
v260 = 91;
v261 = 106;
v262 = 102;
v236 = 0.0;
for ( j = 0; j < 25; ++j )
{
sub_4CC40E(
LODWORD(v352),
(int)((char *)&unk_6AB486C + 48 * *(&v238 + j)),
(int)&v263,
(int)&v230,
1);
v236 = 0.5;
*(float *)&v47 = flt_596ABD8 * 0.0099999998;
sub_6BABF2(32242, (int)&v230, 1056964608, (int)&v233, a1, v47, 1);
}
v224 = 11;
v225 = 21;
v226 = 29;
v227 = 63;
v228 = 81;
v229 = 89;
if ( !(rand() % 2) )
{
for ( j = 0; j < 6; ++j )
{
sub_4CC40E(
LODWORD(v352),
(int)((char *)&unk_6AB486C + 48 * *(&v224 + j)),
(int)&v263,
(int)&v230,
1);
if ( !(rand() % 20) )
{
*(float *)&v233 = 0.60000002;
v234 = 0.60000002;
v235 = 0.89999998;
sub_650FF0(388, (int)&v230, a1 + 264, (int)&v233, 1, a1, -1, 0, 0, 0, 0.0, -1);
}
}
}
v267 = 64;
v268 = 61;
v269 = 69;
v270 = 77;
v271 = 86;
v272 = 98;
v273 = 97;
v274 = 99;
v275 = 104;
v276 = 103;
v277 = 105;
v278 = 12;
v279 = 8;
v280 = 17;
v281 = 26;
v282 = 34;
v283 = 52;
v284 = 44;
v285 = 51;
v286 = 50;
v287 = 49;
v288 = 45;
v48 = flt_596ABD8 * 0.003;
v48 = sub_4A1F10(v48);
v236 = sub_5F5EB1(v48) * 0.2;
for ( j = 0; j < 22; ++j )
{
sub_4CC40E(
LODWORD(v352),
(int)((char *)&unk_6AB486C + 48 * *(&v267 + j)),
(int)&v263,
(int)&v230,
1);
if ( *(&v267 + j) != 12
&& *(&v267 + j) != 64
&& *(&v267 + j) != 98
&& *(&v267 + j) != 52 )
{
*(float *)&v233 = 0.80000001;
v234 = 0.5;
v235 = 0.2;
*(float *)&v44 = v236 + 0.30000001;
sub_6BABF2(32002, (int)&v230, v44, (int)&v233, a1, 0, 0);
}
else
{
*(float *)&v233 = 0.89999998;
v234 = 0.0;
v235 = 0.0;
*(float *)&v44 = v236 + 1.4;
sub_6BABF2(32002, (int)&v230, v44, (int)&v233, a1, 0, 0);
}
}
break;
switch (a2) = switch(ObjectId)
and this vXXX are: BoneIds xD
v238 = 9;
v239 = 20;
v240 = 19;
v241 = 10;
v242 = 18;
v243 = 28;
v244 = 27;
v245 = 36;
v246 = 35;
v247 = 38;
v248 = 37;
v249 = 53;
v250 = 48;
v251 = 62;
v252 = 70;
v253 = 72;
v254 = 71;
v255 = 78;
v256 = 79;
v257 = 80;
v258 = 87;
v259 = 90;
v260 = 91;
v261 = 106;
v262 = 102;
v236 = 0.0;
the complete proc for render effects on all items in client init on: 005CDA66
and here I leave the full pseudo code decompiled with ida from: 1.03.11 jpn
http://www.mediafire.com/download/be...udo_by_ida.rar
more?? look this people:
Code:
case 861:
v301 = 0.1;
*(float *)&v302 = 0.89999998;
*(float *)&v303 = 0.1;
sub_4CC249(v310, (int)&v304, SLODWORD(v309), 1, 0);
sub_6BABF2(32358, (int)&v304, 1058642330, (int)&v301, v300, 0, 0);
sub_4CC249(v310, (int)&v304, SLODWORD(v309), 2, 0);
sub_6BABF2(32358, (int)&v304, 1056964608, (int)&v301, v300, 0, 0);
sub_4CC249(v310, (int)&v304, SLODWORD(v309), 3, 0);
sub_6BABF2(32358, (int)&v304, 1056964608, (int)&v301, v300, 0, 0);
sub_4CC249(v310, (int)&v304, SLODWORD(v309), 4, 0);
sub_6BABF2(32358, (int)&v304, 1056964608, (int)&v301, v300, 0, 0);
sub_4CC249(v310, (int)&v304, SLODWORD(v309), 5, 0);
sub_6BABF2(32358, (int)&v304, 1053609165, (int)&v301, v300, 0, 0);
sub_4CC249(v310, (int)&v304, SLODWORD(v309), 6, 0);
sub_6BABF2(32358, (int)&v304, 1050253722, (int)&v301, v300, 0, 0);
sub_4CC249(v310, (int)&v304, SLODWORD(v309), 7, 0);
sub_6BABF2(32358, (int)&v304, 1050253722, (int)&v301, v300, 0, 0);
for ( n = 1; n <= 7; ++n )
{
if ( !(rand() % 4) )
{
*(float *)&v304 = 0.0;
v305 = 0.0;
v306 = 0.0;
v224 = rand() % 7 + 1;
sub_4CC249(v310, (int)&v304, SLODWORD(v309), n, 0);
sub_69BCD9(32271, (int)&v304, LODWORD(v309) + 264, (int)&v301, 12, 0.5, SLODWORD(v309));
}
}
break;
Sword Breaker case 861 of switch :D
Formula for calc ObjectID from Sword Breaker: 0 * 512 + 27 + 834 = 861 (in decimal value)
-
re: [Development] Adding Effects to Items (Easy Way)
mauro07,I tried to use the effect of item Chaos Dragon Axe on a custon mace, but it does not work out, because I do not know if it was because I put the wrong offset ...
for example: Chaos Dragon Axe ObjectID = 2 * 512 + 6 + 834 = 1864 (in decimal value but passed to hexadecimal value is:748)
I found these offsets as shown in the image below, but I'm not sure which one is right:
http://i.imgur.com/Li3iZTY.png
Chose the offset that the arrow is pointing to your code and added these lines:
Quote:
void __declspec(naked) ChaosDragonAxeEffect()
{
_asm
{
MOV EAX, DWORD PTR SS:[EBP+0x0C]
MOV dwItem, EAX
CMP dwItem,ObjectId(2,30)
JE Return
Return:
MOV ECX,0x005BFE5D
JMP ECX
}
}
void __declspec(naked) WingsOfStormEffect()
{
Quote:
void WingsLevel3EffectsHook()
{
SetNop(0x005BFE56, 5);
WriteJmp(0x005BFE56, (DWORD)&ChaosDragonAxeEffect);
SetNop(0x005CFAC0, 5);
WriteJmp(0x005CFAC0, (DWORD)&WingsOfStormEffect);
SetNop(0x005D008B, 5);
WriteJmp(0x005D008B, (DWORD)&WingsOfVortexEffect);
Now I do not know if wrong in choosing the correct offset or if I did something wrong in the code, since the effect did not work :/:
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
walter29
mauro07,I tried to use the effect of item Chaos Dragon Axe on a custon mace, but it does not work out, because I do not know if it was because I put the wrong offset ...
for example: Chaos Dragon Axe ObjectID = 2 * 512 + 6 + 834 = 1864 (in decimal value but passed to hexadecimal value is:748)
I found these offsets as shown in the image below, but I'm not sure which one is right:
http://i.imgur.com/Li3iZTY.png
Chose the offset that the arrow is pointing to your code and added these lines:
Now I do not know if wrong in choosing the correct offset or if I did something wrong in the code, since the effect did not work :/:
bad function hook man! I think that your correct function is: 0x004F69FB, look better in your screenshot :)
CMP DWORD PTR SS:[EBP-0x4CC],0x748
PS: YOUR FUNCTION IS BAD!, you must restore original EBP-4CC case in your code:
void __declspec(naked) ChaosDragonAxeEffect()
{
_asm
{
MOV EAX, DWORD PTR SS:[EBP-0x4CC]
MOV dwItem, EAX
CMP dwItem,ObjectId(2,30)
JE Return
Return:
MOV EAX,0x005BFE5D
JMP EAX
}
}
you must try to use the original register to restore section look this:
http://i.imgur.com/A642KSj.jpg
THE COMPLETE EFFECT CODE FOR CHAOS DRAGON AXE:
Code:
CPU DisasmAddress Hex dump Command Comments
004F7E36 |> \C685 88FDFFFF MOV BYTE PTR SS:[EBP-278],0
004F7E3D |. C745 BC 00000 MOV DWORD PTR SS:[EBP-44],0
004F7E44 |. C745 C0 0000A MOV DWORD PTR SS:[EBP-40],C2A80000
004F7E4B |. C745 C4 00000 MOV DWORD PTR SS:[EBP-3C],0
004F7E52 |. 6A 01 PUSH 1 ; /Arg4 = 1
004F7E54 |. 8D45 E4 LEA EAX,[EBP-1C] ; |
004F7E57 |. 50 PUSH EAX ; |Arg3
004F7E58 |. 8D4D BC LEA ECX,[EBP-44] ; |
004F7E5B |. 51 PUSH ECX ; |Arg2
004F7E5C |. 8B95 90FDFFFF MOV EDX,DWORD PTR SS:[EBP-270] ; |
004F7E62 |. 33C0 XOR EAX,EAX ; |
004F7E64 |. 8A42 05 MOV AL,BYTE PTR DS:[EDX+5] ; |
004F7E67 |. 6BC0 30 IMUL EAX,EAX,30 ; |
004F7E6A |. 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+0C] ; |
004F7E6D |. 8B91 A4010000 MOV EDX,DWORD PTR DS:[ECX+1A4] ; |
004F7E73 |. 03D0 ADD EDX,EAX ; |
004F7E75 |. 52 PUSH EDX ; |Arg1
004F7E76 |. 8B45 0C MOV EAX,DWORD PTR SS:[EBP+0C] ; |
004F7E79 |. 8B48 30 MOV ECX,DWORD PTR DS:[EAX+30] ; |
004F7E7C |. 69C9 F4000000 IMUL ECX,ECX,0F4 ; |
004F7E82 |. 8B15 28CB9605 MOV EDX,DWORD PTR DS:[596CB28] ; |
004F7E88 |. 03CA ADD ECX,EDX ; |
004F7E8A |. E8 7F45FDFF CALL 004CC40E ; \main.004CC40E
004F7E8F |. D905 D8AB9605 FLD DWORD PTR DS:[596ABD8] ; FLOAT 0.0
004F7E95 |. D80D 00B78800 FMUL DWORD PTR DS:[88B700] ; FLOAT 0.004000000
004F7E9B |. 51 PUSH ECX
004F7E9C |. D91C24 FSTP DWORD PTR SS:[ESP] ; /Arg1
004F7E9F |. E8 6CA0FAFF CALL 004A1F10 ; \main.004A1F10
004F7EA4 |. 83C4 04 ADD ESP,4
004F7EA7 |. D80D 90B48800 FMUL DWORD PTR DS:[88B490] ; FLOAT 0.3000000
004F7EAD |. D805 4CB18800 FADD DWORD PTR DS:[88B14C] ; FLOAT 0.7000000
004F7EB3 |. D99D 8CFDFFFF FSTP DWORD PTR SS:[EBP-274]
004F7EB9 |. D985 8CFDFFFF FLD DWORD PTR SS:[EBP-274]
004F7EBF |. D80D 889A8800 FMUL DWORD PTR DS:[889A88] ; FLOAT 1.000000
004F7EC5 |. D95D AC FSTP DWORD PTR SS:[EBP-54]
004F7EC8 |. D985 8CFDFFFF FLD DWORD PTR SS:[EBP-274]
004F7ECE |. D80D 64B28800 FMUL DWORD PTR DS:[88B264] ; FLOAT 0.2000000
004F7ED4 |. D95D B0 FSTP DWORD PTR SS:[EBP-50]
004F7ED7 |. D985 8CFDFFFF FLD DWORD PTR SS:[EBP-274]
004F7EDD |. D80D 60B28800 FMUL DWORD PTR DS:[88B260] ; FLOAT 0.1000000
004F7EE3 |. D95D B4 FSTP DWORD PTR SS:[EBP-4C]
004F7EE6 |. 6A 00 PUSH 0
004F7EE8 |. 6A 00 PUSH 0
004F7EEA |. 8B45 0C MOV EAX,DWORD PTR SS:[EBP+0C]
004F7EED |. 50 PUSH EAX
004F7EEE |. 8D4D AC LEA ECX,[EBP-54]
004F7EF1 |. 51 PUSH ECX
004F7EF2 |. D985 8CFDFFFF FLD DWORD PTR SS:[EBP-274]
004F7EF8 |. D805 60A58800 FADD DWORD PTR DS:[88A560] ; FLOAT 1.500000
004F7EFE |. 51 PUSH ECX
004F7EFF |. D91C24 FSTP DWORD PTR SS:[ESP]
004F7F02 |. 8D55 E4 LEA EDX,[EBP-1C]
004F7F05 |. 52 PUSH EDX
004F7F06 |. 68 627D0000 PUSH 7D62
004F7F0B |. E8 E22C1C00 CALL 006BABF2
004F7F10 |. 83C4 1C ADD ESP,1C
BECAUSE THIS OFFSET: 004F6A05 MAKE A JUMP WITH CONDITIONAL TO: 004F7E36 |> \C685 88FDFFFF MOV BYTE PTR SS:[EBP-278],0
CALL 004CC40E IS CALL TO GETBONEID FUNCTION
FLD DWORD PTR DS:[596ABD8] IS STATIC CALL TO WORLDTIME FUNCTION
CALL 004A1F10 I DON'T KNOW..
004F7EE6 |. 6A 00 PUSH 0 //unk
004F7EE8 |. 6A 00 PUSH 0 //this is bone id
PUSH 7D62 IS EFFECT TEXTURE
CALL 006BABF2 IS CALL TO DRAW EFFECT IN SCREEN
-
re: [Development] Adding Effects to Items (Easy Way)
tried to change the code here but I had no success, I'm already with the whole mind messy here so much I need to understand, I have to give a good asm studied in order to understand better, because it is very complex to me kkkkk
-
re: [Development] Adding Effects to Items (Easy Way)
-
re: [Development] Adding Effects to Items (Easy Way)
to ragezone....thank to all ....
now...to add effect to new wings with 100% Effect....you must have....
exp: wing MG 3:
// Van_Bom add
SetNop(0x005C4217, 5);
WriteJmp(0x005C4217, (DWORD)&WingsSetBrightEffect);
void __declspec(naked) WingsSetBrightEffect() // Hieu ung sa'ng hon cua wing MG 3 ta co the tim tuong tu cho wing khac
{
_asm
{
MOV EAX, DWORD PTR SS:[EBP+0x10]
MOV dwItem, EAX
CMP dwItem,ObjectId(12,66) // code new wing add by me
JE Return
CMP dwItem,ObjectId(12,39) // MG wing 3 WebZen
JE Return
Return:
MOV ECX,0x005C421E
JMP ECX
}
}
thank to nemis and mauro07....I love forum...(^_^)...
this video effect 99% because I don't add bright, If you add bright you will effect 100%...
https://www.youtube.com/watch?v=7Bhu...ature=youtu.be
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
Van_Bom
to ragezone....thank to all ....
now...to add effect to new wings with 100% Effect....you must have....
exp: wing MG 3:
// Van_Bom add
SetNop(0x005C4217, 5);
WriteJmp(0x005C4217, (DWORD)&WingsSetBrightEffect);
void __declspec(naked) WingsSetBrightEffect() // Hieu ung sa'ng hon cua wing MG 3 ta co the tim tuong tu cho wing khac
{
_asm
{
MOV EAX, DWORD PTR SS:[EBP+0x10]
MOV dwItem, EAX
CMP dwItem,ObjectId(12,66) // code new wing add by me
JE Return
CMP dwItem,ObjectId(12,39) // MG wing 3 WebZen
JE Return
Return:
MOV ECX,0x005C421E
JMP ECX
}
}
thank to nemis and mauro07....I love forum...(^_^)...
this video effect 99% because I don't add bright, If you add bright you will effect 100%...
https://www.youtube.com/watch?v=7BhuOoAPLj8&feature=youtu.be
Thanks van_bom!Working in Main 1.04D?
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
huythao229
Thanks van_bom!Working in Main 1.04D?
yeah works with any main.exe version, you only must research offsets for every function, fix registers and test! xD
PS: I can make for 1.04d GMO main.exe too, without extrange bugs and 100% usable, If you like wait for my release, maybe in 1 hour, I can have ready 1 interesting code for u man. :)
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
mauro07
yeah works with any main.exe version, you only must research offsets for every function, fix registers and test! xD
PS: I can make for 1.04d GMO main.exe too, without extrange bugs and 100% usable, If you like wait for my release, maybe in 1 hour, I can have ready 1 interesting code for u man. :)
Nemesis, maybe you can help with some offsets from game engine released source?)) i need item and textures limit offsets for 1.03.25 jpn main =\ i researched only 4 offsets, but another i cant find. I'm noob in asm:)
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
mauro07
yeah works with any main.exe version, you only must research offsets for every function, fix registers and test! xD
PS: I can make for 1.04d GMO main.exe too, without extrange bugs and 100% usable, If you like wait for my release, maybe in 1 hour, I can have ready 1 interesting code for u man. :)
Excellent Thank you verry much! Watting release for you!
-
re: [Development] Adding Effects to Items (Easy Way)
Well look this brothers.. xD
Code:
THIS IS FOR .H FILE:
#define ItemArray 1171 //IS ITEMARRAY FOR MAIN 1.04d GMO
#define ItemId(x, y) ((x * 512) + y)
#define ObjectId(x, y) ((x * 512) + y + ItemArray)
AND THIS FOR .CPP FILE XD:
void __declspec(naked) WingsOfVortexEffect()
{
DWORD dwItem;
_asm
{
MOV EAX, DWORD PTR SS:[EBP+0x0C]
MOV dwItem, EAX
// ----
CMP dwItem,ObjectId(12,37)
JE Return
// ----
CMP dwItem,ObjectId(12,180)
JE Return
// ----
Return:
MOV EAX,0x0060C764
JMP EAX
}
}
void HookEffects()
{
Utils.SetNop(0x0060C75D, 5);
Utils.WriteJmp(0x0060C75D, (DWORD)&WingsOfVortexEffect);
}
extern "C" _declspec(dllexport) void InitEngine()
{
DWORD OldProtect;
if(VirtualProtect(LPVOID(0x401000),0x00D21FFF,PAGE_EXECUTE_READWRITE,&OldProtect))
{
ItemCoreInit();
HookEffects();
}
else
{
MessageBoxA(NULL,"Cannot load Engine.dll","Error",MB_OK);
ExitProcess(0);
}
}
PS: 0x00D21FFF -> REAL VIRTUALPROTECT OFFSET ON 1.04d GMO VIRGIN MAIN.EXE
PS 2: I'm uploading to: YT, my video test of this function.. not crashes, not bad registers return.. you can make the same with another wings level 3 cases, the only important thing is that your custom added model wing (3d .bmd) must have the same count of Bones that original item that get this hooked effect.
Sorry for my very bad English people.. :tongue:
-
re: [Development] Adding Effects to Items (Easy Way)
this fix bugs in all file servers?
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
Lucila
this fix bugs in all file servers?
I think that you don't understand what is developing here.. should learn more. :lol::lol::lol:
VIDEO TEST:
https://www.youtube.com/watch?v=0PYttrq33to&feature=youtu.be
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
mauro07
Thanks mauro07!I sory! I do not see the difference here! Ecfffect is no different.
You can test one another on Wing Effect 3 DW?
Sorry for my very bad English people.. :P:
- - - Updated - - -
Example: One of your differ effect on set
http://www.youtube.com/watch?v=n0Mz37cMngs
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
version 1
nodes
0 "Box01" -1
1 "Bone01" 0
2 "Bone02" 1
3 "Bone03" 2
4 "Bone35" 2
5 "Bone34" 2
6 "Bone33" 2
7 "Bone32" 2
8 "Bone31" 2
9 "Bone36" 1
10 "Bone04" 1
11 "Bone05" 10
12 "Bone06" 11
13 "Bone37" 11
14 "Bone38" 1
15 "Bone07" 0
16 "Bone08" 15
17 "Bone09" 16
18 "Bone40" 16
19 "Bone39" 15
20 "Bone51" 0
21 "Bone52" 20
22 "Bone53" 21
23 "Bone43" 21
24 "Bone42" 21
25 "Bone41" 21
26 "Bone45" 21
27 "Bone44" 21
28 "Bone54" 20
29 "Bone55" 28
30 "Bone56" 29
31 "Bone47" 29
32 "Bone46" 20
33 "Bone48" 20
34 "Bone57" 0
35 "Bone58" 34
36 "Bone59" 35
37 "Bone50" 35
38 "Bone49" 34
end
skeleton
time 0
0 0.000000 -100.000000 -0.333302 1.570796 -0.000000 0.000000
1 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
2 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
3 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
4 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
5 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
6 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
7 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
8 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
9 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
10 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
11 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
12 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
13 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
14 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
15 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
16 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
17 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
18 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
19 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
20 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
21 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
22 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
23 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
24 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
25 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
26 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
27 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
28 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
29 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
30 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
31 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
32 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
33 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
34 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
35 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
36 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
37 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
38 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
end
Mauro: You can explain things on what to do?
-
re: [Development] Adding Effects to Items (Easy Way)
@huythao229 ,
would you post your code and the main version to see if I can better understand? For purposes aidcionar tried on an item custon more'm not having success. :/:
Thanks in advance for your attention.
-
re: [Development] Adding Effects to Items (Easy Way)
mauro07.
http://i1178.photobucket.com/albums/...10_28-0009.jpg
I try Legendary lighting your like a but the problem is that there are red spots underneath.
Quote:
void __declspec(naked) WingsOfStormEffect()
{
_asm
{
MOV EAX, DWORD PTR SS:[EBP+0x0C]
MOV dwItem, EAX
CMP dwItem,ObjectId(12,36)
JE Return
CMP dwItem,ObjectId(7,3)
JE Return
CMP dwItem,ObjectId(8,3)
JE Return
CMP dwItem,ObjectId(9,3)
JE Return
CMP dwItem,ObjectId(10,3)
JE Return
CMP dwItem,ObjectId(11,3)
Return:
MOV ECX,0x0060C153
JMP ECX
}
}
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
kirdzar0r
you must decompile some important functions on main.exe for draw different effects in scene.. because this code is only for make a: "copy" of the original sprites effects on 3rd level wings from wz
and I say this bro: "Well, I now have a much better method than this" in main thread:cool:
PS: Legendary Set or another sets of Player they not have: "The same bone counts that original Wings of Storm bro"
- - - Updated - - -
Quote:
Originally Posted by
kirdzar0r
Mauro: You can explain things on what to do?
yeah, sure bro.. this is my modified Skeleton struct of: Wings of Illusion (ObjectId: 12,38) from: High Elf, for: "Collect" all bones that model originally used in the tips of my staff added, I mean.. look this:
Quote:
skeleton
time 0
0 0.000000 -100.000000 -0.333302 1.570796 -0.000000 0.000000
to simple view.. this is the only line on this struct of skeleton in added staff model to effect, that have some values differents from: 0.000000 or: 0.0 (is the same), but this is not important for learn to correct usage this method, because the only thing important is: "Bone Count", get by the main.exe by: BoneId, this is..
Simple Ex:
Quote:
time 0
0 0.000000 -100.000000 -0.333302 1.570796 -0.000000 0.000000
1 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
2 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
3 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
4 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
5 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
6 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
7 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
8 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
9 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
10 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
11 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
12 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
13 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
14 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
15 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
16 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
17 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
18 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
19 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
20 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
21 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
22 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
23 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
24 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
25 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
26 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
27 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
28 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
29 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
30 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
31 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
32 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
33 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
34 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
35 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
36 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
37 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
38 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
end
from: 0 to 38... then -> 38 is total count of bones on original: Wings of Illusion .bmd file.. in your client folder: "Data/Item".. is easy to understand in really.. main.exe get every bone position in real time and transform this position using vectors positions (X,Y,Z) in 1: "Billboard" or: "Sprite" of course that not all bones from every model.. but you must look in every original model 3rd wings, in: GAME and in: MILKSHAPE like: .smd for understand every Light (by different colors and all this shit..) and put on different parts of your added model to effect, If you model not have the same count of bones that original one, then main.exe can't to find every bone seated in 1 sprite and some vectors of every light are scattered anywhere on the scene.:thumbup1:
-
re: [Development] Adding Effects to Items (Easy Way)
http://www.subeimagenes.com/img/scre...02-1007329.jpg
Anyone would help me to add the effect to the other wings?
wings s8 on effect
http://www.subeimagenes.com/img/scre...02-1007331.jpg
wings s8 off effect i reemplese on otr wings for add this for the effect not foun
http://www.subeimagenes.com/img/scre...03-1007334.jpg
sorry for my english...
use this main and parch
http://forum.ragezone.com/f197/repac...-52-a-1004641/
help me??
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
mauro07
Well look this brothers.. xD
Code:
THIS IS FOR .H FILE:
#define ItemArray 1171 //IS ITEMARRAY FOR MAIN 1.04d GMO
#define ItemId(x, y) ((x * 512) + y)
#define ObjectId(x, y) ((x * 512) + y + ItemArray)
AND THIS FOR .CPP FILE XD:
void __declspec(naked) WingsOfVortexEffect()
{
DWORD dwItem;
_asm
{
MOV EAX, DWORD PTR SS:[EBP+0x0C]
MOV dwItem, EAX
// ----
CMP dwItem,ObjectId(12,37)
JE Return
// ----
CMP dwItem,ObjectId(12,180)
JE Return
// ----
Return:
MOV EAX,0x0060C764
JMP EAX
}
}
void HookEffects()
{
Utils.SetNop(0x0060C75D, 5);
Utils.WriteJmp(0x0060C75D, (DWORD)&WingsOfVortexEffect);
}
extern "C" _declspec(dllexport) void InitEngine()
{
DWORD OldProtect;
if(VirtualProtect(LPVOID(0x401000),0x00D21FFF,PAGE_EXECUTE_READWRITE,&OldProtect))
{
ItemCoreInit();
HookEffects();
}
else
{
MessageBoxA(NULL,"Cannot load Engine.dll","Error",MB_OK);
ExitProcess(0);
}
}
PS: 0x00D21FFF -> REAL VIRTUALPROTECT OFFSET ON 1.04d GMO VIRGIN MAIN.EXE
PS 2: I'm uploading to: YT, my video test of this function.. not crashes, not bad registers return.. you can make the same with another wings level 3 cases, the only important thing is that your custom added model wing (3d .bmd) must have the same count of Bones that original item that get this hooked effect.
Sorry for my very bad English people.. :tongue:
it does not work (
I tried to add these effects zTeam main, but when you log on to your account when the scene starts to load the character selection, main would crash.
http://i.imgur.com/q3l1sTp.png
http://i.imgur.com/0OkaPPw.png
http://i.imgur.com/aCrmn7H.png
-
re: [Development] Adding Effects to Items (Easy Way)
zTeam main.exe is not a clean main bro!!!
-
re: [Development] Adding Effects to Items (Easy Way)
need using clean main 1.04D ? if i using clean main I think ш cant using zteam customs
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
mauro07
zTeam main.exe is not a clean main bro!!!
@mauro07 : you can help me disable chat system and hpbar in zmain? plz help me, i don't know disable it, I truly thank you if you help me, please!
-
3 Attachment(s)
re: [Development] Adding Effects to Items (Easy Way)
-
re: [Development] Adding Effects to Items (Easy Way)
Nemesis, how i can contact you? PM closed =\ I want to give you offer for some help :)
-
re: [Development] Adding Effects to Items (Easy Way)
huythao229, hola. me podrias decir o pasar el codigo .cpp , .h para agregar ese effecto en main 1.04d en zclient.dll. gracias y disculpa las molestias
-
re: [Development] Adding Effects to Items (Easy Way)
could help me with the offsets the main 1:03:13?
-
re: [Development] Adding Effects to Items (Easy Way)
@mauro07: can you tell me which tool can I see the bone ID of a item? I am trying to add effect on wing 2.5 for season 6 server but don't know the bone ID of those :|
Thanks a lot,
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
huythao229
thanks mauro07!i sory! I do not see the difference here! Ecfffect is no different.
You can test one another on wing effect 3 dw?
Sorry for my very bad english people.. :p:
- - - updated - - -
example: One of your differ effect on set
http://www.youtube.com/watch?v=n0mz37cmngs
¡¡¡pleaseee this effect who is???!!
https://www.youtube.com/watch?v=n0Mz37cMngs
-
re: [Development] Adding Effects to Items (Easy Way)
Please reupload source code, all links are offline...
-
re: [Development] Adding Effects to Items (Easy Way)
how to fix increase effect set item :(
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
laulinh2
how to fix increase effect set item :(
With the source, but where is the link?
All things he posted in the forum after 1, 2 days he delete link...
of course, topics need to be deleted too, because is unusable
-
re: [Development] Adding Effects to Items (Easy Way)
give me the source time server and source Effects and inform people online game
-
re: [Development] Adding Effects to Items (Easy Way)
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
loveoggy
Please upload link .
mauro is selling the source, your never got it for free... Not in this life...
-
re: [Development] Adding Effects to Items (Easy Way)
HELP.. I try add effect wing custom like wing 3 DK but not success . I used Main 1.04D. 12*512+36+1171 = 7351 .Hexadecimal: 1CB7 .
Code:
void __declspec(naked) WingsOfStormEffect(){
_asm
{
MOV EAX, DWORD PTR SS:[EBP+0x0c]
MOV dwItem, EAX
CMP dwItem,ObjectId(0,37)
JE Return
CMP dwItem, ObjectId(12, 205)
JE Return
CMP dwItem, ObjectId(12, 180)
JE Return
Return:
MOV ECX,0x0060C153
JMP ECX
}
void WingsLevel3EffectsHook()
{
SetNop(0x0060C14C, 5); WriteJmp(0x0060C14C, (DWORD)&WingsOfStormEffect);
Code:
#ifndef NEMESIS_H#define NEMESIS_H
#include "Stdafx.h"
DWORD dwItem;
#define ItemArray 1171 //IS ITEMARRAY FOR MAIN 1.04d GMO
#define ItemId(x, y) ((x * 512) + y)
#define ObjectId(x, y) ((x * 512) + y + ItemArray)
void WingsLevel3EffectsHook();
#endi
https://forum.ragezone.com/cache.php...%2FsVyl08Y.png
https://forum.ragezone.com/cache.php...%2FTazmarm.png
-
re: [Development] Adding Effects to Items (Easy Way)
UPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP . Please HELP ME
-
re: [Development] Adding Effects to Items (Easy Way)
someone have mirror link?
-
re: [Development] Adding Effects to Items (Easy Way)
Hi mauro07,
I try to make effect of Flameberge (0,26) on the custom Asura (0,30) but it doesn't have flame around the Asura sword, how can I make it? (I added more bone to the same 18 bones with Flameberge already)
My code (main 1.04D):
void __declspec(naked) FlameBergeEffect() // 18 Bones (success)
{
_asm
{
MOV EAX, DWORD PTR SS:[EBP+0x10]
MOV dwItem, EAX
// ----
CMP dwItem,ObjectId(0,26)
JE Return
// ----
CMP dwItem,ObjectId(0,30) // Asura
JE Return
// ----
Return:
MOV EAX,0x005FBEAB
JMP EAX
}
}
void ItemEffectLoad()
{
ToolKit.SetNop(0x005FBEA4, 5);
ToolKit.WriteJmp(0x005FBEA4, (DWORD)&FlameBergeEffect);
}
And here is the image of before and after using the effect:
Before:
http://s11.postimg.org/o9e2zm4tr/Asura_normal.jpg
After:
http://s14.postimg.org/tlddur6zh/Asura_effect.jpg
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
phgkhh
Hi mauro07,
I try to make effect of Flameberge (0,26) on the custom Asura (0,30) but it doesn't have flame around the Asura sword, how can I make it? (I added more bone to the same 18 bones with Flameberge already)
My code (main 1.04D):
void __declspec(naked) FlameBergeEffect() // 18 Bones (success)
{
_asm
{
MOV EAX, DWORD PTR SS:[EBP+0x10]
MOV dwItem, EAX
// ----
CMP dwItem,ObjectId(0,26)
JE Return
// ----
CMP dwItem,ObjectId(0,30) // Asura
JE Return
// ----
Return:
MOV EAX,0x005FBEAB
JMP EAX
}
}
void ItemEffectLoad()
{
ToolKit.SetNop(0x005FBEA4, 5);
ToolKit.WriteJmp(0x005FBEA4, (DWORD)&FlameBergeEffect);
}
And here is the image of before and after using the effect:
Before:
https://forum.ragezone.com/cache.php...ura_normal.jpg
After:
https://forum.ragezone.com/cache.php...ura_effect.jpg
Well... to start.. Flamberge have (various) effects... some of this are from: Viewport (Player + Items viewed on the Game), and anothers are from: Player Inventory... when you say: "Flames" you like add: "flamestani.jpg" texture effect (Effect from flamberge view on Player Inventory + Viewport) or are you talking about: "flareRed.jpg" (Used by wz on Flamberge Item Visual only from: Viewport), bcz isn't the same... Texture Effect from Flamberge is possible add with only re-write Assembler Inline main.exe memory (How on this source that I make with 3rd Wing Effects). but the: flareRed effect on 1 "Sprite" is more difficult to make only with assembler re-writed code.. is necesary decompilation process from your main.exe version. the: "BMD::Class" and his methods to Render effects by Get Bones from Model Position.
- - - Updated - - -
If you use: zClient.dll source.. you can see better this the same that I'm saying... on zteam -=DarkSim=- make something like this using.. some of assembly code combined with some Pointers and class. to put Sprites or Static Effect to Wings.
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
mauro07
Well... to start.. Flamberge have (various) effects... some of this are from: Viewport (Player + Items viewed on the Game), and anothers are from: Player Inventory... when you say: "Flames" you like add: "flamestani.jpg" texture effect (Effect from flamberge view on Player Inventory + Viewport) or are you talking about: "flareRed.jpg" (Used by wz on Flamberge Item Visual only from: Viewport), bcz isn't the same... Texture Effect from Flamberge is possible add with only re-write Assembler Inline main.exe memory (How on this source that I make with 3rd Wing Effects). but the: flareRed effect on 1 "Sprite" is more difficult to make only with assembler re-writed code.. is necesary decompilation process from your main.exe version. the: "BMD::Class" and his methods to Render effects by Get Bones from Model Position.
- - - Updated - - -
If you use: zClient.dll source.. you can see better this the same that I'm saying... on zteam -=DarkSim=- make something like this using.. some of assembly code combined with some Pointers and class. to put Sprites or Static Effect to Wings.
Thank you for your clear explanation, however this is something over my knowledge, I have not learned on ASM yet :)
Yes, I am using zclient 6.3. As I see from the source, darksim use only 1 default asm code and apply for all wings (just change in selection of static effect on each wing's bone), so for the weapon effect like you said, is that the same, means using 1 asm code phrase and just apply the effect (mean the static/dynamic effect like wing's effect, not the effect of original weapon like ChaosAxe or FlameBerge) on custom weapon's bone?
And to use the original effect (like use the flame effect of FlameBerge (using the "flamestani.jpg") on Asura for example), can you suggest an example code of "BMD::Class" like you said?
Thanks a lot pro coder.
-
re: [Development] Adding Effects to Items (Easy Way)
can u describe the bones ? .smd file i didnt understand it :X
-
re: [Development] Adding Effects to Items (Easy Way)
brow give an example of how to create a new effect in new wing?
-
re: [Development] Adding Effects to Items (Easy Way)
give source of main 1.04d pleasr
-
re: [Development] Adding Effects to Items (Easy Way)
If u cant decide with color and effect to use cuz every is nice^^
https://www.youtube.com/watch?v=xZQmK3SJ4W0&feature=youtu.be
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
Razzor
Brow how did you do it? could help ? or spend a chunk of source?
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
NaveMu
Brow how did you do it? could help ? or spend a chunk of source?
Code:
LPVOID F1_This;
DWORD F1_Arg1;
DWORD F1_Arg11;
DWORD F1_Arg2;
DWORD F2_Arg5;
DWORD F3_Arg3;
float Color[3];
DWORD F1Arg11;
DWORD F2Arg5;
DWORD F1Arg2;
DWORD EffectList[60];
DWORD RandomedEffect;
EffectList[0] = 31738;
EffectList[1] = 32002;
EffectList[2] = 32003;
EffectList[3] = 32005;
EffectList[4] = 32048;
EffectList[5] = 32049;
EffectList[6] = 32054;
EffectList[7] = 32066;
EffectList[8] = 32072;
EffectList[9] = 32073;
EffectList[10] = 32077;
EffectList[11] = 32279;
EffectList[12] = 32101;
EffectList[13] = 32113;
EffectList[14] = 32114;
EffectList[15] = 32115;
EffectList[16] = 32116;
EffectList[17] = 32118;
EffectList[18] = 32119;
EffectList[19] = 32126;
EffectList[20] = 32127;
EffectList[21] = 32128;
EffectList[22] = 32131;
EffectList[23] = 32132;
EffectList[24] = 32140;
EffectList[25] = 32141;
EffectList[26] = 32147;
EffectList[27] = 32217;
EffectList[28] = 32226;
EffectList[29] = 32229;
EffectList[30] = 32231;
EffectList[31] = 32257;
EffectList[32] = 32258;
EffectList[33] = 32258;
EffectList[34] = 32260;
EffectList[35] = 32265;
EffectList[36] = 32066;
EffectList[37] = 32279;
EffectList[38] = 32281;
EffectList[39] = 32287;
EffectList[40] = 32288;
EffectList[41] = 32290;
EffectList[42] = 32292;
EffectList[43] = 32002;
EffectList[44] = 32309;
EffectList[45] = 32310;
EffectList[46] = 32355;
EffectList[47] = 32371;
EffectList[48] = 32376;
EffectList[49] = 32376;
EffectList[50] = 32380;
EffectList[51] = 32402;
EffectList[52] = 32403;
EffectList[53] = 32431;
EffectList[54] = 32492;
EffectList[55] = 32494;
EffectList[56] = 32501;
EffectList[57] = 32523;
EffectList[58] = 32631;
EffectList[59] = 32691;
else if (AddWingsEffect_Buff == ITEM2(12, 165))
{
Color[0] = ((float)(rand() % 100) / 100);
Color[1] = ((float)(rand() % 100) / 100);
Color[2] = ((float)(rand() % 100) / 100);//
for (int i = 1; i < 48; i++)
{
memcpy(&F1Arg11, &F1_Arg11, sizeof(F1_Arg11));
memcpy(&F2Arg5, &F2_Arg5, sizeof(F2_Arg5));
memcpy(&F1Arg2, &F1_Arg2, sizeof(F1_Arg2));
pAllowStaticEffect(F1_This, &F1Arg11, F1Arg2, i, 0);
RandomedEffect = EffectList[rand() % 59];
pPlayStaticEffect(RandomedEffect, &F1Arg11, 1, Color, F2Arg5, 1.0, 0);
}
}
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
Razzor
Code:
LPVOID F1_This;
DWORD F1_Arg1;
DWORD F1_Arg11;
DWORD F1_Arg2;
DWORD F2_Arg5;
DWORD F3_Arg3;
float Color[3];
DWORD F1Arg11;
DWORD F2Arg5;
DWORD F1Arg2;
DWORD EffectList[60];
DWORD RandomedEffect;
EffectList[0] = 31738;
EffectList[1] = 32002;
EffectList[2] = 32003;
EffectList[3] = 32005;
EffectList[4] = 32048;
EffectList[5] = 32049;
EffectList[6] = 32054;
EffectList[7] = 32066;
EffectList[8] = 32072;
EffectList[9] = 32073;
EffectList[10] = 32077;
EffectList[11] = 32279;
EffectList[12] = 32101;
EffectList[13] = 32113;
EffectList[14] = 32114;
EffectList[15] = 32115;
EffectList[16] = 32116;
EffectList[17] = 32118;
EffectList[18] = 32119;
EffectList[19] = 32126;
EffectList[20] = 32127;
EffectList[21] = 32128;
EffectList[22] = 32131;
EffectList[23] = 32132;
EffectList[24] = 32140;
EffectList[25] = 32141;
EffectList[26] = 32147;
EffectList[27] = 32217;
EffectList[28] = 32226;
EffectList[29] = 32229;
EffectList[30] = 32231;
EffectList[31] = 32257;
EffectList[32] = 32258;
EffectList[33] = 32258;
EffectList[34] = 32260;
EffectList[35] = 32265;
EffectList[36] = 32066;
EffectList[37] = 32279;
EffectList[38] = 32281;
EffectList[39] = 32287;
EffectList[40] = 32288;
EffectList[41] = 32290;
EffectList[42] = 32292;
EffectList[43] = 32002;
EffectList[44] = 32309;
EffectList[45] = 32310;
EffectList[46] = 32355;
EffectList[47] = 32371;
EffectList[48] = 32376;
EffectList[49] = 32376;
EffectList[50] = 32380;
EffectList[51] = 32402;
EffectList[52] = 32403;
EffectList[53] = 32431;
EffectList[54] = 32492;
EffectList[55] = 32494;
EffectList[56] = 32501;
EffectList[57] = 32523;
EffectList[58] = 32631;
EffectList[59] = 32691;
else if (AddWingsEffect_Buff == ITEM2(12, 165))
{
Color[0] = ((float)(rand() % 100) / 100);
Color[1] = ((float)(rand() % 100) / 100);
Color[2] = ((float)(rand() % 100) / 100);//
for (int i = 1; i < 48; i++)
{
memcpy(&F1Arg11, &F1_Arg11, sizeof(F1_Arg11));
memcpy(&F2Arg5, &F2_Arg5, sizeof(F2_Arg5));
memcpy(&F1Arg2, &F1_Arg2, sizeof(F1_Arg2));
pAllowStaticEffect(F1_This, &F1Arg11, F1Arg2, i, 0);
RandomedEffect = EffectList[rand() % 59];
pPlayStaticEffect(RandomedEffect, &F1Arg11, 1, Color, F2Arg5, 1.0, 0);
}
}
can with this mothod set lighting effects on custom wings like effect on Storm wings? i tryed use randomeffect with lighting models, but not work like i want..
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
psychedelic
can with this mothod set lighting effects on custom wings like effect on Storm wings? i tryed use randomeffect with lighting models, but not work like i want..
in static effect there is no effect like storm wing. To get that effect u need to findout what "sub_6D8F20" or sub_545030 do
Code:
case 7351:
v258 = 0.0;
v259 = 0.0;
v260 = 0.0;
*(float *)&v288 = 0.0;
v289 = 0.0;
v290 = 0.0;
v38 = flt_5EF5A1C * 0.0003999999898951501;
logf_0(v38);
v261 = sub_639050(v38) * 0.4000000059604645;
*(float *)&v284 = v261 + 0.5;
v285 = v261 + 0.5;
v286 = v261 + 0.5;
v297 = 9;
v298 = 20;
v299 = 19;
v300 = 10;
v301 = 18;
v302 = 28;
v303 = 27;
v304 = 36;
v305 = 35;
v306 = 38;
v307 = 37;
v308 = 53;
v309 = 48;
v310 = 62;
v311 = 70;
v312 = 72;
v313 = 71;
v314 = 78;
v315 = 79;
v316 = 80;
v317 = 87;
v318 = 90;
v319 = 91;
v320 = 106;
v321 = 102;
v287 = 0.0;
for ( k = 0; k < 25; ++k )
{
sub_545030((float *)v386,(int)&unk_7BC08A0 + 48 * *(&v297 + k),(int)&v258,(int)&v288, 1);
v287 = 0.5;
v39 = flt_5EF5A1C * 0.009999999776482582;
pPlayStaticEffect(32260, (int)&v288, 0.5, (int)&v284, a1, v39, 1);
}
v291 = 11;
v292 = 21;
v293 = 29;
v294 = 63;
v295 = 81;
v296 = 89;
if ( !(rand() % 2) )
{
for ( l = 0; l < 6; ++l )
{
sub_545030(
(float *)v386,
(int)&unk_7BC08A0 + 48 * *(&v291 + l),
(int)&v258,
(int)&v288,
1);
if ( !(rand() % 20) )
{
*(float *)&v284 = 0.60000002;
v285 = 0.60000002;
v286 = 0.89999998;
sub_6D8F20(388, (int)&v288, a1 + 264, (int)&v284, 1, a1, -1, 0, 0, 0, 0.0, -1);
}
}
}
v262 = 64;
v263 = 61;
v264 = 69;
v265 = 77;
v266 = 86;
v267 = 98;
v268 = 97;
v269 = 99;
v270 = 104;
v271 = 103;
v272 = 105;
v273 = 12;
v274 = 8;
v275 = 17;
v276 = 26;
v277 = 34;
v278 = 52;
v279 = 44;
v280 = 51;
v281 = 50;
v282 = 49;
v283 = 45;
v40 = flt_5EF5A1C * 0.003000000026077032;
logf_0(v40);
v287 = sub_639050(v40) * 0.2000000029802322;
for ( m = 0; m < 22; ++m )
{
sub_545030(
(float *)v386,
(int)&unk_7BC08A0 + 48 * *(&v262 + m),
(int)&v258,
(int)&v288,
1);
if ( *(&v262 + m) != 12
&& *(&v262 + m) != 64
&& *(&v262 + m) != 98
&& *(&v262 + m) != 52 )
{
*(float *)&v284 = 0.80000001;
v285 = 0.5;
v286 = 0.2;
v42 = v287 + 0.300000011920929;
pPlayStaticEffect(32002, (int)&v288, v42, (int)&v284, a1, 0.0, 0);
}
else
{
*(float *)&v284 = 0.89999998;
v285 = 0.0;
v286 = 0.0;
v41 = v287 + 1.399999976158142;
pPlayStaticEffect(32002, (int)&v288, v41, (int)&v284, a1, 0.0, 0);
}
}
break;
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
Razzor
in static effect there is no effect like storm wing. To get that effect u need to findout what "sub_6D8F20" or sub_545030 do
Code:
case 7351:
v258 = 0.0;
v259 = 0.0;
v260 = 0.0;
*(float *)&v288 = 0.0;
v289 = 0.0;
v290 = 0.0;
v38 = flt_5EF5A1C * 0.0003999999898951501;
logf_0(v38);
v261 = sub_639050(v38) * 0.4000000059604645;
*(float *)&v284 = v261 + 0.5;
v285 = v261 + 0.5;
v286 = v261 + 0.5;
v297 = 9;
v298 = 20;
v299 = 19;
v300 = 10;
v301 = 18;
v302 = 28;
v303 = 27;
v304 = 36;
v305 = 35;
v306 = 38;
v307 = 37;
v308 = 53;
v309 = 48;
v310 = 62;
v311 = 70;
v312 = 72;
v313 = 71;
v314 = 78;
v315 = 79;
v316 = 80;
v317 = 87;
v318 = 90;
v319 = 91;
v320 = 106;
v321 = 102;
v287 = 0.0;
for ( k = 0; k < 25; ++k )
{
sub_545030((float *)v386,(int)&unk_7BC08A0 + 48 * *(&v297 + k),(int)&v258,(int)&v288, 1);
v287 = 0.5;
v39 = flt_5EF5A1C * 0.009999999776482582;
pPlayStaticEffect(32260, (int)&v288, 0.5, (int)&v284, a1, v39, 1);
}
v291 = 11;
v292 = 21;
v293 = 29;
v294 = 63;
v295 = 81;
v296 = 89;
if ( !(rand() % 2) )
{
for ( l = 0; l < 6; ++l )
{
sub_545030(
(float *)v386,
(int)&unk_7BC08A0 + 48 * *(&v291 + l),
(int)&v258,
(int)&v288,
1);
if ( !(rand() % 20) )
{
*(float *)&v284 = 0.60000002;
v285 = 0.60000002;
v286 = 0.89999998;
sub_6D8F20(388, (int)&v288, a1 + 264, (int)&v284, 1, a1, -1, 0, 0, 0, 0.0, -1);
}
}
}
v262 = 64;
v263 = 61;
v264 = 69;
v265 = 77;
v266 = 86;
v267 = 98;
v268 = 97;
v269 = 99;
v270 = 104;
v271 = 103;
v272 = 105;
v273 = 12;
v274 = 8;
v275 = 17;
v276 = 26;
v277 = 34;
v278 = 52;
v279 = 44;
v280 = 51;
v281 = 50;
v282 = 49;
v283 = 45;
v40 = flt_5EF5A1C * 0.003000000026077032;
logf_0(v40);
v287 = sub_639050(v40) * 0.2000000029802322;
for ( m = 0; m < 22; ++m )
{
sub_545030(
(float *)v386,
(int)&unk_7BC08A0 + 48 * *(&v262 + m),
(int)&v258,
(int)&v288,
1);
if ( *(&v262 + m) != 12
&& *(&v262 + m) != 64
&& *(&v262 + m) != 98
&& *(&v262 + m) != 52 )
{
*(float *)&v284 = 0.80000001;
v285 = 0.5;
v286 = 0.2;
v42 = v287 + 0.300000011920929;
pPlayStaticEffect(32002, (int)&v288, v42, (int)&v284, a1, 0.0, 0);
}
else
{
*(float *)&v284 = 0.89999998;
v285 = 0.0;
v286 = 0.0;
v41 = v287 + 1.399999976158142;
pPlayStaticEffect(32002, (int)&v288, v41, (int)&v284, a1, 0.0, 0);
}
}
break;
#define pCustomEffGet ((int(__thiscall*)(int This, int a2, int *a3, MU3Float *a4, char a5)) 0x00545030)
#define pCustomDynamicEffect ((void(__cdecl*) (int ModelID, int, int, int, int, int, int, int, int, int, float, int)) 0x006D8F20)
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
Razzor
Code:
LPVOID F1_This;
DWORD F1_Arg1;
DWORD F1_Arg11;
DWORD F1_Arg2;
DWORD F2_Arg5;
DWORD F3_Arg3;
float Color[3];
DWORD F1Arg11;
DWORD F2Arg5;
DWORD F1Arg2;
DWORD EffectList[60];
DWORD RandomedEffect;
EffectList[0] = 31738;
EffectList[1] = 32002;
EffectList[2] = 32003;
EffectList[3] = 32005;
EffectList[4] = 32048;
EffectList[5] = 32049;
EffectList[6] = 32054;
EffectList[7] = 32066;
EffectList[8] = 32072;
EffectList[9] = 32073;
EffectList[10] = 32077;
EffectList[11] = 32279;
EffectList[12] = 32101;
EffectList[13] = 32113;
EffectList[14] = 32114;
EffectList[15] = 32115;
EffectList[16] = 32116;
EffectList[17] = 32118;
EffectList[18] = 32119;
EffectList[19] = 32126;
EffectList[20] = 32127;
EffectList[21] = 32128;
EffectList[22] = 32131;
EffectList[23] = 32132;
EffectList[24] = 32140;
EffectList[25] = 32141;
EffectList[26] = 32147;
EffectList[27] = 32217;
EffectList[28] = 32226;
EffectList[29] = 32229;
EffectList[30] = 32231;
EffectList[31] = 32257;
EffectList[32] = 32258;
EffectList[33] = 32258;
EffectList[34] = 32260;
EffectList[35] = 32265;
EffectList[36] = 32066;
EffectList[37] = 32279;
EffectList[38] = 32281;
EffectList[39] = 32287;
EffectList[40] = 32288;
EffectList[41] = 32290;
EffectList[42] = 32292;
EffectList[43] = 32002;
EffectList[44] = 32309;
EffectList[45] = 32310;
EffectList[46] = 32355;
EffectList[47] = 32371;
EffectList[48] = 32376;
EffectList[49] = 32376;
EffectList[50] = 32380;
EffectList[51] = 32402;
EffectList[52] = 32403;
EffectList[53] = 32431;
EffectList[54] = 32492;
EffectList[55] = 32494;
EffectList[56] = 32501;
EffectList[57] = 32523;
EffectList[58] = 32631;
EffectList[59] = 32691;
else if (AddWingsEffect_Buff == ITEM2(12, 165))
{
Color[0] = ((float)(rand() % 100) / 100);
Color[1] = ((float)(rand() % 100) / 100);
Color[2] = ((float)(rand() % 100) / 100);//
for (int i = 1; i < 48; i++)
{
memcpy(&F1Arg11, &F1_Arg11, sizeof(F1_Arg11));
memcpy(&F2Arg5, &F2_Arg5, sizeof(F2_Arg5));
memcpy(&F1Arg2, &F1_Arg2, sizeof(F1_Arg2));
pAllowStaticEffect(F1_This, &F1Arg11, F1Arg2, i, 0);
RandomedEffect = EffectList[rand() % 59];
pPlayStaticEffect(RandomedEffect, &F1Arg11, 1, Color, F2Arg5, 1.0, 0);
}
}
my results :S
https://www.youtube.com/watch?v=EiNub_s_KaU&feature=youtu.be&hd=1
-
re: [Development] Adding Effects to Items (Easy Way)
Here my release.. for: Flamberge, Sword Bracker and Imperial Sword (Season 4 Socket Swords) on: 1.04d GMO Effects:
Code:
case 1197: // Flamberge
*(float *)&v448 = 0.80000001;
v449 = 0.60000002;
v450 = 0.2;
sub_544E60(v438, (int)&v440, v437, 11, 0);
sub_7711C0(32002, (int)&v440, 0.60000002, (int)&v448, v436, 0.0, 0);
sub_7711C0(32002, (int)&v440, 0.60000002, (int)&v448, v436, 0.0, 0);
*(float *)&v448 = 0.30000001;
v449 = 0.80000001;
v450 = 0.69999999;
sub_544E60(v438, (int)&v440, v437, 12, 0);
sub_7711C0(32002, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 13, 0);
sub_7711C0(32002, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 12, 0);
sub_7711C0(32002, (int)&v440, 0.30000001, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 13, 0);
sub_7711C0(32002, (int)&v440, 0.30000001, (int)&v448, v436, 0.0, 0);
*(float *)&v448 = 0.89999998;
v449 = 0.1;
v450 = 0.1;
sub_544E60(v438, (int)&v440, v437, 1, 0);
sub_7711C0(32402, (int)&v440, 0.80000001, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 2, 0);
sub_7711C0(32402, (int)&v440, 0.69999999, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 3, 0);
sub_7711C0(32402, (int)&v440, 0.69999999, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 4, 0);
sub_7711C0(32402, (int)&v440, 0.69999999, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 5, 0);
sub_7711C0(32402, (int)&v440, 0.60000002, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 6, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 7, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
break;
// -------------------------------------------------------------------------------------------
case 1198: // Sword Bracker
*(float *)&v448 = 0.1;
v449 = 0.89999998;
v450 = 0.1;
sub_544E60(v438, (int)&v440, v437, 1, 0);
sub_7711C0(32402, (int)&v440, 0.60000002, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 2, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 3, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 4, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 5, 0);
sub_7711C0(32402, (int)&v440, 0.40000001, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 6, 0);
sub_7711C0(32402, (int)&v440, 0.30000001, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 7, 0);
sub_7711C0(32402, (int)&v440, 0.30000001, (int)&v448, v436, 0.0, 0);
for ( i10 = 1; i10 <= 7; ++i10 )
{
if ( !(sub_9CFA0D(a1, a2) % 4) )
{
*(float *)&v440 = 0.0;
v441 = 0.0;
v442 = 0.0;
sub_544E60(v438, (int)&v440, v437, i10, 0);
sub_74CBE0(a1, a2, 32290, (int)&v440, v437 + 264, (int)&v448, 12, 0.5, v437);
}
}
break;
// -------------------------------------------------------------------------------------------
case 1199: // Imperial Sword
v89 = (double)(sub_9CFA0D(a1, a2) % 15) / 30.0;
v349 = v89 + 0.5;
*(float *)&v440 = 0.0;
v441 = 0.0;
v442 = 0.0;
*(float *)&v448 = 0.1;
v449 = 0.40000001;
v450 = 0.89999998;
sub_545030((void *)v438, (int)&unk_7BC0A20, (int)&v440, (int)&v445, 1);
sub_7711C0(32229, (int)&v445, 0.40000001, v436 + 156, v436, 0.0, 0);
sub_7711C0(32119, (int)&v445, v349, (int)&v448, v436, 0.0, 0);
*(float *)(v436 + 300) = *(float *)&v445;
*(float *)(v436 + 304) = v446;
*(float *)(v436 + 308) = v447;
v346 = 0.0;
v347 = 0.0;
v348 = 0.89999998;
sub_72D060(a1, a2, a3, 32223, (int)&v445, (int)&v445, v436 + 264, 17, v436, 25.0, -1, 0, 0, -1, 0, -1);
sub_545030((void *)v438, (int)&unk_7BC0A50, (int)&v440, (int)&v445, 1);
sub_7711C0(32229, (int)&v445, 0.40000001, v436 + 156, v436, 0.0, 0);
sub_7711C0(32119, (int)&v445, v349, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0A80, (int)&v440, (int)&v445, 1);
sub_7711C0(32229, (int)&v445, 0.40000001, v436 + 156, v436, 0.0, 0);
sub_7711C0(32119, (int)&v445, 0.40000001, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0AB0, (int)&v440, (int)&v445, 1);
sub_7711C0(32229, (int)&v445, 0.40000001, v436 + 156, v436, 0.0, 0);
sub_7711C0(32119, (int)&v445, 0.40000001, (int)&v448, v436, 0.0, 0);
*(float *)&v448 = 0.0;
v449 = 0.30000001;
v450 = 0.69999999;
sub_545030((void *)v438, (int)&unk_7BC0900, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 1.0, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0930, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.80000001, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0960, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.60000002, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0990, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.40000001, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC09C0, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.2, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC09F0, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.1, (int)&v448, v436, 0.0, 0);
break;
PS: Decompiled from IDA 6.6
PS 2: Here my created: "Legendary Lightning Effects" to: Season 4.6 (JPN) or (ENG) main.exe
Code:
// ----
// Legendary Set
case ITEM2(7, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,20);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
}
break;
// ---
case ITEM2(8, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,19);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
if(rand() %12 <= 2)
{
float Formula1 = (float)(rand() % 100) / 100.0f;
vec3_t fVal;
Vector( Formula1*0.5f + 4.0f,
Formula1*0.5f + 4.0f,
Formula1*0.5f + 2.0f, fVal );
// ---
Vector(0.f,0.5833f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,19);
CreateSprite(32002,Position,fVal[1],Light2,o,fVal[0],0);
}
}
break;
// ---
case ITEM2(9, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,45);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
// ---
b->TransformByObjectBone(Position,o,49);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
}
break;
// ---
case ITEM2(10, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,36);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
}
break;
// ---
case ITEM2(11, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,4);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
// ---
b->TransformByObjectBone(Position,o,11);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
}
break;
// ----
PS 3: From this video ->
https://www.youtube.com/watch?v=n0Mz37cMngs
PS 4: Here I leave another Research by me on: 1.04d GMO main.exe and 1.03k JPN main.exe:
Code:
0x0074F901 -> JNZ por JMP (1.03k)
0x0082F07C -> JNZ por JMP (1.04d)
This is for Allow: Seed Spheres Combination (on Research Master NPC) from the same Types.. this is only for Client Side.. is necesary quit this check functions on your: GameServer Source too.. (is not difficult).
-
re: [Development] Adding Effects to Items (Easy Way)
Please help with ExTeam main.exe finish bows and staff.
Or at least the programs that I use for smaller instructions on how to ExTeam.
Thank you
My main.exe
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
Razzor
Code:
LPVOID F1_This;
DWORD F1_Arg1;
DWORD F1_Arg11;
DWORD F1_Arg2;
DWORD F2_Arg5;
DWORD F3_Arg3;
float Color[3];
DWORD F1Arg11;
DWORD F2Arg5;
DWORD F1Arg2;
DWORD EffectList[60];
DWORD RandomedEffect;
EffectList[0] = 31738;
EffectList[1] = 32002;
EffectList[2] = 32003;
EffectList[3] = 32005;
EffectList[4] = 32048;
EffectList[5] = 32049;
EffectList[6] = 32054;
EffectList[7] = 32066;
EffectList[8] = 32072;
EffectList[9] = 32073;
EffectList[10] = 32077;
EffectList[11] = 32279;
EffectList[12] = 32101;
EffectList[13] = 32113;
EffectList[14] = 32114;
EffectList[15] = 32115;
EffectList[16] = 32116;
EffectList[17] = 32118;
EffectList[18] = 32119;
EffectList[19] = 32126;
EffectList[20] = 32127;
EffectList[21] = 32128;
EffectList[22] = 32131;
EffectList[23] = 32132;
EffectList[24] = 32140;
EffectList[25] = 32141;
EffectList[26] = 32147;
EffectList[27] = 32217;
EffectList[28] = 32226;
EffectList[29] = 32229;
EffectList[30] = 32231;
EffectList[31] = 32257;
EffectList[32] = 32258;
EffectList[33] = 32258;
EffectList[34] = 32260;
EffectList[35] = 32265;
EffectList[36] = 32066;
EffectList[37] = 32279;
EffectList[38] = 32281;
EffectList[39] = 32287;
EffectList[40] = 32288;
EffectList[41] = 32290;
EffectList[42] = 32292;
EffectList[43] = 32002;
EffectList[44] = 32309;
EffectList[45] = 32310;
EffectList[46] = 32355;
EffectList[47] = 32371;
EffectList[48] = 32376;
EffectList[49] = 32376;
EffectList[50] = 32380;
EffectList[51] = 32402;
EffectList[52] = 32403;
EffectList[53] = 32431;
EffectList[54] = 32492;
EffectList[55] = 32494;
EffectList[56] = 32501;
EffectList[57] = 32523;
EffectList[58] = 32631;
EffectList[59] = 32691;
else if (AddWingsEffect_Buff == ITEM2(12, 165))
{
Color[0] = ((float)(rand() % 100) / 100);
Color[1] = ((float)(rand() % 100) / 100);
Color[2] = ((float)(rand() % 100) / 100);//
for (int i = 1; i < 48; i++)
{
memcpy(&F1Arg11, &F1_Arg11, sizeof(F1_Arg11));
memcpy(&F2Arg5, &F2_Arg5, sizeof(F2_Arg5));
memcpy(&F1Arg2, &F1_Arg2, sizeof(F1_Arg2));
pAllowStaticEffect(F1_This, &F1Arg11, F1Arg2, i, 0);
RandomedEffect = EffectList[rand() % 59];
pPlayStaticEffect(RandomedEffect, &F1Arg11, 1, Color, F2Arg5, 1.0, 0);
}
}
where I meet: pPlayStaticEffect and pAllowStaticEffect which version of main?
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
NaveMu
where I meet: pPlayStaticEffect and pAllowStaticEffect which version of main?
its in zteam source
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
natzugen
its in zteam source
I not use zteam could give me the source of it? and report the version of the same
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
mauro07
Here my release.. for: Flamberge, Sword Bracker and Imperial Sword (Season 4 Socket Swords) on: 1.04d GMO Effects:
Code:
case 1197: // Flamberge
*(float *)&v448 = 0.80000001;
v449 = 0.60000002;
v450 = 0.2;
sub_544E60(v438, (int)&v440, v437, 11, 0);
sub_7711C0(32002, (int)&v440, 0.60000002, (int)&v448, v436, 0.0, 0);
sub_7711C0(32002, (int)&v440, 0.60000002, (int)&v448, v436, 0.0, 0);
*(float *)&v448 = 0.30000001;
v449 = 0.80000001;
v450 = 0.69999999;
sub_544E60(v438, (int)&v440, v437, 12, 0);
sub_7711C0(32002, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 13, 0);
sub_7711C0(32002, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 12, 0);
sub_7711C0(32002, (int)&v440, 0.30000001, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 13, 0);
sub_7711C0(32002, (int)&v440, 0.30000001, (int)&v448, v436, 0.0, 0);
*(float *)&v448 = 0.89999998;
v449 = 0.1;
v450 = 0.1;
sub_544E60(v438, (int)&v440, v437, 1, 0);
sub_7711C0(32402, (int)&v440, 0.80000001, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 2, 0);
sub_7711C0(32402, (int)&v440, 0.69999999, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 3, 0);
sub_7711C0(32402, (int)&v440, 0.69999999, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 4, 0);
sub_7711C0(32402, (int)&v440, 0.69999999, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 5, 0);
sub_7711C0(32402, (int)&v440, 0.60000002, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 6, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 7, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
break;
// -------------------------------------------------------------------------------------------
case 1198: // Sword Bracker
*(float *)&v448 = 0.1;
v449 = 0.89999998;
v450 = 0.1;
sub_544E60(v438, (int)&v440, v437, 1, 0);
sub_7711C0(32402, (int)&v440, 0.60000002, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 2, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 3, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 4, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 5, 0);
sub_7711C0(32402, (int)&v440, 0.40000001, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 6, 0);
sub_7711C0(32402, (int)&v440, 0.30000001, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 7, 0);
sub_7711C0(32402, (int)&v440, 0.30000001, (int)&v448, v436, 0.0, 0);
for ( i10 = 1; i10 <= 7; ++i10 )
{
if ( !(sub_9CFA0D(a1, a2) % 4) )
{
*(float *)&v440 = 0.0;
v441 = 0.0;
v442 = 0.0;
sub_544E60(v438, (int)&v440, v437, i10, 0);
sub_74CBE0(a1, a2, 32290, (int)&v440, v437 + 264, (int)&v448, 12, 0.5, v437);
}
}
break;
// -------------------------------------------------------------------------------------------
case 1199: // Imperial Sword
v89 = (double)(sub_9CFA0D(a1, a2) % 15) / 30.0;
v349 = v89 + 0.5;
*(float *)&v440 = 0.0;
v441 = 0.0;
v442 = 0.0;
*(float *)&v448 = 0.1;
v449 = 0.40000001;
v450 = 0.89999998;
sub_545030((void *)v438, (int)&unk_7BC0A20, (int)&v440, (int)&v445, 1);
sub_7711C0(32229, (int)&v445, 0.40000001, v436 + 156, v436, 0.0, 0);
sub_7711C0(32119, (int)&v445, v349, (int)&v448, v436, 0.0, 0);
*(float *)(v436 + 300) = *(float *)&v445;
*(float *)(v436 + 304) = v446;
*(float *)(v436 + 308) = v447;
v346 = 0.0;
v347 = 0.0;
v348 = 0.89999998;
sub_72D060(a1, a2, a3, 32223, (int)&v445, (int)&v445, v436 + 264, 17, v436, 25.0, -1, 0, 0, -1, 0, -1);
sub_545030((void *)v438, (int)&unk_7BC0A50, (int)&v440, (int)&v445, 1);
sub_7711C0(32229, (int)&v445, 0.40000001, v436 + 156, v436, 0.0, 0);
sub_7711C0(32119, (int)&v445, v349, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0A80, (int)&v440, (int)&v445, 1);
sub_7711C0(32229, (int)&v445, 0.40000001, v436 + 156, v436, 0.0, 0);
sub_7711C0(32119, (int)&v445, 0.40000001, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0AB0, (int)&v440, (int)&v445, 1);
sub_7711C0(32229, (int)&v445, 0.40000001, v436 + 156, v436, 0.0, 0);
sub_7711C0(32119, (int)&v445, 0.40000001, (int)&v448, v436, 0.0, 0);
*(float *)&v448 = 0.0;
v449 = 0.30000001;
v450 = 0.69999999;
sub_545030((void *)v438, (int)&unk_7BC0900, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 1.0, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0930, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.80000001, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0960, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.60000002, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0990, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.40000001, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC09C0, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.2, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC09F0, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.1, (int)&v448, v436, 0.0, 0);
break;
PS: Decompiled from IDA 6.6
PS 2: Here my created: "Legendary Lightning Effects" to: Season 4.6 (JPN) or (ENG) main.exe
Code:
// ----
// Legendary Set
case ITEM2(7, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,20);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
}
break;
// ---
case ITEM2(8, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,19);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
if(rand() %12 <= 2)
{
float Formula1 = (float)(rand() % 100) / 100.0f;
vec3_t fVal;
Vector( Formula1*0.5f + 4.0f,
Formula1*0.5f + 4.0f,
Formula1*0.5f + 2.0f, fVal );
// ---
Vector(0.f,0.5833f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,19);
CreateSprite(32002,Position,fVal[1],Light2,o,fVal[0],0);
}
}
break;
// ---
case ITEM2(9, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,45);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
// ---
b->TransformByObjectBone(Position,o,49);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
}
break;
// ---
case ITEM2(10, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,36);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
}
break;
// ---
case ITEM2(11, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,4);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
// ---
b->TransformByObjectBone(Position,o,11);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
}
break;
// ----
PS 3: From this video ->
https://www.youtube.com/watch?v=n0Mz37cMngs
PS 4: Here I leave another Research by me on: 1.04d GMO main.exe and 1.03k JPN main.exe:
Code:
0x0074F901 -> JNZ por JMP (1.03k)
0x0082F07C -> JNZ por JMP (1.04d)
This is for Allow: Seed Spheres Combination (on Research Master NPC) from the same Types.. this is only for Client Side.. is necesary quit this check functions on your: GameServer Source too.. (is not difficult).
could spend the .h the b-> TransformByObjectBone and CreateEffect?
-
re: [Development] Adding Effects to Items (Easy Way)
someone help me with the main pAllowStaticEffect 1:03:25? offset: 0x004E171E
decompilation IDA: int __thiscall sub_4E171E (float * this, int a2, a3 int, int a4, a5 char)
It would be like this?
#define pAllowStaticEffect ((void(__thiscall*)(LPVOID This, int Arg1, int Arg2, float Arg3, char Arg4)) 0x004E171E)
game closes when entering; /
-
re: [Development] Adding Effects to Items (Easy Way)
PLEASE Upload Link ..........
-
re: [Development] Adding Effects to Items (Easy Way)
nobody will LINK up the full code? :bawling:
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
Kiosani
Well, I now have a much better method than this, so I made this for those who want to learn something interesting..
First thing to understand: Formulas for calc "
ItemID" and "
ObjectID"
for
ItemID is:
#define ItemId(
x,
y) ((
x *
512) +
y)
Small explain:
x = item type get of your: Item(XXX).txt from server side
y = item index get of your: Item(XXX).txt from server side
512 = is max item index possible on: Item.bmd from client side
For example:
for calculate ItemID for item: "
Divine Sword of Archangel" you must apply the Formula
Divine Sword ItemId = 0 * 512 + 19 = 19 (This value must be passed to hexadecimal: 0x13)
then: 0x13 is ItemId for: Divine Sword of Archangel (on any main.exe version more than: 1.01 series)
but, for example for calculate ItemID for: "
Wings of Storm" of Blade Master:
Wings of Storm ItemId = 12 * 512 + 36 = 6180 (This value must be passed to hexadecimal: 0x1824)
then: 0x1824 is ItemId for: Wings of Storm (of course than on any main.exe more than: 1.01 series, and in main.exe from versions more old not exists this wings :p)
for ObjectID is:
#define ObjectId(
x,
y) ((
x *
512) +
y +
ItemArray)
Well is the same.. but have 1 aditional factor:
ItemArray?? is very simple to find for any version of main.exe, in my case is: 834 (in decimal value) but in hexadecimal value is: 0x342
Small Guide to find: "
ItemArray" in any main.exe (more than: 1.01 series)
http://forum.ragezone.com/f508/item-...effect-868154/
Well then to calculate our
ObjectID for each case of Item:
for example: Wings of Storm ObjectID = 12 * 512 + 36 + 834 = 7014 (in decimal value but passed to hexadecimal value is: 0x1B66)
then: 0x1B66 is ObjectID for: Wings of Storm in own main.exe version: 1.03.11 JPN :)
with main.exe open in ollydbg -> second click -> search for -> all constants and write: 1B66
http://i.imgur.com/Dz7gPDV.jpg
the function allocated on: 005CFAC0 is the function for identifier: Wings of Storm and Render Sprites and Effects on this..
Well here a Individual part of code for understand..
Code:
void __declspec(naked) WingsOfStormEffect(){
_asm
{
MOV EAX, DWORD PTR SS:[EBP+0x0C]
MOV dwItem, EAX
CMP dwItem,ObjectId(12,36) //Original case for Wings of Storm item
JE Return
Return:
MOV ECX,0x005CFAC7
JMP ECX
}
}
then.. If you add your own item to this Assembler Inline function re-writed of 1 asm Line of main.exe, and you put on your added item like: .smd the same count of Bones or Nodes, and convert to: .bmd, put on your client folder ussually: "Data/Item", and hook your compiled: Nemesis.dll to your: 1.03k JPN main.exe, you can see something like this:
http://i.imgur.com/QnrasgZ.jpg
Download FULL SOURCE CODE (100% FIXED NOT EXTRANGE CRASHS):
https://mega.co.nz/#!WJYgxIZJ!-kF7Xk...3dzix-Mt48uRoE
PS 1 :
Sorry for put the same effect on this Staff you must add your item case ObjectID in: WingsOfIllusion Inline function of my code and usage this model:
https://mega.co.nz/#!fMhi1BJR!pnDeI6...VoKWzbzdfbHJfg
PS 2 :
For create your own items using this method of: "COPY" of original Wings 3 Effects every one of your added models .bmd must have exactly the same: counts of: Bones or Nodes, than original Wings Models effect, because main.exe get bone positions for calculate the effect lights positions.
Example with: Staff of Angel .smd:
Code:
version 1
nodes
0 "Box01" -1
1 "Bone01" 0
2 "Bone02" 1
3 "Bone03" 2
4 "Bone35" 2
5 "Bone34" 2
6 "Bone33" 2
7 "Bone32" 2
8 "Bone31" 2
9 "Bone36" 1
10 "Bone04" 1
11 "Bone05" 10
12 "Bone06" 11
13 "Bone37" 11
14 "Bone38" 1
15 "Bone07" 0
16 "Bone08" 15
17 "Bone09" 16
18 "Bone40" 16
19 "Bone39" 15
20 "Bone51" 0
21 "Bone52" 20
22 "Bone53" 21
23 "Bone43" 21
24 "Bone42" 21
25 "Bone41" 21
26 "Bone45" 21
27 "Bone44" 21
28 "Bone54" 20
29 "Bone55" 28
30 "Bone56" 29
31 "Bone47" 29
32 "Bone46" 20
33 "Bone48" 20
34 "Bone57" 0
35 "Bone58" 34
36 "Bone59" 35
37 "Bone50" 35
38 "Bone49" 34
end
skeleton
time 0
0 0.000000 -100.000000 -0.333302 1.570796 -0.000000 0.000000
1 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
2 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
3 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
4 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
5 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
6 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
7 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
8 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
9 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
10 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
11 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
12 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
13 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
14 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
15 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
16 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
17 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
18 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
19 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
20 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
21 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
22 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
23 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
24 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
25 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
26 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
27 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
28 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
29 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
30 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
31 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
32 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
33 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
34 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
35 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
36 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
37 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
38 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000
end
38 is Bone count on: Wings of Illusion original one item than get this effects. :):
Credits for this: ONLY FOR ME (I create this method, like 1 easy way to render cool lights on Items)
And this is like Small Guide for noobs, because people with more knowledge, they may think that this is a silly method, but silly.. or not silly, this method works.
Does it work on MU Season 2?
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
justiceiro741
Does it work on MU Season 2?
hmm... no bro... on: Season 2 main.exe not exists: "3rd Level Wings" then... not exists: "Sprite Effects from this". Sorry. you must try to use: Season 3 Episode 1 or Season 2.5 JPN Protocol main.exe (or any version that have: 3rd Level Wings).
PS: But this method is old. maybe is more simple than another more complex ways to put cool Light effects on items, that require some minimum knowledge on programming. but maybe you can search here on forum, more related to this.
-
re: [Development] Adding Effects to Items (Easy Way)
-
re: [Development] Adding Effects to Items (Easy Way)
Test Efects main 1.04j Kor
If someone has an interest in working on this version call
private.__declspec(naked) void WingsAddSpecialEffect() // -> 16 -> 00522D1B
{
// ----
_asm
{
mov eax, dword ptr ss:[ebp+8]
mov esi, dword ptr ds:[eax+0x330]
mov WingsAddSpecialEffect_Pointer, esi
}
// ----
// ----
if( WingsAddSpecialEffect_Pointer == ITEM2(12, 200) || WingsAddSpecialEffect_Pointer == ITEM2(12, 200) ) // Complete
{
_asm
{
MOV DWORD PTR SS:[EBP-0x1C], 0xC1D00000
MOV DWORD PTR SS:[EBP-0x18], 0x40A00000
MOV DWORD PTR SS:[EBP-0x14], 0x428C0000
// ----
PUSH 1
LEA EAX,[EBP-0x44]
mov WingsAddSpecialEffect_Arg7, eax
PUSH EAX
LEA ECX,[EBP-0x1C]
mov WingsAddSpecialEffect_Arg6, ecx
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP+0x0C]
MOV EAX,DWORD PTR DS:[EDX+0x154]
mov WingsAddSpecialEffect_Arg5, eax
PUSH EAX
MOV ECX,DWORD PTR SS:[EBP-0x34]
mov WingsAddSpecialEffect_This, ecx
mov WingsAddSpecialEffect_Buff, 0x005020D9
CALL WingsAddSpecialEffect_Buff
// ----
MOV ECX,DWORD PTR SS:[EBP+0x0C]
ADD ECX, 0x128
mov WingsAddSpecialEffect_Arg4, ecx
MOV EDX,DWORD PTR SS:[EBP+0x0C]
ADD EDX, 0x330
mov WingsAddSpecialEffect_Arg3, edx
LEA EAX,[EBP-0x44]
mov WingsAddSpecialEffect_Arg2, eax
}
MU_SetEffect(0x6C9, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 0.8, 1);
}
_asm
{
mov eax, dword ptr ss:[ebp+0x0c]
//mov esi, dword ptr ds:[eax+0x30]
MOVSX esi,WORD PTR DS:[EAX+0x02]
mov WingsAddSpecialEffect_Pointer, esi
}
// ----
if( WingsAddSpecialEffect_Pointer != 0x217 )
{
_asm
{
mov WingsAddSpecialEffect_Buff, 0x0052341A
jmp WingsAddSpecialEffect_Buff
}
}
else
{
_asm
{
mov WingsAddSpecialEffect_Buff, 0x00522D2E
jmp WingsAddSpecialEffect_Buff
}
}
}
SetCompleteHook(0xE9,0x00522D1B,&WingsAddSpecialEffect); // 1.04j 00522D1B ok testado
-
re: [Development] Adding Effects to Items (Easy Way)
Please share offset in main 1.05D
-
re: [Development] Adding Effects to Items (Easy Way)
please share me offset for main 1.05D muemu Season 4
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
laulinh2
please share me offset for main 1.05D muemu Season 4
#define HDK_SET_ITEM_EFFECT 0x004F31FB
#define HDK_SET_COLOR_EFFECT 0x004F326F
#define HDK_ITEM_EFFECT_ALLOW 0x0057AD8D
#define HDK_ITEM_EFFECT_NOT_ALLOW 0x0057B73B
#define HDK_NEXT_ITEM_COLOR 0x0057AF2E
-
re: [Development] Adding Effects to Items (Easy Way)
Quote:
Originally Posted by
Kiosani
Here my release.. for: Flamberge, Sword Bracker and Imperial Sword (Season 4 Socket Swords) on: 1.04d GMO Effects:
Code:
case 1197: // Flamberge
*(float *)&v448 = 0.80000001;
v449 = 0.60000002;
v450 = 0.2;
sub_544E60(v438, (int)&v440, v437, 11, 0);
sub_7711C0(32002, (int)&v440, 0.60000002, (int)&v448, v436, 0.0, 0);
sub_7711C0(32002, (int)&v440, 0.60000002, (int)&v448, v436, 0.0, 0);
*(float *)&v448 = 0.30000001;
v449 = 0.80000001;
v450 = 0.69999999;
sub_544E60(v438, (int)&v440, v437, 12, 0);
sub_7711C0(32002, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 13, 0);
sub_7711C0(32002, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 12, 0);
sub_7711C0(32002, (int)&v440, 0.30000001, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 13, 0);
sub_7711C0(32002, (int)&v440, 0.30000001, (int)&v448, v436, 0.0, 0);
*(float *)&v448 = 0.89999998;
v449 = 0.1;
v450 = 0.1;
sub_544E60(v438, (int)&v440, v437, 1, 0);
sub_7711C0(32402, (int)&v440, 0.80000001, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 2, 0);
sub_7711C0(32402, (int)&v440, 0.69999999, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 3, 0);
sub_7711C0(32402, (int)&v440, 0.69999999, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 4, 0);
sub_7711C0(32402, (int)&v440, 0.69999999, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 5, 0);
sub_7711C0(32402, (int)&v440, 0.60000002, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 6, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 7, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
break;
// -------------------------------------------------------------------------------------------
case 1198: // Sword Bracker
*(float *)&v448 = 0.1;
v449 = 0.89999998;
v450 = 0.1;
sub_544E60(v438, (int)&v440, v437, 1, 0);
sub_7711C0(32402, (int)&v440, 0.60000002, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 2, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 3, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 4, 0);
sub_7711C0(32402, (int)&v440, 0.5, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 5, 0);
sub_7711C0(32402, (int)&v440, 0.40000001, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 6, 0);
sub_7711C0(32402, (int)&v440, 0.30000001, (int)&v448, v436, 0.0, 0);
sub_544E60(v438, (int)&v440, v437, 7, 0);
sub_7711C0(32402, (int)&v440, 0.30000001, (int)&v448, v436, 0.0, 0);
for ( i10 = 1; i10 <= 7; ++i10 )
{
if ( !(sub_9CFA0D(a1, a2) % 4) )
{
*(float *)&v440 = 0.0;
v441 = 0.0;
v442 = 0.0;
sub_544E60(v438, (int)&v440, v437, i10, 0);
sub_74CBE0(a1, a2, 32290, (int)&v440, v437 + 264, (int)&v448, 12, 0.5, v437);
}
}
break;
// -------------------------------------------------------------------------------------------
case 1199: // Imperial Sword
v89 = (double)(sub_9CFA0D(a1, a2) % 15) / 30.0;
v349 = v89 + 0.5;
*(float *)&v440 = 0.0;
v441 = 0.0;
v442 = 0.0;
*(float *)&v448 = 0.1;
v449 = 0.40000001;
v450 = 0.89999998;
sub_545030((void *)v438, (int)&unk_7BC0A20, (int)&v440, (int)&v445, 1);
sub_7711C0(32229, (int)&v445, 0.40000001, v436 + 156, v436, 0.0, 0);
sub_7711C0(32119, (int)&v445, v349, (int)&v448, v436, 0.0, 0);
*(float *)(v436 + 300) = *(float *)&v445;
*(float *)(v436 + 304) = v446;
*(float *)(v436 + 308) = v447;
v346 = 0.0;
v347 = 0.0;
v348 = 0.89999998;
sub_72D060(a1, a2, a3, 32223, (int)&v445, (int)&v445, v436 + 264, 17, v436, 25.0, -1, 0, 0, -1, 0, -1);
sub_545030((void *)v438, (int)&unk_7BC0A50, (int)&v440, (int)&v445, 1);
sub_7711C0(32229, (int)&v445, 0.40000001, v436 + 156, v436, 0.0, 0);
sub_7711C0(32119, (int)&v445, v349, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0A80, (int)&v440, (int)&v445, 1);
sub_7711C0(32229, (int)&v445, 0.40000001, v436 + 156, v436, 0.0, 0);
sub_7711C0(32119, (int)&v445, 0.40000001, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0AB0, (int)&v440, (int)&v445, 1);
sub_7711C0(32229, (int)&v445, 0.40000001, v436 + 156, v436, 0.0, 0);
sub_7711C0(32119, (int)&v445, 0.40000001, (int)&v448, v436, 0.0, 0);
*(float *)&v448 = 0.0;
v449 = 0.30000001;
v450 = 0.69999999;
sub_545030((void *)v438, (int)&unk_7BC0900, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 1.0, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0930, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.80000001, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0960, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.60000002, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC0990, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.40000001, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC09C0, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.2, (int)&v448, v436, 0.0, 0);
sub_545030((void *)v438, (int)&unk_7BC09F0, (int)&v440, (int)&v445, 1);
sub_7711C0(32402, (int)&v445, 0.1, (int)&v448, v436, 0.0, 0);
break;
PS: Decompiled from IDA 6.6
PS 2: Here my created: "Legendary Lightning Effects" to: Season 4.6 (JPN) or (ENG) main.exe
Code:
// ----
// Legendary Set
case ITEM2(7, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,20);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
}
break;
// ---
case ITEM2(8, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,19);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
if(rand() %12 <= 2)
{
float Formula1 = (float)(rand() % 100) / 100.0f;
vec3_t fVal;
Vector( Formula1*0.5f + 4.0f,
Formula1*0.5f + 4.0f,
Formula1*0.5f + 2.0f, fVal );
// ---
Vector(0.f,0.5833f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,19);
CreateSprite(32002,Position,fVal[1],Light2,o,fVal[0],0);
}
}
break;
// ---
case ITEM2(9, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,45);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
// ---
b->TransformByObjectBone(Position,o,49);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
}
break;
// ---
case ITEM2(10, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,36);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
}
break;
// ---
case ITEM2(11, 3):
{
if(rand() %15 <= 2)
{
Vector(1.f,1.f,1.f,Light2);
Vector(1.f,1.f,1.f,Position);
// ---
b->TransformByObjectBone(Position,o,4);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
// ---
b->TransformByObjectBone(Position,o,11);
CreateEffect(387,Position,o->Angle,Light2,2,o,-1,0,-2.1f,0,0);
}
}
break;
// ----
PS 3: From this video ->
https://www.youtube.com/watch?v=n0Mz37cMngs
PS 4: Here I leave another Research by me on: 1.04d GMO main.exe and 1.03k JPN main.exe:
Code:
0x0074F901 -> JNZ por JMP (1.03k)
0x0082F07C -> JNZ por JMP (1.04d)
This is for Allow: Seed Spheres Combination (on Research Master NPC) from the same Types.. this is only for Client Side.. is necesary quit this check functions on your: GameServer Source too.. (is not difficult).
could share primary source hook?
-
re: [Development] Adding Effects to Items (Easy Way)
Reupload the link please. Thank you!!! I really need the Olly!!