-
Posts
379 -
Joined
-
Last visited
-
Days Won
11
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by KeyWorld
-
-
Fixed.[Warning]: It is unnecessary and unsafe to run eAthena
with root privileges.More seriously, yeah I agree with the message (if you want more, ask a question ? maybe ?).
- 2
-
Ok I see the problem.
// Change this:
$this->aAnimData[$anim][$nf] += unpack('lExtYOffset/lExtYOffset/lExtXOffset/lExtYOffset/lExtXOffset', fread($this->act, 0x14));
$extrainfo = unpack('lbool', fread($this->act, 0x04));
if($extrainfo['bool'] == 1) fseek($this->act, 0x10, SEEK_CUR);
// To:
fseek( $this->act, 4, SEEK_CUR ); // sound id, store it in a variable if you want
$extrainfo = unpack('lbool', fread($this->act, 0x04)); // Extras infos (if you need)
fseek($this->act, 0x10 * $extrainfo['bool'], SEEK_CUR);
- 1
-
You just need to put enough length for the unpack().May I ask how you know what length to put in fread() ?
Example:
unpack('fxScale/fyScale/lrotation/lsprType/lsprWidth/lsprHeight', fread($this->act, 24));
For each name in the unpack(), take the first letter:f = float = 4 bytes
l = long = 4 bytes
4 (xScale) + 4 (yScale) + 4 (rotation) + 4 (sprType) + 4 (sprWidth) + 4 (sprHeight) = 24.
Can you upload a act you have problem with ?
-
Replace this part:
With:for($patNo = 0; $patNo < $this->aAnimData[$anim][$nf]['numSubFrames']; $patNo++) {
$this->aAnimData[$anim][$nf][$patNo] = unpack('lxOffset/lyOffset/lsprNo/lmirrored/Cred/Cgreen/Cblue/Calpha', fread($this->act, 0x14));
if($this->aVersion >= 2.0 && $this->aVersion <= 2.3)
$this->aAnimData[$anim][$nf][$patNo] += unpack('fxyScale', fread($this->act, 0x04));
if($this->aVersion >= 2.4)
$this->aAnimData[$anim][$nf][$patNo] += unpack('fxScale/fyScale', fread($this->act, 0x08));
$this->aAnimData[$anim][$nf][$patNo] += unpack('lrotation/lsprType', fread($this->act, 0x08));
if($this->aVersion >= 2.5)
$this->aAnimData[$anim][$nf][$patNo] += unpack('lsprWidth/lsprHeight', fread($this->act, 0x08));
}
for($patNo = 0; $patNo < $this->aAnimData[$anim][$nf]['numSubFrames']; $patNo++) { $this->aAnimData[$anim][$nf][$patNo] = unpack('lxOffset/lyOffset/lsprNo/lmirrored/Cred/Cgreen/Cblue/Calpha', fread($this->act, 0x14)); if($this->aVersion < 2.0 ); else if($this->aVersion < 2.4 ) $this->aAnimData[$anim][$nf][$patNo] += unpack('fxyScale/lrotation/lsprType', fread($this->act, 12)); else if($this->aVersion == 2.4 ) $this->aAnimData[$anim][$nf][$patNo] += unpack('fxScale/fyScale/lrotation/lspr_type', fread($this->act, 16)); else $this->aAnimData[$anim][$nf][$patNo] += unpack('fxScale/fyScale/lrotation/lsprType/lsprWidth/lsprHeight', fread($this->act, 24)); }
There is also another problem after if you are reading a version < 2.3Well your function is very ugly, hard to debug. If there is still a problem, can you report your act version ?
Edit: Sorry for the quote, the code bbcode was buggy...
-
Can you paste here your PHP code, I will check if there is an error with (maybe an unsupported version).
-
If possible avoid using sql querys in NPC scripts, because it will stop the server from running while the query is executed. This means you will have micro lags on your server when using a lot of sql querys or huge complicated querys which need long to execute.
If you just use them in a small amount or less executed scripts you should be fine.
There was an update some month ago to execute the query in another thread if i remember correctly, so you should not be able to freeze just by sending query.
- 1
-
You can't use a label if it has the same name as a constant/player variable.
So rename the label sn to another name.
-
Just compile the emulator using XCode ?
I don't know a lot for this, but it should be the proper way.
-
There are two borings bugs :What kind of a bug is it? Maybe it got fixed in recent webkit versions. Qt 5 also allows to embedd a webview based on webkit, which basically would give the same benefits as Awesomium or Berkelium.
- Can't display some BMP files, but after comparing with safari, it's seems it's maybe a chrome bug nor webkit (can't test on a recent version of safari).
- And another one with the native scrollbar : it can triggered mousedown but not mouseup, click, etc. So if you do a draggable UI and you click on a scrollbar on this UI, it will start following your mouse but there is no way after to detect a mousedown to stop the the UI to follow you.
-
It's fun to see just one check to detect proxy base on a facultative http header that the proxy can omit to send
So yeah you can definitively remove this check, I don't think a lot of proxy send it anymore since a long time.
- 1
-
V8 is the javascript engine. The rendering engine is webkit (i advise you to not use webkit, it has some boring bug I have problems with on robrowser).
Keep it up :-)
-
try this ?
You should add else end; to avoid getting an error for creating a room when one already exist.
- 1
-
The GRF Viewer tool helped me to find a lot of things to fix on the CORE.
Bugs on some TGA version, some sprites with empty layer (wth ?), some bugs on the file manager, etc.
I added the support to read sprites and palettes, fixed the next/previous buttons and add a thumbnail system.
Textures:
Palettes:
Sprites:
Search feature (top right input):
I re-worked the UI system of robrowser, it was a little buggy (from the old version).
The RSM now support is natural shadding type (without, flat, or smooth) instead of using smooth shadding on all models, result: better render, faster loading.
I fixed some bugs on Firefox.
And I will now focus on working with sprite rendering on the next days.
- 4
-
I don't love the UI but I'm impressed by its speed (loading and searching, I didn't compare others features), it seems faster than others GRF Tool I tested (even a bit faster than my GRF Viewer, but yeah mine is writing in javascript).
Good job, keep it up
-
Hehe, yesterday I worked late on re-writing my old GRF-Viewer but using roBrowser's core (it help me to find some bugs and extend the core to be used easily to do whatever you want).
Here some previews of what I've done for now :
There is still some bugs to fix, but it was funny to code.
- 2
-
Good job guys
BUT: Do you think of us, guys who work on custom client ?
In the past we just need to convert the official .gr2 files on another format to use them, but now what do we have to do ?
Parse gr2 file directly (not possible for now) ? Or add a default poring sprite to the gr2 file, ahahah !
Just kidding, great job
-
Goto sounds for me like a low level statement, so, as I thought, it's faster to emulate. I suppose that every While / For statement is disassembled to goto's sequence, so it was a surprise for me to read this in the manual:
You got it. All for(), while(), switch(), if, else, internal func(), ... are converted to label + goto/callsub + jump_zero on runtime.
But for keep the script readable it's better to not write the whole script using the low level statement (except if you have reasons like optimizations)
doevent, donpcevent are used to run another script instance. It's often used to start action on other script. Example: a script to manage all games in your server:
mes "Select the event to start"; switch( select("Capture the Flag","Nyan Cat Catcher", "First Man Dying") ) { case 1: donpcevent "ctf::OnStartEvent"; break; ... }
It's good to know that donpcevent will run the script after yours end (it's not multi-thread), to run it after continue you have to pause the script
donpcevent "todo::OnLol"; sleep2 1; // execute todo::OnLol before continue. dowtfyouwant;
And functions/callsub I think you know them, it's used to avoid redundant, have fun with arguments, and return to the main script when finished.
Good luck for your project
- 2
-
just one question why is this in control panels section?
Someone moved it here, I don't know why but yeah it should be better on "project > clientside".
You are aiming to unpack RO2 vdk files? I got an unpacker for it, in case you want it I would be glad to send it to you.
Nevermind, I think you said you allready did a loader for it.
Amazing project btw, it is totally awesome!
Yeah I already build a loader for it in html5/js, it was funny but I don't think I will use it further for other things
-----------------------------------
I add my RSM-Viewer in the project to work more and faster on the RSM file since it need some changes (optimize the compilation, add the animation, change the smooth normal methods, ...), what I love about this tool is the way it can be embedded to webpage :
- 5
-
Sorry, I didn't have much time to work on it since november because of all birthdays and celebrations (why everyone born around december ?).
I'm not able to add the important speed up update on the loading. It was an idea to use multiple threads to parse the client files (using 4 threads is 4 times faster) but it seems we can't load multiple part of a file at the same time.
But I don't care, I did some good optimization (on zlib, and file parsing) and the loading is still faster : 4.5 seconds to load Prontera (you can compare with the video, it's ~4 time faster).
I still need to optimize one part of the loading, when a map have a lot of instances of the same models it's really slow : yggdrasil01 take 17 secs to load (wtf ?!).
I did some improvements on the TGA Manager due to NPOT textures causing problems.
I also add a DB file to add the blue sky (note: I don't plane to add the cloud features in the near future).
I have to say also, this project will be (source) released this year, finished or not.
There is no way to donateI would like to donate you some money for the development of this awesome project. Where can I do it?
-----------------------------------------------------------------------
Offtopic: I also played a little with RO2 VDK file archive.
It's one of the easier format I find in my life, ~10 minutes to understand the structure, ~15 minutes to write a loader... Funny to see how this file is build...
Note: no I don't plane to do a ro2browser...
- 7
-
He did a backup with 146 mobs of Trickster Online he converted for RO, it it interest you.
http://tozorman87.free.fr/Mob%20Trickster%20Online%20%5bToZorMan%5d.rar
-
Should be good.hey sir can i borrow it?? i cant download your logo psd i think there is an error or not existing file.
-
Yeah it should.
But you don't need escape_sql() on an INT variable just on string.
- 1
-
First you have to put QUOTE.
Second you have to secure the string entry.
query_sql("INSERT INTO `points` ( `char_id`, `name`, `points`) VALUES ('150000', '" + escale_sql(strcharinfo(0)) + "', '1')");
- 1
-
if ( getgmlevel() > 0 && getgmlevel() < 90 ) { mes "[Warp NPC]"; mes "Sorry you can't use this NPC."; close; }
Just add it to the beginning of your script.
You are running eAthena as the root superuser.
in Linux Support
Posted
Just update the user privileges in your favorite sql manager (phpmyadmin ?).
But honestly, it's the first time I see a crash due to superuser; so I don't really think your crash is related to this message.