Pages

Items and Cash Shop C9 Online

Items & cash shop
first of all there are three tables that controls the cash shop which we will talk about it , here it is :
1. C9Services.Server.TblShopMenuInfo
this table as its name show , it's control the menu tabs of the shop
note that there are two types of tabs here, the main tabs like fashions for example
and sub-tabs like Fashion Set which is sub tab of fashions .

lets have some info about columns :)
cBranchId

this column define the id of this shop which later will be used for two things:

define the parent tab of sub-tab
or connect the product to some tab

but as we see in table (as in image too)
there are a convention way of how they are written
if you take a deeper look you'll find that the main tabs are defined as shop0X
and the sub tabs like shop_0X_tap_0Y , you are not obliged to follow this convention,but it just will make it clear when use.

cBranchName

this column will define what is the visible name of this tab in game

cSuperBranchId & cBranchDepth

these two columns seems to be connected to each other 
the first one define which tabs is the parent of this tab if it child
and the second define its depth so if it main tap then depth=1
and if sub then depth=2
also if depth= 1 -> SuperBranchId = BranchID
but if depth=2 -> SuperBranchId = {the parent tab id for example shop01}

cSortOrder

here you define the order of tabs , so which tabs should be before which

cProductCount

this column from its name is supposed to have the count of product in this section but i dnt know what is the benefits of it , also in all rows i found its value equal to zero

cIsUse

control if tab should be used and visible or not

cBranchKey

this coulmn should have unique integer 
note this column is auto generated

Thats all the columns in this table , uou can check and compare by yourself but before we moveing to another table here is a custom tab i created:
note for the sort effect.

now lets move to another table which is 

2. C9Services.Server.TblShopMenuInfo
this table will define the product box , and when i say product box i mean this :
ok now lets explain some of columns - note that i dnt know the functionalty of all columns and some columns its value is unkown so maybe you can help me to make this tutorial better

cBranchId = shop tap id and usually its for sub-tap
cProductId = this column contains two parts "K_C9_" which is fixed text i think

and the other part is the string id of item you want to add which should be of length of 8 digits so for example if you have item of id 1234 then the product id will be K_C9_00001234
also if id is 123456 then product id will be K_C9_00123456
--update--
you can write the id directly like 123456 without "K_C9_" and the same result will be

