Jump to content
Eternal Lands Official Forums

Malaclypse

Members
  • Content count

    371
  • Joined

  • Last visited

Everything posted by Malaclypse

  1. Tweak to trading

    That sounds like it would actually work. What happens, if someone measures the timeframe of this delay in some way? Couldn't this knowledge be used to actually trick the server? What happens if someone is clicking exactly at the end of the delay? But, it's going in the right direction anyway, I think.
  2. Some hints to the devteam

    Not only the verbs, the objects are as important as the verbs. Without any fruit you can't eat, so there will be no action and no verbs to describe or name the action. Both belong to each other, and as you can't strictly separate them in natural languages (and thus thinking) it also make sense to not separate them (at least not strictly) in programming languages. There is no action without any object and vice versa. Although, I didn't commented this before, I think, the permanent lookup in the virtual table and the runtime check for the types used in virtual/abstract functions is a big slowdown compared to C.
  3. Some hints to the devteam

    Well, I'd be in no way forced to think in terms of objects. If theres something I'd have been forced into it'll be functions and functional languages. I think in terms of objects as long as I can remember. What you are talking of are actions, like placid said sets of behaviors for objects. And in any of these actions you told, there is at least one object involved, be it the meal you are eating, the person which sleeps, the person who is cleaning and all the things she uses to clean and to get cleaned are objects. The actions are there to connect different objects and are messages the objects sent to each other. If you want to eat, you are going to send yourself the message to grab up the meal and pull it in your mouth
  4. Skills monitor show wrong over 120

    This list is definitely different to mine. These are the last three lines of mine (didn't want to post the whole file): 177 945053088 178 949356069 179 953874199 I used gcc 3.3.5, compiled in two steps, that is with an intermediate object file and used gcc -c -Wall -g3 -ggdb -O el-xp.c gcc -Wall -g3 -ggdb -O -o el-xp el-xp.o Hmm, maybe the error was on my side. Just figured out that I used an unsigned int type for the local exp variable in build_levels_table(). Changed it to int, and now I get the same table like you. The difference to my other tables starts at level 163. Even more, I can not reproduce it. I still have a binary around here that creates the other file, but I have changed the variable again to unsigned int and recompiled and re-run and got the same file as yours. And I didn't change anything on my environment. But then on the other side there are problems grum had on sparc and rs/6000 platforms. I'm very confused now
  5. Skills monitor show wrong over 120

    Well, I tried using unsigned int, as well as unsigned long for the array, and tried printing using "%d", "%u" and "%ul" but its always the same. That's really weird. Has someone time to verify this? I used the following program, using the build_levels_table from wytter's post.: #include <stdio.h> #include <stdlib.h> unsigned int exp_lev[200]; void build_levels_table(); void save_levels_table( char* filename ); int main() { printf( "Eternal Lands Experience Table\n" ); build_levels_table(); save_levels_table( "elxp.txt" ); exit( EXIT_SUCCESS ); } void save_levels_table( char* filename ) { FILE* f = fopen( filename, "w" ); if( !f ) { printf( "ERROR: Couldn't open file %s for writing\n", filename ); exit( EXIT_FAILURE ); } int i; for( i = 0; i < 180; i++ ) fprintf( f, "%d\t%u\n", i, exp_lev[i] ); fclose( f ); } Then fire up gnuplot and enter the following line: plot [90:179] [0:] "elxp.txt" smooth csplines with lines and verify the picture. Does it have the same break?
  6. Some hints to the devteam

    This not only applies to C++ but to any object orient approach, because people are used to think in terms of objects rather than in terms of functions and data.
  7. Skills monitor show wrong over 120

    Saved again using "%u" this time, but the break is still there.
  8. Skills monitor show wrong over 120

    Hi, are you aware of the break in this picture? It's created from the data saved in exp_lev. I simply saved this data to a text file in format "%d\t%d", i, exp_lev and plotted it using gnuplot.
  9. there should be a message

    There is a message in both manu and inventory window, at least for efes, so I assume for the other enriched items too.
  10. linux library dependency question

    Hmm, this may be a problem with parallel build. Try using make -j1. If this doesn't work. This message indicates your pthread library is compiled with glibc 2.3.2 but you said you have 2.3.1 installed. This is strange, because pthread is part of glibc. I don't think it's distributed as a separate package any longer. Can you verify your installed glibc version by running /lib/libc.so.6 | head -n 1 and look at the version string? I'm not very used to slackware, also it was the very first distribution I used Does it have any package manager? Or is there another way for you to find out to which package the /lib/libpthread.so.0 file belongs? Does it belong to glibc or to another package?
  11. Ebuild for 1.0.1

    Yeah, I was not sure whether architecture gets handled with IUSE or in a different way.
  12. linux library dependency question

    Well, you're right. But this should be read within the context of the whole paragraph and is only meant as mechanism to get rid of the warning. -include .depend in the makefile should do it better either. Sorry, didn't want to give wrong infos.
  13. Some hints to the devteam

    Hi, my first compile took only about 10 minutes. After I figured out the cvs host and got the sources, it compiled on the first try, or at most with minor changes to the makefile. I think most of the client is developed on *nix environments, where you have all those libraries pre-installed, at least on desktop and/or developer machines because they are needed by other applications as well. If you use windows, there are some howto's here in forum about this topic. If I'm going to bring myself into a project, I have to accept the different styles (coding styles, languages used, other guidelines) at first. They can be discussed with the team of course, but in the first I will have to accept them. And chosen language is always a big matter of taste anyway. Furthermore it is a large project of its own, to port a given application to a new language. You sometimes are better done, by doing a complete redesign then, after all. Additionally learning new languages is quite easy, once you have figured out some basic principles. The application of several techniques is not dependant on the chosen language. Some languages enforce the use of a particular paradigm, some support it and some just enables it. C enables the use of object oriented patterns, and supports it to some extent, you don't need C++ (or any other OO language) if you just want this. And sticking to the OO paradigm as the only true religion is quite stupid, imho. There's no single programming paradigm that can solve any computational problems in a satisfactory manner (in terms of runtime and memory requirements). I don't like C either, but if I'm going into serious client development, I will have to accept, the use of C or stay off from direct coding and stick to other development related topics. Another topics are that C is incredibly fast and you have the widest support of given APIs available for any single progamming language. Errm, cvs is live source, you should always expect possible trouble when dealing with code from any cvs repository. Keep backups of working binaries or create snapshot binaries of known stable releases and keep backups of them to go around this a bit.
  14. linux library dependency question

    Can you post the output of ldd for el.x86.linux.bin and /lib/libpthread.so.0? As for the depend file, make is firing a warning about missing .depend on the first run, but then runs the dependency creation quite fast here. You can try a 'touch .depend' before you call make to get rid of this warning.
  15. Ebuild for 1.0.1

    I tried the ebuild from a clean install, i.e. I uninstalled the 1.0.0 completely, cause I did many patches to the installed game The build ran without problems, the client seems to run on a first try, that is, I can connect to the server (the regular one, as well as the test server). I really didn't play by now with the client, just take a look whether all the windows and icons are working. No problem so far. But two things, I discovered. First, there are currently two different(!) knowledge.lst files: $(EL)/knowledge.lst and $(EL)/language/en/knowledge.lst, from which the latter one contains additional declarations for axes: lancelot@gwenhwyfar eternal-lands $ diff -Naur knowledge.lst languages/en/knowledge.lst --- knowledge.lst 2005-01-25 20:59:38.000000000 +0100 +++ languages/en/knowledge.lst 2005-01-25 20:59:38.000000000 +0100 @@ -120,4 +120,10 @@ Cyclops Fighting Dwarf Fighting Elf Fighting -Humans Fighting \ Kein Zeilenumbruch am Dateiende. +Humans Fighting +General Axe Construction +Iron Axe Construction +Steel Axe Construction +Titanium Axe Construction +Fluffy Summoning +Chimerian Wolf Summoning I assume the file in $(EL) should get deleted. Second the info about the client documentation in the post_install function points to a wrong directory. * The documentation for the client source can be found * in /usr/share/doc/eternal-lands-1.0.1/html/client lancelot@gwenhwyfar eternal-lands $ LC_ALL=C ls /usr/share/doc/eternal-lands-1.0.1/html/client ls: /usr/share/doc/eternal-lands-1.0.1/html/client: No such file or directory The documentation is instead in the html directory. So this should point to /usr/share/doc/eternal-lands-1.0.1/html/{,index.html} only.
  16. Ebuild for 1.0.1

    Hi Wytter, as far as i know portage, you have to specify each used USE flag in the IUSE variable. Currently portage emits a QA warning if that's not the case. Therefore you should maybe add the amd64 flag to IUSE. Great enhancements compared to the last release
  17. Cal3d, New Character Animation Format

    As far as I see, the pivot will not get exported. There's nothing in the files, that indicates the use of a pivot point, nor did I found anything in the cal3d API.
  18. Windows XP

    I had similar experience like Leeloo during my last job. We had windows machines there ranging from small clients with 512meg of ram to a few large server with 8 xeon cpus and 16gig of ram. But windows is always going slower and slower over time. Even if no more applications are installed, and therefore the registry didn't become abused by constant changing applications. And compared to linux, I did made the experience that even with such a large desktop like kde, it runs much smoother than xp (assumed I do the same things, and have simiar apps running). One way I have found to make xp and 2000 a bit faster is turning off your swap space if you have enough ram (enough for xp/2k to work without swap is imo at least 1gig). Windows has a tendency to first use as much as possible swap, and once it ran out of swap it uses ram. If you don't believe me, watch your taskmanagers memory tab for a while. Look at it some times during your daily work and keep an eye on how the different memory resources are used. I noticed that I had always lots of free physical memory, while swap gets more and more used up.
  19. What song are you listening to?

    atm Mustafa Kandirali, turkish worldmusic from the worldmusic sampler no. 10
  20. Cal3d, New Character Animation Format

    Hi Roja, yes it stores the bones names as mentioned in my previous post (the skeleton paragraph). And they are stored in a case sensitive manner. But this shouldn't care you right now. You can name then in any mixture of upper and lower case letters and numbers. More important is, the mapping of meshes to bone names must be equal, if you want to interchange skeletons and/or meshes.
  21. Heal Summoned/summoning Suggestion.

    Hi teh banned 0n3na, I think you use the wrong proposal in your statement. It is evident that the heal summoned spell is much more ineffective than the remote heal spell, if you only have 1 summoned creature. Instead you should ask yourself, at what creature count will heal summoned becomre more effective than remote heal? If you do this, I think you will came to this result: if you have 4 creatures or more, heal summoned is going to be more effective than remote heal. So the 50 chims you are talking about are absolutely nonsense. Imo 4 summoned creatures are not very much and I can easily imagine this in a battle situation, therefore I do not think that the spell needs any change at this time. Just my thoughts
  22. Cal3d, New Character Animation Format

    Thought it might be useful for all to know a bit more about the several files that cal3d uses. Cal3d comes with a conversion tool to convert the binary *.c?f files to equivalent *.x?f files which are text files in an xml format. I did this on some of the files that come with the cally model to get some information about this. The skeleton file consists of a list of bones, each of which has detailed translation and rotation informations (both global and local), as well as an id, name and parent/child relationship informations. More formally this looks like <skeleton numbones="20"> <bone id="1" name="bone1" numchilds="2"> <translation>x y z</translation> <rotation>x y z w</rotation> <localtranslation>x y z</localtranslation> <localrotation>x y z w</localrotation> <parentid>-1</parentid> <childid>1</childid> <childid>2</childid> ... </bone> <bone id=2" ... /> ... </skeleton> A parentid of -1 as above indicates the root bone of the skeleton. A cal3d animation consists of a list of tracks, each of which contains a list of keyframes. Each keyframe contains the time when it occurs, relative to the tracks beginning, as well as translation and rotation information. Each track is bound to a particular boneid, which must match the corret bone of the skeleton in use. The format of the file is like: <animation duration="0.3333" numtracks="37"> <track boneid="0" numkeyframes="31"> <keyframe time="0"> <translation>x y z</translation> <rotation>x y z w</rotation> </keyframe> <keyframe time="0.05" /> ... </track> <track boneid="1" /> ... </animation> The animation contains as many tracks as the skeleton's bone count, that was used to export this animation. That is every bone of a skeleton becomes an animation attached when they are exported. So it's possible to easily exchange animations as long as the bone count of the different skeletons are the same and the numbering of the bones are equal. The mesh file has a list of submeshes, each of which contains a list of vertices, followed by a list of faces. Each vertex has an id, position, normal vector and texture coordinates assigned. Each face has a list of 3 vertexid's that form the triangular face. Formal this looks like <mesh numsubmeshs="1"> <submesh numvertices="485" numfaces="592" somemoreattribs> <vertex id="0" numinfluences="2"> <pos>x y z</pos> <norm>x y z</norm> <texcoord>u v</texcoord> <influence id="6">0.6</influence> <influence id="5">0.4</influence> </vertex> <vertex id="1" /> ... <face vertexid="0 1 2" /> <face ... /> ... </submesh> ... </mesh> The influence fields here comes from the skeleton! They describe how much influence a bone has on the vertex. Each vertex has at least one influence as far as I discovered. That's why I think you need to rig each model separately. I think if you export only the mesh, without having a rigged model you will not have any information about the influence of the bones to the mesh included. We could attach such a mesh to a different skeleton, but I'm not sure whether cal3d will not throw an error if the influence fields are missing, and even if it didn't throw one, we could not be sure what the outcome looks like. It might also be the case, that the cal3d can't even be used to export meshes only. At last there are material files used by cal3d (*.[cx]rf files). They have a very easy setup and contain some color components (diffuse, ambient and specular) and a shinyness factor and optional some maps, most likely texture maps. <material nummaps="0"> <ambient>r g b</ambient> <diffuse>r g b</diffuse> <specular>r g b</specular> <shininess>0.5</shininess> </material> So there are several things a character animator must be aware. If you want to share animations to be used by different skeletons, you must ensure, that any skeleton that will use the animation has the same amount of bones and furthermore, those bones have identical names and id's. Else the mapping between the bones of a skeleton and the track of an animation will not work as expected. Sharing meshes is not as easy. You can of course use the human skeleton as a base for the skeleton of other races as well. Keep track of the scaling factor, so we can easily use a single skeleton file for all races and scale it appropriately. But as it looks to me, you need to rig every model, to get the influences of the bones for the meshes vertices. Hope this helps with this topic.
  23. Cal3d, New Character Animation Format

    Hey, As a model in cal3d contains only one skeleton file I assume that you need to add all bones to it. A cal3d skeleton is simply a list of bones. No, you can scale them smoothly. I tried and changed cicero's code to load the cally model, which is included with the cal3d distribution, because I lacked the test model that's referred to by the code, and only saw her feet up to the ankle at first, oscillating on my screen . You can in fact scale any piece of a cal3d model separately, if necessary, i.e. any bone or mesh.
  24. Game Feature Suggestions ..

    Hi, my thought's on those topics. 1. Imo, the auto attack is a good feature. It's astonishing if you are not aware of it. I'd rather suggest to turn off the auto defense instead. If a player is afk and got attacked, well he may get slaughtered and go to underworld. But if a player is sitting in front of his screen, he will be aware that something's attacking him and might respond. But I also like raapnaap's idea on this. Having an ethereal spirit guarding the realms of seridia from people acting against the spirit of the land 4. I don't like this idea. It would make the game far too easy. If you are unsure go and try it. You might go to hell for trying it, but you will have the knowledge whether you can beat it or not. And use some common sense to decide whether you might be able to fight a particular animal/monster or not. 5. The problem is that it is very likely to die one or the other time, at least in the beginning of the game. It would be way too hard for any new character to begin the game as a fighter or even as a non-fighting char. They would likely loosing levels then gaining them Imo such a thing could only be introduced for characters above say OA 30. Only then, the game can assume, they have the proper knowledge and experience to know what will happen if they die. Players should not be able to get punished when they die due to lack of experience in how the game's going. 8. The breaking armor message is imo dull. A player should not know the exact state of his armor. They can know that their gear is 'somewhat damaged' or 'severely damaged' but not that it is N% before breaking. And I think the message about going to hell would only make sense for new players, because once you died a few times you know that you are going to hell. Why introduce a delay and the players 'ok' to do this? 10 This has been posted after your post, but take a look at http://www.eternal-lands.com/forum/index.p...ndpost&p=120605
  25. New Rule Suggestion.

    I think we should not ban people only because they are nazis. This would be discriminating and would break the rules. But if they break for example rule 11, we can punish them for doing that. A guild name of 'nazi' imho breaks this rule, as this openly promotes rascistic ideas, like the guild description did. The same is true, if a player is talking about 'burning jews, slaughtering kurds, killing the natives, ...', this is imo rascitic and should be banned as it breaks rule 11. If someone gets PMed with like messages, there are always #ignore and #abuse commands for this. On the other hand, I agree with Leeloo in, saying 'I'll send you to the gas chamber', is not inherently rascistic, and therefore no reason to ban someone. It's however very rude and inhuman, and it's quite easy, although it might be wrong, to conclude there's some rascistic oriented player acting behind this character. We should rather focus on them breaking one the rules, instead of being a nazi or not. Positive discrimination is an illusion.
×