| manulaiko3.0 |
01/07/2015 02:16 |
Quote:
Originally Posted by lCulito
(Post 30667094)
thanks manulaiko3.0,
any have packet of drone formations?
i wanna code but i don't know the packets.
|
I made a tutorial (time ago) in which I showed how to find packets, this is the whole tutorial:
Quote:
We must go to the function that handel the packets that the swf receive, it's located in net->ConnectionManager.html.
There are too much letters I know.
We must search "private function onData(event: DataEvent) : void" this is the function we need.
There are a lot of _loc_ but we must search for something special: _loc_3.
Code:
var _loc_2:* = String(event.data); _loc_3 = _loc_2.split(ATTRIBUTE_SEPERATOR)
This parse the param of the function to an array, the next important line is:
Now we know that the packet starts with 0, asdf, FUCKYOU or whatever you want because the function starts on the next index (the index of a packet are separated by "|" so this is a normal packet INDEX0|INDEX1|INDEX2...)
Ok, let's take a look at the first case:
Code:
case ServerCommands.PET:
If we take a look at the file ServerCommands.html (in the same folder as ConnectionManager.html) and search for PET we will see that it's a constant:
Code:
public static const PET:String = "PET";
Now we know that the current packet is "0|PET", ok, let's continue!
Code:
this.petAssembly.assembleCommand(_loc_3);
This sends the packet to the class petAssembly (PetAssembly.html, in the same folder as ConnectionManager.html), let's open it and search for the function assembleCommand.
Code:
public function assembleCommand(param1:Array) : void { var _loc_2:* = param1[2]; if (this.delegateDict[_loc_2] != null) { var _loc_3:* = this.delegateDict; _loc_3[_loc_2](param1); } else { this.playSound(73); }// end else if return; }// end function
The important line is
Code:
if (this.delegateDict[_loc_2] != null)
What is _loc_2??
Code:
var _loc_2:* = param1[2];
This means that _loc_2 receives the value of the second index of the packet (remember that an array starts with index 0 so index 2 is "INDEX0|INDEX1|INDEX" the third index), now we must take a look at
Code:
private function initDelegateDict() : void
Let's take a random line:
Code:
this.delegateDict[ServerCommands.REPAIR_PET] = this.assemblePetRepair;
Ok, do you remember the function assembleCommand? If yes you should know that now the packet is something like "0|PET|ServerCommands.REPAIR_PET", now let's look at ServerCommands.html again and search for REPAIR_PET...
Code:
public static const REPAIR_PET:String = "R";
Ok, the packet is "0|PET|R", and now what? Now we must look at the assemblePetRepair function:
Code:
private function assemblePetRepair(param1:Array) : void { this.playSound(71); this.toggleRepairButtonVisbility(false); return; }// end function
Ok, as in this function there isn'tt a line that says something like ServerCommands... this means that the packet is over, we don't need to find nothing else, the final packet is "0|PET|R" and is the repair packet for the pet, but let's take a look at another function:
Code:
private function assembleStopLaserAttack(param1:Array) : void { var _loc_2:* = 2; var _loc_3:* = int(param1[++_loc_2]); var _loc_4:* = this.main.screenManager.map; _loc_4.getCombatManager().removeLaserAttack(_loc_3); return; }// end function
Look at the line
Code:
var _loc_3:* = int(param1[++_loc_2]);
We use the parameter (the packet), which index? ++_loc_2, let's look for the definition of _loc_2, now we know that _loc_2 = 2, so ++_loc_2 = 1 + 2 = 3, then we know there's a 3rd index of the packet ("Index0|Index1|Index2|Index3") and it's parsed to int (number) so it can't be "0|PET|SL|asdf"
Code:
var _loc_4:* = this.main.screenManager.map; _loc_4.getCombatManager().removeLaserAttack(_loc_3);
Now let's look at main.screenManager.map.getComnbatManager(), it returns a CombatManager object, now we must search for the class CombatManager (it's located in combat->CombatManager.html) and search for the function "removeLaserAttack"
Code:
public function removeLaserAttack(param1:int, param2:Boolean = true) : void { var _loc_3:* = this.laserAttacks[int(param1)]; if (_loc_3 != null) { if (param2) { _loc_3.cleanup(); }// end if delete this.laserAttacks[int(param1)]; }// end if return; }// end function
With a bit of brain we can know that laserAttacks is a dictionary with userIDs as index for example an user with the userID 1 has the entry in the dictionary laserAttacks[1], so know we know that the packet is "0|PET|SL| petID" where petID is the ID of the pet.
Easy right? Maybe it's a bit boring but it's easy, I think this is called reverse engeneery.
What do we know now?
-How to find packets
-Pet repair packet: 0|PET|R
-Stop pet laser attack packet: 0|PET|SL| petID
|
And some packets:
Quote:
-Box Collect Response:
Spoiler:
Note, here the packet can start with "0|LM" or "0|y" it has the same effect
-Show the message when you collect a cargo box
Code:
packet = "0|LM|ST|CAR|"+ prometium +"|"+ endurium +"|"+ terbium +"|"+ prometid +"|"+ duranium +"|"+ xenomit +"|"+ promerium;
-Shows "You received XXX jackpot"
Code:
packet = "0|LM|ST|JPE|"+ jackpot +"|"+ hero.jackpot;
-Shows "You received XXX experience points"
Code:
packet = "0|LM|ST|EP|"+ exp +"|"+ hero.exp +"|"+ hero.level;
-Shows "You received XXX credits"
Code:
packet = "0|LM|ST|CRE|"+ credits +"|"+ hero.credits;
-Shows "You received XXX uridium"
Code:
packet = "0|LM|ST|URI|"+ uri +"|"+ hero.uri;
-Shows "You received XXX honor points"
Code:
packet = "0|LM|ST|HON|"+ hon +"|"+ hero.hon;
-Shows "You received XXX HP"
Code:
packet = "0|LM|ST|HTP|"+ hp;
-Shows "You received XXX YYY fireworks"
Code:
packet = "0|LM|ST|FW|"+ fwID +"|"+ amount;
-Shows "You received XXX YYY rockets"
Code:
packet = "0|LM|ST|ROK|"+ rokID +"|"+ amount;
-Shows "You received XXX YYY laser ammo"
Code:
packet = "0|LM|ST|BAT|"+ ammoID +"|"+ amount;
-Shows "You received XXX YYY fireworks"
Code:
packet = "0|LM|ST|FW|"+ fwID +"|"+ amount;
-Shows "XXX active"
Code:
packet = "0|LM|ST|BMP|"+ aNumber;
-Shows "XXX HP deducte"
Code:
packet = "0|LM|ST|DHP|"+ hp;
-Shows "You received extra energy for the galaxy-gates generator XXX times"
Code:
packet = "0|LM|ST|XEN|"+ amount;
-Shows "You received XXX jump credits for the advance CPU"
Code:
packet = "0|LM|ST|JV|"+ amount;
-Shows "You received XXX YYY mines"
Code:
//mineID = "ACM", "DDM", "EMP", "SAB"
packet = "0|LM|ST|AMI|"+ mineID +"|"+ amount;
-Shows "You received XXX P.E.T fuel"
Code:
packet = "0|LM|ST|PFL|"+ amount;
-Shows "You received XXX YYY"
Code:
/* itemID = "ammunition_specialammo_emp-01",
* "resource_logfile",
* "equipment_exta_cpu_ajp-01",
* "equipment_extra_cpu_dr-01",
* "equipment_extra_cpu_cl04k-m",
* "equipment_extra_cpu_cl04k-xl",
* "equipment_generator_speed_g3n-6900",
* "equipment_generator_speed_g3n-7900",
* "equipment_generator_shield_sg3n-b01",
* "equipment_generator_shield_sg3n-b02",
* "equipment_weapon_laser_lf-2",
* "equipment_weapon_laser_lf-3",
* "equipment_weapon_laser_lf-4",
* "ship_goliath_design_solace",
* "ship_goliath_design_venom",
* "ship_goliath_design_spectrum",
* "ship_goliath_design_sentinel",
* "ship_goliath_design_diminisher",
* "ship_vengeance_design_corsair",
* "ship_vengeance_design_adept",
* "ship_vengeance_design_lightning",
* "ship_vengeance_design_revenger",
* "ship_vengeance_design_avenger",
* "ship_goliath_design_bastion",
* "ship_goliath_design_enforcer",
* "ship_goliath_design_veteran",
* "ship_goliath_design_exalted"
*/
packet = "0|LM|ST|LOT|"+ itemID +"|"+ amount;
-Shows "Cargo bay full! Sell your raw materials at the space station."
Code:
packet = "0|LM|ST|BTB";
-Show "Collecting box already"
Code:
packet = "0|LM|ST|BAH";
-Explodes a mine
Code:
packet = "0|LM|ST|MIN|"+ mineID;
-Shows "Remaining Jackpot Battle contestants: XXX"
Code:
packet = "0|LM|ST|SLE|"+ amount;
-Shows "You received XXX YYY rockets"
Code:
packet = "0|LM|ST|RL|"+ rocketID +"|"+ amount;
-Shows "You received XXX log-disks"
Code:
packet = "0|LM|ST|LOG|"+ amount;
|
-General packets:
-Group System:
-Map events:
-POI:
-Pet:
-Quest:
-Rocket Launcher:
-Set Attribute:
-Settings:
-Skills:
-Techs:
|
See you!
|