Note: the ProductID is not the same as ItemID and the id here should be the SaleProduct ID (in attachment a list of saleProduct i extracted from c9t file 
--update--

cProductName = the visible name on the product box which should be the item name
cMoneyCode = this column should determine which coin should be used but i dnt know how to use
cPrice = the visible price on product box but note when you buy item it will use package price from table ProductDetails not this price 
cDiscountRate = this column should define the discount rate but how to use i dnt know
cRegDate = when the product have been registered
cStartDate = havn't tested it yet but maybe it define when should the product be visible to players so they can but it
cEndDate= also this column not tested but it related to cStartDate but should define when its end so it will invisible to user
cProductDesc= this column define the description of product
cGiftYN = define if user can gift this product to other players (0=No, 1 =YES)
cDispOrder = order priorty when displaying items in selected taps
cProductType = this is the text written in the (red | blue) label of product box which contain two parts separated by "," the first is the text and second is the color (R=Red,G=Blue)
cDiscountInfo = simple description about discount this visible beside the price like in above image in last product box "WareHouse Expantion" its defined here as "[50%]"
ClassName/ClassKey => determine which class can buy this item the classname define the visible text class key define the class id [0=fighter, 1=hunter, 3=shaman, 4 =witchblade, 255=common(all classes)
cRefundYN= define if user can refund his payment of this product but how to refund i still dnt know
cPageNum = page priority when displaying items
cRecommend = is it recomend product , should be displayed in recommed tab
cLevelMin/cLevelMax = min and max level should display or use this item


note that i left some column that i dnt know its usage 

phew , lets take a break , im little tired hehe 

ok , now to last table which define the packages of product 

3. C9Services.Server.TblShopProductDetailInfo
lets take a look at columns

cChildProductId=> define the package id
cProductId=> define the product id so this package for which product
cPrice=> the price of the package and should be >0 otherwise when u but the package it will say invalid product info
cUnitName=> package name which will be visible when you choose packages menu

in fact other column i dnt know for what is it used so i hope someone discover it and share with us 

now lets talk about insert qeury , before you excute the insert query you have to turn off the consntraint check for ProductDetials table otherwise query will not excute 

here is a query for add an item with package of name "unlimited" :)
ALTER TABLE [C9Service].[Server].[TblShopProductDetailInfo] NOCHECK CONSTRAINT ALL


INSERT [C9Service].[Server].[TblShopProductInfo] ([cBranchId], [cProductId], [cProductName], [cMoneyCode], [cPrice], [cDiscountRate], [cRegDate], [cStartDate], [cEndDate], [cProductDesc], [cGiftYN], [cSellTotalCount], [cDuplicateSell], [cUnitName], [cProductType], [cDispOrder], [cDiscountInfo], [cClassName], [cClassKey], [cRefundYN], [cPageNum], [cRecommend], [cLevelMin], [cLevelMax]) VALUES (N'shop02_tap01', N'K_C9_00009273', N'Simple picture frame', N'GP_P_COIN', 50,10, N'2.01111e+013', N'2.01111e+013', N'2.01111e+013', N'guild house wall decoration , a simple picture frame for nice wall', 1, 0, 1, N'5个', N'NEW,R', 3, '[10%]', N'Common', 255, 1, 1, 1, 0, 0)
INSERT [C9Service].[Server].[TblShopProductDetailInfo] ([cChildProductId], [cProductId], [cPrice], [cUnitName], [cValidTerm], [cPossibleLevel], [cUseCount], [cPeriod], [cCoinPrice], [cGameMoneyPrice], [cClassName]) VALUES (N'K_C9_00009273', N'K_C9_00009273', 50, N'Unlimited', 0, 0, 1, 0, 0, 0, N'All occupations')
ALTER TABLE [C9Service].[Server].[TblShopProductDetailInfo] CHECK CONSTRAINT ALL
before we end i want to mention again about itemID and ProductID of cash shop
dnt put ItemID in product but SaleProduct id from attached list

cuz here in query we used id =>9273 but cash shop show item -> misty jerian set
but when use this command /itemkey 92731
its character rename ticket
also item id 13002 in gm command get nothing but in cashshop its some of hunter chestpiece

here an image for adding character rename ticket
BTW, i think they have a stupid cash shop system

i want to note when you change any thing in cash shop you dnt need to restart the all servers but just restart world server without even logout from your character just close cash shop and reopen it and every thing will be updated :)

hemaprince
Ragezone
Read more ...

NPC Kinds Kal Online

NPC Kinds (InitNPC)

NPC Kind 1
(gennpc (index 1) (country 2) (kind 1) (shape 84) (html 1) (map 0) (xy 257705 258644 16103) (dir 257719 258656))

Kind 1 = your bog standard NPC. These types of NPC's are the easiest to create, you can link a quest up for them if you wish using the e.pk params.

NPC Kind 2
(gennpc (index 16) (country 2) (kind 2) (shape 228) (html 27) (map 0) (xy 257090 259400 16806) (dir 257075 259391))

Kind 2 = your bog standard Guard NPC. These types of NPC's are just for one line words. You can also use this same NPC kinda as Kinda 1.

NPC Kind 3

(gennpc (index 73) (country 2) (kind 3) (shape 228) (quest 2 1) (map 0) (xy 257431 258837 16960) (dir 257432 258821))

Kind 3 = your Direct Quest NPC. These types of NPC's are for straight up quest activations. I find it easier however to use Kinda 1 and link up the e.pk params but for something that players will NEED like an event quest NPC, you will be better off using this NPC kind.

