This commit is contained in:
vl 2010-07-08 16:14:06 +02:00
commit 428c78e894
96 changed files with 2117 additions and 618 deletions

View file

@ -24,7 +24,6 @@
#include "cocoa_event_emitter.h" #include "cocoa_event_emitter.h"
#include "cocoa_opengl_view.h" #include "cocoa_opengl_view.h"
#include "cocoa_window.h"
// Virtual key codes are only defined here. We still do not need to link carbon. // Virtual key codes are only defined here. We still do not need to link carbon.
// see: http://lists.apple.com/archives/Cocoa-dev/2009/May/msg01180.html // see: http://lists.apple.com/archives/Cocoa-dev/2009/May/msg01180.html
@ -99,97 +98,8 @@ static void setupApplicationMenu()
[[NSApp mainMenu] addItem:menuItem]; [[NSApp mainMenu] addItem:menuItem];
} }
void ctor() static void setupGLView(NSView* superview)
{ {
// create a pool, cocoa code would leak memory otherwise
g_pool = [[NSAutoreleasePool alloc] init];
// init the application object
[NSApplication sharedApplication];
// create the menu in the top screen bar
setupApplicationMenu();
// tell the application that we are running now
[NSApp finishLaunching];
}
void dtor()
{
// shut down the application
[NSApp terminate:nil];
// release the pool
[g_pool release];
}
bool init(uint windowIcon, emptyProc exitFunc)
{
return true;
}
bool unInit()
{
return true;
}
nlWindow createWindow(const GfxMode& mode)
{
unsigned int styleMask = NSTitledWindowMask | NSClosableWindowMask |
NSMiniaturizableWindowMask | NSResizableWindowMask;
// create a cocoa window with the size provided by the mode parameter
CocoaWindow* window = [[CocoaWindow alloc]
initWithContentRect:NSMakeRect(0, 0, mode.Width, mode.Height)
styleMask:styleMask backing:NSBackingStoreBuffered defer:NO];
if(!window)
nlerror("cannot create window");
// set the window to non transparent
[window setOpaque:YES];
// enable mouse move events, NeL wants them
[window setAcceptsMouseMovedEvents:YES];
// there are no overlapping subviews, so we can use the magical optimization!
[window useOptimizedDrawing:YES];
// put the window to the front and make it the key window
[window makeKeyAndOrderFront:nil];
// this is our main window
[window makeMainWindow];
return window;
}
bool destroyWindow(nlWindow wnd)
{
NSWindow* window = (NSWindow*)wnd;
NSOpenGLView* view = [window contentView];
// release the view we alloced
[view release];
// release the window we alloced
[window release];
return true;
}
nlWindow setDisplay(nlWindow wnd, const GfxMode& mode, bool show, bool resizeable)
{
/*
TODO use show
call showWindow()
*/
NSWindow* window = (NSWindow*)wnd;
if(wnd == EmptyWindow)
window = (NSWindow*)createWindow(mode);
/* /*
TODO use mode.Depth TODO use mode.Depth
TODO NSOpenGLPFAOffScreen TODO NSOpenGLPFAOffScreen
@ -223,8 +133,13 @@ nlWindow setDisplay(nlWindow wnd, const GfxMode& mode, bool show, bool resizeabl
if(!view) if(!view)
nlerror("cannot create view"); nlerror("cannot create view");
// put the view into the window // make the view automatically fit the super view
[window setContentView:view]; [view setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable];
// put the view into the superview
[superview addSubview:view];
[view setFrame: [superview frame]];
// create a opengl context for the view // create a opengl context for the view
NSOpenGLContext* ctx = [view openGLContext]; NSOpenGLContext* ctx = [view openGLContext];
@ -234,8 +149,102 @@ nlWindow setDisplay(nlWindow wnd, const GfxMode& mode, bool show, bool resizeabl
// free the pixel format object // free the pixel format object
[format release]; [format release];
}
return window; void ctor()
{
}
void dtor()
{
}
bool init(uint windowIcon, emptyProc exitFunc)
{
return true;
}
bool unInit()
{
return true;
}
nlWindow createWindow(const GfxMode& mode)
{
// create a pool, cocoa code would leak memory otherwise
g_pool = [[NSAutoreleasePool alloc] init];
// init the application object
[NSApplication sharedApplication];
// create the menu in the top screen bar
setupApplicationMenu();
// tell the application that we are running now
[NSApp finishLaunching];
// describe how the window should look like and behave
unsigned int styleMask = NSTitledWindowMask | NSClosableWindowMask |
NSMiniaturizableWindowMask | NSResizableWindowMask;
// create a cocoa window with the size provided by the mode parameter
NSWindow* window = [[NSWindow alloc]
initWithContentRect:NSMakeRect(0, 0, mode.Width, mode.Height)
styleMask:styleMask backing:NSBackingStoreBuffered defer:NO];
if(!window)
nlerror("cannot create window");
// set the window to non transparent
[window setOpaque:YES];
// enable mouse move events, NeL wants them
[window setAcceptsMouseMovedEvents:YES];
// there are no overlapping subviews, so we can use the magical optimization!
[window useOptimizedDrawing:YES];
// put the window to the front and make it the key window
[window makeKeyAndOrderFront:nil];
// this is our main window
[window makeMainWindow];
NSView* view = [[NSView alloc] init];
[window setContentView: view];
return view;
}
bool destroyWindow(nlWindow wnd)
{
NSView* view = (NSView*)wnd;
// release the window
[[view window] release];
// shut down the application
[NSApp terminate:nil];
// release the pool
[g_pool release];
return true;
}
nlWindow setDisplay(nlWindow wnd, const GfxMode& mode, bool show, bool resizeable)
{
NSView* view = (NSView*)wnd;
if(view == EmptyWindow)
view = (NSView*)createWindow(mode);
setupGLView(view);
[[view window] makeFirstResponder:[[view subviews] lastObject]];
return view;
} }
bool setWindowStyle(nlWindow wnd, bool fullscreen) bool setWindowStyle(nlWindow wnd, bool fullscreen)
@ -246,16 +255,16 @@ bool setWindowStyle(nlWindow wnd, bool fullscreen)
return false; return false;
} }
NSWindow* window = (NSWindow*)wnd; NSView* superview = (NSView*)wnd;
NSOpenGLView* view = [window contentView]; NSOpenGLView* view = [[superview subviews] lastObject];
NSOpenGLContext* ctx = [view openGLContext];
// leave fullscreen mode, enter windowed mode // leave fullscreen mode, enter windowed mode
if(!fullscreen && [view isInFullScreenMode]) if(!fullscreen && [superview isInFullScreenMode])
{ {
// disable manual setting of back buffer size, cocoa handles this // disable manual setting of back buffer size, cocoa handles this
// automatically as soon as the view gets resized // automatically as soon as the view gets resized
CGLError error = CGLDisable((CGLContextObj)[ctx CGLContextObj], CGLError error = CGLDisable(
(CGLContextObj)[[view openGLContext] CGLContextObj],
kCGLCESurfaceBackingSize); kCGLCESurfaceBackingSize);
if(error != kCGLNoError) if(error != kCGLNoError)
@ -263,14 +272,21 @@ bool setWindowStyle(nlWindow wnd, bool fullscreen)
CGLErrorString(error)); CGLErrorString(error));
// pull the view back from fullscreen restoring window options // pull the view back from fullscreen restoring window options
[view exitFullScreenModeWithOptions:nil]; [superview exitFullScreenModeWithOptions:nil];
// let the gl view receive key events
[[view window] makeFirstResponder:view];
// bring the window containing the gl view to the front
[[view window] makeKeyAndOrderFront:nil];
} }
// enter fullscreen, leave windowed mode // enter fullscreen, leave windowed mode
else if(fullscreen && ![view isInFullScreenMode]) else if(fullscreen && ![superview isInFullScreenMode])
{ {
// enable manual back buffer size for mode setting in fullscreen // enable manual back buffer size for mode setting in fullscreen
CGLError error = CGLEnable((CGLContextObj)[ctx CGLContextObj], CGLError error = CGLEnable(
(CGLContextObj)[[view openGLContext] CGLContextObj],
kCGLCESurfaceBackingSize); kCGLCESurfaceBackingSize);
if(error != kCGLNoError) if(error != kCGLNoError)
@ -280,7 +296,7 @@ bool setWindowStyle(nlWindow wnd, bool fullscreen)
// put the view in fullscreen mode, hiding the dock but enabling the menubar // put the view in fullscreen mode, hiding the dock but enabling the menubar
// to pop up if the mouse hits the top screen border. // to pop up if the mouse hits the top screen border.
// NOTE: withOptions:nil disables <CMD>+<Tab> application switching! // NOTE: withOptions:nil disables <CMD>+<Tab> application switching!
[view enterFullScreenMode:[NSScreen mainScreen] withOptions: [superview enterFullScreenMode:[NSScreen mainScreen] withOptions:
[NSDictionary dictionaryWithObjectsAndKeys: [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt: [NSNumber numberWithInt:
NSApplicationPresentationHideDock | NSApplicationPresentationHideDock |
@ -291,6 +307,9 @@ bool setWindowStyle(nlWindow wnd, bool fullscreen)
TODO check if simply using NSView enterFullScreenMode is a good idea. TODO check if simply using NSView enterFullScreenMode is a good idea.
the context can be set to full screen as well, performance differences? the context can be set to full screen as well, performance differences?
*/ */
// let the gl view receive key events
[[view window] makeFirstResponder:view];
} }
return true; return true;
@ -299,8 +318,8 @@ bool setWindowStyle(nlWindow wnd, bool fullscreen)
void getCurrentScreenMode(nlWindow wnd, GfxMode& mode) void getCurrentScreenMode(nlWindow wnd, GfxMode& mode)
{ {
NSWindow* window = (NSWindow*)wnd; NSView* superview = (NSView*)wnd;
NSOpenGLView* view = [window contentView]; NSOpenGLView* view = [[superview subviews] lastObject];
// the sceen with the menu bar // the sceen with the menu bar
NSScreen* screen = [[NSScreen screens] objectAtIndex:0]; NSScreen* screen = [[NSScreen screens] objectAtIndex:0];
@ -310,7 +329,7 @@ void getCurrentScreenMode(nlWindow wnd, GfxMode& mode)
mode.Depth = NSBitsPerPixelFromDepth([screen depth]); mode.Depth = NSBitsPerPixelFromDepth([screen depth]);
// in fullscreen mode // in fullscreen mode
if([view isInFullScreenMode]) if([superview isInFullScreenMode])
{ {
// return the size of the back buffer (like having switched monitor mode) // return the size of the back buffer (like having switched monitor mode)
mode.Windowed = false; mode.Windowed = false;
@ -330,9 +349,8 @@ void getCurrentScreenMode(nlWindow wnd, GfxMode& mode)
void getWindowSize(nlWindow wnd, uint32 &width, uint32 &height) void getWindowSize(nlWindow wnd, uint32 &width, uint32 &height)
{ {
NSWindow* window = (NSWindow*)wnd; NSView* superview = (NSView*)wnd;
NSOpenGLView* view = [window contentView]; NSOpenGLView* view = [[superview subviews] lastObject];
NSOpenGLContext* ctx = [view openGLContext];
// A cocoa fullscreen view stays at the native resolution of the display. // A cocoa fullscreen view stays at the native resolution of the display.
// When changing the rendering resolution, the size of the back buffer gets // When changing the rendering resolution, the size of the back buffer gets
@ -343,7 +361,7 @@ void getWindowSize(nlWindow wnd, uint32 &width, uint32 &height)
// not the one from the window. // not the one from the window.
// in fullscreen mode // in fullscreen mode
if([view isInFullScreenMode]) if([superview isInFullScreenMode])
{ {
// use the size stored in setWindowSize() // use the size stored in setWindowSize()
width = g_bufferSize[0]; width = g_bufferSize[0];
@ -362,16 +380,16 @@ void getWindowSize(nlWindow wnd, uint32 &width, uint32 &height)
void setWindowSize(nlWindow wnd, uint32 width, uint32 height) void setWindowSize(nlWindow wnd, uint32 width, uint32 height)
{ {
NSWindow* window = (NSWindow*)wnd; NSView* superview = (NSView*)wnd;
NSOpenGLView* view = [window contentView]; NSOpenGLView* view = [[superview subviews] lastObject];
NSOpenGLContext* ctx = [view openGLContext];
// for fullscreen mode, adjust the back buffer size to the desired resolution // for fullscreen mode, adjust the back buffer size to the desired resolution
if([view isInFullScreenMode]) if([superview isInFullScreenMode])
{ {
// set the back buffer manually to match the desired rendering resolution // set the back buffer manually to match the desired rendering resolution
GLint dim[2] = { width, height }; GLint dim[2] = { width, height };
CGLError error = CGLSetParameter((CGLContextObj)[ctx CGLContextObj], CGLError error = CGLSetParameter(
(CGLContextObj)[[view openGLContext] CGLContextObj],
kCGLCPSurfaceBackingSize, dim); kCGLCPSurfaceBackingSize, dim);
if(error != kCGLNoError) if(error != kCGLNoError)
@ -380,15 +398,22 @@ void setWindowSize(nlWindow wnd, uint32 width, uint32 height)
} }
else else
{ {
// get the windows current frame // there is only a pool if nel created the window itself assuming that
NSRect rect = [window frame]; // nel is also in charge of the main loop
if(g_pool)
{
NSWindow* window = [view window];
// convert the desired content size to window size // get the windows current frame
rect = [window frameRectForContentRect: NSRect rect = [window frame];
NSMakeRect(rect.origin.x, rect.origin.y, width, height)];
// update window dimensions // convert the desired content size to window size
[window setFrame:rect display:YES]; rect = [window frameRectForContentRect:
NSMakeRect(rect.origin.x, rect.origin.y, width, height)];
// update window dimensions
[window setFrame:rect display:YES];
}
} }
// store the size // store the size
@ -399,11 +424,12 @@ void setWindowSize(nlWindow wnd, uint32 width, uint32 height)
void getWindowPos(nlWindow wnd, sint32 &x, sint32 &y) void getWindowPos(nlWindow wnd, sint32 &x, sint32 &y)
{ {
NSWindow* window = (NSWindow*)wnd; NSView* superview = (NSView*)wnd;
NSOpenGLView* view = [window contentView]; NSOpenGLView* view = [[superview subviews] lastObject];
NSWindow* window = [view window];
// for IDriver conformity // for IDriver conformity
if([view isInFullScreenMode]) if([superview isInFullScreenMode])
{ {
x = y = 0; x = y = 0;
return; return;
@ -424,7 +450,8 @@ void getWindowPos(nlWindow wnd, sint32 &x, sint32 &y)
void setWindowPos(nlWindow wnd, sint32 x, sint32 y) void setWindowPos(nlWindow wnd, sint32 x, sint32 y)
{ {
NSWindow* window = (NSWindow*)wnd; NSView* superview = (NSView*)wnd;
NSWindow* window = [superview window];
// get the rect (position, size) of the screen with menu bar // get the rect (position, size) of the screen with menu bar
NSRect screenRect = [[[NSScreen screens] objectAtIndex:0] frame]; NSRect screenRect = [[[NSScreen screens] objectAtIndex:0] frame];
@ -441,7 +468,8 @@ void setWindowPos(nlWindow wnd, sint32 x, sint32 y)
void setWindowTitle(nlWindow wnd, const ucstring& title) void setWindowTitle(nlWindow wnd, const ucstring& title)
{ {
NSWindow* window = (NSWindow*)wnd; NSView* superview = (NSView*)wnd;
NSWindow* window = [superview window];
// well... set the title of the window // well... set the title of the window
[window setTitle:[NSString stringWithUTF8String:title.toUtf8().c_str()]]; [window setTitle:[NSString stringWithUTF8String:title.toUtf8().c_str()]];
@ -454,8 +482,9 @@ void showWindow(bool show)
bool activate(nlWindow wnd) bool activate(nlWindow wnd)
{ {
NSWindow* window = (NSWindow*)wnd; NSView* superview = (NSView*)wnd;
NSOpenGLContext* ctx = [[window contentView] openGLContext]; NSOpenGLView* view = [[superview subviews] lastObject];
NSOpenGLContext* ctx = [view openGLContext];
// if our context is not the current one, make it the current // if our context is not the current one, make it the current
if([NSOpenGLContext currentContext] != ctx) if([NSOpenGLContext currentContext] != ctx)
@ -466,9 +495,9 @@ bool activate(nlWindow wnd)
void swapBuffers(nlWindow wnd) void swapBuffers(nlWindow wnd)
{ {
NSWindow* window = (NSWindow*)wnd; NSView* superview = (NSView*)wnd;
NSOpenGLView* view = [window contentView]; NSOpenGLView* view = [[superview subviews] lastObject];
NSOpenGLContext* ctx = [view openGLContext]; NSOpenGLContext* ctx = [view openGLContext];
// make cocoa draw buffer contents to the view // make cocoa draw buffer contents to the view
[ctx flushBuffer]; [ctx flushBuffer];
@ -508,8 +537,9 @@ void showCursor(bool show)
void setMousePos(nlWindow wnd, float x, float y) void setMousePos(nlWindow wnd, float x, float y)
{ {
NSWindow* window = (NSWindow*)wnd; NSView* superview = (NSView*)wnd;
NSOpenGLView* view = [window contentView]; NSOpenGLView* view = [[superview subviews] lastObject];
NSWindow* window = [view window];
// CG wants absolute coordinates related to first screen's top left // CG wants absolute coordinates related to first screen's top left
@ -518,7 +548,7 @@ void setMousePos(nlWindow wnd, float x, float y)
// get the rect (position, size) of the window // get the rect (position, size) of the window
NSRect windowRect; NSRect windowRect;
if([view isInFullScreenMode]) if([superview isInFullScreenMode])
windowRect = [[window screen] frame]; windowRect = [[window screen] frame];
else else
windowRect = [window frame]; windowRect = [window frame];
@ -741,10 +771,15 @@ void emulateMouseRawMode(bool enable)
void submitEvents(NLMISC::CEventServer& server, void submitEvents(NLMISC::CEventServer& server,
bool allWindows, NLMISC::CCocoaEventEmitter* eventEmitter) bool allWindows, NLMISC::CCocoaEventEmitter* eventEmitter)
{ {
// cocoa style memory cleanup // there is only a pool if nel created the window itself assuming that
[g_pool release]; // nel is also in charge of the main loop
g_pool = [[NSAutoreleasePool alloc] init]; if(g_pool)
{
// cocoa style memory cleanup
[g_pool release];
g_pool = [[NSAutoreleasePool alloc] init];
}
// we break if there was no event to handle // we break if there was no event to handle
/* TODO maximum number of events processed in one update? */ /* TODO maximum number of events processed in one update? */
while(true) while(true)
@ -758,7 +793,8 @@ void submitEvents(NLMISC::CEventServer& server,
if(!event) if(!event)
break; break;
NSRect viewRect = [[[event window] contentView] frame]; NSView* glView = [[[[event window] contentView] subviews] lastObject];
NSRect viewRect = [glView frame];
// TODO this code assumes, that the view fills the window // TODO this code assumes, that the view fills the window
// convert the mouse position to NeL style (relative) // convert the mouse position to NeL style (relative)
@ -770,7 +806,6 @@ void submitEvents(NLMISC::CEventServer& server,
event.type != NSKeyDown && event.type != NSKeyUp) event.type != NSKeyDown && event.type != NSKeyUp)
{ {
[NSApp sendEvent:event]; [NSApp sendEvent:event];
[NSApp updateWindows];
continue; continue;
} }
@ -829,7 +864,6 @@ void submitEvents(NLMISC::CEventServer& server,
nelEvent = new NLMISC::CEventMouseMove(mouseX, mouseY, nelEvent = new NLMISC::CEventMouseMove(mouseX, mouseY,
(NLMISC::TMouseButton)0 /* modifiers */, eventEmitter); (NLMISC::TMouseButton)0 /* modifiers */, eventEmitter);
server.postEvent(nelEvent); server.postEvent(nelEvent);
break; break;
} }
@ -947,7 +981,6 @@ void submitEvents(NLMISC::CEventServer& server,
} }
[NSApp sendEvent:event]; [NSApp sendEvent:event];
[NSApp updateWindows];
} }
} }

View file

@ -29,28 +29,6 @@
-(id)initWithFrame:(NSRect)frame; -(id)initWithFrame:(NSRect)frame;
-(void)dealloc; -(void)dealloc;
-(BOOL)acceptsFirstResponder;
-(BOOL)needsPanelToBecomeKey;
-(void)keyDown:(NSEvent*)event; -(void)keyDown:(NSEvent*)event;
/******************************************************************************/
/* NSTextInputClient Protocol */
-(BOOL)hasMarkedText;
-(NSRange)markedRange;
-(NSRange)selectedRange;
-(void)setMarkedText:(id)aString
selectedRange:(NSRange)newSelection
replacementRange:(NSRange)replacementRange;
-(void)unmarkText;
-(NSArray*)validAttributesForMarkedText;
-(NSAttributedString*)attributedSubstringForProposedRange:(NSRange)aRange
actualRange:(NSRangePointer)actualRange;
-(void)insertText:(id)aString replacementRange:(NSRange)replacementRange;
-(NSUInteger)characterIndexForPoint:(NSPoint)aPoint;
-(NSRect)firstRectForCharacterRange:(NSRange)aRange
actualRange:(NSRangePointer)actualRange;
-(void)doCommandBySelector:(SEL)aSelector;
@end @end

View file

@ -20,7 +20,7 @@
@implementation CocoaOpenGLView @implementation CocoaOpenGLView
- (id)initWithFrame:(NSRect)frame -(id)initWithFrame:(NSRect)frame
{ {
if(self = [super initWithFrame:frame]) if(self = [super initWithFrame:frame])
{ {
@ -30,22 +30,12 @@
return nil; return nil;
} }
- (void)dealloc -(void)dealloc
{ {
[characterStorage release]; [characterStorage release];
[super dealloc]; [super dealloc];
} }
-(BOOL)acceptsFirstResponder
{
return YES;
}
-(BOOL)needsPanelToBecomeKey
{
return NO;
}
-(void)keyDown:(NSEvent*)event -(void)keyDown:(NSEvent*)event
{ {
[[self inputContext] handleEvent:event]; [[self inputContext] handleEvent:event];

View file

@ -1,31 +0,0 @@
/*
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#import <Cocoa/Cocoa.h>
/**
* derived to configure the NSWindow
*/
@interface CocoaWindow : NSWindow
{
}
-(BOOL)canBecomeKeyWindow;
-(BOOL)canBecomeMainWindow;
-(BOOL)needsPanelToBecomeKey;
-(BOOL)acceptsFirstResponder;
@end

View file

@ -1,43 +0,0 @@
/*
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#import "cocoa_window.h"
@implementation CocoaWindow
-(BOOL)canBecomeKeyWindow
{
return YES;
}
-(BOOL)canBecomeMainWindow
{
return YES;
}
-(BOOL)needsPanelToBecomeKey
{
return NO;
}
-(BOOL)acceptsFirstResponder
{
return YES;
}
@end

View file

@ -91,80 +91,6 @@
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="..\obj64\$(ConfigurationName)\$(ProjectName)"
IntermediateDirectory="..\obj64\$(ConfigurationName)\$(ProjectName)"
ConfigurationType="4"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="4"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="../include"
PreprocessorDefinitions="_LIB;_DEBUG;WIN32;LIBXML_STATIC;USE_JPEG"
StringPooling="true"
MinimalRebuild="true"
ExceptionHandling="2"
BasicRuntimeChecks="3"
SmallerTypeCheck="true"
RuntimeLibrary="3"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="std$(ProjectName).h"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="libxml2.lib zlib.lib libpng.lib libjpeg.lib"
OutputFile="..\lib64\nl$(ProjectName)_d.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
OutputDirectory="..\obj\$(ConfigurationName)\$(ProjectName)" OutputDirectory="..\obj\$(ConfigurationName)\$(ProjectName)"
@ -241,6 +167,80 @@
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="..\obj64\$(ConfigurationName)\$(ProjectName)"
IntermediateDirectory="..\obj64\$(ConfigurationName)\$(ProjectName)"
ConfigurationType="4"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="4"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="../include"
PreprocessorDefinitions="_LIB;_DEBUG;WIN32;LIBXML_STATIC;USE_JPEG"
StringPooling="true"
MinimalRebuild="true"
ExceptionHandling="2"
BasicRuntimeChecks="3"
SmallerTypeCheck="true"
RuntimeLibrary="3"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="std$(ProjectName).h"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="libxml2.lib zlib.lib libpng.lib libjpeg.lib"
OutputFile="..\lib64\nl$(ProjectName)_d.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release|x64"
OutputDirectory="..\obj64\$(ConfigurationName)\$(ProjectName)" OutputDirectory="..\obj64\$(ConfigurationName)\$(ProjectName)"
@ -413,7 +413,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -421,7 +421,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -453,7 +453,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -461,7 +461,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -489,7 +489,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -497,7 +497,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -525,7 +525,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -533,7 +533,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -561,7 +561,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -569,7 +569,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -1570,7 +1570,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -1578,7 +1578,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"

View file

@ -3052,9 +3052,14 @@ void CBitmap::loadSize(NLMISC::IStream &f, uint32 &retWidth, uint32 &retHeight)
break; break;
} }
// end of file chunk
else if (chunkName == NL_MAKEFOURCC('I', 'E', 'N', 'D'))
{
break;
}
// skip data of this chunk // skip data of this chunk and CRC32
f.seek(chunkLength, IStream::current); f.seek(chunkLength+4, IStream::current);
} }
catch(...) catch(...)
{ {
@ -3065,7 +3070,8 @@ void CBitmap::loadSize(NLMISC::IStream &f, uint32 &retWidth, uint32 &retHeight)
} }
else if(fileType == JPG_HEADER) else if(fileType == JPG_HEADER)
{ {
uint16 blockMarker = 0; uint8 blockMarker1 = 0;
uint8 blockMarker2 = 0;
uint16 blockSize = 0; uint16 blockSize = 0;
bool eof = false; bool eof = false;
@ -3073,39 +3079,67 @@ void CBitmap::loadSize(NLMISC::IStream &f, uint32 &retWidth, uint32 &retHeight)
{ {
try try
{ {
// since we read the first marker // marker of a block
// we should skip this (blockSize should not be equal to zero) f.serial(blockMarker1);
if (blockSize > 1)
if (blockMarker1 == 0xff)
{ {
// marker of a block // marker of a block
f.serial(blockMarker); f.serial(blockMarker2);
NLMISC_BSWAP16(blockMarker);
// 0xff00 is only found in image data
if (blockMarker2 == 0x00)
{
// image data 0xff
}
// 0xffda is image data
else if (blockMarker2 == 0xda)
{
// next data is image data which must end with 0xffd9
}
// 0xffd9 is the end of an image // 0xffd9 is the end of an image
if (blockMarker == 0xffd9) break; else if (blockMarker2 == 0xd9)
{
// real end of file
break;
}
else if (blockMarker2 == 0xdd || blockMarker2 == 0xdc)
{
f.seek(4, IStream::current);
}
else if (blockMarker2 == 0xdf)
{
f.seek(3, IStream::current);
}
else if (blockMarker2 >= 0xd0 && blockMarker2 <= 0xd8)
{
// no content
}
else
{
// size of a block
f.serial(blockSize);
NLMISC_BSWAP16(blockSize);
// frame marker (which contains image width and height)
if (blockMarker2 >= 0xc0 && blockMarker2 <= 0xc3)
{
uint8 imagePrecision = 0; // sample precision
uint32 imageSize = 0; // width and height
f.serial(imagePrecision);
f.serial(imageSize);
NLMISC_BSWAP32(imageSize);
retWidth = imageSize & 0xffff;
retHeight = (imageSize & 0xffff0000) >> 16;
break;
}
// skip the block
f.seek(blockSize - 2, IStream::current);
}
} }
// size of a block
f.serial(blockSize);
NLMISC_BSWAP16(blockSize);
// frame marker (which contains image width and height)
if (blockMarker >= 0xffc0 && blockMarker <= 0xffc3)
{
uint8 imagePrecision = 0; // sample precision
uint32 imageSize = 0; // width and height
f.serial(imagePrecision);
f.serial(imageSize);
NLMISC_BSWAP32(imageSize);
retWidth = imageSize & 0xffff;
retHeight = (imageSize & 0xffff0000) >> 16;
break;
}
// skip the block
f.seek(blockSize - 2, IStream::current);
} }
catch(...) catch(...)
{ {

View file

@ -1,11 +1,3 @@
/**
* \file music_channel_fader.cpp
* \brief CMusicChannelFader
* \date 2008-09-04 21:49GMT
* \author Jan Boon (Kaetemi)
* CMusicChannelFader roughly based on music_channel_fmod.cpp
*/
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> // NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //

View file

@ -295,7 +295,7 @@ CameraHeight = 2.2; // Camera Height (in meter) from the ground (for the Third
CameraDistance = 3.0; // Camera Distance(in meter) from the user (for the Third Person View). CameraDistance = 3.0; // Camera Distance(in meter) from the user (for the Third Person View).
CameraDistStep = 1.0; CameraDistStep = 1.0;
CameraDistMin = 1.0; CameraDistMin = 1.0;
CameraDistMax = 5.0; CameraDistMax = 25.0;
CameraAccel = 5.0; CameraAccel = 5.0;
CameraSpeedMin = 2.0; CameraSpeedMin = 2.0;
CameraSpeedMax = 100.0; CameraSpeedMax = 100.0;
@ -384,11 +384,25 @@ SystemInfoColors =
"R2_INVITE","0 255 0 255 around", // Ring invitation "R2_INVITE","0 255 0 255 around", // Ring invitation
}; };
PrintfCommands ={ PrintfCommands = {
}; "52", "15", "55 55 0 255", "28", "uiChapterIV", "624",
"428", "0 0 0 255", "18", "", "624", "378",
"0 0 0 255", "14", "", "644", "278", "0 0 0 255",
"18", "", "52", "17", "255 255 255 255", "28",
"uiChapterIV", "622", "430", "255 255 255 255", "18", "",
"622", "380", "255 255 255 255", "14", "", "642",
"280", "255 255 255 255", "18", ""
};
PrintfCommandsFreeTrial ={ PrintfCommandsFreeTrial = {
}; "52", "15", "55 55 0 255", "28", "uiChapterIV", "624",
"428", "0 0 0 255", "18", "", "624", "378",
"0 0 0 255", "14", "", "644", "278", "0 0 0 255",
"18", "", "52", "17", "255 255 255 255", "28",
"uiChapterIV", "622", "430", "255 255 255 255", "18", "",
"622", "380", "255 255 255 255", "14", "", "642",
"280", "255 255 255 255", "18", ""
};
DisplayMissingAnimFile = 0; DisplayMissingAnimFile = 0;
@ -504,13 +518,13 @@ HardwareCursors =
"r2ed_tool_rotating.tga" "r2ed_tool_rotating.tga"
}; };
Loading_BG = "loading_bg.tga"; // Default name for the loading background file. Loading_BG = "new_loading_bg.tga"; // Default name for the loading background file.
Launch_BG = "launcher_bg.tga"; // Default name for the launch background file. Launch_BG = "new_launcher_bg.tga"; // Default name for the launch background file.
TeleportKami_BG = "teleport_kami_bg.tga"; TeleportKami_BG = "new_teleport_kami_bg.tga";
TeleportKaravan_BG = "teleport_caravan_bg.tga"; TeleportKaravan_BG = "new_teleport_caravan_bg.tga";
Elevator_BG = "elevator_bg.tga"; // Default name for the loading background file. Elevator_BG = "new_elevator_bg.tga"; // Default name for the loading background file.
ResurectKami_BG = "resurect_kami_bg.tga"; ResurectKami_BG = "new_resurect_kami_bg.tga";
ResurectKaravan_BG = "resurect_caravane_bg.tga"; ResurectKaravan_BG = "new_resurect_caravane_bg.tga";
End_BG = "end_bg.tga"; // Default name for the last background file. End_BG = "end_bg.tga"; // Default name for the last background file.
ScenarioSavePath = "./my_scenarios/"; ScenarioSavePath = "./my_scenarios/";

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 MiB

View file

@ -0,0 +1,657 @@
r2_live.tga 0.000000000000 0.000000000000 0.042968750000 0.038085937500
r2_live_over.tga 0.042968750000 0.000000000000 0.085937500000 0.038085937500
r2_live_pushed.tga 0.000000000000 0.039062500000 0.042968750000 0.077148437500
AR_botte.tga 0.085937500000 0.000000000000 0.125000000000 0.039062500000
ar_botte_mask.tga 0.042968750000 0.039062500000 0.082031250000 0.078125000000
AR_gilet.tga 0.082031250000 0.039062500000 0.121093750000 0.078125000000
ar_gilet_mask.tga 0.000000000000 0.078125000000 0.039062500000 0.117187500000
AR_hand.tga 0.039062500000 0.078125000000 0.078125000000 0.117187500000
ar_hand_mask.tga 0.078125000000 0.078125000000 0.117187500000 0.117187500000
AR_helmet.tga 0.125000000000 0.000000000000 0.164062500000 0.039062500000
ar_helmet_mask.tga 0.164062500000 0.000000000000 0.203125000000 0.039062500000
AR_pantabotte.tga 0.203125000000 0.000000000000 0.242187500000 0.039062500000
ar_pantabotte_mask.tga 0.121093750000 0.039062500000 0.160156250000 0.078125000000
bk_consommable.tga 0.160156250000 0.039062500000 0.199218750000 0.078125000000
BK_fyros.tga 0.199218750000 0.039062500000 0.238281250000 0.078125000000
BK_generic.tga 0.117187500000 0.078125000000 0.156250000000 0.117187500000
BK_goo.tga 0.156250000000 0.078125000000 0.195312500000 0.117187500000
bk_guild.tga 0.195312500000 0.078125000000 0.234375000000 0.117187500000
bk_horde.tga 0.000000000000 0.117187500000 0.039062500000 0.156250000000
bk_kami.tga 0.039062500000 0.117187500000 0.078125000000 0.156250000000
bk_karavan.tga 0.078125000000 0.117187500000 0.117187500000 0.156250000000
BK_matis.tga 0.117187500000 0.117187500000 0.156250000000 0.156250000000
bk_mission.tga 0.156250000000 0.117187500000 0.195312500000 0.156250000000
bk_mission2.tga 0.195312500000 0.117187500000 0.234375000000 0.156250000000
bk_outpost.tga 0.000000000000 0.156250000000 0.039062500000 0.195312500000
BK_primes.tga 0.039062500000 0.156250000000 0.078125000000 0.195312500000
bk_service.tga 0.078125000000 0.156250000000 0.117187500000 0.195312500000
bk_training.tga 0.117187500000 0.156250000000 0.156250000000 0.195312500000
BK_tryker.tga 0.156250000000 0.156250000000 0.195312500000 0.195312500000
BK_zorai.tga 0.195312500000 0.156250000000 0.234375000000 0.195312500000
charge.tga 0.000000000000 0.195312500000 0.039062500000 0.234375000000
clef.tga 0.039062500000 0.195312500000 0.078125000000 0.234375000000
conso_branche.tga 0.078125000000 0.195312500000 0.117187500000 0.234375000000
conso_branche_mask.tga 0.117187500000 0.195312500000 0.156250000000 0.234375000000
conso_fleur.tga 0.156250000000 0.195312500000 0.195312500000 0.234375000000
conso_fleur_mask.tga 0.195312500000 0.195312500000 0.234375000000 0.234375000000
conso_grappe.tga 0.242187500000 0.000000000000 0.281250000000 0.039062500000
conso_grappe_mask.tga 0.281250000000 0.000000000000 0.320312500000 0.039062500000
conso_nectar.tga 0.320312500000 0.000000000000 0.359375000000 0.039062500000
conso_nectar_mask.tga 0.359375000000 0.000000000000 0.398437500000 0.039062500000
construction.tga 0.398437500000 0.000000000000 0.437500000000 0.039062500000
cristal_ammo.tga 0.437500000000 0.000000000000 0.476562500000 0.039062500000
cristal_spell.tga 0.238281250000 0.039062500000 0.277343750000 0.078125000000
ge_mission_outpost_townhall.tga 0.277343750000 0.039062500000 0.316406250000 0.078125000000
ico_amande.tga 0.316406250000 0.039062500000 0.355468750000 0.078125000000
ico_cataliseur_xp.tga 0.355468750000 0.039062500000 0.394531250000 0.078125000000
ico_consommable_over.tga 0.394531250000 0.039062500000 0.433593750000 0.078125000000
ico_fleur_carac_1.tga 0.433593750000 0.039062500000 0.472656250000 0.078125000000
ico_fleur_carac_1_mask.tga 0.234375000000 0.078125000000 0.273437500000 0.117187500000
ico_fleur_carac_2.tga 0.273437500000 0.078125000000 0.312500000000 0.117187500000
ico_fleur_carac_2_mask.tga 0.312500000000 0.078125000000 0.351562500000 0.117187500000
ico_fleur_carac_3.tga 0.351562500000 0.078125000000 0.390625000000 0.117187500000
ico_fleur_carac_3_mask.tga 0.390625000000 0.078125000000 0.429687500000 0.117187500000
ico_foreuse.tga 0.429687500000 0.078125000000 0.468750000000 0.117187500000
ico_haircolor.tga 0.234375000000 0.117187500000 0.273437500000 0.156250000000
ico_haircut.tga 0.273437500000 0.117187500000 0.312500000000 0.156250000000
ico_mission_art_fyros.tga 0.312500000000 0.117187500000 0.351562500000 0.156250000000
ico_mission_art_matis.tga 0.351562500000 0.117187500000 0.390625000000 0.156250000000
ico_mission_art_tryker.tga 0.390625000000 0.117187500000 0.429687500000 0.156250000000
ico_mission_art_zorai.tga 0.429687500000 0.117187500000 0.468750000000 0.156250000000
ico_mission_barrel.tga 0.234375000000 0.156250000000 0.273437500000 0.195312500000
ico_mission_bottle.tga 0.273437500000 0.156250000000 0.312500000000 0.195312500000
ico_mission_casket.tga 0.312500000000 0.156250000000 0.351562500000 0.195312500000
ico_mission_medicine.tga 0.351562500000 0.156250000000 0.390625000000 0.195312500000
ico_mission_message.tga 0.390625000000 0.156250000000 0.429687500000 0.195312500000
ico_mission_package.tga 0.429687500000 0.156250000000 0.468750000000 0.195312500000
ico_mission_pot.tga 0.234375000000 0.195312500000 0.273437500000 0.234375000000
ico_mission_purse.tga 0.273437500000 0.195312500000 0.312500000000 0.234375000000
ico_noix.tga 0.312500000000 0.195312500000 0.351562500000 0.234375000000
ico_racine.tga 0.351562500000 0.195312500000 0.390625000000 0.234375000000
ico_spores.tga 0.390625000000 0.195312500000 0.429687500000 0.234375000000
ico_task_craft.tga 0.429687500000 0.195312500000 0.468750000000 0.234375000000
ico_task_done.tga 0.000000000000 0.234375000000 0.039062500000 0.273437500000
ico_task_failed.tga 0.039062500000 0.234375000000 0.078125000000 0.273437500000
ico_task_fight.tga 0.078125000000 0.234375000000 0.117187500000 0.273437500000
ico_task_forage.tga 0.117187500000 0.234375000000 0.156250000000 0.273437500000
ico_task_generic.tga 0.156250000000 0.234375000000 0.195312500000 0.273437500000
ico_task_generic_quart.tga 0.195312500000 0.234375000000 0.234375000000 0.273437500000
ico_task_guild.tga 0.234375000000 0.234375000000 0.273437500000 0.273437500000
ico_task_rite.tga 0.273437500000 0.234375000000 0.312500000000 0.273437500000
ico_task_travel.tga 0.312500000000 0.234375000000 0.351562500000 0.273437500000
ico_tatoo.tga 0.351562500000 0.234375000000 0.390625000000 0.273437500000
ico_tourbe.tga 0.390625000000 0.234375000000 0.429687500000 0.273437500000
improved_tool.tga 0.429687500000 0.234375000000 0.468750000000 0.273437500000
item_default.tga 0.000000000000 0.273437500000 0.039062500000 0.312500000000
item_plan_over.tga 0.039062500000 0.273437500000 0.078125000000 0.312500000000
lucky_flower.tga 0.078125000000 0.273437500000 0.117187500000 0.312500000000
mektoub_pack.tga 0.117187500000 0.273437500000 0.156250000000 0.312500000000
mektoub_steed.tga 0.156250000000 0.273437500000 0.195312500000 0.312500000000
mg_glove.tga 0.195312500000 0.273437500000 0.234375000000 0.312500000000
mission_icon_0.tga 0.234375000000 0.273437500000 0.273437500000 0.312500000000
mission_icon_1.tga 0.273437500000 0.273437500000 0.312500000000 0.312500000000
mission_icon_2.tga 0.312500000000 0.273437500000 0.351562500000 0.312500000000
mission_icon_3.tga 0.351562500000 0.273437500000 0.390625000000 0.312500000000
mp_amber.tga 0.390625000000 0.273437500000 0.429687500000 0.312500000000
mp_bark.tga 0.429687500000 0.273437500000 0.468750000000 0.312500000000
mp_batiment_brique.tga 0.000000000000 0.312500000000 0.039062500000 0.351562500000
mp_batiment_colonne.tga 0.039062500000 0.312500000000 0.078125000000 0.351562500000
mp_batiment_colonne_justice.tga 0.078125000000 0.312500000000 0.117187500000 0.351562500000
mp_batiment_comble.tga 0.117187500000 0.312500000000 0.156250000000 0.351562500000
mp_batiment_noyau_maduk.tga 0.156250000000 0.312500000000 0.195312500000 0.351562500000
mp_batiment_ornement.tga 0.195312500000 0.312500000000 0.234375000000 0.351562500000
mp_batiment_revetement.tga 0.234375000000 0.312500000000 0.273437500000 0.351562500000
mp_batiment_socle.tga 0.273437500000 0.312500000000 0.312500000000 0.351562500000
mp_batiment_statue.tga 0.312500000000 0.312500000000 0.351562500000 0.351562500000
mp_beak.tga 0.351562500000 0.312500000000 0.390625000000 0.351562500000
mp_blood.tga 0.390625000000 0.312500000000 0.429687500000 0.351562500000
mp_bone.tga 0.429687500000 0.312500000000 0.468750000000 0.351562500000
mp_bud.tga 0.000000000000 0.351562500000 0.039062500000 0.390625000000
mp_buterfly_blue.tga 0.039062500000 0.351562500000 0.078125000000 0.390625000000
mp_buterfly_cocoon.tga 0.078125000000 0.351562500000 0.117187500000 0.390625000000
mp_cereal.tga 0.117187500000 0.351562500000 0.156250000000 0.390625000000
mp_claw.tga 0.156250000000 0.351562500000 0.195312500000 0.390625000000
mp_dandelion.tga 0.195312500000 0.351562500000 0.234375000000 0.390625000000
mp_dust.tga 0.234375000000 0.351562500000 0.273437500000 0.390625000000
mp_egg.tga 0.273437500000 0.351562500000 0.312500000000 0.390625000000
mp_eyes.tga 0.312500000000 0.351562500000 0.351562500000 0.390625000000
mp_fang.tga 0.351562500000 0.351562500000 0.390625000000 0.390625000000
mp_fiber.tga 0.390625000000 0.351562500000 0.429687500000 0.390625000000
mp_filament.tga 0.429687500000 0.351562500000 0.468750000000 0.390625000000
mp_firefly_abdomen.tga 0.000000000000 0.390625000000 0.039062500000 0.429687500000
mp_fish_scale.tga 0.039062500000 0.390625000000 0.078125000000 0.429687500000
mp_flowers.tga 0.078125000000 0.390625000000 0.117187500000 0.429687500000
mp_fresh_loose_soil.tga 0.117187500000 0.390625000000 0.156250000000 0.429687500000
mp_fruit.tga 0.156250000000 0.390625000000 0.195312500000 0.429687500000
mp_generic.tga 0.195312500000 0.390625000000 0.234375000000 0.429687500000
mp_generic_colorize.tga 0.234375000000 0.390625000000 0.273437500000 0.429687500000
mp_gomme.tga 0.273437500000 0.390625000000 0.312500000000 0.429687500000
mp_goo_residue.tga 0.312500000000 0.390625000000 0.351562500000 0.429687500000
mp_hairs.tga 0.351562500000 0.390625000000 0.390625000000 0.429687500000
mp_hoof.tga 0.390625000000 0.390625000000 0.429687500000 0.429687500000
mp_horn.tga 0.429687500000 0.390625000000 0.468750000000 0.429687500000
mp_horney.tga 0.000000000000 0.429687500000 0.039062500000 0.468750000000
mp_insect_fossil.tga 0.039062500000 0.429687500000 0.078125000000 0.468750000000
mp_kitinshell.tga 0.078125000000 0.429687500000 0.117187500000 0.468750000000
mp_kitin_flesh.tga 0.117187500000 0.429687500000 0.156250000000 0.468750000000
mp_kitin_secretion.tga 0.156250000000 0.429687500000 0.195312500000 0.468750000000
mp_larva.tga 0.195312500000 0.429687500000 0.234375000000 0.468750000000
mp_leaf.tga 0.234375000000 0.429687500000 0.273437500000 0.468750000000
mp_leather.tga 0.273437500000 0.429687500000 0.312500000000 0.468750000000
mp_liane.tga 0.312500000000 0.429687500000 0.351562500000 0.468750000000
mp_lichen.tga 0.351562500000 0.429687500000 0.390625000000 0.468750000000
mp_ligament.tga 0.390625000000 0.429687500000 0.429687500000 0.468750000000
mp_mandible.tga 0.429687500000 0.429687500000 0.468750000000 0.468750000000
mp_meat.tga 0.476562500000 0.000000000000 0.515625000000 0.039062500000
mp_moss.tga 0.515625000000 0.000000000000 0.554687500000 0.039062500000
mp_mushroom.tga 0.554687500000 0.000000000000 0.593750000000 0.039062500000
mp_nail.tga 0.593750000000 0.000000000000 0.632812500000 0.039062500000
mp_oil.tga 0.632812500000 0.000000000000 0.671875000000 0.039062500000
mp_parasite.tga 0.671875000000 0.000000000000 0.710937500000 0.039062500000
mp_pearl.tga 0.710937500000 0.000000000000 0.750000000000 0.039062500000
mp_pelvis.tga 0.750000000000 0.000000000000 0.789062500000 0.039062500000
mp_pigment.tga 0.789062500000 0.000000000000 0.828125000000 0.039062500000
mp_pistil.tga 0.828125000000 0.000000000000 0.867187500000 0.039062500000
mp_plant_fossil.tga 0.867187500000 0.000000000000 0.906250000000 0.039062500000
mp_pollen.tga 0.906250000000 0.000000000000 0.945312500000 0.039062500000
mp_resin.tga 0.945312500000 0.000000000000 0.984375000000 0.039062500000
mp_ronce.tga 0.472656250000 0.039062500000 0.511718750000 0.078125000000
mp_rostrum.tga 0.511718750000 0.039062500000 0.550781250000 0.078125000000
mp_sap.tga 0.550781250000 0.039062500000 0.589843750000 0.078125000000
mp_sawdust.tga 0.589843750000 0.039062500000 0.628906250000 0.078125000000
mp_seed.tga 0.628906250000 0.039062500000 0.667968750000 0.078125000000
mp_shell.tga 0.667968750000 0.039062500000 0.707031250000 0.078125000000
mp_silk_worm.tga 0.707031250000 0.039062500000 0.746093750000 0.078125000000
mp_skin.tga 0.746093750000 0.039062500000 0.785156250000 0.078125000000
mp_skull.tga 0.785156250000 0.039062500000 0.824218750000 0.078125000000
mp_spiders_web.tga 0.824218750000 0.039062500000 0.863281250000 0.078125000000
mp_spine.tga 0.863281250000 0.039062500000 0.902343750000 0.078125000000
mp_stem.tga 0.902343750000 0.039062500000 0.941406250000 0.078125000000
mp_sting.tga 0.941406250000 0.039062500000 0.980468750000 0.078125000000
mp_straw.tga 0.468750000000 0.078125000000 0.507812500000 0.117187500000
mp_suc.tga 0.507812500000 0.078125000000 0.546875000000 0.117187500000
mp_tail.tga 0.546875000000 0.078125000000 0.585937500000 0.117187500000
mp_tooth.tga 0.585937500000 0.078125000000 0.625000000000 0.117187500000
mp_trunk.tga 0.625000000000 0.078125000000 0.664062500000 0.117187500000
mp_whiskers.tga 0.664062500000 0.078125000000 0.703125000000 0.117187500000
mp_wing.tga 0.703125000000 0.078125000000 0.742187500000 0.117187500000
mp_wood.tga 0.742187500000 0.078125000000 0.781250000000 0.117187500000
mp_wood_node.tga 0.781250000000 0.078125000000 0.820312500000 0.117187500000
MW_2h_axe.tga 0.820312500000 0.078125000000 0.859375000000 0.117187500000
MW_2h_lance.tga 0.859375000000 0.078125000000 0.898437500000 0.117187500000
MW_2h_mace.tga 0.898437500000 0.078125000000 0.937500000000 0.117187500000
MW_2h_sword.tga 0.937500000000 0.078125000000 0.976562500000 0.117187500000
MW_axe.tga 0.468750000000 0.117187500000 0.507812500000 0.156250000000
MW_dagger.tga 0.507812500000 0.117187500000 0.546875000000 0.156250000000
MW_lance.tga 0.546875000000 0.117187500000 0.585937500000 0.156250000000
MW_mace.tga 0.585937500000 0.117187500000 0.625000000000 0.156250000000
MW_staff.tga 0.625000000000 0.117187500000 0.664062500000 0.156250000000
MW_sword.tga 0.664062500000 0.117187500000 0.703125000000 0.156250000000
PA_anklet.tga 0.703125000000 0.117187500000 0.742187500000 0.156250000000
PA_bracelet.tga 0.742187500000 0.117187500000 0.781250000000 0.156250000000
PA_diadem.tga 0.781250000000 0.117187500000 0.820312500000 0.156250000000
PA_earring.tga 0.820312500000 0.117187500000 0.859375000000 0.156250000000
PA_pendant.tga 0.859375000000 0.117187500000 0.898437500000 0.156250000000
PA_ring.tga 0.898437500000 0.117187500000 0.937500000000 0.156250000000
protect_amber.tga 0.937500000000 0.117187500000 0.976562500000 0.156250000000
pw_4.tga 0.468750000000 0.156250000000 0.507812500000 0.195312500000
pw_5.tga 0.507812500000 0.156250000000 0.546875000000 0.195312500000
PW_heavy.tga 0.546875000000 0.156250000000 0.585937500000 0.195312500000
PW_light.tga 0.585937500000 0.156250000000 0.625000000000 0.195312500000
PW_medium.tga 0.625000000000 0.156250000000 0.664062500000 0.195312500000
quest_coeur.tga 0.664062500000 0.156250000000 0.703125000000 0.195312500000
quest_foie.tga 0.703125000000 0.156250000000 0.742187500000 0.195312500000
quest_jeton.tga 0.742187500000 0.156250000000 0.781250000000 0.195312500000
quest_langue.tga 0.781250000000 0.156250000000 0.820312500000 0.195312500000
quest_louche.tga 0.820312500000 0.156250000000 0.859375000000 0.195312500000
quest_oreille.tga 0.859375000000 0.156250000000 0.898437500000 0.195312500000
quest_patte.tga 0.898437500000 0.156250000000 0.937500000000 0.195312500000
quest_poils.tga 0.937500000000 0.156250000000 0.976562500000 0.195312500000
quest_queue.tga 0.468750000000 0.195312500000 0.507812500000 0.234375000000
quest_ticket.tga 0.507812500000 0.195312500000 0.546875000000 0.234375000000
AM_logo.tga 0.546875000000 0.195312500000 0.585937500000 0.234375000000
AR_armpad.tga 0.585937500000 0.195312500000 0.625000000000 0.234375000000
ar_armpad_mask.tga 0.625000000000 0.195312500000 0.664062500000 0.234375000000
requirement.tga 0.664062500000 0.195312500000 0.703125000000 0.234375000000
rm_f.tga 0.703125000000 0.195312500000 0.742187500000 0.234375000000
rm_f_upgrade.tga 0.742187500000 0.195312500000 0.781250000000 0.234375000000
rm_h.tga 0.781250000000 0.195312500000 0.820312500000 0.234375000000
rm_h_upgrade.tga 0.820312500000 0.195312500000 0.859375000000 0.234375000000
rm_m.tga 0.859375000000 0.195312500000 0.898437500000 0.234375000000
rm_m_upgrade.tga 0.898437500000 0.195312500000 0.937500000000 0.234375000000
rm_r.tga 0.937500000000 0.195312500000 0.976562500000 0.234375000000
rm_r_upgrade.tga 0.468750000000 0.234375000000 0.507812500000 0.273437500000
rpjobitem_200_a.tga 0.507812500000 0.234375000000 0.546875000000 0.273437500000
rpjobitem_200_b.tga 0.546875000000 0.234375000000 0.585937500000 0.273437500000
rpjobitem_200_c.tga 0.585937500000 0.234375000000 0.625000000000 0.273437500000
rpjobitem_201_a.tga 0.625000000000 0.234375000000 0.664062500000 0.273437500000
rpjobitem_201_b.tga 0.664062500000 0.234375000000 0.703125000000 0.273437500000
rpjobitem_201_c.tga 0.703125000000 0.234375000000 0.742187500000 0.273437500000
rpjobitem_202_a.tga 0.742187500000 0.234375000000 0.781250000000 0.273437500000
rpjobitem_202_b.tga 0.781250000000 0.234375000000 0.820312500000 0.273437500000
rpjobitem_202_c.tga 0.820312500000 0.234375000000 0.859375000000 0.273437500000
rpjobitem_203_a.tga 0.859375000000 0.234375000000 0.898437500000 0.273437500000
rpjobitem_203_b.tga 0.898437500000 0.234375000000 0.937500000000 0.273437500000
rpjobitem_203_c.tga 0.937500000000 0.234375000000 0.976562500000 0.273437500000
rpjobitem_204_a.tga 0.468750000000 0.273437500000 0.507812500000 0.312500000000
rpjobitem_204_b.tga 0.507812500000 0.273437500000 0.546875000000 0.312500000000
rpjobitem_204_c.tga 0.546875000000 0.273437500000 0.585937500000 0.312500000000
rpjobitem_205_a.tga 0.585937500000 0.273437500000 0.625000000000 0.312500000000
rpjobitem_205_b.tga 0.625000000000 0.273437500000 0.664062500000 0.312500000000
rpjobitem_205_c.tga 0.664062500000 0.273437500000 0.703125000000 0.312500000000
rpjobitem_206_a.tga 0.703125000000 0.273437500000 0.742187500000 0.312500000000
rpjobitem_206_b.tga 0.742187500000 0.273437500000 0.781250000000 0.312500000000
rpjobitem_206_c.tga 0.781250000000 0.273437500000 0.820312500000 0.312500000000
rpjobitem_207_a.tga 0.820312500000 0.273437500000 0.859375000000 0.312500000000
rpjobitem_207_b.tga 0.859375000000 0.273437500000 0.898437500000 0.312500000000
rpjobitem_207_c.tga 0.898437500000 0.273437500000 0.937500000000 0.312500000000
rpjobitem_certifications.tga 0.937500000000 0.273437500000 0.976562500000 0.312500000000
rpjob_200.tga 0.468750000000 0.312500000000 0.507812500000 0.351562500000
rpjob_201.tga 0.507812500000 0.312500000000 0.546875000000 0.351562500000
rpjob_202.tga 0.546875000000 0.312500000000 0.585937500000 0.351562500000
rpjob_203.tga 0.585937500000 0.312500000000 0.625000000000 0.351562500000
rpjob_204.tga 0.625000000000 0.312500000000 0.664062500000 0.351562500000
rpjob_205.tga 0.664062500000 0.312500000000 0.703125000000 0.351562500000
rpjob_206.tga 0.703125000000 0.312500000000 0.742187500000 0.351562500000
rpjob_207.tga 0.742187500000 0.312500000000 0.781250000000 0.351562500000
rpjob_advanced.tga 0.781250000000 0.312500000000 0.820312500000 0.351562500000
rpjob_elementary.tga 0.820312500000 0.312500000000 0.859375000000 0.351562500000
rpjob_roleplay.tga 0.859375000000 0.312500000000 0.898437500000 0.351562500000
rpjob_task.tga 0.898437500000 0.312500000000 0.937500000000 0.351562500000
rpjob_task_certificats.tga 0.937500000000 0.312500000000 0.976562500000 0.351562500000
rpjob_task_convert.tga 0.468750000000 0.351562500000 0.507812500000 0.390625000000
rpjob_task_elementary.tga 0.507812500000 0.351562500000 0.546875000000 0.390625000000
rpjob_task_generic.tga 0.546875000000 0.351562500000 0.585937500000 0.390625000000
rpjob_task_upgrade.tga 0.585937500000 0.351562500000 0.625000000000 0.390625000000
RW_autolaunch.tga 0.625000000000 0.351562500000 0.664062500000 0.390625000000
RW_bowgun.tga 0.664062500000 0.351562500000 0.703125000000 0.390625000000
RW_grenade.tga 0.703125000000 0.351562500000 0.742187500000 0.390625000000
RW_harpoongun.tga 0.742187500000 0.351562500000 0.781250000000 0.390625000000
RW_launcher.tga 0.781250000000 0.351562500000 0.820312500000 0.390625000000
RW_pistol.tga 0.820312500000 0.351562500000 0.859375000000 0.390625000000
RW_pistolarc.tga 0.859375000000 0.351562500000 0.898437500000 0.390625000000
RW_rifle.tga 0.898437500000 0.351562500000 0.937500000000 0.390625000000
SH_buckler.tga 0.937500000000 0.351562500000 0.976562500000 0.390625000000
SH_large_shield.tga 0.468750000000 0.390625000000 0.507812500000 0.429687500000
spe_beast.tga 0.507812500000 0.390625000000 0.546875000000 0.429687500000
spe_com.tga 0.546875000000 0.390625000000 0.585937500000 0.429687500000
spe_inventory.tga 0.585937500000 0.390625000000 0.625000000000 0.429687500000
spe_labs.tga 0.625000000000 0.390625000000 0.664062500000 0.429687500000
spe_memory.tga 0.664062500000 0.390625000000 0.703125000000 0.429687500000
spe_options.tga 0.703125000000 0.390625000000 0.742187500000 0.429687500000
spe_status.tga 0.742187500000 0.390625000000 0.781250000000 0.429687500000
stimulating_water.tga 0.781250000000 0.390625000000 0.820312500000 0.429687500000
tetekitin.tga 0.820312500000 0.390625000000 0.859375000000 0.429687500000
to_ammo.tga 0.859375000000 0.390625000000 0.898437500000 0.429687500000
to_armor.tga 0.898437500000 0.390625000000 0.937500000000 0.429687500000
to_cooking_pot.tga 0.937500000000 0.390625000000 0.976562500000 0.429687500000
to_fishing_rod.tga 0.468750000000 0.429687500000 0.507812500000 0.468750000000
to_forage.tga 0.507812500000 0.429687500000 0.546875000000 0.468750000000
to_hammer.tga 0.546875000000 0.429687500000 0.585937500000 0.468750000000
to_jewelry_hammer.tga 0.585937500000 0.429687500000 0.625000000000 0.468750000000
to_jewels.tga 0.625000000000 0.429687500000 0.664062500000 0.468750000000
to_leathercutter.tga 0.664062500000 0.429687500000 0.703125000000 0.468750000000
to_melee.tga 0.703125000000 0.429687500000 0.742187500000 0.468750000000
to_needle.tga 0.742187500000 0.429687500000 0.781250000000 0.468750000000
to_pestle.tga 0.781250000000 0.429687500000 0.820312500000 0.468750000000
to_range.tga 0.820312500000 0.429687500000 0.859375000000 0.468750000000
to_searake.tga 0.859375000000 0.429687500000 0.898437500000 0.468750000000
to_spade.tga 0.898437500000 0.429687500000 0.937500000000 0.468750000000
to_stick.tga 0.937500000000 0.429687500000 0.976562500000 0.468750000000
to_tunneling_knife.tga 0.000000000000 0.468750000000 0.039062500000 0.507812500000
to_whip.tga 0.039062500000 0.468750000000 0.078125000000 0.507812500000
to_wrench.tga 0.078125000000 0.468750000000 0.117187500000 0.507812500000
TP_caravane.tga 0.117187500000 0.468750000000 0.156250000000 0.507812500000
TP_kami.tga 0.156250000000 0.468750000000 0.195312500000 0.507812500000
W_AM_logo.tga 0.195312500000 0.468750000000 0.234375000000 0.507812500000
w_pa_anklet.tga 0.234375000000 0.468750000000 0.273437500000 0.507812500000
w_pa_bracelet.tga 0.273437500000 0.468750000000 0.312500000000 0.507812500000
w_pa_diadem.tga 0.312500000000 0.468750000000 0.351562500000 0.507812500000
w_pa_earring.tga 0.351562500000 0.468750000000 0.390625000000 0.507812500000
w_pa_pendant.tga 0.390625000000 0.468750000000 0.429687500000 0.507812500000
w_pa_ring.tga 0.429687500000 0.468750000000 0.468750000000 0.507812500000
faction_matis.tga 0.468750000000 0.468750000000 0.500000000000 0.500000000000
faction_tryker.tga 0.500000000000 0.468750000000 0.531250000000 0.500000000000
faction_tryton.tga 0.531250000000 0.468750000000 0.562500000000 0.500000000000
faction_zorai.tga 0.562500000000 0.468750000000 0.593750000000 0.500000000000
asc_exit.tga 0.593750000000 0.468750000000 0.625000000000 0.500000000000
asc_rolemastercraft.tga 0.625000000000 0.468750000000 0.656250000000 0.500000000000
asc_rolemasterfight.tga 0.656250000000 0.468750000000 0.687500000000 0.500000000000
asc_rolemasterharvest.tga 0.687500000000 0.468750000000 0.718750000000 0.500000000000
asc_rolemastermagic.tga 0.718750000000 0.468750000000 0.750000000000 0.500000000000
asc_unknown.tga 0.750000000000 0.468750000000 0.781250000000 0.500000000000
faction_fyros.tga 0.781250000000 0.468750000000 0.812500000000 0.500000000000
faction_kami.tga 0.812500000000 0.468750000000 0.843750000000 0.500000000000
faction_karavan.tga 0.843750000000 0.468750000000 0.875000000000 0.500000000000
mail.tga 0.875000000000 0.468750000000 0.906250000000 0.492187500000
ico_aim_homin_feet.tga 0.976562500000 0.078125000000 1.000000000000 0.101562500000
ico_aim_homin_feint.tga 0.976562500000 0.101562500000 1.000000000000 0.125000000000
ico_aim_homin_hands.tga 0.976562500000 0.125000000000 1.000000000000 0.148437500000
ico_aim_homin_head.tga 0.976562500000 0.148437500000 1.000000000000 0.171875000000
ico_aim_homin_legs.tga 0.976562500000 0.171875000000 1.000000000000 0.195312500000
mp3.tga 0.976562500000 0.195312500000 1.000000000000 0.218750000000
ico_aim_kitin_head.tga 0.976562500000 0.218750000000 1.000000000000 0.242187500000
mp_back_curative.tga 0.976562500000 0.242187500000 1.000000000000 0.265625000000
mp_back_offensive.tga 0.976562500000 0.265625000000 1.000000000000 0.289062500000
mp_back_selfonly.tga 0.976562500000 0.289062500000 1.000000000000 0.312500000000
bk_outpost_brick.tga 0.976562500000 0.312500000000 1.000000000000 0.335937500000
ico_ammo_bullet.tga 0.976562500000 0.335937500000 1.000000000000 0.359375000000
ico_ammo_jacket.tga 0.976562500000 0.359375000000 1.000000000000 0.382812500000
ico_angle.tga 0.976562500000 0.382812500000 1.000000000000 0.406250000000
ico_anti_magic_shield.tga 0.976562500000 0.406250000000 1.000000000000 0.429687500000
ico_armor.tga 0.976562500000 0.429687500000 1.000000000000 0.453125000000
ico_armor_clip.tga 0.976562500000 0.453125000000 1.000000000000 0.476562500000
ico_armor_heavy.tga 0.906250000000 0.468750000000 0.929687500000 0.492187500000
ico_armor_kitin.tga 0.929687500000 0.468750000000 0.953125000000 0.492187500000
ico_armor_light.tga 0.953125000000 0.468750000000 0.976562500000 0.492187500000
ico_armor_medium.tga 0.976562500000 0.476562500000 1.000000000000 0.500000000000
ico_armor_penalty.tga 0.875000000000 0.492187500000 0.898437500000 0.515625000000
ico_armor_shell.tga 0.898437500000 0.492187500000 0.921875000000 0.515625000000
ico_atys.tga 0.921875000000 0.492187500000 0.945312500000 0.515625000000
ico_atysian.tga 0.945312500000 0.492187500000 0.968750000000 0.515625000000
ico_balance_hp.tga 0.468750000000 0.500000000000 0.492187500000 0.523437500000
ico_barrel.tga 0.492187500000 0.500000000000 0.515625000000 0.523437500000
ico_bash.tga 0.515625000000 0.500000000000 0.539062500000 0.523437500000
ico_berserk.tga 0.539062500000 0.500000000000 0.562500000000 0.523437500000
ico_blade.tga 0.562500000000 0.500000000000 0.585937500000 0.523437500000
ico_bleeding.tga 0.585937500000 0.500000000000 0.609375000000 0.523437500000
ico_blind.tga 0.609375000000 0.500000000000 0.632812500000 0.523437500000
ico_blunt.tga 0.632812500000 0.500000000000 0.656250000000 0.523437500000
ico_bomb.tga 0.656250000000 0.500000000000 0.679687500000 0.523437500000
bk_power.tga 0.679687500000 0.500000000000 0.703125000000 0.523437500000
ico_celestial.tga 0.703125000000 0.500000000000 0.726562500000 0.523437500000
ico_circular_attack.tga 0.726562500000 0.500000000000 0.750000000000 0.523437500000
ico_clothes.tga 0.750000000000 0.500000000000 0.773437500000 0.523437500000
ico_cold.tga 0.773437500000 0.500000000000 0.796875000000 0.523437500000
ico_concentration.tga 0.796875000000 0.500000000000 0.820312500000 0.523437500000
2h_over.tga 0.820312500000 0.500000000000 0.843750000000 0.523437500000
ico_constitution.tga 0.843750000000 0.500000000000 0.867187500000 0.523437500000
ico_counterweight.tga 0.968750000000 0.500000000000 0.992187500000 0.523437500000
ico_craft_buff.tga 0.000000000000 0.507812500000 0.023437500000 0.531250000000
ico_create_sapload.tga 0.023437500000 0.507812500000 0.046875000000 0.531250000000
ico_curse.tga 0.046875000000 0.507812500000 0.070312500000 0.531250000000
ico_debuff.tga 0.070312500000 0.507812500000 0.093750000000 0.531250000000
ico_debuff_resist.tga 0.093750000000 0.507812500000 0.117187500000 0.531250000000
ico_debuff_skill.tga 0.117187500000 0.507812500000 0.140625000000 0.531250000000
ico_desert.tga 0.140625000000 0.507812500000 0.164062500000 0.531250000000
ico_dexterity.tga 0.164062500000 0.507812500000 0.187500000000 0.531250000000
ico_disarm.tga 0.187500000000 0.507812500000 0.210937500000 0.531250000000
ico_dodge.tga 0.210937500000 0.507812500000 0.234375000000 0.531250000000
ico_dot.tga 0.234375000000 0.507812500000 0.257812500000 0.531250000000
ico_durability.tga 0.257812500000 0.507812500000 0.281250000000 0.531250000000
ico_electric.tga 0.281250000000 0.507812500000 0.304687500000 0.531250000000
ico_explosif.tga 0.304687500000 0.507812500000 0.328125000000 0.531250000000
ico_extracting.tga 0.328125000000 0.507812500000 0.351562500000 0.531250000000
ico_fear.tga 0.351562500000 0.507812500000 0.375000000000 0.531250000000
ico_feint.tga 0.375000000000 0.507812500000 0.398437500000 0.531250000000
ico_fire.tga 0.398437500000 0.507812500000 0.421875000000 0.531250000000
ico_firing_pin.tga 0.421875000000 0.507812500000 0.445312500000 0.531250000000
1h_over.tga 0.445312500000 0.507812500000 0.468750000000 0.531250000000
BK_fyros_brick.tga 0.867187500000 0.515625000000 0.890625000000 0.539062500000
mp_over_link.tga 0.890625000000 0.515625000000 0.914062500000 0.539062500000
BK_magie_noire_brick.tga 0.914062500000 0.515625000000 0.937500000000 0.539062500000
BK_tryker_brick.tga 0.937500000000 0.515625000000 0.960937500000 0.539062500000
cp_back.tga 0.468750000000 0.523437500000 0.492187500000 0.546875000000
cp_over_break.tga 0.492187500000 0.523437500000 0.515625000000 0.546875000000
ico_focus.tga 0.515625000000 0.523437500000 0.539062500000 0.546875000000
ico_forage_buff.tga 0.539062500000 0.523437500000 0.562500000000 0.546875000000
ico_forbid_item.tga 0.562500000000 0.523437500000 0.585937500000 0.546875000000
ico_forest.tga 0.585937500000 0.523437500000 0.609375000000 0.546875000000
cp_over_less.tga 0.609375000000 0.523437500000 0.632812500000 0.546875000000
ico_gardening.tga 0.632812500000 0.523437500000 0.656250000000 0.546875000000
ico_gentle.tga 0.656250000000 0.523437500000 0.679687500000 0.546875000000
ico_goo.tga 0.679687500000 0.523437500000 0.703125000000 0.546875000000
ico_gripp.tga 0.703125000000 0.523437500000 0.726562500000 0.546875000000
cp_over_more.tga 0.726562500000 0.523437500000 0.750000000000 0.546875000000
cp_over_opening.tga 0.750000000000 0.523437500000 0.773437500000 0.546875000000
ico_hammer.tga 0.773437500000 0.523437500000 0.796875000000 0.546875000000
ico_harmful.tga 0.796875000000 0.523437500000 0.820312500000 0.546875000000
ico_hatred.tga 0.820312500000 0.523437500000 0.843750000000 0.546875000000
ico_heal.tga 0.843750000000 0.523437500000 0.867187500000 0.546875000000
ico_hit_rate.tga 0.960937500000 0.523437500000 0.984375000000 0.546875000000
ico_incapacity.tga 0.000000000000 0.531250000000 0.023437500000 0.554687500000
ico_intelligence.tga 0.023437500000 0.531250000000 0.046875000000 0.554687500000
ico_interrupt.tga 0.046875000000 0.531250000000 0.070312500000 0.554687500000
ico_invulnerability.tga 0.070312500000 0.531250000000 0.093750000000 0.554687500000
ico_jewel_stone.tga 0.093750000000 0.531250000000 0.117187500000 0.554687500000
ico_jewel_stone_support.tga 0.117187500000 0.531250000000 0.140625000000 0.554687500000
ico_jungle.tga 0.140625000000 0.531250000000 0.164062500000 0.554687500000
ico_lacustre.tga 0.164062500000 0.531250000000 0.187500000000 0.554687500000
ico_landmark_bonus.tga 0.187500000000 0.531250000000 0.210937500000 0.554687500000
ico_level.tga 0.210937500000 0.531250000000 0.234375000000 0.554687500000
ico_lining.tga 0.234375000000 0.531250000000 0.257812500000 0.554687500000
ico_location.tga 0.257812500000 0.531250000000 0.281250000000 0.554687500000
ico_madness.tga 0.281250000000 0.531250000000 0.304687500000 0.554687500000
ico_magic.tga 0.304687500000 0.531250000000 0.328125000000 0.554687500000
ico_magic_action_buff.tga 0.328125000000 0.531250000000 0.351562500000 0.554687500000
ico_magic_focus.tga 0.351562500000 0.531250000000 0.375000000000 0.554687500000
ico_magic_target_buff.tga 0.375000000000 0.531250000000 0.398437500000 0.554687500000
ico_melee_action_buff.tga 0.398437500000 0.531250000000 0.421875000000 0.554687500000
ico_melee_target_buff.tga 0.421875000000 0.531250000000 0.445312500000 0.554687500000
ico_mental.tga 0.445312500000 0.531250000000 0.468750000000 0.554687500000
no_action.tga 0.867187500000 0.539062500000 0.890625000000 0.562500000000
op_back.tga 0.890625000000 0.539062500000 0.914062500000 0.562500000000
op_over_break.tga 0.914062500000 0.539062500000 0.937500000000 0.562500000000
op_over_less.tga 0.937500000000 0.539062500000 0.960937500000 0.562500000000
op_over_more.tga 0.468750000000 0.546875000000 0.492187500000 0.570312500000
ico_metabolism.tga 0.492187500000 0.546875000000 0.515625000000 0.570312500000
pa_back.tga 0.515625000000 0.546875000000 0.539062500000 0.570312500000
ico_mezz.tga 0.539062500000 0.546875000000 0.562500000000 0.570312500000
ico_misfortune.tga 0.562500000000 0.546875000000 0.585937500000 0.570312500000
cp_over_opening_2.tga 0.585937500000 0.546875000000 0.609375000000 0.570312500000
pa_over_break.tga 0.609375000000 0.546875000000 0.632812500000 0.570312500000
pa_over_less.tga 0.632812500000 0.546875000000 0.656250000000 0.570312500000
pa_over_more.tga 0.656250000000 0.546875000000 0.679687500000 0.570312500000
bg_downloader.tga 0.679687500000 0.546875000000 0.703125000000 0.570312500000
BK_zorai_brick.tga 0.703125000000 0.546875000000 0.726562500000 0.570312500000
ef_back.tga 0.726562500000 0.546875000000 0.750000000000 0.570312500000
ef_over_break.tga 0.750000000000 0.546875000000 0.773437500000 0.570312500000
ef_over_less.tga 0.773437500000 0.546875000000 0.796875000000 0.570312500000
ef_over_more.tga 0.796875000000 0.546875000000 0.820312500000 0.570312500000
brick_default.tga 0.820312500000 0.546875000000 0.843750000000 0.570312500000
building_state_24x24.tga 0.843750000000 0.546875000000 0.867187500000 0.570312500000
cb_main_nue.tga 0.960937500000 0.546875000000 0.984375000000 0.570312500000
BK_matis_brick.tga 0.000000000000 0.554687500000 0.023437500000 0.578125000000
ch_back.tga 0.023437500000 0.554687500000 0.046875000000 0.578125000000
ico_move.tga 0.046875000000 0.554687500000 0.070312500000 0.578125000000
ico_multiple_spots.tga 0.070312500000 0.554687500000 0.093750000000 0.578125000000
ico_multi_fight.tga 0.093750000000 0.554687500000 0.117187500000 0.578125000000
BK_generic_brick.tga 0.117187500000 0.554687500000 0.140625000000 0.578125000000
ico_opening_hit.tga 0.140625000000 0.554687500000 0.164062500000 0.578125000000
ico_over_autumn.tga 0.164062500000 0.554687500000 0.187500000000 0.578125000000
ico_over_degenerated.tga 0.187500000000 0.554687500000 0.210937500000 0.578125000000
ico_over_fauna.tga 0.210937500000 0.554687500000 0.234375000000 0.578125000000
ico_over_flora.tga 0.234375000000 0.554687500000 0.257812500000 0.578125000000
ico_over_hit_arms.tga 0.257812500000 0.554687500000 0.281250000000 0.578125000000
ico_over_hit_chest.tga 0.281250000000 0.554687500000 0.304687500000 0.578125000000
ico_over_hit_feet.tga 0.304687500000 0.554687500000 0.328125000000 0.578125000000
ico_over_hit_feet_hands.tga 0.328125000000 0.554687500000 0.351562500000 0.578125000000
ico_over_hit_feet_head.tga 0.351562500000 0.554687500000 0.375000000000 0.578125000000
ico_over_hit_feet_x2.tga 0.375000000000 0.554687500000 0.398437500000 0.578125000000
ico_over_hit_feint_x3.tga 0.398437500000 0.554687500000 0.421875000000 0.578125000000
ico_over_hit_hands.tga 0.421875000000 0.554687500000 0.445312500000 0.578125000000
ico_over_hit_hands_chest.tga 0.445312500000 0.554687500000 0.468750000000 0.578125000000
ico_over_hit_hands_head.tga 0.867187500000 0.562500000000 0.890625000000 0.585937500000
ico_over_hit_head.tga 0.890625000000 0.562500000000 0.914062500000 0.585937500000
ico_over_hit_head_x3.tga 0.914062500000 0.562500000000 0.937500000000 0.585937500000
ico_over_hit_legs.tga 0.937500000000 0.562500000000 0.960937500000 0.585937500000
ico_over_homin.tga 0.468750000000 0.570312500000 0.492187500000 0.593750000000
ico_over_kitin.tga 0.492187500000 0.570312500000 0.515625000000 0.593750000000
ico_over_magic.tga 0.515625000000 0.570312500000 0.539062500000 0.593750000000
ico_over_melee.tga 0.539062500000 0.570312500000 0.562500000000 0.593750000000
ico_over_racial.tga 0.562500000000 0.570312500000 0.585937500000 0.593750000000
ico_over_range.tga 0.585937500000 0.570312500000 0.609375000000 0.593750000000
ico_over_special.tga 0.609375000000 0.570312500000 0.632812500000 0.593750000000
ico_over_spring.tga 0.632812500000 0.570312500000 0.656250000000 0.593750000000
ico_over_summer.tga 0.656250000000 0.570312500000 0.679687500000 0.593750000000
ico_over_winter.tga 0.679687500000 0.570312500000 0.703125000000 0.593750000000
ico_parry.tga 0.703125000000 0.570312500000 0.726562500000 0.593750000000
ico_piercing.tga 0.726562500000 0.570312500000 0.750000000000 0.593750000000
ico_pointe.tga 0.750000000000 0.570312500000 0.773437500000 0.593750000000
ico_poison.tga 0.773437500000 0.570312500000 0.796875000000 0.593750000000
ico_power.tga 0.796875000000 0.570312500000 0.820312500000 0.593750000000
ico_preservation.tga 0.820312500000 0.570312500000 0.843750000000 0.593750000000
ico_primal.tga 0.843750000000 0.570312500000 0.867187500000 0.593750000000
ico_prime_roots.tga 0.960937500000 0.570312500000 0.984375000000 0.593750000000
ico_private.tga 0.000000000000 0.578125000000 0.023437500000 0.601562500000
ico_prospecting.tga 0.023437500000 0.578125000000 0.046875000000 0.601562500000
ico_quality.tga 0.046875000000 0.578125000000 0.070312500000 0.601562500000
bk_aura.tga 0.070312500000 0.578125000000 0.093750000000 0.601562500000
ico_range.tga 0.093750000000 0.578125000000 0.117187500000 0.601562500000
ico_range_action_buff.tga 0.117187500000 0.578125000000 0.140625000000 0.601562500000
ico_range_target_buff.tga 0.140625000000 0.578125000000 0.164062500000 0.601562500000
ico_ricochet.tga 0.164062500000 0.578125000000 0.187500000000 0.601562500000
ico_root.tga 0.187500000000 0.578125000000 0.210937500000 0.601562500000
ico_rot.tga 0.210937500000 0.578125000000 0.234375000000 0.601562500000
ico_safe.tga 0.234375000000 0.578125000000 0.257812500000 0.601562500000
ico_sap.tga 0.257812500000 0.578125000000 0.281250000000 0.601562500000
ico_self_damage.tga 0.281250000000 0.578125000000 0.304687500000 0.601562500000
ico_shaft.tga 0.304687500000 0.578125000000 0.328125000000 0.601562500000
ico_shielding.tga 0.328125000000 0.578125000000 0.351562500000 0.601562500000
ico_shield_buff.tga 0.351562500000 0.578125000000 0.375000000000 0.601562500000
ico_shield_up.tga 0.375000000000 0.578125000000 0.398437500000 0.601562500000
ico_shockwave.tga 0.398437500000 0.578125000000 0.421875000000 0.601562500000
ico_sickness.tga 0.421875000000 0.578125000000 0.445312500000 0.601562500000
ico_slashing.tga 0.445312500000 0.578125000000 0.468750000000 0.601562500000
ico_slow.tga 0.867187500000 0.585937500000 0.890625000000 0.609375000000
ico_soft_spot.tga 0.890625000000 0.585937500000 0.914062500000 0.609375000000
ico_source_time.tga 0.914062500000 0.585937500000 0.937500000000 0.609375000000
ico_speed.tga 0.937500000000 0.585937500000 0.960937500000 0.609375000000
ico_speeding_up.tga 0.468750000000 0.593750000000 0.492187500000 0.617187500000
ico_spell_break.tga 0.492187500000 0.593750000000 0.515625000000 0.617187500000
fo_back.tga 0.515625000000 0.593750000000 0.539062500000 0.617187500000
ico_spray.tga 0.539062500000 0.593750000000 0.562500000000 0.617187500000
ico_spying.tga 0.562500000000 0.593750000000 0.585937500000 0.617187500000
ico_stamina.tga 0.585937500000 0.593750000000 0.609375000000 0.617187500000
ico_strength.tga 0.609375000000 0.593750000000 0.632812500000 0.617187500000
ico_stuffing.tga 0.632812500000 0.593750000000 0.656250000000 0.617187500000
ico_stunn.tga 0.656250000000 0.593750000000 0.679687500000 0.617187500000
fo_over.tga 0.679687500000 0.593750000000 0.703125000000 0.617187500000
fp_ammo.tga 0.703125000000 0.593750000000 0.726562500000 0.617187500000
fp_armor.tga 0.726562500000 0.593750000000 0.750000000000 0.617187500000
fp_building.tga 0.750000000000 0.593750000000 0.773437500000 0.617187500000
fp_jewel.tga 0.773437500000 0.593750000000 0.796875000000 0.617187500000
fp_melee.tga 0.796875000000 0.593750000000 0.820312500000 0.617187500000
tb_action_attack.tga 0.820312500000 0.593750000000 0.843750000000 0.617187500000
tb_action_config.tga 0.843750000000 0.593750000000 0.867187500000 0.617187500000
tb_action_disband.tga 0.960937500000 0.593750000000 0.984375000000 0.617187500000
tb_action_disengage.tga 0.000000000000 0.601562500000 0.023437500000 0.625000000000
tb_action_extract.tga 0.023437500000 0.601562500000 0.046875000000 0.625000000000
tb_action_invite.tga 0.046875000000 0.601562500000 0.070312500000 0.625000000000
tb_action_kick.tga 0.070312500000 0.601562500000 0.093750000000 0.625000000000
tb_action_move.tga 0.093750000000 0.601562500000 0.117187500000 0.625000000000
tb_action_run.tga 0.117187500000 0.601562500000 0.140625000000 0.625000000000
tb_action_sit.tga 0.140625000000 0.601562500000 0.164062500000 0.625000000000
tb_action_stand.tga 0.164062500000 0.601562500000 0.187500000000 0.625000000000
tb_action_stop.tga 0.187500000000 0.601562500000 0.210937500000 0.625000000000
tb_action_talk.tga 0.210937500000 0.601562500000 0.234375000000 0.625000000000
tb_action_walk.tga 0.234375000000 0.601562500000 0.257812500000 0.625000000000
tb_animals.tga 0.257812500000 0.601562500000 0.281250000000 0.625000000000
tb_config.tga 0.281250000000 0.601562500000 0.304687500000 0.625000000000
tb_connection.tga 0.304687500000 0.601562500000 0.328125000000 0.625000000000
tb_contacts.tga 0.328125000000 0.601562500000 0.351562500000 0.625000000000
tb_desk_1.tga 0.351562500000 0.601562500000 0.375000000000 0.625000000000
tb_desk_2.tga 0.375000000000 0.601562500000 0.398437500000 0.625000000000
tb_desk_3.tga 0.398437500000 0.601562500000 0.421875000000 0.625000000000
tb_desk_4.tga 0.421875000000 0.601562500000 0.445312500000 0.625000000000
tb_faction.tga 0.445312500000 0.601562500000 0.468750000000 0.625000000000
tb_forum.tga 0.867187500000 0.609375000000 0.890625000000 0.632812500000
tb_guild.tga 0.890625000000 0.609375000000 0.914062500000 0.632812500000
tb_keys.tga 0.914062500000 0.609375000000 0.937500000000 0.632812500000
tb_macros.tga 0.937500000000 0.609375000000 0.960937500000 0.632812500000
tb_mail.tga 0.468750000000 0.617187500000 0.492187500000 0.640625000000
tb_mode_dodge.tga 0.492187500000 0.617187500000 0.515625000000 0.640625000000
tb_mode_parry.tga 0.515625000000 0.617187500000 0.539062500000 0.640625000000
tb_over.tga 0.539062500000 0.617187500000 0.562500000000 0.640625000000
tb_support.tga 0.562500000000 0.617187500000 0.585937500000 0.640625000000
tb_team.tga 0.585937500000 0.617187500000 0.609375000000 0.640625000000
tb_windows.tga 0.609375000000 0.617187500000 0.632812500000 0.640625000000
fp_over.tga 0.632812500000 0.617187500000 0.656250000000 0.640625000000
fp_range.tga 0.656250000000 0.617187500000 0.679687500000 0.640625000000
fp_shield.tga 0.679687500000 0.617187500000 0.703125000000 0.640625000000
fp_tools.tga 0.703125000000 0.617187500000 0.726562500000 0.640625000000
bk_conso.tga 0.726562500000 0.617187500000 0.750000000000 0.640625000000
ico_taunt.tga 0.750000000000 0.617187500000 0.773437500000 0.640625000000
ico_time.tga 0.773437500000 0.617187500000 0.796875000000 0.640625000000
ico_time_bonus.tga 0.796875000000 0.617187500000 0.820312500000 0.640625000000
ico_absorb_damage.tga 0.820312500000 0.617187500000 0.843750000000 0.640625000000
ico_trigger.tga 0.843750000000 0.617187500000 0.867187500000 0.640625000000
ico_umbrella.tga 0.960937500000 0.617187500000 0.984375000000 0.640625000000
ico_use_enchantement.tga 0.000000000000 0.625000000000 0.023437500000 0.648437500000
ico_vampire.tga 0.023437500000 0.625000000000 0.046875000000 0.648437500000
ico_visibility.tga 0.046875000000 0.625000000000 0.070312500000 0.648437500000
ico_war_cry.tga 0.070312500000 0.625000000000 0.093750000000 0.648437500000
ico_weight.tga 0.093750000000 0.625000000000 0.117187500000 0.648437500000
ico_wellbalanced.tga 0.117187500000 0.625000000000 0.140625000000 0.648437500000
ico_will.tga 0.140625000000 0.625000000000 0.164062500000 0.648437500000
ico_windding.tga 0.164062500000 0.625000000000 0.187500000000 0.648437500000
ico_wisdom.tga 0.187500000000 0.625000000000 0.210937500000 0.648437500000
ico_accurate.tga 0.210937500000 0.625000000000 0.234375000000 0.648437500000
ico_acid.tga 0.234375000000 0.625000000000 0.257812500000 0.648437500000
us_back_0.tga 0.257812500000 0.625000000000 0.281250000000 0.648437500000
us_back_1.tga 0.281250000000 0.625000000000 0.304687500000 0.648437500000
us_back_2.tga 0.304687500000 0.625000000000 0.328125000000 0.648437500000
us_back_3.tga 0.328125000000 0.625000000000 0.351562500000 0.648437500000
us_back_4.tga 0.351562500000 0.625000000000 0.375000000000 0.648437500000
us_back_5.tga 0.375000000000 0.625000000000 0.398437500000 0.648437500000
us_back_6.tga 0.398437500000 0.625000000000 0.421875000000 0.648437500000
us_back_7.tga 0.421875000000 0.625000000000 0.445312500000 0.648437500000
us_back_8.tga 0.445312500000 0.625000000000 0.468750000000 0.648437500000
us_back_9.tga 0.867187500000 0.632812500000 0.890625000000 0.656250000000
us_ico_0.tga 0.890625000000 0.632812500000 0.914062500000 0.656250000000
us_ico_1.tga 0.914062500000 0.632812500000 0.937500000000 0.656250000000
us_ico_2.tga 0.937500000000 0.632812500000 0.960937500000 0.656250000000
us_ico_3.tga 0.468750000000 0.640625000000 0.492187500000 0.664062500000
us_ico_4.tga 0.492187500000 0.640625000000 0.515625000000 0.664062500000
us_ico_5.tga 0.515625000000 0.640625000000 0.539062500000 0.664062500000
us_ico_6.tga 0.539062500000 0.640625000000 0.562500000000 0.664062500000
us_ico_7.tga 0.562500000000 0.640625000000 0.585937500000 0.664062500000
us_ico_8.tga 0.585937500000 0.640625000000 0.609375000000 0.664062500000
us_ico_9.tga 0.609375000000 0.640625000000 0.632812500000 0.664062500000
us_over_0.tga 0.632812500000 0.640625000000 0.656250000000 0.664062500000
us_over_1.tga 0.656250000000 0.640625000000 0.679687500000 0.664062500000
us_over_2.tga 0.679687500000 0.640625000000 0.703125000000 0.664062500000
us_over_3.tga 0.703125000000 0.640625000000 0.726562500000 0.664062500000
us_over_4.tga 0.726562500000 0.640625000000 0.750000000000 0.664062500000
ico_aim.tga 0.750000000000 0.640625000000 0.773437500000 0.664062500000
ico_aim_bird_wings.tga 0.773437500000 0.640625000000 0.796875000000 0.664062500000
ico_aim_flying_kitin_abdomen.tga 0.796875000000 0.640625000000 0.820312500000 0.664062500000
ico_aim_homin_arms.tga 0.820312500000 0.640625000000 0.843750000000 0.664062500000
ico_aim_homin_chest.tga 0.843750000000 0.640625000000 0.867187500000 0.664062500000
mf_back.tga 0.960937500000 0.640625000000 0.984375000000 0.664062500000
mf_over.tga 0.000000000000 0.648437500000 0.023437500000 0.671875000000
W_slot_shortcut_id0.tga 0.023437500000 0.648437500000 0.046875000000 0.671875000000
W_slot_shortcut_id1.tga 0.046875000000 0.648437500000 0.070312500000 0.671875000000
W_slot_shortcut_id2.tga 0.070312500000 0.648437500000 0.093750000000 0.671875000000
W_slot_shortcut_id3.tga 0.093750000000 0.648437500000 0.117187500000 0.671875000000
W_slot_shortcut_id4.tga 0.117187500000 0.648437500000 0.140625000000 0.671875000000
W_slot_shortcut_id5.tga 0.140625000000 0.648437500000 0.164062500000 0.671875000000
W_slot_shortcut_id6.tga 0.164062500000 0.648437500000 0.187500000000 0.671875000000
W_slot_shortcut_id7.tga 0.187500000000 0.648437500000 0.210937500000 0.671875000000
W_slot_shortcut_id8.tga 0.210937500000 0.648437500000 0.234375000000 0.671875000000
W_slot_shortcut_id9.tga 0.234375000000 0.648437500000 0.257812500000 0.671875000000
w_slot_shortcut_shift_id0.tga 0.257812500000 0.648437500000 0.281250000000 0.671875000000
w_slot_shortcut_shift_id1.tga 0.281250000000 0.648437500000 0.304687500000 0.671875000000
w_slot_shortcut_shift_id2.tga 0.304687500000 0.648437500000 0.328125000000 0.671875000000
w_slot_shortcut_shift_id3.tga 0.328125000000 0.648437500000 0.351562500000 0.671875000000
w_slot_shortcut_shift_id4.tga 0.351562500000 0.648437500000 0.375000000000 0.671875000000
w_slot_shortcut_shift_id5.tga 0.375000000000 0.648437500000 0.398437500000 0.671875000000
w_slot_shortcut_shift_id6.tga 0.398437500000 0.648437500000 0.421875000000 0.671875000000
w_slot_shortcut_shift_id7.tga 0.421875000000 0.648437500000 0.445312500000 0.671875000000
w_slot_shortcut_shift_id8.tga 0.445312500000 0.648437500000 0.468750000000 0.671875000000
w_slot_shortcut_shift_id9.tga 0.867187500000 0.656250000000 0.890625000000 0.679687500000
ico_source_knowledge.tga 0.890625000000 0.656250000000 0.912109375000 0.679687500000
small_task_travel.tga 0.984375000000 0.000000000000 1.000000000000 0.015625000000
small_task_craft.tga 0.984375000000 0.015625000000 1.000000000000 0.031250000000
small_task_done.tga 0.984375000000 0.031250000000 1.000000000000 0.046875000000
small_task_failed.tga 0.980468750000 0.046875000000 0.996093750000 0.062500000000
small_task_fight.tga 0.980468750000 0.062500000000 0.996093750000 0.078125000000
small_task_forage.tga 0.984375000000 0.523437500000 1.000000000000 0.539062500000
small_task_generic.tga 0.984375000000 0.539062500000 1.000000000000 0.554687500000
small_task_guild.tga 0.984375000000 0.554687500000 1.000000000000 0.570312500000
small_task_rite.tga 0.984375000000 0.570312500000 1.000000000000 0.585937500000
W_leader.tga 0.984375000000 0.585937500000 0.997070312500 0.597656250000
tb_mode.tga 0.984375000000 0.597656250000 0.996093750000 0.609375000000
w_major.tga 0.984375000000 0.609375000000 0.996093750000 0.621093750000
ge_acc_baniere_em.ps 0.000000000000 0.000000000000 0.000000000000 0.000000000000
ge_acc_baniere_em - Copie.ps 0.000000000000 0.000000000000 0.000000000000 0.000000000000

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

View file

@ -1313,6 +1313,8 @@ end
-------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------
function game:setCurrentMission(index) function game:setCurrentMission(index)
mw = getMissionWindow()
mw.active = game.InGameDbInitialized
if index < self:getGroupMissionFirstIndex() then if index < self:getGroupMissionFirstIndex() then
runAH(nil, "proc", "mission_proc_title|" .. tostring(index)) runAH(nil, "proc", "mission_proc_title|" .. tostring(index))
else else
@ -1435,24 +1437,27 @@ end
-------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------
-- This is called when a new step is added to the current mission. If so, make sure that the step -- This is called when a new step is added to the current mission. If so, make sure that the step
-- is visible in the listbox -- is visible in the listbox
function game:onNewMissionStepAdded(stepIndex) function game:onNewMissionStepAdded(stepIndex)
local missionWnd = getMissionWindow() local missionWnd = getMissionWindow()
local missionIndex = getDbProp("UI:SAVE:MISSION_SELECTED") local missionIndex = getDbProp("UI:SAVE:MISSION_SELECTED")
local dbPath local dbPath
-- debugInfo("New Step")
if missionIndex < 15 then if missionIndex < 15 then
dbPath = "SERVER:MISSIONS:" .. tostring(missionIndex) .. ":GOALS:" .. tostring(stepIndex) .. ":TEXT" dbPath = "SERVER:MISSIONS:" .. tostring(missionIndex) .. ":GOALS:" .. tostring(stepIndex) .. ":TEXT"
else else
dbPath = "SERVER:GROUP:MISSIONS:" .. tostring(missionIndex - 15) .. ":GOALS:" .. tostring(stepIndex) .. ":TEXT" dbPath = "SERVER:GROUP:MISSIONS:" .. tostring(missionIndex - 15) .. ":GOALS:" .. tostring(stepIndex) .. ":TEXT"
end end
local stringID = getDbProp(dbPath) local stringID = getDbProp(dbPath)
if stringID ~= 0 then if stringID ~= 0 then
-- debugInfo(tostring(stringID))
table.insert(remainingMissionTextIDs, stringID) table.insert(remainingMissionTextIDs, stringID)
setOnDraw(missionWnd, "game:ensureLastMissionStepVisibility0()") setOnDraw(missionWnd, "game:ensureLastMissionStepVisibility0()")
else else
end end
end end
function game:ensureLastMissionStepVisibility0() function game:ensureLastMissionStepVisibility0()
local missing = false local missing = false
for k, v in pairs(remainingMissionTextIDs) do for k, v in pairs(remainingMissionTextIDs) do
if not isDynStringAvailable(v) then if not isDynStringAvailable(v) then
@ -1492,7 +1497,7 @@ function game:ensureLastMissionStepVisibility1()
topStep = currStep topStep = currStep
end end
end end
--debugInfo("Found step : " .. topStep.hardtext) -- debugInfo("Found step : " .. topStep.hardtext)
if topStep == nil then if topStep == nil then
return return
end end
@ -1517,6 +1522,95 @@ function game:onNewMissionAdded(missionIndex)
debugInfo("Mission " .. missionIndex .. " has been added") debugInfo("Mission " .. missionIndex .. " has been added")
end end
--------------------------------------------------------------------------------------------------------------
-- RPJOBS
function game:addRpJob(jobtype, id, value, rpjobs)
local base_path = "ui:interface:info_player_skills:content:rpjobs:rpjob_"..jobtype.."_"..id..":rpjob_"..jobtype.."_infos_"..id
local group = getUI("ui:interface:info_player_skills:content:rpjobs:rpjob_"..jobtype.."_"..id)
if (value == nil) then
group.active = false
else
local name = "rpjob_" .. string.format("%03d", value)
local sitem = name..".sitem"
if (rpjobs[sitem] == nil) then
group.active = false
else
group.active = true
local echelon_value = rpjobs[sitem][1]
local quantity = rpjobs[sitem][2]
local maxlevel = (echelon_value*6)-30
if (quantity > maxlevel) then
quantity = maxlevel
end
local base = getUI(base_path..":t")
base.hardtext = i18n.get(name):toUtf8()
local ui = getUI(base_path..":icon")
ui.texture = name..".tga"
local bar = getUI(base_path..":bar3d:level")
bar.color = tostring(math.floor((105*quantity)/maxlevel)).." "..tostring(100+math.floor((155*quantity)/maxlevel)).." "..tostring(math.floor((105*quantity)/maxlevel)).." 255"
bar.w = tostring((368*quantity)/maxlevel)
local t = getUI(base_path..":bar3d:t")
t.hardtext = tostring(quantity).." / "..tostring(maxlevel)
t.color = tostring(255*math.floor(3*(maxlevel-quantity)/maxlevel)).." "..tostring(255*math.floor(3*(maxlevel-quantity)/maxlevel)).." "..tostring(255*math.floor(3*(maxlevel-quantity)/maxlevel)).." 255"
local echelon = getUI(base_path..":echelon_value")
echelon.hardtext = tostring(echelon_value/10)
end
end
end
function game:getRPJobs()
rpjobs_advanced = {}
rpjobs_elementary = {}
rpjobs_roleplay = {}
rpjobs = {}
for i = 0, 499, 1 do
local sheet = getDbProp("SERVER:INVENTORY:BAG:"..tostring(i)..":SHEET")
if (sheet ~= 0) then
local name = getSheetName(sheet)
if (string.sub(name, 0, 6) == "rpjob_") then
local quality = getDbProp("SERVER:INVENTORY:BAG:"..tostring(i)..":QUALITY")
local quantity = getDbProp("SERVER:INVENTORY:BAG:"..tostring(i)..":QUANTITY")
if (name == "rpjob_advanced.sitem") then
table.insert(rpjobs_advanced, quality)
else
if (name == "rpjob_elementary.sitem") then
table.insert(rpjobs_elementary, quality)
else
if (name == "rpjob_roleplay.sitem") then
table.insert(rpjobs_roleplay, quality)
else
if rpjobs[name] == nil then
rpjobs[name] = {quality, quantity}
else
if rpjobs[name][1] < quality then
rpjobs[name] = {quality, quantity}
end
end
end
end
end
end
end
end
for id=1,2,1 do
game:addRpJob("advanced", id, rpjobs_advanced[id], rpjobs)
end
for id=1,3,1 do
game:addRpJob("elementary", id, rpjobs_elementary[id], rpjobs)
end
end

View file

@ -635,6 +635,16 @@
params_r="" params_r=""
onclick_l="" onclick_l=""
params_l="" /> params_l="" />
<ctrl style="tab_button_new"
id="tab2"
posparent="tab1"
group="content:rpjobs"
hardtext="uiRpJobs"
onclick_r=""
params_r=""
onclick_l=""
params_l="" />
</group> </group>
<view type="bitmap" <view type="bitmap"
id="sep" id="sep"
@ -722,8 +732,9 @@
posparent="guild_title" posparent="guild_title"
posref="TR TL" posref="TR TL"
shadow="true" shadow="true"
color="255 255 255 255" color="255 200 55 255"
global_color="true" global_color="false"
x="2"
fontsize="12" fontsize="12"
textid="SERVER:GUILD:NAME" textid="SERVER:GUILD:NAME"
dynamic_string="false" /> dynamic_string="false" />
@ -1448,7 +1459,41 @@
<view type="text" id="ring_rating_title" posparent="ring_rating" posref="TL BL" x="0" y="0" hardtext="uiR2EDRingRatingTitle" shadow="true" color="255 255 255 255" global_color="false" fontsize="12"/> <view type="text" id="ring_rating_title" posparent="ring_rating" posref="TL BL" x="0" y="0" hardtext="uiR2EDRingRatingTitle" shadow="true" color="255 255 255 255" global_color="false" fontsize="12"/>
--> -->
</group> </group>
<group h="0" id="rpjobs" posref="TL TL" sizeref="wh" w="0" y="0">
<group h="48" child_resize_hmargin="16" id="rpjobs_advanced" posref="TL TL" sizeref="w" w="-4" x="2" y="-5">
<instance color="255 155 255 255" template="rpjob_title" rpjob_icon="rpjob_advanced.tga" margin_x="0" id="rpjob_advanced_title" text="uiRpJobsAdvanced" posparent="rpjobs_advanced" posref="TL TL" />
<instance inherit_gc_alpha="true" posparent="rpjob_advanced_title" template="inner_thin_border"/>
</group>
<group h="48" child_resize_hmargin="16" active="false" id="rpjob_advanced_1" posparent="rpjobs_advanced" posref="BL TL" sizeref="w" y="-5">
<instance template="rpjob_infos" rpjob_icon="rpjob_advanced.tga" margin_x="20" id="rpjob_advanced_infos_1" w="-20" posparent="rpjobs_advanced_1" posref="TL TL" />
<instance inherit_gc_alpha="true" posparent="rpjob_advanced_infos_1" template="frame_widget" h="48" w="48" />
</group>
<group h="48" child_resize_hmargin="16" active="false" id="rpjob_advanced_2" posparent="rpjob_advanced_1" posref="BL TL" sizeref="w" y="-5">
<instance template="rpjob_infos" rpjob_icon="rpjob_advanced.tga" margin_x="20" id="rpjob_advanced_infos_2" w="-20" posparent="rpjobs_advanced_2" posref="TL TL" />
<instance inherit_gc_alpha="true" posparent="rpjob_advanced_infos_2" template="frame_widget" h="48" w="48" />
</group>
<group h="48" child_resize_hmargin="16" id="rpjobs_elementary" posparent="rpjob_advanced_2" posref="BL TL" sizeref="w" y="-5">
<instance color="155 255 155 255" template="rpjob_title" rpjob_icon="rpjob_elementary.tga" margin_x="0" id="rpjob_elementary_title" text="uiRpJobsElementary" posparent="rpjobs_elementary" posref="TL TL" />
<instance inherit_gc_alpha="true" posparent="rpjob_elementary_title" template="inner_thin_border"/>
</group>
<group h="48" child_resize_hmargin="16" active="false" id="rpjob_elementary_1" posparent="rpjobs_elementary" posref="BL TL" sizeref="w" y="-5">
<instance template="rpjob_infos" rpjob_icon="rpjob_elementary.tga" margin_x="20" id="rpjob_elementary_infos_1" w="-20" posparent="rpjobs_elementary_1" posref="TL TL" />
<instance inherit_gc_alpha="true" posparent="rpjob_elementary_infos_1" template="frame_widget" h="48" w="48" />
</group>
<group h="48" child_resize_hmargin="16" active="false" id="rpjob_elementary_2" posparent="rpjob_elementary_1" posref="BL TL" sizeref="w" y="-5">
<instance template="rpjob_infos" rpjob_icon="rpjob_elementary.tga" margin_x="20" id="rpjob_elementary_infos_2" w="-20" posparent="rpjobs_elementary_2" posref="TL TL" />
<instance inherit_gc_alpha="true" posparent="rpjob_elementary_infos_2" template="frame_widget" h="48" w="48" />
</group>
<group h="48" child_resize_hmargin="16" active="false" id="rpjob_elementary_3" posparent="rpjob_elementary_2" posref="BL TL" sizeref="w" y="-5">
<instance template="rpjob_infos" rpjob_icon="rpjob_elementary.tga" margin_x="20" id="rpjob_elementary_infos_3" w="-20" posparent="rpjobs_elementary_3" posref="TL TL" />
<instance inherit_gc_alpha="true" posparent="rpjob_elementary_infos_3" template="frame_widget" h="48" w="48" />
</group>
</group>
<view color="166 166 166 255" h="1" id="sep" posparent="info_player_skills_tabs" posref="BR BL" scale="true" sizeparent="parent" sizeref="w" texture="blank.tga" type="bitmap" w="0"/>
</group> </group>
</group> </group>
<tree node="info_player_skills" /> <tree node="info_player_skills" />
<!--***********--> <!--***********-->
@ -3232,6 +3277,7 @@
action="lua:game:onMissionJournalOpened()" /> action="lua:game:onMissionJournalOpened()" />
<link expr="depends(@SERVER:USER:IS_TRIAL)" <link expr="depends(@SERVER:USER:IS_TRIAL)"
action="lua:game:onMissionJournalOpened()" /> action="lua:game:onMissionJournalOpened()" />
<link expr="depends(@LOCAL:INVENTORY:BAG)" action="lua:game:getRPJobs()" />
<!--***********************--> <!--***********************-->
<!--* POPUP MESSAGES *--> <!--* POPUP MESSAGES *-->
<!--***********************--> <!--***********************-->
@ -3350,7 +3396,38 @@
shadow="true" shadow="true"
color="255 0 0 255" /> color="255 0 0 255" />
</group> </group>
<!--***********************-->
<!--* RPJOB TEMPLATES *-->
<!--***********************-->
</template> </template>
<template h="48" id="" name="rpjob_title" posparent="parent" posref="TL TL" sizeref="w" suffix="" text="" tooltip="" val="" w="0" x="0" y="0">
<group h="#h" id="#id" posparent="#posparent" posref="#posref" sizeref="#sizeref" w="#w" x="#margin_x" y="#y">
<view global_color="false" id="icon" posref="TL TL" texture="#rpjob_icon" type="bitmap" x="4" y="-4"/>
<view color="#color" fontsize="16" hardtext="#text" id="t" posref="MR ML" posparent="icon" shadow="true" type="text" x="5"/>
</group>
</template>
<template h="48" id="" name="rpjob_infos" posparent="parent" posref="TL TL" sizeref="w" suffix="" text="" tooltip="" val="" w="0" x="0" y="0">
<group h="#h" id="#id" posparent="#posparent" posref="#posref" sizeref="#sizeref" w="#w" x="#margin_x" y="#y">
<view color="0 0 0 255" h="48" w="48" scale="true" global_color="false" id="bg" posref="TL TL" parent="#id" texture="blank.tga" type="bitmap"/>
<view global_color="false" id="icon" posref="TL TL" texture="#rpjob_icon" type="bitmap" x="4" y="-4"/>
<view global_color="false" color="255 255 255 255" fontsize="13" id="t" posref="TR TL" posparent="icon" shadow="true" w="#w" type="text" x="10"/>
<group h="20" id="bar3d" posref="BR BL" posparent="icon" sizeref="w" w="340" x="8" y="0">
<instance inherit_gc_alpha="true" posref="BL BL" y="1" w="370" x="5" template="frame_widget" h="18"/>
<view color="0 0 0 255" h="16" id="bar" posparent="bar3d" posref="BL BL" scale="true" texture="blank.tga" type="bitmap" w="368" x="5" y="2"/>
<view h="16" id="level" posparent="bar3d" posref="BL BL" scale="true" texture="blank.tga" type="bitmap" w="368" x="5" y="2"/>
<view global_color="false" fontsize="12" hardtext="" id="t" posref="MM MM" posparent="bar" shadow="false" w="#w" type="text" y="-2"/>
</group>
<view global_color="false" color="255 255 155 255" fontsize="11" hardtext="" id="echelon_value" posref="TR TR" posparent="bar3d" shadow="true" w="#w" type="text" x="-5" y="20"/>
<view fontsize="11" hardtext="Echelon : " id="echelon" posref="TL TR" posparent="echelon_value" shadow="true" w="#w" type="text" x="2"/>
</group>
</template>
<!--***********************--> <!--***********************-->
<!--* NPC WEB PAGE *--> <!--* NPC WEB PAGE *-->
<!--***********************--> <!--***********************-->

View file

@ -41,14 +41,14 @@
<key name="KeyF6" ctrl="0" action="toggle_combat" /> <key name="KeyF6" ctrl="0" action="toggle_combat" />
<key name="KeySPACE" action="front_selection" params="ennemy" /> <key name="KeySPACE" action="front_selection" params="ennemy" />
<key name="KeySPACE" ctrl="1" action="front_selection" params="friend"/> <key name="KeySPACE" ctrl="1" action="front_selection" params="friend"/>
<key name="KeyF1" ctrl="1" action="target_teammate_shortcut" params="1"/> <key name="KeyF1" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=1"/>
<key name="KeyF2" ctrl="1" action="target_teammate_shortcut" params="2"/> <key name="KeyF2" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=2"/>
<key name="KeyF3" ctrl="1" action="target_teammate_shortcut" params="3"/> <key name="KeyF3" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=3"/>
<key name="KeyF4" ctrl="1" action="target_teammate_shortcut" params="4"/> <key name="KeyF4" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=4"/>
<key name="KeyF5" ctrl="1" action="target_teammate_shortcut" params="5"/> <key name="KeyF5" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=5"/>
<key name="KeyF6" ctrl="1" action="target_teammate_shortcut" params="6"/> <key name="KeyF6" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=6"/>
<key name="KeyF7" ctrl="1" action="target_teammate_shortcut" params="7"/> <key name="KeyF7" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=7"/>
<key name="KeyF8" ctrl="1" action="target_teammate_shortcut" params="8"/> <key name="KeyF8" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=8"/>
<!-- Desktop <!-- Desktop
--> -->
<key name="KeyF1" action="set_desktop" params="0" /> <key name="KeyF1" action="set_desktop" params="0" />

View file

@ -41,14 +41,14 @@
<key name="KeyF6" ctrl="0" action="toggle_combat" /> <key name="KeyF6" ctrl="0" action="toggle_combat" />
<key name="KeySPACE" action="front_selection" params="ennemy" /> <key name="KeySPACE" action="front_selection" params="ennemy" />
<key name="KeySPACE" ctrl="1" action="front_selection" params="friend"/> <key name="KeySPACE" ctrl="1" action="front_selection" params="friend"/>
<key name="KeyF1" ctrl="1" action="target_teammate_shortcut" params="1"/> <key name="KeyF1" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=1"/>
<key name="KeyF2" ctrl="1" action="target_teammate_shortcut" params="2"/> <key name="KeyF2" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=2"/>
<key name="KeyF3" ctrl="1" action="target_teammate_shortcut" params="3"/> <key name="KeyF3" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=3"/>
<key name="KeyF4" ctrl="1" action="target_teammate_shortcut" params="4"/> <key name="KeyF4" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=4"/>
<key name="KeyF5" ctrl="1" action="target_teammate_shortcut" params="5"/> <key name="KeyF5" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=5"/>
<key name="KeyF6" ctrl="1" action="target_teammate_shortcut" params="6"/> <key name="KeyF6" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=6"/>
<key name="KeyF7" ctrl="1" action="target_teammate_shortcut" params="7"/> <key name="KeyF7" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=7"/>
<key name="KeyF8" ctrl="1" action="target_teammate_shortcut" params="8"/> <key name="KeyF8" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=8"/>
<!-- Desktop <!-- Desktop
--> -->
<key name="KeyF1" action="set_desktop" params="0" /> <key name="KeyF1" action="set_desktop" params="0" />

View file

@ -138,22 +138,22 @@
<key name="KeyF1" action="self_target"/> <key name="KeyF1" action="self_target"/>
<key name="KeyF1" shift="1" action="toggle_help"/> <key name="KeyF1" shift="1" action="toggle_help"/>
<key name="KeyF1" shift="1" ctrl="1" action="copy_to_desktop" params="0"/> <key name="KeyF1" shift="1" ctrl="1" action="copy_to_desktop" params="0"/>
<key name="KeyF2" action="target_teammate_shortcut" params="1"/> <key name="KeyF2" action="target_teammate_shortcut" params="indexInTeam=1"/>
<key name="KeyF2" shift="1" action="target_teammate_shortcut" params="5"/> <key name="KeyF2" shift="1" action="target_teammate_shortcut" params="indexInTeam=5"/>
<key name="KeyF2" shift="1" ctrl="1" action="copy_to_desktop" params="1"/> <key name="KeyF2" shift="1" ctrl="1" action="copy_to_desktop" params="1"/>
<key name="KeyF2" menu="1" action="profile_texture"/> <key name="KeyF2" menu="1" action="profile_texture"/>
<key name="KeyF2" ctrl="1" menu="1" action="profile_vblock"/> <key name="KeyF2" ctrl="1" menu="1" action="profile_vblock"/>
<key name="KeyF3" action="target_teammate_shortcut" params="2"/> <key name="KeyF3" action="target_teammate_shortcut" params="indexInTeam=2"/>
<key name="KeyF3" shift="1" action="target_teammate_shortcut" params="6"/> <key name="KeyF3" shift="1" action="target_teammate_shortcut" params="indexInTeam=6"/>
<key name="KeyF3" shift="1" ctrl="1" action="copy_to_desktop" params="2"/> <key name="KeyF3" shift="1" ctrl="1" action="copy_to_desktop" params="indexInTeam=2"/>
<key name="KeyF4" action="target_teammate_shortcut" params="3"/> <key name="KeyF4" action="target_teammate_shortcut" params="indexInTeam=3"/>
<key name="KeyF4" shift="1" action="target_teammate_shortcut" params="7"/> <key name="KeyF4" shift="1" action="target_teammate_shortcut" params="indexInTeam=7"/>
<key name="KeyF4" shift="1" ctrl="1" action="copy_to_desktop" params="3"/> <key name="KeyF4" shift="1" ctrl="1" action="copy_to_desktop" params="indexInTeam=3"/>
<key name="KeyF4" menu="1" action="enter_modal" params="group=ui:interface:quit_dialog"/> <key name="KeyF4" menu="1" action="enter_modal" params="group=ui:interface:quit_dialog"/>
<key name="KeyF4" ctrl="1" menu="1" action="profile_fillrate"/> <key name="KeyF4" ctrl="1" menu="1" action="profile_fillrate"/>
<key name="KeyF4" shift="1" ctrl="1" menu="1" action="replay_movie"/> <key name="KeyF4" shift="1" ctrl="1" menu="1" action="replay_movie"/>
<key name="KeyF5" action="target_teammate_shortcut" params="4"/> <key name="KeyF5" action="target_teammate_shortcut" params="indexInTeam=4"/>
<key name="KeyF5" shift="1" action="target_teammate_shortcut" params="8"/> <key name="KeyF5" shift="1" action="target_teammate_shortcut" params="indexInTeam=8"/>
<key name="KeyF5" shift="1" ctrl="1" menu="1" action="save_movie"/> <key name="KeyF5" shift="1" ctrl="1" menu="1" action="save_movie"/>
<key name="KeyF6" shift="1" action="switch_console_display"/> <key name="KeyF6" shift="1" action="switch_console_display"/>
<key name="KeyF6" shift="1" ctrl="1" menu="1" action="memory_report"/> <key name="KeyF6" shift="1" ctrl="1" menu="1" action="memory_report"/>

View file

@ -41,14 +41,14 @@
<key name="KeyF6" ctrl="0" action="toggle_combat" /> <key name="KeyF6" ctrl="0" action="toggle_combat" />
<key name="KeySPACE" action="front_selection" params="ennemy" /> <key name="KeySPACE" action="front_selection" params="ennemy" />
<key name="KeySPACE" ctrl="1" action="front_selection" params="friend"/> <key name="KeySPACE" ctrl="1" action="front_selection" params="friend"/>
<key name="KeyF1" ctrl="1" action="target_teammate_shortcut" params="1"/> <key name="KeyF1" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=1"/>
<key name="KeyF2" ctrl="1" action="target_teammate_shortcut" params="2"/> <key name="KeyF2" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=2"/>
<key name="KeyF3" ctrl="1" action="target_teammate_shortcut" params="3"/> <key name="KeyF3" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=3"/>
<key name="KeyF4" ctrl="1" action="target_teammate_shortcut" params="4"/> <key name="KeyF4" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=4"/>
<key name="KeyF5" ctrl="1" action="target_teammate_shortcut" params="5"/> <key name="KeyF5" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=5"/>
<key name="KeyF6" ctrl="1" action="target_teammate_shortcut" params="6"/> <key name="KeyF6" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=6"/>
<key name="KeyF7" ctrl="1" action="target_teammate_shortcut" params="7"/> <key name="KeyF7" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=7"/>
<key name="KeyF8" ctrl="1" action="target_teammate_shortcut" params="8"/> <key name="KeyF8" ctrl="1" action="target_teammate_shortcut" params="indexInTeam=8"/>
<!-- Desktop <!-- Desktop
--> -->
<key name="KeyF1" action="set_desktop" params="0" /> <key name="KeyF1" action="set_desktop" params="0" />

View file

@ -30,57 +30,49 @@
<group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" > <group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" >
<!-- BACKGROUND --> <!-- BACKGROUND -->
<view type="bitmap" posref="TL TL" id="bl" texture="launcher_bg.tga" global_color="false" render_layer="-2" /> <view type="bitmap" posref="TL TL" id="bl" texture="new_launcher_bg.tga" global_color="false" render_layer="-1" />
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="1024" h="768" color="0 0 0 0"/>
<!-- <!--
<view type="bitmap" id="jena" posparent="window" posref="MR MR" x="-64" texture="log_jena.tga" global_color="false" render_layer="-1" /> <view type="bitmap" id="jena" posparent="window" posref="MR MR" x="-64" texture="log_jena.tga" global_color="false" render_layer="-1" />
--> -->
<!-- EXIT BUTTON -->
<ctrl style="log_button" id="but_exit" posparent="window" posref="TR TR" y="-20" onclick_l="login_quit" hardtext="uiExitLogin" />
<!-- Login Edit_Boxes --> <!-- Login Edit_Boxes -->
<view type="text" id="txt_log" x="115" posref="TL TL" posparent="window" hardtext="uiLogin" fontsize="10" y="-48" color="255 255 255 255" /> <view type="text" id="txt_log" x="0" posref="TM TM" posparent="window" hardtext="uiLogin" fontsize="10" y="-200" color="255 255 255 255" />
<view type="text" id="txt_pas" posparent="txt_log" posref="TL TL" hardtext="uiPassword" fontsize="10" x="246" color="255 255 255 255" /> <view type="text" id="txt_pas" posparent="txt_log" posref="TM TM" hardtext="uiPassword" fontsize="10" y="-48" color="255 255 255 255" />
<instance template="edit_box_log" id="eb_login" posparent="txt_log" posref="BL TL" w="240" h="24" fontsize="12" x="0" y="-4" <instance template="edit_box_log" id="eb_login" posparent="txt_log" posref="BM TM" w="240" h="24" fontsize="12" x="0" y="-4"
text_ref="BM BM" text_y="-2" text_ref="BM BM" text_y="-2"
reset_focus_on_hide="false" max_historic="0" reset_focus_on_hide="false" max_historic="0"
onenter="set_keyboard_focus" params="target=ui:login:checkpass:content:submit_gr:eb_password:eb|select_all=false" onenter="set_keyboard_focus" params="target=ui:login:checkpass:content:submit_gr:eb_password:eb|select_all=false"
prompt="" enter_loose_focus="true" multi_line="false" max_num_chars="20" color="135 243 28 255" /> prompt="" enter_loose_focus="true" multi_line="false" max_num_chars="20" color="135 243 28 255" />
<instance template="edit_box_log" id="eb_password" posparent="txt_pas" posref="BL TL" w="240" h="24" fontsize="14" x="0" y="-4" <instance template="edit_box_log" id="eb_password" posparent="txt_pas" posref="BM TM" w="240" h="24" fontsize="14" x="0" y="-4"
text_ref="BM BM" text_y="-2" text_ref="BM BM" text_y="-2"
reset_focus_on_hide="false" max_historic="0" entry_type="password" reset_focus_on_hide="false" max_historic="0" entry_type="password"
onenter="on_login" params="" onenter="on_login" params=""
prompt="" enter_loose_focus="true" multi_line="false" max_num_chars="20" color="135 243 28 255" /> prompt="" enter_loose_focus="true" multi_line="false" max_num_chars="20" color="135 243 28 255" />
<ctrl style="log_std_but" id="but_log" posparent="eb_password" posref="TR TL" x="6" onclick_l="on_login" hardtext="uiOnConnect" /> <ctrl style="log_std_but" id="but_log" posparent="eb_password" posref="TM TM" y="-32" onclick_l="on_login" hardtext="uiOnConnect" />
<!-- Boxes Web Shortcuts --> <!-- Boxes Web Shortcuts
<instance template="server_box" id="web_win" posparent="eb_login" posref="BL TL" w="568" h="202" y="-24" /> <instance template="server_box" id="web_win" posparent="eb_login" posref="BL TL" w="568" h="202" y="-24" /> -->
<!-- Create Account --> <!-- Create Account -->
<ctrl style="log_spe_but" id="but_create_account" posparent="web_win" posref="TL TL" x="8" y="-8" <ctrl style="log_std_but" id="but_create_account" posparent="but_log" posref="BM TM" y="-28"
onclick_l="on_create_account" hardtext="uiCreateAccount" /> onclick_l="on_create_account" hardtext="uiCreateAccount" />
<!-- Upgrade Account --> <!-- Upgrade Account -->
<ctrl style="log_spe_but" id="but_upgrade_account" posparent="but_create_account" posref="BL TL" y="-8" <ctrl style="log_std_but" id="but_upgrade_account" posparent="but_create_account" posref="BM TM" y="-8"
onclick_l="open_url" params_l="cfg_EditAccountURL" hardtext="uiUpgradeAccount" /> onclick_l="open_url" params_l="cfg_EditAccountURL" hardtext="uiUpgradeAccount" />
<!-- Forget Password --> <!-- Forget Password -->
<ctrl style="log_spe_but" id="but_forget_pwd" posparent="but_upgrade_account" posref="BL TL" y="-8" <ctrl style="log_std_but" id="but_forget_pwd" posparent="but_upgrade_account" posref="BM TM" y="-8"
onclick_l="open_url" params_l="cfg_ForgetPwdURL" hardtext="uiForgetPwd" /> onclick_l="open_url" params_l="cfg_ForgetPwdURL" hardtext="uiForgetPwd" />
<!-- Game Configuration -->
<ctrl style="log_spe_but" id="but_game_configuration" posparent="but_forget_pwd" posref="BL TL" y="-8"
onclick_l="on_game_configuration" hardtext="uiGameConfiguration" />
<!-- Edit Account --> <!-- Edit Account -->
<ctrl style="log_spe_but" id="but_edit_account" posparent="but_game_configuration" posref="BL TL" y="-8" <ctrl style="log_std_but" id="but_edit_account" posparent="but_forget_pwd" posref="BM TM" y="-8"
onclick_l="open_url" params_l="cfg_EditAccountURL" hardtext="uiEditAccount" /> onclick_l="open_url" params_l="cfg_EditAccountURL" hardtext="uiEditAccount" />
@ -90,7 +82,7 @@
--> -->
<!-- Login Support --> <!-- Login Support -->
<ctrl style="log_spe_but" id="but_login_support" posparent="but_edit_account" posref="BL TL" y="-8" <ctrl style="log_std_but" id="but_login_support" posparent="but_edit_account" posref="BM TM" y="-8"
onclick_l="open_url" params_l="cfg_LoginSupportURL" hardtext="uiLoginSupport" /> onclick_l="open_url" params_l="cfg_LoginSupportURL" hardtext="uiLoginSupport" />
<!-- Scan Data --> <!-- Scan Data -->
@ -115,10 +107,10 @@
but_login_support:active" /> but_login_support:active" />
<!-- RESOLUTION ET LEVEL OF DETAILS --> <!-- RESOLUTION ET LEVEL OF DETAILS -->
<instance template="server_box" id="res_win" posparent="web_win" posref="BL TL" w="276" h="24" y="-24" /> <instance template="server_box" id="res_win" posparent="window" posref="TL TL" w="276" h="24" y="-733" x="10"/>
<instance template="server_box" id="lod_win" posparent="res_win" posref="TR TL" w="276" h="24" x="16" /> <instance template="server_box" id="lod_win" posparent="res_win" posref="TR TL" w="276" h="24" x="16" />
<!-- Game Configuration --> <ctrl style="log_std_but" id="but_game_configuration" posparent="lod_win" posref="TR TL" x="26" onclick_l="on_game_configuration" hardtext="uiGameConfiguration" /> <!-- EXIT BUTTON --> <ctrl style="log_button" id="but_exit" posparent="windows" posref="BR BR" y="6" onclick_l="login_quit" hardtext="uiExitLogin" />
<!-- Textes --> <!-- Textes -->
<view type="text" id="title_res" posparent="res_win" posref="TL BL" y="0" color="255 255 255 255" fontsize="10" shadow="true" hardtext="uiLOGResolution" /> <view type="text" id="title_res" posparent="res_win" posref="TL BL" y="0" color="255 255 255 255" fontsize="10" shadow="true" hardtext="uiLOGResolution" />
<view type="text" id="title_lod" posparent="lod_win" posref="TL BL" y="0" color="255 255 255 255" fontsize="10" shadow="true" hardtext="uiLOGLod" /> <view type="text" id="title_lod" posparent="lod_win" posref="TL BL" y="0" color="255 255 255 255" fontsize="10" shadow="true" hardtext="uiLOGLod" />
@ -188,7 +180,7 @@
<group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" > <group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" >
<!-- BACKGROUND --> <!-- BACKGROUND -->
<view type="bitmap" posref="TL TL" id="bl" texture="launcher_bg.tga" global_color="false" render_layer="-2" /> <view type="bitmap" posref="TL TL" id="bl" texture="new_launcher_bg.tga" global_color="false" render_layer="-2" />
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" />
<view type="bitmap" id="kami" posparent="window" posref="TR TR" x="-50" y="-24" texture="log_kami.tga" global_color="false" render_layer="-1" /> <view type="bitmap" id="kami" posparent="window" posref="TR TR" x="-50" y="-24" texture="log_kami.tga" global_color="false" render_layer="-1" />
@ -293,7 +285,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" > <group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" >
<!-- BACKGROUND --> <!-- BACKGROUND -->
<view type="bitmap" posref="TL TL" id="bl" texture="launcher_bg.tga" global_color="false" render_layer="-2" /> <view type="bitmap" posref="TL TL" id="bl" texture="new_launcher_bg.tga" global_color="false" render_layer="-2" />
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" />
<!-- EXIT BUTTON --> <!-- EXIT BUTTON -->
@ -348,7 +340,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" > <group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" >
<!-- BACKGROUND --> <!-- BACKGROUND -->
<view type="bitmap" posref="TL TL" id="bl" texture="launcher_bg.tga" global_color="false" render_layer="-2" /> <view type="bitmap" posref="TL TL" id="bl" texture="new_launcher_bg.tga" global_color="false" render_layer="-2" />
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" />
<!-- EXIT BUTTON --> <!-- EXIT BUTTON -->
@ -405,7 +397,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" > <group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" >
<!-- BACKGROUND --> <!-- BACKGROUND -->
<view type="bitmap" posref="TL TL" id="bl" texture="launcher_bg.tga" global_color="false" render_layer="-2" /> <view type="bitmap" posref="TL TL" id="bl" texture="new_launcher_bg.tga" global_color="false" render_layer="-2" />
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" />
<!-- EXIT BUTTON --> <!-- EXIT BUTTON -->
@ -513,7 +505,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<group id="eula" w="1024" h="768" posref="MM MM" active="false" > <group id="eula" w="1024" h="768" posref="MM MM" active="false" >
<!-- BACKGROUND --> <!-- BACKGROUND -->
<view type="bitmap" posref="TL TL" id="bl" texture="launcher_bg.tga" global_color="false" render_layer="-2" /> <view type="bitmap" posref="TL TL" id="bl" texture="new_launcher_bg.tga" global_color="false" render_layer="-2" />
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" />
<!-- EXIT BUTTON --> <!-- EXIT BUTTON -->
@ -558,7 +550,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" > <group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" >
<!-- BACKGROUND --> <!-- BACKGROUND -->
<view type="bitmap" posref="TL TL" id="bl" texture="launcher_bg.tga" global_color="false" render_layer="-2" /> <view type="bitmap" posref="TL TL" id="bl" texture="new_launcher_bg.tga" global_color="false" render_layer="-2" />
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" />
<!-- EXIT BUTTON --> <!-- EXIT BUTTON -->
@ -638,7 +630,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
<group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" > <group id="content" x="0" y="0" w="1024" h="768" posref="TL TL" >
<!-- BACKGROUND --> <!-- BACKGROUND -->
<view type="bitmap" posref="TL TL" id="bl" texture="launcher_bg.tga" global_color="false" render_layer="-2" /> <view type="bitmap" posref="TL TL" id="bl" texture="new_launcher_bg.tga" global_color="false" render_layer="-2" />
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" />
<!-- Window --> <!-- Window -->
@ -774,7 +766,7 @@ on_enter="leave_modal" options="no_bordure" mouse_pos="false" exit_key_pushed="t
--> -->
<!-- BACKGROUND --> <!-- BACKGROUND -->
<!-- <!--
<view type="bitmap" posref="TL TL" id="bl" texture="launcher_bg.tga" global_color="false" render_layer="-2" /> <view type="bitmap" posref="TL TL" id="bl" texture="new_launcher_bg.tga" global_color="false" render_layer="-2" />
<instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" /> <instance template="log_box" id="window" y="-8" posref="MM MM" w="800" h="440" />
<instance template="html_text_button" id="back_to_login" text="BACK TO LOGIN" posparent="parent" posref="TL TL" y="-15" <instance template="html_text_button" id="back_to_login" text="BACK TO LOGIN" posparent="parent" posref="TL TL" y="-15"

View file

@ -824,7 +824,7 @@
<group type="modal" id="valid_message_box" exit_click_out="false" posref="MM MM" w="1024" h="768" <group type="modal" id="valid_message_box" exit_click_out="false" posref="MM MM" w="1024" h="768"
on_enter="proc" on_enter_params="proc_valid_message_box_ok" options="no_bordure" mouse_pos="false" on_enter="proc" on_enter_params="proc_valid_message_box_ok" options="no_bordure" mouse_pos="false"
> >
<view type="bitmap" posref="MM MM" id="log" texture="launcher_bg.tga" global_color="false" render_layer="-1" /> <view type="bitmap" posref="MM MM" id="log" texture="new_launcher_bg.tga" global_color="false" render_layer="-1" />
<view type="text" id="text" posref="MM MM" line_maxw="412" w="412" x="0" y="0" color="135 243 28 255" fontsize="18" shadow="true" multi_line="true" multi_line_space="0" case_mode="%case_first_sentence_letter_up"/> <view type="text" id="text" posref="MM MM" line_maxw="412" w="412" x="0" y="0" color="135 243 28 255" fontsize="18" shadow="true" multi_line="true" multi_line_space="0" case_mode="%case_first_sentence_letter_up"/>

View file

@ -37,7 +37,7 @@
<!-- JENA BACK --> <!-- JENA BACK -->
<view type="bitmap" id="jena" render_layer="-1" <view type="bitmap" id="jena" render_layer="-1"
global_color="false" color="255 255 255 255" posref="TL TL" x="0" y="0" texture="launcher_bg.tga" /> global_color="false" color="255 255 255 255" posref="TL TL" x="0" y="0" texture="new_launcher_bg.tga" />
<!-- Quit Button --> <!-- Quit Button -->

View file

@ -10,7 +10,7 @@
<!-- JENA BACK --> <!-- JENA BACK -->
<view type="bitmap" id="jena" render_layer="-1" <view type="bitmap" id="jena" render_layer="-1"
global_color="false" color="255 255 255 255" posref="TL TL" x="0" y="0" texture="launcher_bg.tga" /> global_color="false" color="255 255 255 255" posref="TL TL" x="0" y="0" texture="new_launcher_bg.tga" />
<!-- Quit Button --> <!-- Quit Button -->

View file

@ -101,6 +101,93 @@
CommandLine="$(InputDir)\..\..\tools\scripts\windows\tools\replace_vista_icon.exe $(TargetPath) $(InputDir)\ryzom.ico 101" CommandLine="$(InputDir)\..\..\tools\scripts\windows\tools\replace_vista_icon.exe $(TargetPath) $(InputDir)\ryzom.ico 101"
/> />
</Configuration> </Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="..\..\obj\$(ConfigurationName)\$(ProjectName)"
IntermediateDirectory="..\..\obj\$(ConfigurationName)\$(ProjectName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="3"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
OmitFramePointers="true"
EnableFiberSafeOptimizations="true"
AdditionalIncludeDirectories="../../common/src"
PreprocessorDefinitions="_WINDOWS;WIN32;NDEBUG;CURL_STATICLIB;LIBXML_STATIC"
StringPooling="true"
ExceptionHandling="2"
RuntimeLibrary="2"
BufferSecurityCheck="false"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdpch.h"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="gnu_regex.lib libcurl.lib libjpeg.lib lua.lib luabind.lib wwwapp.lib wwwcache.lib wwwcore.lib wwwfile.lib wwwhtml.lib wwwhttp.lib wwwmime.lib wwwmux.lib wwwstream.lib wwwtrans.lib wwwutils.lib libeay32.lib ssleay32.lib"
OutputFile="..\..\bin\client_ryzom_r.exe"
LinkIncremental="1"
IgnoreDefaultLibraryNames=""
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description="insert the hi res icon"
CommandLine="$(InputDir)\..\..\tools\scripts\windows\tools\replace_vista_icon.exe $(TargetPath) $(InputDir)\ryzom.ico 101"
/>
</Configuration>
<Configuration <Configuration
Name="Debug|x64" Name="Debug|x64"
OutputDirectory="..\..\obj64\$(ConfigurationName)\$(ProjectName)" OutputDirectory="..\..\obj64\$(ConfigurationName)\$(ProjectName)"
@ -183,93 +270,6 @@
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="..\..\obj\$(ConfigurationName)\$(ProjectName)"
IntermediateDirectory="..\..\obj\$(ConfigurationName)\$(ProjectName)"
ConfigurationType="1"
CharacterSet="2"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="3"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
OmitFramePointers="true"
EnableFiberSafeOptimizations="true"
AdditionalIncludeDirectories="../../common/src"
PreprocessorDefinitions="_WINDOWS;WIN32;NDEBUG;CURL_STATICLIB;LIBXML_STATIC"
StringPooling="true"
ExceptionHandling="2"
RuntimeLibrary="2"
BufferSecurityCheck="false"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdpch.h"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="gnu_regex.lib libcurl.lib libjpeg.lib lua.lib luabind.lib wwwapp.lib wwwcache.lib wwwcore.lib wwwfile.lib wwwhtml.lib wwwhttp.lib wwwmime.lib wwwmux.lib wwwstream.lib wwwtrans.lib wwwutils.lib libeay32.lib ssleay32.lib"
OutputFile="..\..\bin\client_ryzom_r.exe"
LinkIncremental="1"
IgnoreDefaultLibraryNames=""
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description="insert the hi res icon"
CommandLine="$(InputDir)\..\..\tools\scripts\windows\tools\replace_vista_icon.exe $(TargetPath) $(InputDir)\ryzom.ico 101"
/>
</Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release|x64"
OutputDirectory="..\..\obj64\$(ConfigurationName)\$(ProjectName)" OutputDirectory="..\..\obj64\$(ConfigurationName)\$(ProjectName)"
@ -2902,7 +2902,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -2910,7 +2910,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"

View file

@ -1807,8 +1807,8 @@ class CHandlerItemMenuCheck : public IActionHandler
CInventoryManager &invMngr= getInventory(); CInventoryManager &invMngr= getInventory();
// If the item is an animal representation // If the item is an animal representation or rpjob item
if(pIS!=NULL && pIS->Family == ITEMFAMILY::PET_ANIMAL_TICKET) if (pIS!=NULL && ((pIS->Family == ITEMFAMILY::PET_ANIMAL_TICKET) || (pIS->Id.toString().substr(0, 6) == "rpjob_")))
{ {
// cannot move to other animals! :) // cannot move to other animals! :)
if(pMoveToBag) pMoveToBag->setActive(false); if(pMoveToBag) pMoveToBag->setActive(false);

View file

@ -47,6 +47,7 @@ extern "C"
#include "../time_client.h" #include "../time_client.h"
#include "nel/misc/i18n.h" #include "nel/misc/i18n.h"
#include "nel/misc/md5.h" #include "nel/misc/md5.h"
#include "nel/3d/texture_file.h"
using namespace std; using namespace std;
using namespace NLMISC; using namespace NLMISC;
@ -173,7 +174,7 @@ void CGroupHTML::checkImageDownload()
// don't display image that are not power of 2 // don't display image that are not power of 2
uint32 w, h; uint32 w, h;
CBitmap::loadSize (image, w, h); CBitmap::loadSize (image, w, h);
if (w == 0 || h == 0 || !NLMISC::isPowerOf2(w) || !NLMISC::isPowerOf2(h)) if (w == 0 || h == 0 || ((!NLMISC::isPowerOf2(w) || !NLMISC::isPowerOf2(h)) && !NL3D::CTextureFile::supportNonPowerOfTwoTextures()))
image.clear(); image.clear();
CCtrlButton *btn = dynamic_cast<CCtrlButton*>(it->imgs[i]); CCtrlButton *btn = dynamic_cast<CCtrlButton*>(it->imgs[i]);
@ -2103,7 +2104,7 @@ void CGroupHTML::addImage(const char *img, bool globalColor)
// don't display image that are not power of 2 // don't display image that are not power of 2
uint32 w, h; uint32 w, h;
CBitmap::loadSize (image, w, h); CBitmap::loadSize (image, w, h);
if (w == 0 || h == 0 || !NLMISC::isPowerOf2(w) || !NLMISC::isPowerOf2(h)) if (w == 0 || h == 0 || ((!NLMISC::isPowerOf2(w) || !NLMISC::isPowerOf2(h)) && !NL3D::CTextureFile::supportNonPowerOfTwoTextures()))
image.clear(); image.clear();
newImage->setTexture (image); newImage->setTexture (image);
@ -2475,12 +2476,13 @@ void CGroupHTML::setTitle (const ucstring &title)
CInterfaceElement *parent = getParent(); CInterfaceElement *parent = getParent();
if (parent) if (parent)
{ {
parent = parent->getParent(); if (parent = parent->getParent())
CGroupContainer *container = dynamic_cast<CGroupContainer*>(parent);
if (container)
{ {
container->setUCTitle (title); CGroupContainer *container = dynamic_cast<CGroupContainer*>(parent);
if (container)
{
container->setUCTitle (title);
}
} }
} }
} }

View file

@ -66,7 +66,7 @@ static string getWebAuthKey()
void addWebIGParams (string &url) void addWebIGParams (string &url)
{ {
if(!UserEntity || (NetMngr.getConnectionState() < CNetworkConnection::Connected)) return; if(!UserEntity || !NetMngr.getLoginCookie().isValid()) return;
uint32 cid = NetMngr.getLoginCookie().getUserId() * 16 + PlayerSelectedSlot; uint32 cid = NetMngr.getLoginCookie().getUserId() * 16 + PlayerSelectedSlot;
url += ((url.find('?') != string::npos) ? "&" : "?") + url += ((url.find('?') != string::npos) ? "&" : "?") +

View file

@ -1953,6 +1953,10 @@ void initStructForItemSort(vector<SSortStruct>&vTemp, sint32 sheetId, sint32 qua
vTemp[indexInList].Pos += toString("%03d", quality); vTemp[indexInList].Pos += toString("%03d", quality);
// add sort by name
vTemp[indexInList].Pos += CSheetId(sheetId).toString();
// add at last the index in DB. to avoid resort for items that are exaclty the same // add at last the index in DB. to avoid resort for items that are exaclty the same
vTemp[indexInList].Pos += toString("%03d", indexInDB); vTemp[indexInList].Pos += toString("%03d", indexInDB);
} }
@ -2079,6 +2083,10 @@ bool SBagOptions::canDisplay(CDBCtrlSheet *pCS) const
if ((pIS->Family == ITEMFAMILY::MISSION_ITEM) || if ((pIS->Family == ITEMFAMILY::MISSION_ITEM) ||
((pIS->Family == ITEMFAMILY::RAW_MATERIAL) && !pIS->canBuildSomeItemPart())) ((pIS->Family == ITEMFAMILY::RAW_MATERIAL) && !pIS->canBuildSomeItemPart()))
if (!bFilterMissMP) bDisplay = false; if (!bFilterMissMP) bDisplay = false;
// Jobs Items
if (pIS->Id.toString().substr(0, 6) == "rpjob_")
bDisplay = false;
} }
return bDisplay; return bDisplay;
} }

View file

@ -60,20 +60,26 @@ void CItemConsumableEffectHelper::getItemConsumableEffectText(const CItemSheet *
if( name == "SP_CHG_CHARAC" ) if( name == "SP_CHG_CHARAC" )
{ {
ucstring result = CI18N::get("uiItemConsumableEffectChgCharac");
CHARACTERISTICS::TCharacteristics charac = CHARACTERISTICS::toCharacteristic(params[0]); CHARACTERISTICS::TCharacteristics charac = CHARACTERISTICS::toCharacteristic(params[0]);
string characUIId = "uiCaracId" + toString((uint8)charac); string characUIId = "uiCaracId" + toString((uint8)charac);
strFindReplace(result, "%charac", CI18N::get(characUIId));
double param1, param2; double param1, param2;
fromString(params[1].c_str(), param1); fromString(params[1].c_str(), param1);
fromString(params[2].c_str(), param2); fromString(params[2].c_str(), param2);
uint32 bonus = (uint32)(param1 * itemQuality + param2); sint32 bonus = (uint32)(param1 * itemQuality + param2);
strFindReplace(result, "%bonus", toString(bonus));
uint32 timeInSec; uint32 timeInSec;
fromString(params[3].c_str(), timeInSec); fromString(params[3].c_str(), timeInSec);
ucstring result;
if (bonus >= 0)
result = CI18N::get("uiItemConsumableEffectUpCharac");
else
result = CI18N::get("uiItemConsumableEffectDownCharac");
strFindReplace(result, "%charac", CI18N::get(characUIId));
strFindReplace(result, "%bonus", toString(bonus));
strFindReplace(result, "%minutes", toString(timeInSec/60)); strFindReplace(result, "%minutes", toString(timeInSec/60));
strFindReplace(result, "%secondes", toString(timeInSec%60)); strFindReplace(result, "%secondes", toString(timeInSec%60));
@ -81,7 +87,83 @@ void CItemConsumableEffectHelper::getItemConsumableEffectText(const CItemSheet *
effects += "\n"; effects += "\n";
} }
if ( name == "SP_LIFE_AURA" )
{
uint16 regenMod;
fromString(params[0].c_str(), regenMod);
uint32 duration;
fromString(params[1].c_str(), duration);
uint32 radius;
fromString(params[2].c_str(), radius);
uint32 targetDisableTime;
fromString(params[3].c_str(), targetDisableTime);
uint32 userDisableTime;
fromString(params[4].c_str(), userDisableTime);
ucstring result = CI18N::get("uiItemConsumableEffectLifeAura");
strFindReplace(result, "%modifier", toString(regenMod));
strFindReplace(result, "%minutes", toString(duration/60));
strFindReplace(result, "%secondes", toString(duration%60));
strFindReplace(result, "%radius", toString(radius));
strFindReplace(result, "%targetDisableTime", toString(targetDisableTime));
strFindReplace(result, "%userDisableTime", toString(userDisableTime));
effects += result;
effects += "\n";
}
if ( name == "SP_STAMINA_AURA" )
{
uint16 regenMod;
fromString(params[0].c_str(), regenMod);
uint32 duration;
fromString(params[1].c_str(), duration);
uint32 radius;
fromString(params[2].c_str(), radius);
uint32 targetDisableTime;
fromString(params[3].c_str(), targetDisableTime);
uint32 userDisableTime;
fromString(params[4].c_str(), userDisableTime);
ucstring result = CI18N::get("uiItemConsumableEffectStaminaAura");
strFindReplace(result, "%modifier", toString(regenMod));
strFindReplace(result, "%minutes", toString(duration/60));
strFindReplace(result, "%secondes", toString(duration%60));
strFindReplace(result, "%radius", toString(radius));
strFindReplace(result, "%targetDisableTime", toString(targetDisableTime));
strFindReplace(result, "%userDisableTime", toString(userDisableTime));
effects += result;
effects += "\n";
}
if ( name == "SP_SAP_AURA" )
{
uint16 regenMod;
fromString(params[0].c_str(), regenMod);
uint32 duration;
fromString(params[1].c_str(), duration);
uint32 radius;
fromString(params[2].c_str(), radius);
uint32 targetDisableTime;
fromString(params[3].c_str(), targetDisableTime);
uint32 userDisableTime;
fromString(params[4].c_str(), userDisableTime);
ucstring result = CI18N::get("uiItemConsumableEffectSapAura");
strFindReplace(result, "%modifier", toString(regenMod));
strFindReplace(result, "%minutes", toString(duration/60));
strFindReplace(result, "%secondes", toString(duration%60));
strFindReplace(result, "%radius", toString(radius));
strFindReplace(result, "%targetDisableTime", toString(targetDisableTime));
strFindReplace(result, "%userDisableTime", toString(userDisableTime));
effects += result;
effects += "\n";
}
// skill modifier consumables // skill modifier consumables
//--------------------------- //---------------------------

View file

@ -76,6 +76,7 @@
#include "interface_v3/group_map.h" #include "interface_v3/group_map.h"
#include "sound_manager.h" #include "sound_manager.h"
#include "interface_v3/group_compas.h" #include "interface_v3/group_compas.h"
#include "interface_v3/group_html_webig.h"
#include "interface_v3/bar_manager.h" #include "interface_v3/bar_manager.h"
#include "permanent_ban.h" #include "permanent_ban.h"
#include "global.h" #include "global.h"
@ -702,9 +703,6 @@ void CInterfaceChatDisplayer::displayChat(TDataSetIndex compressedSenderIndex, c
colorizeSender(finalString, senderName, col); colorizeSender(finalString, senderName, col);
} }
// Log
pIM->log (finalString);
// play associated fx if any // play associated fx if any
if( !stringCategory.empty() ) if( !stringCategory.empty() )
{ {
@ -764,7 +762,42 @@ void CInterfaceChatDisplayer::displayChat(TDataSetIndex compressedSenderIndex, c
} }
else else
{ {
PeopleInterraction.ChatInput.AroundMe.displayMessage(finalString, col, 2, &windowVisible); ucstring::size_type index = finalString.find(ucstring("<BPFX>"));
if (index != ucstring::npos) {
bubbleWanted = false;
finalString = finalString.substr(index+6,finalString.size());
ucstring::size_type index2 = finalString.find(ucstring(" "));
ucstring playerName;
if (index2 < (finalString.size()-3)) {
playerName = finalString.substr(0,index2);
finalString = finalString.substr(index2+1,finalString.size());
}
if (!senderName.empty())
{
CEntityCL *senderEntity = EntitiesMngr.getEntityByName (CEntityCL::removeTitleAndShardFromName(senderName), true, true);
if (senderEntity) {
if (senderEntity->Type != CEntityCL::Player) {
if (playerName.empty()) {
senderEntity->removeStateFx();
senderEntity->setStateFx(finalString.toString());
nlinfo("empty");
} else {
CEntityCL *destEntity = EntitiesMngr.getEntityByName (CEntityCL::removeTitleAndShardFromName(playerName), false, true);
if (destEntity) {
destEntity->removeStateFx();
destEntity->setStateFx(finalString.toString());
nlinfo("no empty");
}
}
}
}
}
finalString = "";
}
else
{
PeopleInterraction.ChatInput.AroundMe.displayMessage(finalString, col, 2, &windowVisible);
}
} }
// if tell, bkup sendername // if tell, bkup sendername
if (mode == CChatGroup::tell && windowVisible && !senderName.empty()) if (mode == CChatGroup::tell && windowVisible && !senderName.empty())
@ -786,6 +819,10 @@ void CInterfaceChatDisplayer::displayChat(TDataSetIndex compressedSenderIndex, c
{ {
InSceneBubbleManager.chatOpen(compressedSenderIndex, finalRawMessage, bubbleTimer); InSceneBubbleManager.chatOpen(compressedSenderIndex, finalRawMessage, bubbleTimer);
} }
// Log
pIM->log (finalString);
} }
@ -3101,6 +3138,8 @@ void impulseOutpostDeclareWarAck(NLMISC::CBitMemStream &impulse)
node->setValue32(timeStartAttack); node->setValue32(timeStartAttack);
} }
extern void addWebIGParams (string &url);
//----------------------------------------------- //-----------------------------------------------
//----------------------------------------------- //-----------------------------------------------
class CServerMessageBoxOnReceiveTextId : public STRING_MANAGER::IStringWaitCallback class CServerMessageBoxOnReceiveTextId : public STRING_MANAGER::IStringWaitCallback
@ -3122,8 +3161,37 @@ private:
return; return;
// if the string start with a @{Wxxxx} code, remove it and get the wanted window size // if the string start with a @{Wxxxx} code, remove it and get the wanted window size
sint w= 256; // default size to 256 !! sint w = 256; // default size to 256 !!
if(contentStr.size()>=5 && contentStr[0]=='@' && contentStr[1]=='{' && contentStr[2]=='W') bool is_webig = false;
if(contentStr.size()>=6 && contentStr[0]=='W' && contentStr[1]=='E' && contentStr[2]=='B'
&& contentStr[3]==' ' && contentStr[4]==':' && contentStr[5]==' ' )
{
ucstring web_app;
uint i;
const uint digitStart= 6;
const uint digitMaxEnd= contentStr.size();
is_webig = true;
for(i = digitStart; i < digitMaxEnd; i++)
{
if(contentStr[i] == ' ')
break;
}
nlinfo("%d", i);
if(i != digitMaxEnd)
web_app = contentStr.substr(digitStart, i-digitStart);
else
{
web_app = ucstring("index");
i = digitStart;
nlinfo("no app");
}
contentStr = ucstring("http://atys.ryzom.com/start/")+web_app+ucstring(".php?")+contentStr.substr(i+1);
nlinfo("contentStr = %s", contentStr.toString().c_str());
}
else if(contentStr.size()>=5 && contentStr[0]=='@' && contentStr[1]=='{' && contentStr[2]=='W')
{ {
uint i; uint i;
const uint digitStart= 3; const uint digitStart= 3;
@ -3143,9 +3211,26 @@ private:
} }
} }
// open the message box window // open the message box window or web ig
CInterfaceManager *pIM= CInterfaceManager::getInstance();
if (is_webig)
{
CGroupHTML *groupHtml = dynamic_cast<CGroupHTML*>(pIM->getElementFromId("ui:interface:webig:content:html"));
if (groupHtml)
{
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(pIM->getElementFromId("ui:interface:webig"));
pGC->setActive(true);
string url = contentStr.toString();
addWebIGParams(url);
groupHtml->browse(url.c_str());
pIM->setTopWindow(pGC);
}
}
else
{ {
CInterfaceManager *pIM= CInterfaceManager::getInstance();
CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(pIM->getElementFromId("ui:interface:server_message_box")); CGroupContainer *pGC = dynamic_cast<CGroupContainer*>(pIM->getElementFromId("ui:interface:server_message_box"));
if (pGC) if (pGC)
{ {

View file

@ -119,10 +119,30 @@ void drawLoadingBitmap (float progress)
LoadingMaterialFull.setAlphaTestThreshold (1.f-progress); LoadingMaterialFull.setAlphaTestThreshold (1.f-progress);
CQuadUV quad; CQuadUV quad;
quad.V0.set (0,0,0); uint wh = Driver->getWindowHeight();
quad.V1.set (1,0,0); uint ww = Driver->getWindowWidth();
quad.V2.set (1,1,0); //nlinfo("%d x %d", ww, wh);
quad.V3.set (0,1,0); float x1 = 0;
float y1 = 0;
float x2 = 1;
float y2 = 1;
if ((ww > 1024) || (wh > 768))
if ((ww - 1024) > (wh - 768))
x1 = ((ww - (wh * 1024.f) / 768.f) / 2.f) / ww;
else
y1 = ((wh - (ww * 768.f) / 1024.f) / 2.f) / wh;
if (x1 != 0)
x2 = 1 - x1;
if (y1 != 0)
y2 = 1 - y1;
quad.V0.set (x1,y1,0);
quad.V1.set (x2,y1,0);
quad.V2.set (x2,y2,0);
quad.V3.set (x1,y2,0);
quad.Uv0.U= 0; quad.Uv0.U= 0;
quad.Uv0.V= 0.75f; quad.Uv0.V= 0.75f;
quad.Uv1.U= 1; quad.Uv1.U= 1;
@ -132,6 +152,7 @@ void drawLoadingBitmap (float progress)
quad.Uv3.U= 0; quad.Uv3.U= 0;
quad.Uv3.V= 0; quad.Uv3.V= 0;
Driver->drawQuad(0, 0, 1, 1, CRGBA(0, 0, 0, 255));
Driver->drawQuad(quad, LoadingMaterial); Driver->drawQuad(quad, LoadingMaterial);
Driver->drawQuad(quad, LoadingMaterialFull); Driver->drawQuad(quad, LoadingMaterialFull);
} }
@ -274,10 +295,10 @@ void CProgress::internalProgress (float value)
// Teleport help // Teleport help
fY = ClientCfg.TeleportInfoY; //fY = ClientCfg.TeleportInfoY;
if (LoadingContinent && !LoadingContinent->Indoor) if (!ApplyTextCommands && LoadingContinent && !LoadingContinent->Indoor)
{ {
TextContext->setFontSize((uint)(16.f * fontFactor)); TextContext->setFontSize((uint)(13.f * fontFactor));
// Print some more info // Print some more info
uint32 day = RT.getRyzomDay(); uint32 day = RT.getRyzomDay();
@ -289,6 +310,9 @@ void CProgress::internalProgress (float value)
CI18N::get (WeatherManager.getCurrWeatherState().LocalizedName).toUtf8().c_str()); CI18N::get (WeatherManager.getCurrWeatherState().LocalizedName).toUtf8().c_str());
ucstring ucstr; ucstring ucstr;
ucstr.fromUtf8 (str); ucstr.fromUtf8 (str);
TextContext->setHotSpot(UTextContext::MiddleBottom);
TextContext->setColor(CRGBA(186, 179, 163, 255));
TextContext->printAt(0.5f, 25/768.f, ucstr);
} }
// apply text commands // apply text commands
@ -299,16 +323,15 @@ void CProgress::internalProgress (float value)
if( !printfCommands.empty() ) if( !printfCommands.empty() )
{ {
TextContext->setHotSpot(UTextContext::BottomLeft); TextContext->setHotSpot(UTextContext::MiddleBottom);
vector<CClientConfig::SPrintfCommand>::iterator itpc; vector<CClientConfig::SPrintfCommand>::iterator itpc;
for( itpc = printfCommands.begin(); itpc != printfCommands.end(); ++itpc ) for( itpc = printfCommands.begin(); itpc != printfCommands.end(); ++itpc )
{ {
// Yoyo: the coordinates entered are though for 1024 float x = 0.5f;//((*itpc).X / 1024.f);
float x = ((*itpc).X / 1024.f);
float y = ((*itpc).Y / 768.f); float y = ((*itpc).Y / 768.f);
TextContext->setColor( (*itpc).Color ); TextContext->setColor( (*itpc).Color );
TextContext->setFontSize( (*itpc).FontSize ); TextContext->setFontSize( (uint)(16.f * fontFactor));
// build the ucstr(s) // build the ucstr(s)
ucstring ucstr = CI18N::get((*itpc).Text); ucstring ucstr = CI18N::get((*itpc).Text);

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// WARNING : this is a generated file, don't change it ! // WARNING : this is a generated file, don't change it !

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// WARNING : this is a generated file, don't change it ! // WARNING : this is a generated file, don't change it !

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// WARNING : this is a generated file, don't change it ! // WARNING : this is a generated file, don't change it !

View file

@ -212,12 +212,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "driver_fmod", "..\..\nel\sr
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3d", "..\..\nel\src\3d.vcproj", "{2B48BE83-108B-4E8E-8A55-6627CF09AC5A}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3d", "..\..\nel\src\3d.vcproj", "{2B48BE83-108B-4E8E-8A55-6627CF09AC5A}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "admin_service", "..\..\nelns\admin_service\admin_service.vcproj", "{AA03E539-FE77-4B63-BE0E-DE637635E5A9}"
ProjectSection(ProjectDependencies) = postProject
{44B21233-EFCC-4825-B5E5-3A3BD6CC5516} = {44B21233-EFCC-4825-B5E5-3A3BD6CC5516}
{67AF56A4-A228-4BFB-BDA8-026CBEDE8BF9} = {67AF56A4-A228-4BFB-BDA8-026CBEDE8BF9}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monitor_service", "src\monitor_service\monitor_service.vcproj", "{1648BD89-6D2C-441E-9D5A-D83F22F4F5EC}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monitor_service", "src\monitor_service\monitor_service.vcproj", "{1648BD89-6D2C-441E-9D5A-D83F22F4F5EC}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{44B21233-EFCC-4825-B5E5-3A3BD6CC5516} = {44B21233-EFCC-4825-B5E5-3A3BD6CC5516} {44B21233-EFCC-4825-B5E5-3A3BD6CC5516} = {44B21233-EFCC-4825-B5E5-3A3BD6CC5516}
@ -539,14 +533,6 @@ Global
{2B48BE83-108B-4E8E-8A55-6627CF09AC5A}.Release|Win32.Build.0 = Release|Win32 {2B48BE83-108B-4E8E-8A55-6627CF09AC5A}.Release|Win32.Build.0 = Release|Win32
{2B48BE83-108B-4E8E-8A55-6627CF09AC5A}.Release|x64.ActiveCfg = Release|x64 {2B48BE83-108B-4E8E-8A55-6627CF09AC5A}.Release|x64.ActiveCfg = Release|x64
{2B48BE83-108B-4E8E-8A55-6627CF09AC5A}.Release|x64.Build.0 = Release|x64 {2B48BE83-108B-4E8E-8A55-6627CF09AC5A}.Release|x64.Build.0 = Release|x64
{AA03E539-FE77-4B63-BE0E-DE637635E5A9}.Debug|Win32.ActiveCfg = Debug|Win32
{AA03E539-FE77-4B63-BE0E-DE637635E5A9}.Debug|Win32.Build.0 = Debug|Win32
{AA03E539-FE77-4B63-BE0E-DE637635E5A9}.Debug|x64.ActiveCfg = Debug|x64
{AA03E539-FE77-4B63-BE0E-DE637635E5A9}.Debug|x64.Build.0 = Debug|x64
{AA03E539-FE77-4B63-BE0E-DE637635E5A9}.Release|Win32.ActiveCfg = Release|Win32
{AA03E539-FE77-4B63-BE0E-DE637635E5A9}.Release|Win32.Build.0 = Release|Win32
{AA03E539-FE77-4B63-BE0E-DE637635E5A9}.Release|x64.ActiveCfg = Release|x64
{AA03E539-FE77-4B63-BE0E-DE637635E5A9}.Release|x64.Build.0 = Release|x64
{1648BD89-6D2C-441E-9D5A-D83F22F4F5EC}.Debug|Win32.ActiveCfg = Debug|Win32 {1648BD89-6D2C-441E-9D5A-D83F22F4F5EC}.Debug|Win32.ActiveCfg = Debug|Win32
{1648BD89-6D2C-441E-9D5A-D83F22F4F5EC}.Debug|Win32.Build.0 = Debug|Win32 {1648BD89-6D2C-441E-9D5A-D83F22F4F5EC}.Debug|Win32.Build.0 = Debug|Win32
{1648BD89-6D2C-441E-9D5A-D83F22F4F5EC}.Debug|x64.ActiveCfg = Debug|x64 {1648BD89-6D2C-441E-9D5A-D83F22F4F5EC}.Debug|x64.ActiveCfg = Debug|x64

View file

@ -650,7 +650,7 @@ static float randomAngle()
return val; return val;
} }
CGroupNpc* CAIInstance::eventCreateNpcGroup(uint nbBots, NLMISC::CSheetId const& sheetId, CAIVector const& pos, double dispersionRadius, bool spawnBots) CGroupNpc* CAIInstance::eventCreateNpcGroup(uint nbBots, NLMISC::CSheetId const& sheetId, CAIVector const& pos, double dispersionRadius, bool spawnBots, double orientation, const std::string &botsName)
{ {
if (!_EventNpcManager) if (!_EventNpcManager)
return NULL; return NULL;
@ -681,7 +681,7 @@ CGroupNpc* CAIInstance::eventCreateNpcGroup(uint nbBots, NLMISC::CSheetId const&
// build unnamed bot // build unnamed bot
for (uint i=0; i<nbBots; ++i) for (uint i=0; i<nbBots; ++i)
{ {
grp->bots().addChild(new CBotNpc(grp, 0, grp->getName()), i); // Doub: 0 instead of getAlias()+i otherwise aliases are wrong grp->bots().addChild(new CBotNpc(grp, 0, botsName.empty() ? grp->getName():botsName), i); // Doub: 0 instead of getAlias()+i otherwise aliases are wrong
CBotNpc* const bot = NLMISC::safe_cast<CBotNpc*>(grp->bots()[i]); CBotNpc* const bot = NLMISC::safe_cast<CBotNpc*>(grp->bots()[i]);
@ -702,7 +702,14 @@ CGroupNpc* CAIInstance::eventCreateNpcGroup(uint nbBots, NLMISC::CSheetId const&
if (maxTries<=0) if (maxTries<=0)
rpos = pos; rpos = pos;
} }
bot->setStartPos(rpos.x().asDouble(),rpos.y().asDouble(), randomAngle(), AITYPES::vp_auto);
float angle = 0.f;
if (orientation < (NLMISC::Pi * 2.0) && orientation > (-NLMISC::Pi * 2.0))
angle = orientation;
else
angle = randomAngle();
bot->setStartPos(rpos.x().asDouble(),rpos.y().asDouble(), angle, AITYPES::vp_auto);
} }
} }
@ -838,25 +845,27 @@ void cbEventCreateNpcGroup( NLNET::CMessage& msgin, const std::string &serviceNa
uint32 instanceNumber; uint32 instanceNumber;
sint32 x; sint32 x;
sint32 y; sint32 y;
sint32 z; sint32 orientation;
uint32 nbBots; uint32 nbBots;
NLMISC::CSheetId sheetId; NLMISC::CSheetId sheetId;
double dispersionRadius; double dispersionRadius;
bool spawnBots; bool spawnBots;
std::string botsName;
msgin.serial(messageVersion); msgin.serial(messageVersion);
nlassert(messageVersion==1); nlassert(messageVersion==1);
msgin.serial(instanceNumber); msgin.serial(instanceNumber);
msgin.serial(x); msgin.serial(x);
msgin.serial(y); msgin.serial(y);
msgin.serial(z); msgin.serial(orientation);
msgin.serial(nbBots); msgin.serial(nbBots);
msgin.serial(sheetId); msgin.serial(sheetId);
msgin.serial(dispersionRadius); msgin.serial(dispersionRadius);
msgin.serial(spawnBots); msgin.serial(spawnBots);
msgin.serial(botsName);
CAIInstance* instance = CAIS::instance().getAIInstance(instanceNumber); CAIInstance* instance = CAIS::instance().getAIInstance(instanceNumber);
if (instance) if (instance)
{ {
instance->eventCreateNpcGroup(nbBots, sheetId, CAIVector((double)x/1000., (double)y/1000.), dispersionRadius, spawnBots); instance->eventCreateNpcGroup(nbBots, sheetId, CAIVector((double)x/1000., (double)y/1000.), dispersionRadius, spawnBots, (double)orientation/1000., botsName);
} }
} }

View file

@ -207,7 +207,7 @@ public:
return NULL; return NULL;
} }
CGroupNpc* eventCreateNpcGroup(uint nbBots, NLMISC::CSheetId const& sheetId, CAIVector const& pos, double dispersionRadius, bool spawnBots); CGroupNpc* eventCreateNpcGroup(uint nbBots, NLMISC::CSheetId const& sheetId, CAIVector const& pos, double dispersionRadius, bool spawnBots, double orientation, const std::string &botsName);
/// create a new easter egg /// create a new easter egg
CBotEasterEgg* createEasterEgg(uint32 easterEggId, NLMISC::CSheetId const& sheetId, std::string const& botName, double x, double y, double z, double heading, const std::string& look); CBotEasterEgg* createEasterEgg(uint32 easterEggId, NLMISC::CSheetId const& sheetId, std::string const& botName, double x, double y, double z, double heading, const std::string& look);

View file

@ -190,7 +190,7 @@ NLMISC_COMMAND(search, "search all the data tree for a name part","<name_part>")
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
NLMISC_COMMAND(eventCreateNpcGroup, "create an event npc group", "<aiInstanceId> <nbBots> <sheet> <x> <y> [<dispersionRadius=10m> [<spawnBots=true>]]") NLMISC_COMMAND(eventCreateNpcGroup, "create an event npc group", "<aiInstanceId> <nbBots> <sheet> <x> <y> [<dispersionRadius=10m> [<spawnBots=true> [<orientation=random|-360..360> [<name>]]]]")
{ {
if (args.size()<5) if (args.size()<5)
return false; return false;
@ -231,7 +231,7 @@ NLMISC_COMMAND(eventCreateNpcGroup, "create an event npc group", "<aiInstanceId>
double x = atof(args[3].c_str()); double x = atof(args[3].c_str());
double y = atof(args[4].c_str()); double y = atof(args[4].c_str());
double dispersionRadius = 10.; double dispersionRadius = 10.;
if (args.size()>5) if (args.size()>5)
{ {
@ -248,8 +248,18 @@ NLMISC_COMMAND(eventCreateNpcGroup, "create an event npc group", "<aiInstanceId>
{ {
NLMISC::fromString(args[6], spawnBots); NLMISC::fromString(args[6], spawnBots);
} }
aiInstance->eventCreateNpcGroup(nbBots, sheetId, CAIVector(x, y), dispersionRadius, spawnBots); double orientation = 6.666;
if (args.size()>7 && args[7] != "random")
{
NLMISC::fromString(args[7], orientation);
orientation = orientation / 360.0 * (NLMISC::Pi * 2.0);
}
std::string botsName;
if (args.size()>8) botsName = args[8];
aiInstance->eventCreateNpcGroup(nbBots, sheetId, CAIVector(x, y), dispersionRadius, spawnBots, orientation, botsName);
return true; return true;
} }

View file

@ -5232,7 +5232,7 @@ NLMISC_COMMAND(setFamePlayer, "set the fame value of a player in the given facti
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
NLMISC_COMMAND(eventCreateNpcGroup, "create an event npc group", "<player eid> <nbBots> <sheet> [<dispersionRadius=10m> [<spawnBots=true>]]") NLMISC_COMMAND(eventCreateNpcGroup, "create an event npc group", "<player eid> <nbBots> <sheet> [<dispersionRadius=10m> [<spawnBots=true> [<orientation=random|self|-360..360> [<name>]]]]")
{ {
if (args.size () < 3) return false; if (args.size () < 3) return false;
GET_ENTITY GET_ENTITY
@ -5240,7 +5240,7 @@ NLMISC_COMMAND(eventCreateNpcGroup, "create an event npc group", "<player eid> <
uint32 instanceNumber = e->getInstanceNumber(); uint32 instanceNumber = e->getInstanceNumber();
sint32 x = e->getX(); sint32 x = e->getX();
sint32 y = e->getY(); sint32 y = e->getY();
sint32 z = e->getZ(); sint32 orientation = 6666; // used to specify a random orientation
uint32 nbBots = NLMISC::atoui(args[1].c_str()); uint32 nbBots = NLMISC::atoui(args[1].c_str());
if (nbBots<=0) if (nbBots<=0)
@ -5275,17 +5275,34 @@ NLMISC_COMMAND(eventCreateNpcGroup, "create an event npc group", "<player eid> <
NLMISC::fromString(args[4], spawnBots); NLMISC::fromString(args[4], spawnBots);
} }
if (args.size()>5)
{
if (args[5] == "self")
{
orientation = (sint32)(e->getHeading() * 1000.0);
}
else
{
NLMISC::fromString(args[5], orientation);
orientation = (sint32)((double)orientation / 360.0 * (NLMISC::Pi * 2.0) * 1000.0);
}
}
std::string botsName;
if (args.size()>6) botsName = args[6];
CMessage msgout("EVENT_CREATE_NPC_GROUP"); CMessage msgout("EVENT_CREATE_NPC_GROUP");
uint32 messageVersion = 1; uint32 messageVersion = 1;
msgout.serial(messageVersion); msgout.serial(messageVersion);
msgout.serial(instanceNumber); msgout.serial(instanceNumber);
msgout.serial(x); msgout.serial(x);
msgout.serial(y); msgout.serial(y);
msgout.serial(z); msgout.serial(orientation);
msgout.serial(nbBots); msgout.serial(nbBots);
msgout.serial(sheetId); msgout.serial(sheetId);
msgout.serial(dispersionRadius); msgout.serial(dispersionRadius);
msgout.serial(spawnBots); msgout.serial(spawnBots);
msgout.serial(botsName);
CWorldInstances::instance().msgToAIInstance2(instanceNumber, msgout); CWorldInstances::instance().msgToAIInstance2(instanceNumber, msgout);
return true; return true;

View file

@ -185,6 +185,7 @@ uint CMissionStepAIMsg::processEvent( const TDataSetRow & userRow, const CMissio
if( event.Type == CMissionEvent::AIMsg ) if( event.Type == CMissionEvent::AIMsg )
{ {
CMissionEventAIMsg & eventSpe = (CMissionEventAIMsg &) event; CMissionEventAIMsg & eventSpe = (CMissionEventAIMsg &) event;
nlwarning("CMissionStepAIMsg : Message from event = '%s', message of mission = '%s'", eventSpe.Msg.c_str(), Msg.c_str());
if ( eventSpe.Msg == Msg ) if ( eventSpe.Msg == Msg )
{ {
LOGMISSIONSTEPSUCCESS("wait_msg"); LOGMISSIONSTEPSUCCESS("wait_msg");

View file

@ -425,7 +425,7 @@ bool CConsumeItemTimedAction::validate(CTimedActionPhrase *phrase, CEntityBase *
{ {
// check player is sit, on a mektoub or swimming otherwise return false // check player is sit, on a mektoub or swimming otherwise return false
const MBEHAV::EMode mode = player->getMode(); const MBEHAV::EMode mode = player->getMode();
if (mode != MBEHAV::SIT && mode != MBEHAV::MOUNT_NORMAL && mode != MBEHAV::MOUNT_SWIM && mode != MBEHAV::SWIM) if (mode != MBEHAV::SIT && mode != MBEHAV::MOUNT_NORMAL && mode != MBEHAV::MOUNT_SWIM && mode != MBEHAV::SWIM && !player->isInWater())
{ {
CCharacter::sendDynamicSystemMessage(player->getId(),"CONSUMABLE_NOT_STAND_UP"); CCharacter::sendDynamicSystemMessage(player->getId(),"CONSUMABLE_NOT_STAND_UP");
return false; return false;

View file

@ -15,7 +15,7 @@ LDFLAGS = $(LD_FLAGS_CMN) \
-L$(NEL_PATH)/lib \ -L$(NEL_PATH)/lib \
-L../admin_modules \ -L../admin_modules \
-L$(RYZOM_COMMON_SRC)/game_share \ -L$(RYZOM_COMMON_SRC)/game_share \
-lgame_share \ -lgame_share \
-lnelnet \ -lnelnet \
-lnelmisc \ -lnelmisc \
-ladmin_modules \ -ladmin_modules \

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONNECTION_STATS_H #ifndef CONNECTION_STATS_H

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "nel/misc/types_nl.h" #include "nel/misc/types_nl.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef GEORGES_INTERFACE #ifndef GEORGES_INTERFACE
#define GEORGES_INTERFACE #define GEORGES_INTERFACE

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "nel/misc/i18n.h" #include "nel/misc/i18n.h"
#include "mission_compiler.h" #include "mission_compiler.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "mission_compiler.h" #include "mission_compiler.h"
#include "step.h" #include "step.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "mission_compiler.h" #include "mission_compiler.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "mission_compiler.h" #include "mission_compiler.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "nel/misc/types_nl.h" #include "nel/misc/types_nl.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <nel/misc/types_nl.h> #include <nel/misc/types_nl.h>

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdafx.h" #include "stdafx.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdafx.h" #include "stdafx.h"
#include "nel/misc/object_vector.h" #include "nel/misc/object_vector.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdafx.h" #include "stdafx.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef DISPLAY_H #ifndef DISPLAY_H
#define DISPLAY_H #define DISPLAY_H

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef NL_PLUGIN_INTERFACE_H #ifndef NL_PLUGIN_INTERFACE_H

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef TOOLSLOGIC_H #ifndef TOOLSLOGIC_H
#define TOOLSLOGIC_H #define TOOLSLOGIC_H

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef TOOLSZONE_H #ifndef TOOLSZONE_H
#define TOOLSZONE_H #define TOOLSZONE_H

View file

@ -168,6 +168,7 @@ void CPlugin::init(IPluginAccess *pluginAccess)
AFX_MANAGE_STATE(AfxGetStaticModuleState()); AFX_MANAGE_STATE(AfxGetStaticModuleState());
AfxEnableControlContainer(); AfxEnableControlContainer();
_PluginAccess = pluginAccess; _PluginAccess = pluginAccess;
_PluginName="Player Plugin";
//#undef new //#undef new
LoadDlg = new CLoadDialog; LoadDlg = new CLoadDialog;
//#define new NL_NEW //#define new NL_NEW
@ -304,3 +305,41 @@ void CPlugin::onIdle()
} }
} }
} }
std::string& CPlugin::getName()
{
return _PluginName;
}
bool CPlugin::isActive()
{
return _PluginActive;
}
bool CPlugin::activatePlugin()
{
if(!_PluginActive)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
AfxEnableControlContainer();
//_DialogFlag->Create(IDD_DIALOG_FLAGS, CWnd::FromHandle(_PluginAccess->getMainWindow()->m_hWnd));
_DialogFlag->ShowWindow(TRUE);
//_DialogFlag->init(this);
_PluginActive=true;
return true;
}
return false;
}
bool CPlugin::closePlugin()
{
if (_PluginActive)
{
//_DialogFlag->CloseWindow();
_DialogFlag->ShowWindow(FALSE);
_PluginActive=false;
return true;
}
return false;
}

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "nel/sound/u_audio_mixer.h" #include "nel/sound/u_audio_mixer.h"
#include "nel/ligo/primitive.h" #include "nel/ligo/primitive.h"
@ -40,12 +55,27 @@ private:
/// Sound plugin dialog. /// Sound plugin dialog.
CDialogFlags *_DialogFlag; CDialogFlags *_DialogFlag;
std::string _PluginName;
bool _PluginActive;
//NLSOUND::UAudioMixer *_Mixer; //NLSOUND::UAudioMixer *_Mixer;
/// the position of the listener. /// the position of the listener.
//NLMISC::CVector _ListenerPos; //NLMISC::CVector _ListenerPos;
virtual void onIdle(); virtual void onIdle();
//getting the name of the plugin
virtual std::string& getName();
//testing whether the plugin is active or not (currently in use or not)
virtual bool isActive();
virtual bool activatePlugin();
virtual bool closePlugin();
bool m_Initialized; bool m_Initialized;
}; };

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "primitive_plugin.h" #include "primitive_plugin.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "DialogFlags.h" #include "DialogFlags.h"
#include "nel/misc/sheet_id.h" #include "nel/misc/sheet_id.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdafx.h" #include "stdafx.h"
#include "sound_plugin.h" #include "sound_plugin.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "nel/sound/u_audio_mixer.h" #include "nel/sound/u_audio_mixer.h"
#include "nel/ligo/primitive.h" #include "nel/ligo/primitive.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// *************************************************************************** // ***************************************************************************
/* /*

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "nel/misc/types_nl.h" #include "nel/misc/types_nl.h"
#include "nel/misc/path.h" #include "nel/misc/path.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "skill_tree.h" #include "skill_tree.h"

View file

@ -1,2 +1,17 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdpch.h" #include "stdpch.h"

View file

@ -1,3 +1,18 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <nel/misc/types_nl.h> #include <nel/misc/types_nl.h>