bot4dofus / datafus Goto Github PK
View Code? Open in Web Editor NEW📚🥚 The Dofus database and socket events in JSON files. Includes the source code and more...
Home Page: https://discord.gg/kNHsFcbUGp
License: MIT License
📚🥚 The Dofus database and socket events in JSON files. Includes the source code and more...
Home Page: https://discord.gg/kNHsFcbUGp
License: MIT License
conditional_drops
to the monstersevolutionary_effects
as dict of integersActions:
The Dofus release title is alway changing. I'd like to fix it once for all. Use latest english title in rss.
conditions
as array of string, not stringssalut, je voudrai savoir si c'est possible d'avoir les https pour les requests dofus pour les hotels de ventes.
Add an index.html file as home of the GitHub pages and RESTFULL API. This file should contain :
characteristics
as dict of tuples, not stringsBonjour,
Merci pour ce très beau travail.
Auriez vous un exemple d'un envoi de ces évenements via une socket ?
Je cherche à comprendre comment envoyer ces évenements.
effects
as dict of tuples, not stringsset
in the README.mdIn ChatServerWithObjectMessage.as there is an attribute called objects
of type Vector.<ObjectItem>
. It is serialzed this way:
output.writeShort(this.objects.length);
for(var _i1:uint = 0; _i1 < this.objects.length; _i1++)
{
(this.objects[_i1] as ObjectItem).serializeAs_ObjectItem(output);
}
The type must be Vector<Short,ObjectItem>
In ObjectItem.as there is an attribute called effects
of type Vector.<ObjectEffect>
. It is serialzed this way:
output.writeShort(this.effects.length);
for(var _i3:uint = 0; _i3 < this.effects.length; _i3++)
{
output.writeShort((this.effects[_i3] as ObjectEffect).getTypeId());
(this.effects[_i3] as ObjectEffect).serialize(output);
}
The type must include the fact that the TypeId
is serialized before ObjectEffect
.
In events.json
, the attribute type must include this information.
Something like:
Vector<Short,Short,ObjectEffect>
TypeIdVector<Short,Short,ObjectEffect>
TypeIdVector<Short,ObjectEffect>
TypeId
is always serialized as a Short
.
zones
to the monsters as list of stringslevel
for a craft.items
for the items urlWhen deserializing network events, we often have vectors of objects. Those are serializable objects implementing the INetworkMessage
. Job A should also create an serializable_objects.json with the data structure of this objects.
Use actions/upload-artifact@v3
and actions/download-artifact@v3
to pass files between jobs A, B and C to Publish.
set_total_bonuses
as dict of tuples, not stringsThe repo size is 1.12Gb.
Remove the files just like it has never been commited.
https://stackoverflow.com/questions/35115585/remove-files-completely-from-git-repository-along-with-its-history
Objective: Reduce repo size
The following page should lead to an error 404 once succed
There is 164 d2o files but 168 json files.
This is because the enties_json directory is never cleaned.
B1 script must clean it at the beginning
The .git folder is growing fast: 5Gb.
Use git lfs to track:
Create a script to automatically install/update Dofus. This script will be called from the "Job U" (Update) which is run before Job A, B and C. It will be automaticaly triggered when a Dofus version is realesed.
Tools to do it:
Host the github runner with https://github.com/actions/runner
In RawDataMessage.as, the field content
is of type ByteArray
.
It is serialized like a vector:
public function serializeAs_RawDataMessage(output:ICustomDataOutput) : void
{
output.writeVarInt(this.content.length);
for(var _i1:uint = 0; _i1 < this.content.length; _i1++)
{
output.writeByte(this.content[_i1]);
}
}
So it must be Vector<VarInt,Byte>
.
In the enties files, the field type are negative numbers. Display the type in string instead of the number.
-1 : integer
-2 : boolean
-3 : utf (string)
-4 : double
-5 : i18n
-6 : unsigned_integer (id of entity)
-99 : list
Rewrite the D2oReader class
Small script to do it.
class_ = "MapComplementaryInformationsDataMessage"
file = class_ + ".as"
constructor_substring = "public function init" + class_
with open(file, 'r') as f:
lines = f.readlines()
for line in lines:
if(constructor_substring in line):
begin_index = line.find("(")
end_index = line.rfind(")")
args = line[begin_index+1:end_index]
args = args.split(', ')
args = [arg.split(' = ')[0] for arg in args]
args = [{arg.split(':')[0]:arg.split(':')[1]} for arg in args]
print(args)
break
Any way / plan to make this available for Dofus Retro?
Binary files have been uploaded within the DofusInvoker/
folder. In this repository, it would great to erase the history for all the folders except DofusInvoker/scripts/com/
.
Example : https://github.com/bot4dofus/Datafus/tree/85d2cf5671964d511398ec3add087bd2ee8f961e/data/DofusInvoker
bonuses
as dict of integersThe correct serialization order is:
Current order is (based on attributes declaration):
events.json
content:
"IdentificationMessage": {
"file": "data/A/DofusInvoker/scripts/com/ankamagames/dofus/network/messages/connection/IdentificationMessage.as",
"id": "7755",
"superclass": "NetworkMessage",
"interfaces": [
"INetworkMessage"
],
"attributes": {
"version": "Version",
"lang": "String",
"credentials": "Vector<VarInt,Byte>",
"serverId": "Short",
"autoconnect": "Boolean",
"useCertificate": "Boolean",
"useLoginToken": "Boolean",
"sessionOptionalSalt": "VarLong",
"failedAttempts": "Vector<Short,VarShort>"
}
},
autoconnect
is the first bit of the byteuseCertificate
the second bituseLoginToken
the third bitThose booleans are flags.
We should be able to distinguish them from regular booleans like in https://github.com/bot4dofus/Datafus/blob/master/data/A/DofusInvoker/scripts/com/ankamagames/dofus/network/messages/game/basic/BasicWhoIsRequestMessage.as#L120
Content of events.json:
"IdentificationMessage": {
"file": "data/A/DofusInvoker/scripts/com/ankamagames/dofus/network/messages/connection/IdentificationMessage.as",
"id": "7755",
"superclass": "NetworkMessage",
"interfaces": [
"INetworkMessage"
],
"attributes": {
"version": "Version",
"lang": "String",
"credentials": "Vector<VarInt,Byte>",
"serverId": "Short",
"autoconnect": "Boolean",
"useCertificate": "Boolean",
"useLoginToken": "Boolean",
"sessionOptionalSalt": "VarLong",
"failedAttempts": "Vector<Short,VarShort>"
}
},
In HouseOnMapInformations.as there is an attribut called doorsOnMap
which is a Vector.<uint>
. In the serialize method, it is serialized as an Int
.
In UpdatedStorageTabInformation.as there is an attribut called dropTypeLimitation
which is a Vector.<uint>
. In the serialize method, it is serialized as a VarInt
.
Vector.<uint>
and Vector.<int>
must be check just like uint
and int
attributs.
resistances
as dict of tuples, not stringsgrep -r "output.writeShort((this." | wc -l
returns 74 results
Ctrl+F of TypeIdVector
in events.json
returns 71 results
Line 17441 in cedef47
drops
to the monstersA declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.