NPC Kind 4

(gennpc (index 374) (country 2) (kind 4) (shape 17) (html 248) (scenario 0 645) (map 3) (xy 57366 9926 30799) (dir 57366 9060))

Kind 4 = Scenario NPC. These types of NPC's are for example, Scenario's like D3 lord summon or for the Instance dungeon for another example.

NPC Kind 5

(gennpc (index 396) (country 2) (kind 5) (shape 20) (html 259) (teleport 3 57366 10034) (map 3) (xy 57370 7727 29999) (dir 57370 7758))

Kind 5 = Teleport NPC. These types of NPC's are for use for teleporting players.

NPC Kind 6

(gennpc (index 449) (country 2) (kind 6) (shape 28) (html 273) (scenario 30 760) (map 4) (xy 35710 37420 30000) (dir 35716 37411))

Kind 6 = Door System NPC. These types of NPC's are for use for Scenarios such as the D4 door systems. These NPC's Have an "open" animation as well as the 1 standard animation after the correct scenario params are met then the 2nd animation will be activated letting the player pass through the NPC.

NPC Kind 7

(gennpc (index 455) (country 2) (kind 7) (shape 29) (html 274) (map 0) (xy 248701 261499 24273) (dir 248701 261505) (sgxy 248651 261501 24354) (sgdir 248651 261537) (cid 1) (warrelation 2))

Kind 7 = Cannon Set up Point NPC. These are specifically designed to only be activated for use during castle war. NOTE how the Warrelation and CID also the extra params that the NPC has are highlighted in green.

NPC Kind 8

(gennpc (index 520) (country 2) (kind 8) (shape 40) (html ) (map 0) (xy 257213 257744 16110) (dir 256382 260303))

Kind 8 = Door System #2 NPC. These types of NPC's are for use for NON Scenario door systems. These NPC's Have an "open" animation as well as the 1 standard animation after the correct scenario params are met then the 2nd animation will be activated letting the player pass through the NPC. (These ones are not QUEST BASED! like Kind 6) These can just be clicked on and they will open.

Read more ...

Add Resurrection Scrolls C9 Online

C9 - Adding Resurrection Scrolls into the Database.
How to add Resurrection Scrolls:
Use the query window and then execute it.
USE [C9World]
GO

DECLARE @return_value int,
@pSetRsrtCoin int

SELECT @pSetRsrtCoin = 6000

EXEC @return_value = [Game].[UspSetRsrtCoin]
@pPcNo = 2,
@pSetRsrtCoin = @pSetRsrtCoin OUTPUT,
@pMaxRsrtCoin = 6000, 
@pIsCheckBound = 1

SELECT @pSetRsrtCoin as N'@pSetRsrtCoin'

SELECT 'Return Value' = @return_value

GO

I was using MSSQL 2008 R2
@pPcNo = 2, This is the account number found in C9Unity Auth.TBLAccount table "cAccNo".

@pSetRsrtCoin, @pMaxRsrtCoin i set those both to the same value and after relogging into the server it is updated.

Juntoa
Ragezone
Read more ...

Edit Title of the Picture Jade Dynasty

Create the title of the picture
We need:
1. interfaces.pck and surfaces.pck
2. elements.data
3. tasks.data
And of course the editor tasks.data and elements.data and unpacking pck.
Unpack interfaces.pck and surfaces.pck. After go to interfaces.pck.files\interfaces\script\config
We find there title_def_u.lua
Open it in notepad and find something like that:
title_definition['12004'] = {id = 12004, note = "^f95db9★$S, ты мой король!★" ,desc = "Праздничный титул."}

