* (hopefully) fixed several bugs related to number rounding and wrong math calculations. thx to crogge for the report.
* deleted old files
This commit is contained in:
parent
520ee863a6
commit
7961aa9046
237
changelog.txt
237
changelog.txt
@ -1,237 +0,0 @@
|
||||
/////////////////////////////////////////////////////////////
|
||||
// PseuWoW changelog // date|time: 20:31 11.12.2006 /////////
|
||||
/////////////////////////////////////////////////////////////
|
||||
//Format:
|
||||
// + added
|
||||
// - note
|
||||
// % removed
|
||||
// ! important
|
||||
// O ToDo: open, not yet done
|
||||
// x Todo: done
|
||||
/////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
ToDo (Overall):
|
||||
================
|
||||
|
||||
- simulation of no installed addons
|
||||
- more config possibilities in conf/pseuwow.conf
|
||||
- redo controller related code and recode controller
|
||||
- character creation - to be able to create chars with names bl!zz does not allow
|
||||
- remove hardcoded language names, use lang names via config
|
||||
-> string table? not sure.
|
||||
- ppoints system? as a workaround for maps? not sure.
|
||||
- much much more i cant think of yet :P
|
||||
|
||||
#Far future:
|
||||
- kind of an AI that it can decide for itself what to do
|
||||
- add ability to use blizz/mangos maps so that it can really walk around, not only teleport
|
||||
- to be continued...
|
||||
- looting, 2D/3D GUI, killing,... you can extend the list as you wish
|
||||
|
||||
ToDo (version after: Alpha 13) / Planned Features:
|
||||
==================================================
|
||||
|
||||
O add a ZCompressor Class (a ByteBuffer using zlib deflate/inflate)
|
||||
O [maybe] first touch with the UpdateFields (CMSG[_COMPRESSED]_UPDATE_OBJECT)
|
||||
O [maybe] add Object/Unit/Player/Creature/... classes.
|
||||
X cleanups to VarSet class (use vectors to store the vars)
|
||||
O cleanups to DefScript class: use vectors to store the script text data
|
||||
O DefScript: instead of only ${var} also be able to use $var like in TCL or PHP
|
||||
O Implement threaded movement system. tracking of player's waypoints, better following code
|
||||
(that does NOT tend to crash mangos!)
|
||||
O improve chat AI? add other AI? not sure.
|
||||
O logfile output
|
||||
[...]
|
||||
|
||||
|
||||
ToDo (next version: Alpha 12) / Planned features:
|
||||
=================================================
|
||||
|
||||
X lots of general code cleanups (remove old C functions from PseuWoW Alpha 7 and before;
|
||||
add objects: PseuInstance, RealmSession, WorldSession, ...; drop the old procedurel code)
|
||||
X opcode handler table, no more case x case y case z
|
||||
O move code portions of the chat handler to an external ChatAI.cpp file and improve
|
||||
the chat AI
|
||||
O -> implement a WordList class to parse sentences
|
||||
O a direct local console (like mangos has). drop plans about a remote controller for now.
|
||||
O lots of bugfixes to the DefScript system
|
||||
X implement zthread, zlib and remove the SDL thread functions.
|
||||
X change the network system from SDL_net to the system by Anders Hedstrom (the one mangos uses). no more packet errors (i hope)!
|
||||
O DefScript: implement a "PermissionMap" to set by the user (for internal funcions)
|
||||
O config options: EnableIngameCommands, EnableLocalConsole, OverrideLoginGuid (dangerous!),
|
||||
AutoReconnect,
|
||||
|
||||
O DefScript fuctions: "GetGuid,var playername", "GetName,var GUID"
|
||||
X add WorldPacket class
|
||||
X -> add uint64 WorldPacket::GetPackedGUID()
|
||||
X fix the packed GUID code if needed (not sure if its really bugged)
|
||||
|
||||
O When everything is done: upload to openSVN!
|
||||
|
||||
|
||||
20:43 09.11.2006 Alpha Build 11
|
||||
=====================================
|
||||
|
||||
+ inluded modified WAD's TrayWoWemu.exe to work with PseuWoW -> TrayPseuWoW.exe =)
|
||||
|
||||
Core:
|
||||
! connecting to servers running versions above 1.10.2 is now possible!
|
||||
+ implemented player name cache, first touch with std::vector<> :)
|
||||
-> players get added to the cache as soon as they move or say something
|
||||
-> chat messages now show player names, whispers can be sent now.
|
||||
-> related command: [-]savecache.
|
||||
+ commands can now given directly ingame saying/whispering "-command" to PseuWoW
|
||||
+ added DefScript functions _onwhisper (gets triggered when a player whispers to PseuWoW),
|
||||
emote #id. the emote function still needs to be fixed and linked with targeting once
|
||||
implemented.
|
||||
+ included reply.def, that uses the above macros and whisper.def. use: reply to last whisp
|
||||
in its original language
|
||||
% removed some old obsoelete cpp files
|
||||
% removed the old config reader, replaced with dynamic reader using the classes
|
||||
VarSet, std::string, DefScript.
|
||||
+ added CMSG_PING and SMSG_PONG (ping every 30 sec, like original WoW)
|
||||
+ better detection if PseuWoW entered the world successfully
|
||||
+ added macros: @thiswhisper,@lastwhisper,@thiscmd,@lastcmd,@thismsg,@lastmsg and related.
|
||||
+ following a player: simply repeat movement opcodes recieved from that player.
|
||||
looks very shitty and is very buggy xD
|
||||
-> command/usage: [-]follow PlayerName to start, just [-]follow to stop.
|
||||
+ you can access all values set in PseuWoW.conf as CAPITALIZED variables, e.g.:
|
||||
"${REALMLIST}" or ingame "-sayv REALMLIST".
|
||||
+ once the conf is loaded the script "_setconf" is executed, this removes dangerous vars
|
||||
like ACCNAME and ACCPASS
|
||||
+ auto-decline of group-invite and trade attempts
|
||||
!+ added support for packed GUIDs
|
||||
+ added def files: outv, sayv, _nopermission, _setconf
|
||||
|
||||
|
||||
|
||||
DefScript engine:
|
||||
- renewed variable handler (renaming *local* var to scriptname::var, #var to var,
|
||||
@var stays @var)
|
||||
- fixed lots of bugs in the ReplaceVars() function.
|
||||
- fixed a little bug in the script loader (wrongly loaded lines beginning with '#')
|
||||
+ added a permission system for scripts called by players. use users.conf to set.
|
||||
(like that its not possible for non-GMs to execute "-say .shutdown" or similar)
|
||||
|
||||
|
||||
|
||||
17:23 06.10.2006 Alpha Build 10
|
||||
===================================
|
||||
+ FULLY working script engine with C++ interface, only very few functions implemented yet.
|
||||
Dynamic loading: Scripts get only loaded if they are needed.
|
||||
+ preparations to stop using C malloc/realloc/free and replace it with NEW,
|
||||
also std::string instead of char*
|
||||
+ PseuWoW can recieve whisper/say/party/guild/server messages, but not yet link them
|
||||
to a name.
|
||||
+ improved packet error/order handling, there are still some packets that get lost,
|
||||
i need to find out where they go. SDL thread issue?
|
||||
% removed yelling PseuWoW version on startup. Use the ./scripts/_worldenter.def script
|
||||
file to modify behaviour when entering the world.
|
||||
- PseuWoW can now detect if it has sent a chatmessage itself or if it came from someone else
|
||||
- added a little fun code and a VERY "basic" chat AI for fun :P
|
||||
- it will say a note if it is sure it has entered the world correctly. it might have been
|
||||
successful anyway even without it, but at least you can be sure when it will probably work.
|
||||
requires "SAY ${@version}" in scripts/_enterworld.def
|
||||
|
||||
|
||||
18:15 10.09.2006 Alpha Build 9
|
||||
===============================
|
||||
+ Added CircularBuffer class for world packet reciever
|
||||
+ Added SDLTCPConnection class for easier connectivity and code readability
|
||||
- first preparations for builtin script engine, still excluded from build,
|
||||
needs cleanups and fixes.
|
||||
-> coded the variable handler
|
||||
-> coded the script loader
|
||||
-> coded the script line tokenizer
|
||||
+ Added connection to world server
|
||||
+ World Authentication done
|
||||
% removed old rs_... / ws_... functions, replaced with SDLTCPConnection realmCon/worldCon
|
||||
% disabled the controller interface for now. it will be included again as soon as the
|
||||
script interpreter works and everything has been cleaned up.
|
||||
+ Integrated AuthCrypt class from mangos
|
||||
+ CHAR_ENUM integrated, char list is now requested and parsed
|
||||
+ read charname from conf file and login with that char
|
||||
YES, logging into the world finally WORKS! :DD
|
||||
+ some checks for invalid or strange packets, which are tried to be interpreted correctly.
|
||||
packet ordering and fetch queue is still buggy.
|
||||
- PseuWoW yells its version once it has joined the world, and yells if an error occured.
|
||||
- only server messages get interpreted correctly so far, player chat recieve does NOT work
|
||||
|
||||
03:12 29.07.2006 Alpha Build 8
|
||||
===============================
|
||||
- completely rewrote the authentication code, Imported Sha1Hash and BigNumber
|
||||
classes from MaNGOS (shrunk code size to 1/4 of what it was before).
|
||||
The code even seems bug-free (hope it stays so)
|
||||
- Authentication WORKS! (after 2 months of failure)
|
||||
+ added realmlist parser
|
||||
+ set realm to login via conf file
|
||||
- Tested on WoWemu (1.8.0) & MaNGOS (1.10.2), authenticating works well
|
||||
+ added a neat icon :) by ©haos
|
||||
|
||||
|
||||
14:45 12.07.2006 Alpha Build 7
|
||||
===============================
|
||||
- complete code reorganisation (no more code including only with .h files.
|
||||
now we have several cpp files with each its own .h)
|
||||
- emulation of any version
|
||||
- updated comment parser, finally :)
|
||||
- you can now set version, build and language via conf file
|
||||
- merged the 2 controller tcpsocks into 1, controller can still only connect to localhost.
|
||||
still no conf file reading implemented into the controller. rest will be implemented later.
|
||||
- removed SS & server b, they were useless
|
||||
- fixed crash where an attemt was made to delete a const string.
|
||||
(seems this caused the GarbageStack:: realloc() size=112 failure)
|
||||
- many other general improvemens and bugfixes
|
||||
|
||||
02:31 10.06.2006 Alpha Build 6 - Memory handling is hard.
|
||||
===============================
|
||||
- fixed crash when realmlist hostname could not be resolved
|
||||
! forgot to malloc x_str & u_str in proof packet sender -> crash (maybe i got it fixed this time)
|
||||
- made more funcions work with the garbage collector
|
||||
- in debug build GarbageStack:: realloc() size=112 fails. dunno why.
|
||||
- added a server S & server b for testing. they are not important and will get removed later.
|
||||
- still no correct reversion.
|
||||
|
||||
18:12 05.06.2006 Alpha Build 5 - The I hate C++ version
|
||||
===============================
|
||||
- crash,crash,crash. there must be a bug in the BN_reverse routine.
|
||||
+ Added a garbage collector
|
||||
- updated the fileparser, because it got bugged with the garbage collector.
|
||||
More configs are supported now. comments still must be at the beginning of the line
|
||||
to be treated as comments.
|
||||
- still working on correct reversal :C
|
||||
|
||||
22:55 31.05.2006 Alpha Build 4 - The DAMN FUCKING SHIT i don't get it version
|
||||
===============================
|
||||
- damn i just don't find it out. decided to do a random reversal on every failure.
|
||||
- the program got very unstable. seems i do a mistake i am not aware of. help anyone?
|
||||
-> added a debug output to find out where the bugged lines are. strage they change
|
||||
everytime i run the program. fuck.
|
||||
|
||||
18:16 31.05.2006 Alpha Build 3 - The YAAAY it works version
|
||||
==============================
|
||||
- finished the packet, server still answers "password wrong".
|
||||
working on correct reversion now
|
||||
|
||||
16:52 30.05.2006 Alpha Build 2
|
||||
===============================
|
||||
- added more bignum calculations, now i got until S.
|
||||
- still not sure how they have to be reversed to be calculated corrctly in the B1!77 way.
|
||||
SRP demo page (srp.stanford.edu/demo) says my S is correct so far, calculated in the
|
||||
normal way. At least i got the right formulas. :D
|
||||
- next thing to do is split S up, hash it, etc... to get M1 & M2
|
||||
|
||||
21:51 24.05.2006 Alpha Build 1
|
||||
===============================
|
||||
- first release, not working yet.
|
||||
- connecting to realm server possible, detection for acc already in use / acc not existing
|
||||
- OpenSSL BIGNUM and SHA1 integrated.
|
||||
- first bignum calculations :), i still have to find out how the numbers are
|
||||
reversed and calculated correctly
|
||||
- controller connection possible. it uses 2 ports, i will change it to 1 port in future
|
||||
- config file readout (conf/pseuwow.conf)
|
||||
- still crashes when it cant find the realmlist. time to fix it...
|
||||
- controller connection is still buggy when a connection to the realm server has been
|
||||
established.
|
||||
308
readme.txt
308
readme.txt
@ -1,308 +0,0 @@
|
||||
####################################################################################
|
||||
################################# - PseuWoW ReadMe - ########## 09.11.2006 #########
|
||||
####################################################################################
|
||||
## ##
|
||||
## Web: http://my.opera.com/PseuWoW ##
|
||||
## Email/MSN: hoden386@lycos.de ##
|
||||
## ##
|
||||
## 1.) What is PseuWoW? ##
|
||||
## 2.) Installation & configuration ##
|
||||
## 3.) The DefScript engine [to be updated] ##
|
||||
## 4.) The controller [*availible soon*] ##
|
||||
## 5.) Interaction with PseuWoW ##
|
||||
## 6.) Compiling your own version ##
|
||||
## 7.) A word to Blizzard ##
|
||||
## ... ##
|
||||
## 8.) Appendix: [*availible soon*] ##
|
||||
## A) The DefScript interface ##
|
||||
## B) Macro reference ##
|
||||
## C) Function reference ##
|
||||
## ##
|
||||
## ##
|
||||
####################################################################################
|
||||
####################################################################################
|
||||
|
||||
|
||||
####################################################
|
||||
########## 1.) What is PseuWoW? ####################
|
||||
####################################################
|
||||
|
||||
A custom wow client, or at least it is supposed to be a "real" client later on.
|
||||
For now it is thougt to be a bot that can help GMs/admins to manage their *private(!)* WoW server.
|
||||
It does not need an installation of real WoW to run, and you do not need any
|
||||
good hardware to run it, since it has no graphics (yet!) and not such extensive
|
||||
memory usage like the bloated WoW.exe has.
|
||||
it uses only the console for now, but since it runs on SDL, you *could* easily build up
|
||||
your own gui using OpenGL. buts it's not designed for that purpose in this early state.
|
||||
|
||||
DO NOT use this program to connect to official servers!
|
||||
It does NOT work due to Blizzard's IP-Spoof filter, which PseuWoW cant bypass yet.
|
||||
( YES this IS intended to be that way! For your own safety and for the legality of PseuWoW!)
|
||||
If you should try anyway, the only thing you can win is the ban/loss of your account.
|
||||
|
||||
|
||||
|
||||
Performance:
|
||||
============
|
||||
Tested Build 8 on a 300MHz Intel Celeron notebook, took a bit longer to Auth then on a
|
||||
3GHz Pentium 4 PC, but worked well so far; more benchmarks on slower hardware will follow =)
|
||||
|
||||
|
||||
|
||||
####################################################
|
||||
########## 2.) Installation & Configuration ########
|
||||
####################################################
|
||||
|
||||
Required DLL files:
|
||||
===================
|
||||
|
||||
- SDL.dll
|
||||
- SDL_net.dll
|
||||
- msvcp71(d).dll
|
||||
- msvcr71(d).dll
|
||||
|
||||
Be sure you have them put into the same folder as PseuWoW.exe (or your windows/system32 folder).
|
||||
|
||||
How to make it run properly (main configuration):
|
||||
=================================================
|
||||
|
||||
Open the file "conf/PseuWoW.conf" in a text editor and edit it to your needs.
|
||||
There should be comments inside the file explaining what the options are good for.
|
||||
|
||||
User permission configuration:
|
||||
==============================
|
||||
|
||||
Open the file "conf/users.conf".
|
||||
For every player you want to assign a permission level to enter the name of the player (note correct spelling!!),
|
||||
followed by a "=" and the permission level ( a number from 0 - 255; 0=least; 255=all permissions ).
|
||||
The lines should look like this:
|
||||
|
||||
Master=255
|
||||
Operator=100
|
||||
Playerx=1
|
||||
...
|
||||
|
||||
If a player is not listed in this file he will get permission 0 automatically.
|
||||
|
||||
Note that special unicode chars in playernames like óäöüßêýà etc. DO NOT work.
|
||||
|
||||
|
||||
Saving the cache:
|
||||
=================
|
||||
If you close PseuWoW using the [X] in the top-right corner it will be instantly closed
|
||||
and NO data will be saved. To save the data you can either quit PseuWoW pressing Ctrl+C,
|
||||
giving the "-quit" command ingame or just save without quitting giving the ingame command
|
||||
"-savecache". (explained further down this file)
|
||||
|
||||
|
||||
|
||||
####################################################
|
||||
########## 3.) The DefScript engine ################
|
||||
####################################################
|
||||
|
||||
Information:
|
||||
============
|
||||
|
||||
PseuWoW uses a scripting language exclusively designed for it - i admit i didn't know
|
||||
how to implement Python or LUA :P
|
||||
DefScript has no controlling structures like IF, FOR, WHILE, etc. yet, this will come in future.
|
||||
|
||||
The Scripts have the extension ".def" and are stored in the "/scripts/" folder of PseuWoW.
|
||||
Every file represents a single function.
|
||||
|
||||
Syntax:
|
||||
=======
|
||||
A typical function call looks like this:
|
||||
|
||||
command,arg1,arg2,arg3,argx defaultarg
|
||||
|
||||
command: name of the script or function you want to execute (UPPER- or lowercase does not matter)
|
||||
arg1 - argx: OPTIONAL(!) arguments, seperated by commas.
|
||||
defaultarg: the last ( or better called "typical" ) argument of the function,
|
||||
seperated by [space].
|
||||
Everything after the first space char will be treated as defaultarg!
|
||||
To prevent this, you can use curly brackets {} to express that the given text is connected.
|
||||
e.g.:
|
||||
"SENDCHATMESSAGE,6,{hi there},Keks" -> correct, works. Whispers "hi there" to player "Keks".
|
||||
|
||||
"SENDCHATMESSAGE,6,hi there,Keks"
|
||||
-> works too, BUT:
|
||||
"SENDCHATMESSAGE,6,hi" -> this will be the command with its args
|
||||
"there,Keks" -> this will be the defaultarg
|
||||
result: the call will not produce the expected result!
|
||||
|
||||
|
||||
Variables:
|
||||
==========
|
||||
|
||||
Setting variables:
|
||||
"x = 1" -> WRONG! DefScript knows only functions!!
|
||||
You have tu use this:
|
||||
"SET,x 1" -> sets the LOCAL variable x to 1. [x will be stored as "scriptname::x" internally]
|
||||
"SET,#x 1" -> sets the GLOBAL variable x to 1. [#x will be stored as "x" internally]
|
||||
"SET,#welcomemsg PseuWoW logged on, be careful!" -> sets the GLOBAL variable "welcomemsg" to PseuWoW logged on, be careful!".
|
||||
Note that the variable name is the first arg, preceded with a comma, and its value is the defaultarg.
|
||||
Variable names with a preceding "#" will be stored as GLOBAL vars, with the preceding "#" removed.
|
||||
|
||||
"DEFAULT,x 1" -> sets x only if it has not been set or x has no value (=is empty)
|
||||
"UNSET x" -> removes the variable. you have to remove every variable you do no longer need yourself!
|
||||
|
||||
|
||||
A special kind of variables are macros, which values can only be changed by the program itself.
|
||||
Macros begin with "@".
|
||||
|
||||
Accessing variables:
|
||||
====================
|
||||
|
||||
SET,x 1
|
||||
SET,mystr hello world
|
||||
OUT ${mystr}, x has the value ${x}
|
||||
PAUSE 1000
|
||||
SET,mystr ${mystr} goodbye
|
||||
OUT ${mystr}
|
||||
|
||||
pretty obvious:
|
||||
${mystr} gets replaced with "hello world"
|
||||
${x} gets replaced with 1.
|
||||
and the text "hello world, x has the value 1" will be written to the console.
|
||||
after one second, mystr will be set to "hello world goodbye" and again written to console.
|
||||
|
||||
accessing globals: OUT ${#myglobal}
|
||||
accessing macros: OUT ${mymacro}
|
||||
|
||||
[[* more explanations of the variable system will follow *]]
|
||||
|
||||
Load Instructions:
|
||||
==================
|
||||
load instructions begin with "#" and are put at the beginning of every script.
|
||||
You can not use variables in them!
|
||||
The following are availible:
|
||||
#permission=x -> sets the permission required to execute this script. 0 by default! x=0...255
|
||||
#debug -> produce more output
|
||||
#load_debug -> lists every line that is loaded
|
||||
#load_notify -> notifies you once the script has been loaded and is ready for use
|
||||
...more to come...
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
####################################################
|
||||
########## 5.) Interaction with PseuWoW ############
|
||||
####################################################
|
||||
|
||||
|
||||
You can either say or whisper the command to PseuWoW; put a "-" before the command name
|
||||
that PseuWoW recognizes the chat message as a command, like:
|
||||
"-say hello"
|
||||
"-say,orcish hello"
|
||||
"-say,8 hello"
|
||||
"-emote 12"
|
||||
"-yell LOL"
|
||||
"-yell,darnassian LOL"
|
||||
"-savecache"
|
||||
"-follow Keks"
|
||||
"-quit"
|
||||
etc.
|
||||
|
||||
There is also some VERY basic chat AI, say hi,lol,omg,wtf,download,... when PseuWoW will hear you and it will respond :)
|
||||
A full (and useful) chat AI will be implemented later.
|
||||
|
||||
All trade and party invite rquests are automatically declined.
|
||||
Note the "_onwhisper" script that is run everytime a whisper is recieved.
|
||||
|
||||
|
||||
|
||||
|
||||
####################################################
|
||||
########## 6.) Compiling your own version ##########
|
||||
####################################################
|
||||
|
||||
- i used Microsoft Visual Studio.NET 2003 for compiling
|
||||
- download the include/lib package (see URL on top). copy the content into the
|
||||
include/lib directory of the compiler.
|
||||
- if needed, copy the reqired DLL files into the /bin directory (where the project files are)
|
||||
- open the project and compile.
|
||||
|
||||
|
||||
|
||||
####################################################
|
||||
########## 7.) A word to Blizzard ##################
|
||||
####################################################
|
||||
|
||||
I always liked blizz... until WoW came out.
|
||||
The management is shitty, almost no customer support, and bans in case they dont know what
|
||||
to do with players.
|
||||
Blizzard programmers and designers, YOU ARE GREAT and you made great games before
|
||||
Blizzard got eaten up by vivendi universal. KEEP UP THE GOOD WORK!
|
||||
After that, vivendi management fucked it all up. the result is WoW, a always-pay game like
|
||||
Diablo3 will probably be.
|
||||
So here are my greetings to the vivendi management:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Eat shit and die, bitches!
|
||||
|
||||
_gm__gz,
|
||||
,Z\/` 'c\.
|
||||
/,! '[W
|
||||
]!] . []
|
||||
] ] .-==- b]
|
||||
]i ~ -==== !]-
|
||||
] ~~ -![
|
||||
W d`
|
||||
'b W
|
||||
i[ 'M
|
||||
]. ~ 4.
|
||||
] -'[
|
||||
d -= b
|
||||
M! @
|
||||
@ `-D
|
||||
]@ -]A
|
||||
@P , , . '@
|
||||
M| ~` '` /]@
|
||||
_._. Y ciP
|
||||
,g/G/~Vi ![ '-V[
|
||||
,Z~_/`- b@_ ,[ -` [
|
||||
_v4Tv/ .m/TGs,2V~-i ] \/.[
|
||||
,vf ,(f `'iY.A / -[,z --=-__
|
||||
,gY` v)` \-.@! ,--]Wf =/`,~N
|
||||
,gY` id / b@[ -/ ]M (b.
|
||||
vf| - t[ !,i@P! ' ][. /`YZ~V,c.
|
||||
if, ' , ,(] ]'@` ]b `'/@. `'*W.
|
||||
K ,)`-'Z _ _ -/i@ i ' @Y |4t /Vmv.
|
||||
b gz/-Z`'` @ - ] -P] ` , i ,!W ]@ ',/M.-
|
||||
[ gZ\ ]! * i[ ! Z!d, ]- [W ~ \ ] X8.\
|
||||
,[ '7v` A 'i ` - !' ] [@./ , ,] 4/c-
|
||||
] !i- `][ ,] ' e!] i - . m ! 'W =
|
||||
W s-=` ][ !A /- ] W= ][!
|
||||
A -Z- @- -! P ,A, , ] ,@
|
||||
[ '- ,/4. !' Z` [ . W g`/[
|
||||
Y.- ' /[ . ,/ !.'c/b-
|
||||
Vi'- ' ! ! / ' `` @[
|
||||
'e. ] , . v @[
|
||||
Vs. '. .- ` / @`
|
||||
'5c. \ ! , --@.
|
||||
\Zs `-. '- \ - -A
|
||||
'\. - . ' ' - ` .-, = 'i[
|
||||
'e. -' - , -` ,/ !vi\ v i*`
|
||||
Vs -! -- ' v` ,'.-'/ _/`\`
|
||||
'G. ' ! '- / '.c\,` vfm/ -
|
||||
!i ` -. ,` ` , `'c ,z7!.` -
|
||||
Yi ' - ! . ,`` - - !` ,zL'`
|
||||
b i , - - ' - , - - ,Z|!`
|
||||
Y ` \- , , '- ` , . ,Z7
|
||||
8 -- . ` -` .'.- -P
|
||||
] ] -, . - , ,[
|
||||
]. Y- ' / 8
|
||||
i| ,' - ` . - ' W
|
||||
` , - - , , K
|
||||
|
||||
|
||||
|
||||
(c) SnowStorm Software, 2006
|
||||
(and the finger belogs to SSG cracking group :P )
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
#include <string.h>
|
||||
#include <algorithm>
|
||||
#include <cctype>
|
||||
#include <math.h>
|
||||
#include "DefScriptDefines.h"
|
||||
#include "DefScriptTools.h"
|
||||
|
||||
@ -25,8 +26,15 @@ std::string DefScriptTools::stringToUpper(std::string s)
|
||||
std::string DefScriptTools::toString(ldbl num)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << num;
|
||||
return ss.str();
|
||||
ss.setf(std::ios_base::fixed);
|
||||
ss.precision(15);
|
||||
ss << Round(num,15);
|
||||
std::string s(ss.str());
|
||||
while(s[s.length()-1]=='0')
|
||||
s.erase(s.length()-1,1);
|
||||
if(s[s.length()-1]=='.')
|
||||
s.erase(s.length()-1,1);
|
||||
return s;
|
||||
}
|
||||
|
||||
std::string DefScriptTools::toString(uint64 num)
|
||||
@ -72,16 +80,19 @@ ldbl DefScriptTools::toNumber(std::string str)
|
||||
u<<=32;
|
||||
u|=lobits;
|
||||
}
|
||||
else
|
||||
u = atoi64(str.c_str());
|
||||
else
|
||||
u = atoi64(str.c_str());
|
||||
|
||||
if(ppos!=std::string::npos)
|
||||
{
|
||||
std::string mantissa("0.");
|
||||
mantissa+=str.c_str()+ppos;
|
||||
num=(ldbl)strtod(mantissa.c_str(),NULL);
|
||||
std::string mantissa("0");
|
||||
mantissa+=str.c_str()+ppos;
|
||||
num=(ldbl)atof(mantissa.c_str());
|
||||
}
|
||||
|
||||
num=(unsigned long double)num + u;
|
||||
num=Round(num,10);
|
||||
|
||||
|
||||
if(negative)
|
||||
num = -num;
|
||||
@ -140,3 +151,9 @@ uint64 DefScriptTools::atoi64(const char *str)
|
||||
//return _atoi64(str);
|
||||
#endif
|
||||
}
|
||||
|
||||
inline long double DefScriptTools::Round(long double z,unsigned int n)
|
||||
{
|
||||
static long double v[] = { 1, 10, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16 };
|
||||
return floor(z * v[n] + 0.5) / v[n];
|
||||
}
|
||||
@ -11,6 +11,7 @@ namespace DefScriptTools
|
||||
bool isTrue(std::string);
|
||||
uint64 toUint64(std::string);
|
||||
uint64 atoi64(const char*);
|
||||
inline long double Round(long double z,unsigned int n);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
Optimization="3"
|
||||
GlobalOptimizations="TRUE"
|
||||
InlineFunctionExpansion="2"
|
||||
ImproveFloatingPointConsistency="FALSE"
|
||||
FavorSizeOrSpeed="1"
|
||||
AdditionalIncludeDirectories="shared;Client;Client/World;Client/Realm;dep/include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
@ -93,6 +94,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
ImproveFloatingPointConsistency="FALSE"
|
||||
OptimizeForProcessor="0"
|
||||
AdditionalIncludeDirectories="shared;Client;Client/World;Client/Realm;dep/include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user