summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xGenDeb.sh143
-rw-r--r--docs/INSTALL/linux.txt8
-rw-r--r--docs/ReadMe.txt33
-rw-r--r--src/game.cpp22
-rw-r--r--src/main.cpp118
-rw-r--r--src/main.h2
6 files changed, 307 insertions, 19 deletions
diff --git a/GenDeb.sh b/GenDeb.sh
new file mode 100755
index 00000000..befcb1c2
--- /dev/null
+++ b/GenDeb.sh
@@ -0,0 +1,143 @@
+#!/bin/bash
+
+echo "Debian Package Creation...";
+
+if [ $USER != "root" ]; # only root can create deb packages...
+then
+ echo "Sorry ! this must be run as root because only root can make Debian Packages !";
+ echo "Aborting...";
+ exit;
+fi
+
+make clean;
+make;
+
+if [ ! -x ./tmw ]; # if tmw doesn't exist
+then
+ echo "Compilation failed somwhere. Please try to correct errors given by gcc output...";
+ echo "Aborting...";
+ exit;
+fi
+
+if [ ! -f ./tmw.ini ]; # if tmw.ini doesn't exist
+then
+ echo "Can't find the tmw.ini file. Maybe this tmw version is uncomplete...";
+ echo "Aborting...";
+ exit;
+fi
+
+if [ ! -d ./data ]; # if the data folder doesn't exist...
+then
+ echo "Can't find the Mana World datas..."
+ echo "Aborting...";
+ exit;
+fi
+
+echo "The Mana World seems to have compiled successfully.";
+echo "Now creating Debian Repository...";
+
+rm -rf Debian;
+mkdir Debian 0>/dev/null 1>/dev/null 2>/dev/null;
+
+if [ ! -d ./Debian ]; # if the Debian folder doesn't exist...
+then
+ echo "Can't create a Debian folder here...";
+ echo "Have you got enough rights to do that ?"
+ echo "Aborting...";
+ exit;
+fi
+
+TMW_VERSION=`grep "core_version" ./tmw.ini | cut -d'=' -f2 | cut -d' ' -f2`;
+echo "Version :" $TMW_VERSION;
+mkdir `echo 'Debian/manaworld_'$TMW_VERSION'_i386'`;
+cd `echo 'Debian/manaworld_'$TMW_VERSION'_i386'`;
+mkdir DEBIAN;
+mkdir usr;
+mkdir usr/share;
+mkdir usr/share/manaworld;
+#cp ../../tmw.ini ./usr/share/manaworld;
+cp ../../tmw ./usr/share/manaworld;
+cp ../../keyboard.dat ./usr/share/manaworld;
+cp -a ../../data ./usr/share/manaworld;
+cp -a ../../docs ./usr/share/manaworld;
+
+# Creating a good link to launch the game
+touch ./usr/share/manaworld/manaworld;
+echo "#!/bin/sh" >>./usr/share/manaworld/manaworld;
+echo "cd /usr/share/manaworld;" >>./usr/share/manaworld/manaworld;
+echo "./tmw;" >>./usr/share/manaworld/manaworld;
+echo "cd -" >>./usr/share/manaworld/manaworld;
+
+chmod +x ./usr/share/manaworld/manaworld;
+# End of the link
+
+echo "Creating Rules for the Debian package..."
+#echo "Set the variables value at the begining of this script if you want to change something...";
+
+touch DEBIAN/postinst;
+echo "#!/bin/sh" >>DEBIAN/postinst;
+echo 'if [ "$1" = "configure" ]; then' >>DEBIAN/postinst;
+echo ' chmod -R 777 /usr/share/manaworld/docs;' >>DEBIAN/postinst;
+echo ' if [ -d /usr/games ]; then' >>DEBIAN/postinst;
+echo ' cp /usr/share/manaworld/manaworld /usr/games/manaworld;' >>DEBIAN/postinst;
+echo ' chmod +x /usr/share/manaworld/manaworld;' >>DEBIAN/postinst;
+echo ' fi' >>DEBIAN/postinst;
+echo 'fi' >>DEBIAN/postinst;
+
+chmod 755 DEBIAN/postinst;
+# End of postinst script...
+
+touch DEBIAN/prerm;
+echo '#!/bin/sh' >>DEBIAN/prerm;
+echo 'if [ \( "$1" = "upgrade" -o "$1" = "remove" \) ]; then' >>DEBIAN/prerm;
+echo ' if [ -d /usr/games ]; then' >>DEBIAN/prerm;
+echo ' rm -f /usr/games/manaworld;' >>DEBIAN/prerm;
+echo ' fi' >>DEBIAN/prerm;
+echo 'fi' >>DEBIAN/prerm;
+
+chmod 755 DEBIAN/prerm;
+# End of prerm script...
+
+touch DEBIAN/control
+echo 'Package: manaworld' >>DEBIAN/control;
+echo 'Version: '$TMW_VERSION >>DEBIAN/control;
+echo 'Section: bin' >>DEBIAN/control;
+echo 'Priority: optional' >>DEBIAN/control;
+echo 'Architecture: i386' >>DEBIAN/control;
+echo 'Depends: liballegro4.1 (>= 4.1), libjgmod (>= 0.99), libalfont (>= 1.9.2)' >>DEBIAN/control;
+echo 'Suggests: Nothing' >>DEBIAN/control;
+echo 'Installed-Size: 1200' >>DEBIAN/control;
+echo 'Maintainer: Ferreira Yohann <bertram25@hotmail.com>' >>DEBIAN/control;
+echo 'Description: The Mana World is a Great Online Game based upon the Seiken Densetsu Serie.' >>DEBIAN/control;
+echo ' It has its own universe, and and its own character management system, which will' >>DEBIAN/control;
+echo ' give you the opportunity to play in a 2D heroic-fantasy world forever.' >>DEBIAN/control;
+echo ' .' >>DEBIAN/control;
+echo ' You will find the dependancy of this package on the website. Install them before trying to install this one.' >>DEBIAN/control;
+echo ' You need : libalfont, and libjgmod. liballegro4.1 is given by any Debian mirrors...' >>DEBIAN/control;
+echo ' Look at the website for further informations...' >>DEBIAN/control;
+echo ' .' >>DEBIAN/control;
+echo ' Authors:' >>DEBIAN/control;
+echo ' Elven Programmer <elvenprogrammer@sourceforge.net>' >>DEBIAN/control;
+echo ' Kth5 <kth5@gawab.com>' >>DEBIAN/control;
+echo ' Ultramichy <celdron15@hotmail.com>' >>DEBIAN/control;
+echo ' SimEdw <simon@crossnet.se>' >>DEBIAN/control;
+echo ' Rotonen <j_orponen@hotmail.com>' >>DEBIAN/control;
+echo ' Chetic <Chetic@gmail.com>' >>DEBIAN/control;
+echo ' .' >>DEBIAN/control;
+echo ' Web Site: http://themanaworld.sourceforge.net/' >>DEBIAN/control;
+# End of control file...
+
+echo "Rules created..."
+echo "Creating Debian Package..."
+cd ..
+chown -R root:root `echo 'manaworld_'$TMW_VERSION'_i386'`;
+dpkg --build `echo 'manaworld_'$TMW_VERSION'_i386'`;
+cp `echo 'manaworld_'$TMW_VERSION'_i386.deb'` ..;
+cd ..
+echo "Cleaning ...";
+rm -rf Debian;
+echo "You Debian Package is normally ready :"
+echo "His name is : manaworld_"$TMW_VERSION"_i386.deb";
+
+echo "End of Debian Creation...";
+
diff --git a/docs/INSTALL/linux.txt b/docs/INSTALL/linux.txt
index edf47dfc..222f9d8b 100644
--- a/docs/INSTALL/linux.txt
+++ b/docs/INSTALL/linux.txt
@@ -70,6 +70,8 @@ manual:
3) Installing the Alfont library
================================
+NOTE: if you're using Debian check this package http://themanaworl.sourceforge.net/files/jgmod_0.99_i386.deb
+
This is most likely not included in any distribution out there. So download
the source from here:
http://nekros.freeshell.org/delirium/alfont.php
@@ -99,8 +101,10 @@ the source from here:
4) Installing the JGmod library
================================
-This is not included in any distribution. Download source package from here:
- http://www.geocities.com/jeffery_guan/jgmod/jgmod.zip
+NOTE: if you're using Debian check this package http://themanaworl.sourceforge.net/files/libalfont_1.9.2_i386.deb
+
+This is not included in any distribution. Download source package from here:
+http://www.geocities.com/jeffery_guan/jgmod/jgmod.zip
1) extract archive and 'cd' into the directory
2) run 'sh fixunix.sh'
diff --git a/docs/ReadMe.txt b/docs/ReadMe.txt
index 1a6dc043..c0754c9e 100644
--- a/docs/ReadMe.txt
+++ b/docs/ReadMe.txt
@@ -5,27 +5,29 @@
umperio@users.sourceforge.net
Release info:
- - Version: 0.0.8 pre release
+ - Version: 0.0.8a
- Date: ?/?/2004
Development team:
- Elven Programmer (Admin)
- kth5 (Programmer)
+ - SimEdw (Programmer)
- Ultramichy (Game server admin)
- Rotonen (Background story and music)
Special thanks:
- Sull (Linux Developer)
+ - Neorice (Pixel Artist)
- natsuki (Win32 Developer)
- Genis (Win32 Developer)
- RRC (Graphic Designer)
- necromus (Pixel Artist)
- LordNev (Artist)
- jui-feng for helping in server development and php scripts.
- - SimEdw for porting TMW to MacOS X
+ - Bertram for Debian installation script
Powered by:
- - Allegro, a game developing library
+ - Allegro
- AllegroFont
- JMod
@@ -69,7 +71,30 @@ Remember: the server is only for development or demo purposes (Thanks again to U
------------------
0.0.8
-- Add application icon for Win32 binaries
+- added sound support for macosx
+- added primitive inventory
+- added action failed messages for all skills and known reasons
+ (0x0110 handled)
+- added sit capability with the right level
+- added "dead" message and restart packet
+- added skill dialog
+- added skill update (0x0141 handled)
+- added colored text for damage
+- added monster death animation
+- added icon to win32 executable
+- added 'enter' key support in login screen
+- added RLE sprites for tiles
+- added collision detection with beings
+- fix for mapserver segfault-bug in chatsystem (broken pipe for all users on
+ screen)
+- partially added TMW GUI to inventory
+- added soundpool that can preload, play and remove items to/from ram
+- added tmw_bar_proc
+- added tmw_plus_proc && possibility to increase stats point, at each new level
+- added increase skill level dialog
+- added 2xSaI engine
+- added patch client v0.1 to Win32 version
+
0.0.7e
diff --git a/src/game.cpp b/src/game.cpp
index 2a81e8d5..510de2cd 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -97,17 +97,12 @@ void game() {
while(state!=EXIT) {
status("INPUT");
do_input();
- //if(refresh) {
- status("GRAPHIC");
- do_graphic();
- //refresh = false;
- //}
+ status("GRAPHIC");
+ do_graphic();
status("PARSE");
do_parse();
status("FLUSH");
flush();
- /*if(fps>30)
- rest(15);*/
}
exit_graphic();
@@ -746,9 +741,12 @@ void do_parse() {
break;
// Add item to inventory after you bought it
case 0x00a0:
- inventory.add_item(RFIFOW(2), RFIFOW(6), RFIFOW(4));
+ if(RFIFOB(22)>0)
+ chatlog.chat_log("Unable to pick up item", BY_SERVER, gui_font);
+ else
+ inventory.add_item(RFIFOW(2), RFIFOW(6), RFIFOW(4));
break;
- // Remove item to inventory after you sold it
+ // Remove item to inventory after you sold it
case 0x00af:
printf("sell %i\n",-RFIFOW(4));
inventory.increase_quantity(RFIFOW(2), -RFIFOW(4));
@@ -788,6 +786,12 @@ void do_parse() {
case 0x010c:
chatlog.chat_log("MVP player", BY_SERVER, gui_font);
break;
+ // Item drop
+ case 0x009e:
+ WFIFOW(0) = net_w_value(0x009f);
+ WFIFOL(2) = net_l_value(RFIFOL(2));
+ WFIFOSET(6);
+ break;
// Manage non implemented packets
default:
//printf("%x\n",id);
diff --git a/src/main.cpp b/src/main.cpp
index 5411866e..a64a4076 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -18,6 +18,10 @@
You should have received a copy of the GNU General Public License
along with The Mana World; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ By ElvenProgrammer aka Eugenio Favalli (umperio@users.upagiro.net)
+
+ Bertram
*/
@@ -28,6 +32,15 @@
#include <iostream>
+// Part of the patch - bertram
+#ifdef __USE_UNIX98
+#include <sys/stat.h>
+#include <pwd.h>
+#include <unistd.h>
+#include <errno.h>
+#endif
+// End of a part of the patch - bertram
+
/* Account infos */
int account_ID, session_ID1, session_ID2;
char sex, n_server, n_character;
@@ -57,12 +70,109 @@ void request_exit() {
/** Do all initialization stuff */
void init_engine() {
- allegro_init();
+ allegro_init();
init_log();
set_close_button_callback(request_exit); // we should not use set_window_close_hook() since it's deprecated and might be gone in the future /-kth5
- set_config_file("tmw.ini");
- if(strcmp(get_config_string("system", "core_version", NULL), CORE_VERSION)!=0)
- error("Wrong INI file");
+
+ // A little sample of code that will add (or not) the home user directory to read the tmw.ini file in, if we are under Linux. - Bertram
+
+ // This has the goal to have each user is own ini.file under linux. And I do this because i'm expecting to make packages of manaworld for linux, so the tmw.ini will be copied at the right place before the first execution of the application...
+
+ char *dir = new char[400];
+ strcpy(dir, "");
+
+ #ifndef __USE_UNIX98
+ // WIN32 and else...
+ printf("Windows and else version\n");
+ strcpy(dir, "tmw.ini");
+ #endif
+
+ #ifdef __USE_UNIX98
+ printf("Linux Version\n");
+ // Linux !
+ char *userHome;
+
+ char *name = getlogin();
+
+ passwd *pass;
+
+ if (name != NULL)
+ pass = getpwnam(name);
+ else
+ pass = getpwuid(geteuid());
+
+ if (pass == NULL)
+ {
+ printf("Couldn't determine the user home directory. Exitting.\n");
+ exit(1);
+ }
+
+ userHome = pass->pw_dir;
+
+ // Checking if homeuser/.manaworld folder exists.
+ sprintf(dir, "%s/.manaworld", userHome);
+ if ((mkdir(dir, S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH) != 0) && (errno != EEXIST))
+ {
+ printf("%s can't be made... And doesn't exist ! Exitting ...", dir);
+ exit(1);
+ }
+ sprintf(dir, "%s/.manaworld/tmw.ini", userHome);
+ //printf("file is : %s\n", dir);
+
+ // You don't have to delete name and userHome, since they both point to datas that mustn't be destroyed while LINUX is running.
+
+ #endif
+
+ // Checking if the tmw.ini file exists... otherwise creates it with default options !
+ FILE *tmwFile = 0;
+ tmwFile = fopen(dir, "r");
+
+ // If we can't read it, it doesn't exist !
+ if ( tmwFile == NULL )
+ {
+ // We reopen the file in write mode and we create it
+ printf("No file : %s\n, Creating Default Options...\n", dir);
+ tmwFile = fopen(dir, "wt");
+ if ( tmwFile == NULL )
+ {
+ printf("Can't create %s file. Using Defaults.\n", dir);
+ }
+ else
+ {
+ // tmw.ini creation
+ fprintf(tmwFile, "[system]\nsystem =\nkeyboard = en\nlanguage = \ncore_version = 0.0.8\n\n");
+
+ fprintf(tmwFile, "[server]\nhost = animesites.de\nport = 6901\n\n");
+ fprintf(tmwFile, "[settings]\n; = Screen mode:\n; = 1 Fullscreen\n; = 2 Windowed\nscreen = 2\n");
+ fprintf(tmwFile, "; = Sound:\n; = 1 enabled\n; = 0 disabled\nsound = 0\n");
+
+
+
+ char * chatlogFilename = new char [400];
+ #ifdef __USE_UNIX98
+ sprintf(chatlogFilename, "%s/.manaworld/chatlog.txt", userHome);
+ #else
+ strcpy(chatlogFilename, "chatlog.txt");
+ #endif
+ fprintf(tmwFile, "; = Chat logfile location:\nchatlog = %s\n", chatlogFilename);
+ delete chatlogFilename; chatlogFilename = 0;
+
+ fprintf(tmwFile, "; = Display strecth mode:\n; = 0 Disabled (Test only)\n; = 1 Normal\n; = 2 SuperEagle\n");
+ fprintf(tmwFile, "stretch = 1\n\n");
+ fprintf(tmwFile, "[login]\nremember = 1\nusername = Player\n");
+
+ fclose(tmwFile);
+ }
+ }
+
+ set_config_file(dir);
+ delete dir; dir = 0;
+
+
+
+ // End of portion of code revised... Bertram
+
+ // set_config_file("tmw.ini");
#ifdef MACOSX
set_color_depth(32);
Init_2xSaI(32);
diff --git a/src/main.h b/src/main.h
index 640d3b12..17dbb4c9 100644
--- a/src/main.h
+++ b/src/main.h
@@ -20,6 +20,8 @@
You should have received a copy of the GNU General Public License
along with The Mana World; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ By ElvenProgrammer aka Eugenio Favalli (umperio@users.upagiro.net)
*/