green fonts = yours id titul
Make a copy of it and assign, for example, 30000. For images edit this:
title_definition['30000'] = {id = 30000, note = "^ffff00Тестовый титул&image(ingame\\test.tga)&" ,desc = "Особый титул."}
(test.tga - your image of the title), it is desirable not to make the size larger 90h40 otherwise you may not see a picture.
Then go to unpacked surfaces.pck surfaces.pck.files \ surfaces \ ingame
Create test.tga, draw whatever you want and save.
Repack surfaces.pck and interfaces.pck.

Editing elements.data open it in sELedit or any other editor available to you, open the list 35 QEST START ITEM and make a copy of any item and give him id such as 60315, in the line where it TASK1 write your future id for example 59128 and save it.

Editing tasks.data open in the editor and find any quest that activates the title, make a copy and give it the id you specified in elements.data 59128. write the name of the quest and go to the Rewards section and look below the cell id Title to inscribe our title, and save it.



Done!


extazy20
Ragezone
Read more ...

DayZ Standalone

DAYZ STANDALONE CLIENT+SERVER+SAVE GUIDE FOR DUMMIES (who want to play with friends and not get raped constantly except by zombies)
first you should know you need at least 6gb of memory to host and play on same pc .. it will work with less but your disk drive is going to take a dump because it will be used as a ram slave..
1. download client

2. download server

3. download fix

4. download webserver (allows you to save progress even with server stopped) Usbwebserver V8
you can also use wamp or xamp ...

5. download servlet

6. extract Arena_Client 0.54.rar to where you want to keep your game (d:\Games\DayZSA) for example

7. go to Arena Server Files.rar and extract all into game folder BUT SKIP:
LumaEmu.ini
Steam.dll
steam_api.dll
if you later start game and get "failed to launch exe" you must have overwritten them by mistake..
go back to Arena_Client 0.54.rar and copy from there just the 3 files

8. (optional - if you want to disable all automated server restarts) edit @Start SERVER.bat and delete all and just put this in:
DayZServer54.exe -server -port=2302 -config=config\server.cfg -cfg=config\basic.cfg -profiles=dayzea.ChernarusPlus

9. edit LumaEmu.ini and write your name in all the 3! places (or use Change_nick.cmd)

10. apply 054_FIX.exe (move it to game folder first) its actually a rar sfx file so if you dont want the game to start after u apply it just use winrar to extract the files (or press ctrl+pgdn in total commander to enter the archive)

11. extract USBWebserver v8.6.zip to anywhere you like .. I put mine in Dayz\_webserver
(or install xamp,wamp)

12. extract DayzServerlet.rar to _webserver\root\DayzServlet
(or C:\wamp\www\DayzServlet or C:\xampp\htdocs\DayzServlet)

13. edit Dayz\MPMissions\dayzea.ChernarusPlus\dbSelectHost.sqf and replace whats there with
dbSelectHost "http://localhost:8080/DayzServlet/";
//dbLoadHost;
(for wamp or xamp just use http://localhost/DayzServlet/ )

14. !!! go to MPMissions and run pack.bat

15. edit config\server.cfg and change
hostname (this is not the ip just server title for people to see)
password (you cloud change it if you dont want other people joining.. remember it for your friends)
passwordAdmin (change this just in case)
maxPlayers (10 is enough)
reportingIP (this should be your tunngle or hamachi ip ... your friends will type in that in the remote field

16. start webserver from _webserver\usbwebserver.exe
*wait for apache and mysql to go green
(if you use wamp/xamp start those BUT if you used port 8080 make sure you tell that to apache.. edit httpd.conf)

you can now test if it works by clicking this http://localhost/DayzServlet/ (or this http://localhost:8080/DayzServlet/ depending on what port you used)
if a 055 comes up it works

17. start server using @Start SERVER.bat
*if you have a slow comp you should also wait for the "Задание загружено." line but not mandatory

18. start game using @Start.cmd

19. connect by going to "Change Server" then "Remote" then type in localhost (friends will type in ur hamachi / tungle ip)

20. profit!

21. if you never played dayz you wont profit for long so heres some small tips:
-before you connect customize your character.. you wont be able to do so after unless you kill yourself
-if a zombie comes at you hold A (strafe left) and face it using mouse.. basically spin around it hitting it with crowbar
(press 1 to select crowbar then space to arm it then left click multiple times aiming for head to wreck it)
-if you start bleeding press tab and drag-drop your shirt on the ground (from right to left) then right click it and select "Tear into rags" then select them in inventory and "Use" to bandage yourself
-eat all the food and water you find until you get the LIGHT-green energised and hydrated statuses
-to find your friends tell them to look for a city sign then use this map DayZ Standalone Chernarus+ Map - DayZDB

Read more ...

Fix School Door DayZ

That guide about how to do doors of Guard house openable. But we have an 1 problem. If we open 1 door, then all doors in building is opening. o_O

Originnaly we only adding in config, user action and animation strings.

1. Extract the "config.bin" file from "structures_military.pbo"
2. Convert "config.bin" with UnRap to "config.cpp"
3. Open "config.cpp" with notepad and search for
class Land_Mil_Guardhouse : HouseNoDestruct {
        scope = 1;
        model = "\dz\structures\Mil\Mil_Guardhouse.p3d";
than rewrite like that
class Land_Mil_Guardhouse : House {
        scope = 1;
        model = "\dz\structures\Mil\Mil_Guardhouse.p3d";
than go to down and there we have
class Doors {
            class Doors1 {
than we rewrite like this
class AnimationSources {
            class Doors1 {
than, after this
class Doors4 {
                displayName = "door 4";
                component = "Doors4";
                soundPos = "doors4_action";
                animPeriod = 1;
                initPhase = 0;
                initOpened = 0.5;
                armor = 0.2;
                soundOpen = "doorMetalSmallOpen";
                soundClose = "doorMetalSmallClose";
                soundLocked = "doorWoodRattle";
            };
        };
add this
class UserActions 
        {
            class OpenDoors1
            {
                displayNameDefault = "Open door";
                displayName = "Open door";
                position = "Doors1_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors1"" < 0.5";
                statement = "this animate [""Doors1"", 1];";
            };
            class CloseDoors1
            {
                displayNameDefault = "Close door";
                displayName = "Close door";
                position = "Doors1_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors1"" >= 0.5";
                statement = "this animate [""Doors1"", 0];";
            };
            class OpenDoors2
            {
                displayNameDefault = "Open door";
                displayName = "Open door";
                position = "Doors2_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors2"" < 0.5";
                statement = "this animate [""Doors2"", 1];";
            };
            class CloseDoors2
            {
                displayNameDefault = "Close door";
                displayName = "Close door";
                position = "Doors2_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors2"" >= 0.5";
                statement = "this animate [""Doors2"", 0];";
            };
            class OpenDoors3
            {
                displayNameDefault = "Open door";
                displayName = "Open door";
                position = "Doors3_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors3"" < 0.5";
                statement = "this animate [""Doors3"", 1];";
            };
            class CloseDoors3
            {
                displayNameDefault = "Close door";
                displayName = "Close door";
                position = "Doors3_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors3"" >= 0.5";
                statement = "this animate [""Doors3"", 0];";
            };
            class OpenDoors4
            {
                displayNameDefault = "Open door";
                displayName = "Open door";
                position = "Doors4_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors4"" < 0.5";
                statement = "this animate [""Doors4"", 1];";
            };
            class CloseDoors4
            {
                displayNameDefault = "Close door";
                displayName = "Close door";
                position = "Doors4_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors4"" >= 0.5";
                statement = "this animate [""Doors4"", 0];";
            };
        };
then save file and add it to "structures_military.pbo"
go to game and be happy) Doors work

For the lazzy peoples - here is full script.
find the "class Land_Mil_Guardhouse : HouseNoDestruct" and replace all with that.
class Land_Mil_Guardhouse : House {
        scope = 1;
        model = "\dz\structures\Mil\Mil_Guardhouse.p3d";

        class AnimationSources {
            
            class Doors1 {
                displayName = "door 1";
                component = "Doors1";
                soundPos = "doors1_action";
                animPeriod = 1;
                initPhase = 0;
                initOpened = 0.4;
                armor = 0.2;
                soundOpen = "doorWoodSmallOpen";
                soundClose = "doorWoodSmallClose";
                soundLocked = "doorWoodRattle";
            };
            
            class Doors2 {
                displayName = "door 2";
                component = "Doors2";
                soundPos = "doors2_action";
                animPeriod = 1;
                initPhase = 0;
                initOpened = 0.4;
                armor = 0.2;
                soundOpen = "doorWoodSmallOpen";
                soundClose = "doorWoodSmallClose";
                soundLocked = "doorWoodRattle";
            };
            
            class Doors3 {
                displayName = "door 3";
                component = "Doors3";
                soundPos = "doors3_action";
                animPeriod = 1;
                initPhase = 0;
                initOpened = 0.2;
                armor = 0.2;
                soundOpen = "doorWoodSmallOpen";
                soundClose = "doorWoodSmallClose";
                soundLocked = "doorWoodRattle";
            };
            
            class Doors4 {
                displayName = "door 4";
                component = "Doors4";
                soundPos = "doors4_action";
                animPeriod = 1;
                initPhase = 0;
                initOpened = 0.5;
                armor = 0.2;
                soundOpen = "doorMetalSmallOpen";
                soundClose = "doorMetalSmallClose";
                soundLocked = "doorWoodRattle";
            };
        };
        class UserActions 
        {
            class OpenDoors1
            {
                displayNameDefault = "Open door";
                displayName = "Open door";
                position = "Doors1_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors1"" < 0.5";
                statement = "this animate [""Doors1"", 1];";
            };
            class CloseDoors1
            {
                displayNameDefault = "Close door";
                displayName = "Close door";
                position = "Doors1_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors1"" >= 0.5";
                statement = "this animate [""Doors1"", 0];";
            };
            class OpenDoors2
            {
                displayNameDefault = "Open door";
                displayName = "Open door";
                position = "Doors2_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors2"" < 0.5";
                statement = "this animate [""Doors2"", 1];";
            };
            class CloseDoors2
            {
                displayNameDefault = "Close door";
                displayName = "Close door";
                position = "Doors2_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors2"" >= 0.5";
                statement = "this animate [""Doors2"", 0];";
            };
            class OpenDoors3
            {
                displayNameDefault = "Open door";
                displayName = "Open door";
                position = "Doors3_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors3"" < 0.5";
                statement = "this animate [""Doors3"", 1];";
            };
            class CloseDoors3
            {
                displayNameDefault = "Close door";
                displayName = "Close door";
                position = "Doors3_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors3"" >= 0.5";
                statement = "this animate [""Doors3"", 0];";
            };
            class OpenDoors4
            {
                displayNameDefault = "Open door";
                displayName = "Open door";
                position = "Doors4_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors4"" < 0.5";
                statement = "this animate [""Doors4"", 1];";
            };
            class CloseDoors4
            {
                displayNameDefault = "Close door";
                displayName = "Close door";
                position = "Doors4_action";
                radius = 3;
                onlyForPlayer = 0;
                condition = "this animationPhase ""Doors4"" >= 0.5";
                statement = "this animate [""Doors4"", 0];";
            };
        };
    };
};
If add "class UserActions" for school building, doors work's too.

2fed
Ragezone
Read more ...

Fix Bouncy Helicopters The War Z

[Tutorial] FIX Bouncy Helicopters
Hey guys! Fixed the helicopters in codex's source.

Replace this function
void obj_Vehicle::HelicopterPhysx()
For mine
void obj_Vehicle::HelicopterPhysx() // controls of helicopter
{
 if (isHelicopter == true)
 {
  const float fTimePassed = r3dGetFrameTime();
  PxTransform pose = vd->vehicle->getRigidDynamicActor()->getGlobalPose();
  r3dVector angles;
  r3dPoint3D position(0,0,0);
  PxVec3 HeliGravity(0,0,0);
  PxVec3 NormGravity(0,9.81,0);


  if (HasDriver() && HSpeed > 70)
  {
   if (Keyboard->IsPressed(kbsRight)) // Rotate Left
   {
    if (!(Keyboard->IsPressed(kbsW) || Keyboard->IsPressed(kbsS)))
     HelyX+=0.5f;
   }
   else if (Keyboard->IsPressed(kbsLeft)) // rotate Right
   {
    if (!(Keyboard->IsPressed(kbsW) || Keyboard->IsPressed(kbsS)))
     HelyX-=0.5f;
   }
   if (Keyboard->IsPressed(kbsW) && distanceFromGround>=5) // move front
   {
    HeliGravity = PxVec3(0,-1.0,0);
    if (HelyY<15.0f)
     HelyY+=0.5f;
    //HelyUp=-0.1f;


    if (HelyFB>1 && FB>=0)
     FB=HelyFB-=0.25f;
   }
   else {
    if (FB >0 && HelyFB<20)
     FB=HelyFB+=0.05f;


    if (HelyY>0)
    {
     HelyY-=0.5f;
     if (HelyY<0) HelyY = 0;
    }
   }
   if (Keyboard->IsPressed(kbsS) && distanceFromGround>=5) // Move back
   { 
    if (HelyY>-15.0f)
     HelyY-=0.5f;
    
    if (HelyFB>5 && FB<=0)
     FB=abs(HelyFB-=0.5f)*-1;
   }
   else {
    if (FB <0 && HelyFB<20)
     FB=abs(HelyFB+=0.05f)*-1;
    if (HelyY<0)
    {
     HelyY+=0.5f;
    }
   }
   if (Keyboard->IsPressed(kbsD) && distanceFromGround>=10) // move Right
   {
    if (HelyZ>-30.0)
     HelyZ-=0.5f;


    if ((Keyboard->IsPressed(kbsW) || Keyboard->IsPressed(kbsS)))
    {
     HelyX+=0.5f;
    }
    else {
     if (HelyLR>5 && LR>=0)
      LR=HelyLR-=0.5f;
    }
   }
   else {
    if (LR >0 && HelyLR<20)
     LR=HelyLR+=0.1f;
    if (HelyZ<0)
    {
     HelyZ+=0.5f;
    }
   }


   if (Keyboard->IsPressed(kbsA) && distanceFromGround>=10) // move Left
   {
    
    if (HelyZ<30.0)
     HelyZ+=0.5f;


    if ((Keyboard->IsPressed(kbsW) || Keyboard->IsPressed(kbsS)))
    {
     HelyX-=0.5f;
    }
    else {
     if (HelyLR>5 && LR<=0)
      LR=abs(HelyLR-=0.5f)*-1;
    }


   }
   else {
    if (LR <0 && HelyLR<20)
     LR=abs(HelyLR+=0.1f)*-1;


    if (HelyZ>0)
    {
     HelyZ-=0.5f;
     if (HelyZ<0) HelyZ = 0;
    }
   }
   if (Keyboard->IsPressed(kbsQ) && HSpeed > 70) // move up
   {
    //r3dOutToLog("###### distanceFromGround %f\n",distanceFromGround);
    //if (distanceFromGround<100)
     //HelyUp=0.1f;
    HeliGravity = PxVec3(0,2,0); //m70b1jr gravity
   }
   else if (Keyboard->IsPressed(kbsZ)) // Move down
   {
    HeliGravity = PxVec3(0,-1,0);
    //HelyUp=-0.1f;
   }
  }
  else {
   
   if (distanceFromGround>0)
   {
    if (HSpeed < 50 || !CheckFuel())
    {
     //r3dOutToLog("######## HSpeed: %f\n",HSpeed);
     HeliGravity = PxVec3(0,-9.81f,0);
     if (HelyUp>0)
      HelyUp=-0.1f;
    }
   }
  }
  pose.p.y+=HelyUp;
  if (HelyFB>=20)
   FB=0;
  if (HelyLR>=20)
   LR=0;
  //r3dOutToLog("######## HelyFB: %f FB: %f\n",HelyFB,FB);
  position = r3dPoint3D(pose.p.x,pose.p.y,pose.p.z) + (GetvForw() / FB) + (GetvRight() / LR);
    if (HelyUp<0)
    {
     HelyUp+=0.001f;
    }
    else if (HelyUp>0)
    {
     HelyUp-=0.001f;
     if (HelyUp<0) HelyUp = 0;
    }
        if (isHelicopter == true)
  {
  g_pPhysicsWorld->PhysXScene->setGravity(HeliGravity); // m70 test NormGravity
  }
  else if (isHelicopter != true)
  {
   g_pPhysicsWorld->PhysXScene->setGravity(NormGravity);
  }
  
  
  D3DXMATRIX RotateMatrix,RotateMatrix2,toOrigin,fromOrigin,boneTransform;
  D3DXMatrixTranslation(&toOrigin, -GetPosition().x, -GetPosition().y, -GetPosition().z);
  D3DXMatrixTranslation(&fromOrigin, pose.p.x, pose.p.y, pose.p.z);
  
  D3DXMatrixRotationYawPitchRoll(&RotateMatrix,R3D_DEG2RAD(HelyX),R3D_DEG2RAD(HelyY),R3D_DEG2RAD(HelyZ));
  D3DXMatrixMultiply(&boneTransform, &fromOrigin, &RotateMatrix);


  D3DXMatrixMultiply(&boneTransform, &boneTransform, &toOrigin);


  PxMat33 orientation(PxVec3(boneTransform._11, boneTransform._12, boneTransform._13),
      PxVec3(boneTransform._21, boneTransform._22, boneTransform._23),
      PxVec3(boneTransform._31, boneTransform._32, boneTransform._33));
  pose.q = PxQuat(orientation);


  /*D3DMATRIX m = GetRotationMatrix();*/
  pose.p.x=position.x;//HelyFB;
  pose.p.z=position.z;//HelyLR;
  
  /*HelyLR=position.z;
  HelyFB=position.x;*/
  vd->vehicle->getRigidDynamicActor()->setGlobalPose(pose);
  SetPosition(r3dPoint3D(position.x,pose.p.y,position.z)); //Another test
  r3dPoint3D vel = GetVelocity();
  vel.x *= pose.p.x;
  vel.y *= pose.p.y;
  vel.z *= pose.p.y;
  if(vel.Length() < 0.001f) vel = r3dPoint3D(0, 0, 0);
  SetVelocity(vel);
 }
}

Fixed.
Current bugs: Even when not in the helicopter, it gains altitude. Will be fixing here in a bit.

m70b1jr
Ragezone
Read more ...

Change Starting Items MU Online Season 8

Change the default starting items - Season 8
Run this query for all class ID's to have an inventory with 0 items.
ClassID's
DK = 16
ELF = 32
WIZ = 0
MG = 48
DL = 64
SUM = 80
RF = 96

To change the default items you have to create a new character and log out. Change the items from that character in IzsMuEditor (or another editor). Open SQL Server Management Studio and select top 1000 rows of dbo.Character. Right Click the inventory of that character and copy. Paste that value in the upper query to change the default items.
UPDATE DefaultClassType
SET Inventory = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
WHERE Class = '0'


awesomo
Ragezone
Read more ...