elitepvpers

elitepvpers (https://www.elitepvpers.com/forum/)
-   Nostale (https://www.elitepvpers.com/forum/nostale/)
-   -   [Release/OpenNos] Prestige System (https://www.elitepvpers.com/forum/nostale/4498176-release-opennos-prestige-system.html)

ImTheReal 06/30/2018 17:22

[Release/OpenNos] Prestige System
 
Hey folks,
today i wanna release a very simple prestige System.

Informations:
Spoiler:
This System is just a simple one.
By using it, you will be able to reset your Level, Hero Level, Joblevel and also gift Items to other players.

Step 1: Add a CommandPacket!
- For this action, you need to visit /OpenNos.GameObjects/Packets/CommandPackets. You need to create a class, which is called "PrestigePacket.cs".
After doing this, you need to implement a code.
Spoiler:
Code:

using OpenNos.Core;
using OpenNos.Domain;

namespace OpenNos.GameObject.CommandPackets
{
    [PacketHeader("$Prestige", PassNonParseablePacket = true, Authority = AuthorityType.User)]
    public class PrestigePacket : PacketDefinition
    {
      //You can add a Helper, but this isnt usefull at all.
    }
}


Thats the command Packet

Step 2: Creating a Handler!
- Visit /OpenNos.Handler/CommandPacketHandler.cs
After you opened it up, you can create a new Code.
Spoiler:
Code:

/// <summary>
/// $Prestige
/// </summary>
/// <param name="prestigePacket"></param>
public void Prestige(PrestigePacket prestigePacket)
        {
            if (Session.Character.Level == 99)
            {
            //-------------------------------------------------------------
            //Now add you actions
            //For example
            //Session.Character.Level = 1;
            //Session.Character.JobLevel = 1;
            //Session.Character.HeroLevel = 0;
            //Now add your Benefits
            //For example: Compliment, Reputation, Gold
            //For this, you have to add Session.Character.and here you can
            //add your wished benefit like Session.Character.Compliment = 50;
            //-------------------------------------------------------------
            Session.Character.Level = 1; //Makes Character Lvl 1
            Session.Character.JobLevel = 1; //Makes Character JLvl 1
            Session.Character.HeroLevel = 0; //Makes Character HLvl 0
            Session.Character.Compliment = 50; //Adds 50 Compliment
            Session.Character.GiftAdd(1, 1); //Adds your gift to the player
            }
            else
            {
            Session.SendPacket("msg 5 Your Level is not high enough!");
            //Add the message, which will pop up, when Player has
            //not the requirements.
            }
        }


Requirements
To add the Code: Knowledge 4/10
To edit it the way you want: 5/10
To add more benefits, or recode it: 7/10

Hope it helped ya guys out!

Greetings,
Brix - Gardia Systems Owner

Voria 06/30/2018 17:50

Thanks for Release @[Only registered and activated users can see links. Click Here To Register...] Good Job

Saber none 06/30/2018 17:57

Thx m8 I appreciate that, but are you sure about the first two requirements? Thats basically copy and paste.

ImTheReal 06/30/2018 18:01

Quote:

Originally Posted by mix0067@ (Post 36984763)
Thx m8 I appreciate that, but are you sure about the first two requirements? Thats basically copy and paste.

I said that, to show how easy it is to add these. :)
And thanks!

Quote:

Originally Posted by Voria (Post 36984749)
Thanks for Release @[Only registered and activated users can see links. Click Here To Register...] Good Job

Thanks!! :)

erixor 07/01/2018 17:58

This is not a prestige system, this is a single if statement (and yet you managed to hardcode it, and make it wrong)

- Don't hardcode lvl 99, on Ciapa's source you have a configuration manager & on ON.NW source you have everything stored in ServerManager, which is a bit better.

- Hardcoded packet strings is not a viable or maintainable solution

- Your else condition is useless

- You don't add 50 compliment, you set the compliment of the character to 50, no matter the prestige

If anyone want's to make a prestige system, this is definately not a good way (I'm talking for developers of course, not copy & paste leechers)


Anyways, that was just my opinion, thanks for contributing to this community

ImTheReal 07/01/2018 23:53

Quote:

Originally Posted by erixor (Post 36986581)
This is not a prestige system, this is a single if statement (and yet you managed to hardcode it, and make it wrong)

- Don't hardcode lvl 99, on Ciapa's source you have a configuration manager & on ON.NW source you have everything stored in ServerManager, which is a bit better.

- Hardcoded packet strings is not a viable or maintainable solution

- Your else condition is useless

- You don't add 50 compliment, you set the compliment of the character to 50, no matter the prestige

If anyone want's to make a prestige system, this is definately not a good way (I'm talking for developers of course, not copy & paste leechers)


Anyways, that was just my opinion, thanks for contributing to this community

Of course it is not the right way but, i like how it works and the else statement is just a checker. It works if u know how. And ye, it just set the Compliments to 50 cuz u forgot to add "+" which was a typo. It is a Prestige System, just simple made.
- Sets Level, Joblevel and Hero Level to 1
- Able to Gift Items to Player
- Can check if Player has the requirements. (Even if its hardcoded its not possible to use it without the requirements)


But thanks for your Opinion

Zanouu 07/02/2018 06:03

Code:

        public void Prestige(Prestige PrestigePacket)
        {
                        if (Session.CurrentMapInstance.MapInstanceType == MapInstanceType.BaseMapInstance)
                        {
                                if (Session.Character.Level == ServerManager.Instance.Configuration.MaxLevel
                                        && Session.Character.JobLevel == ServerManager.Instance.Configuration.MaxJobLevel
                                        && Session.Character.HeroLevel == ServerManager.Instance.Configuration.MaxHeroLevel)
                                {
                                        if (Session.Character.Inventory.All(i => i.Type != InventoryType.Wear))
                                        {
                                                Session.Character.ChangeClassPrestige(ClassType.Adventurer);
                                                Session.Character.Prestige += 1;
                                                ServerManager.Instance.ChangeMap(Session.Character.CharacterId);
                                                //  RewardsHelper.Instance.GetLevelUpRewards(Session);
                                                LogHelper.Instance.InsertCommandLog(Session.Character.Name, Session.Character.CharacterId, PrestigePacket, Session.IpAddress);
                                        }
                                        else
                                        {
                                                Session.SendPacket(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("EQ_NOT_EMPTY"), 0));
                                        }
                                }
                                else
                                {
                                        Session.SendPacket(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("NOT_LEVEL_PRESTIGE"), 0));
                                }
                        }
        }


Blowa 07/02/2018 10:16

Quote:

Originally Posted by Zanouu (Post 36987617)
Spoiler:
Code:

public void Prestige(Prestige PrestigePacket)
{
        if (Session.CurrentMapInstance.MapInstanceType != MapInstanceType.BaseMapInstance)
        {
                return;
        }
       
        if (Sesssion.Character.Level != ServerManager.Instance.Configuration.MaxLevel ||
                Session.Character.JobLevel != ServerManager.Instance.Configuration.MaxJobLevel ||
                Session.Character.HeroLevel != ServerManager.Instance.Configuration.MaxHeroLevel)
        {
                Session.SendPacket(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("NOT_LEVEL_PRESTIGE"), 0));
                return;
        }
       
       
        if (Session.Character.Inventory.Any(s => s.Type == InventoryType.Wear))
        {
                Session.SendPacket(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("EQ_NOT_EMPTY"), 0));
                return;
        }
       
        Session.Character.ChangeClassPrestige(ClassType.Adventurer);
        Session.Character.Prestige += 1;
        ServerManager.Instance.ChangeMap(Session.Character.CharacterId);
        //  RewardsHelper.Instance.GetLevelUpRewards(Session);
        LogHelper.Instance.InsertCommandLog(Session.Character.Name, Session.Character.CharacterId, PrestigePacket, Session.IpAddress);
}


As I've already told you, invert your conditions and checks "errors" before your processing to reduce code's nesting (like i modified)

[NH]Pyro 07/10/2018 18:22

Use RagePoint for identify prestige!!!

ImTheReal 07/11/2018 23:04

Quote:

Originally Posted by [NH]Pyro (Post 37003963)
Use RagePoint for identify prestige!!!

Sounds cool, i personally used Compliments but RagePoint is also cool to use.

redbull2905 07/18/2018 21:13

Quote:

Originally Posted by ImTheReal (Post 36984691)
Hey folks,
today i wanna release a very simple prestige System.

Informations:
Spoiler:
This System is just a simple one.
By using it, you will be able to reset your Level, Hero Level, Joblevel and also gift Items to other players.

Step 1: Add a CommandPacket!
- For this action, you need to visit /OpenNos.GameObjects/Packets/CommandPackets. You need to create a class, which is called "PrestigePacket.cs".
After doing this, you need to implement a code.
Spoiler:
Code:

using OpenNos.Core;
using OpenNos.Domain;

namespace OpenNos.GameObject.CommandPackets
{
    [PacketHeader("$Prestige", PassNonParseablePacket = true, Authority = AuthorityType.User)]
    public class PrestigePacket : PacketDefinition
    {
      //You can add a Helper, but this isnt usefull at all.
    }
}


Thats the command Packet

Step 2: Creating a Handler!
- Visit /OpenNos.Handler/CommandPacketHandler.cs
After you opened it up, you can create a new Code.
Spoiler:
Code:

/// <summary>
/// $Prestige
/// </summary>
/// <param name="prestigePacket"></param>
public void Prestige(PrestigePacket prestigePacket)
        {
            if (Session.Character.Level == 99)
            {
            //-------------------------------------------------------------
            //Now add you actions
            //For example
            //Session.Character.Level = 1;
            //Session.Character.JobLevel = 1;
            //Session.Character.HeroLevel = 0;
            //Now add your Benefits
            //For example: Compliment, Reputation, Gold
            //For this, you have to add Session.Character.and here you can
            //add your wished benefit like Session.Character.Compliment = 50;
            //-------------------------------------------------------------
            Session.Character.Level = 1; //Makes Character Lvl 1
            Session.Character.JobLevel = 1; //Makes Character JLvl 1
            Session.Character.HeroLevel = 0; //Makes Character HLvl 0
            Session.Character.Compliment = 50; //Adds 50 Compliment
            Session.Character.GiftAdd(1, 1); //Adds your gift to the player
            }
            else
            {
            Session.SendPacket("msg 5 Your Level is not high enough!");
            //Add the message, which will pop up, when Player has
            //not the requirements.
            }
        }


Requirements
To add the Code: Knowledge 4/10
To edit it the way you want: 5/10
To add more benefits, or recode it: 7/10

Hope it helped ya guys out!

Greetings,
Brix - Gardia Systems Owner

I changed the code you had forget Session.Character.ChangeClass (ClassType.Adventurer);
and I set for the hero level

/// <summary>
/// $Prestige
/// </summary>
/// <param name="prestigePacket"></param>
public void Prestige(PrestigePacket prestigePacket)
{
if (Session.Character.Level == 250)
{
if (Session.Character.HeroLevel == 100)
{

Session.Character.ChangeClass(ClassType.Adventurer );
Session.Character.MapId = 1;
Session.Character.Level = 15;
Session.Character.Prestige +=1;
Session.Character.JobLevel = 20;
Session.Character.HeroLevel = 0;
Session.Character.DefenceRate =+500;
Session.Character.GiftAdd(1286, 10);
Session.Character.DistanceDefence =+500;
Session.Character.MagicalDefence =+500;
Session.Character.GiftAdd(9074, 10);
Session.Character.GiftAdd(1249, 10);

{
return;
}

}

}

Zanouu 07/18/2018 22:12

Quote:

Originally Posted by redbull2905 (Post 37020312)
Session.Character.DefenceRate = + +500;
Session.Character.DistanceDefence = + +500;
Session.Character.MagicalDefence = + +500;


= + + ? wtf is this :confused::confused::lul:

0Lucifer0 07/18/2018 22:21

Quote:

Originally Posted by Zanouu (Post 37020436)
= + + ? wtf is this :confused::confused::lul:

The proof he doesn’t know what he is doing... this will set to 500. This still compile because of the space but he could even do + + + + + (((((500))))) this would still compile.

ImTheReal 07/18/2018 22:50

Quote:

Originally Posted by redbull2905 (Post 37020312)
I changed the code you had forget Session.Character.ChangeClass (ClassType.Adventurer);
and I set for the hero level

/// <summary>
/// $ Prestige
/// </ summary>
/// <nom de paramètre = "prestigePacket"> </ param>
public void Prestige (PrestigePacket paquet de prestige)
{
if ( Session.Character.Level == 250)
{
if (Session.Character.HeroLevel == 100)
{

Session.Character.ChangeClass (ClassType.Adventurer);
Session.Character.Level = 15;
Session.Character.JobLevel = 20;
Session.Character.HeroLevel = 0;
Session.Character.DefenceRate = + +500;
Session.Character.GiftAdd (1286, 10);
Session.Character.DistanceDefence = + +500;
Session.Character.MagicalDefence = + +500;
Session.Character.GiftAdd (1289, 10);
Session.Character.GiftAdd (1249, 10);

{
return;
}

}

}
else
{
Session.SendPacket ("msg 5 Votre niveau n'est pas assez élevé!");
}
}

Why would u use 2 If Statements?

erixor 07/18/2018 22:52

Even if it had worked for some reason, the stats would not have been saved. The defense & the added stats would be back to normal after a relog.

redbull2905 07/18/2018 23:07

I may have failed on two things, it's true that I see it now

erixor 07/19/2018 02:13

Quote:

Originally Posted by redbull2905 (Post 37020572)
I may have failed on two things, it's true that I see it now

I don't think so. You still have no clue what you're doing.

[IMG=expandable: 1]https://image.ibb.co/kDQazJ/useless.png[/IMG]

redbull2905 07/19/2018 06:02

so the first one is not useless having to test it is functional

So tell me how I can add more defenses

0Lucifer0 07/19/2018 07:33

Quote:

Originally Posted by redbull2905 (Post 37020927)
so the first one is not useless having to test it is functional

So tell me how I can add more defenses

+= instead of =+ maybe... and yes it is useless you can merge them

redbull2905 07/19/2018 15:57

I tried to make this code as complete as possible. I would like to ensure that the worn equipment is removed automatically

[Hyper]Royale 07/21/2018 16:25

Quote:

Originally Posted by redbull2905 (Post 37021686)
I tried to make this code as complete as possible. I would like to ensure that the worn equipment is removed automatically

Hello redbull,
Although u could use options as a checker
Code:

if (option == 0)
{
//
}
else
{
Session.Character.GenerateSay(Session.Character.SendPacket("Your Equipment is not empty!")), 11;
}


Zanouu 07/21/2018 17:03

Do you Read All message in this Thread ? :notsureif:

Spoiler:
Code:

public void Prestige(Prestige PrestigePacket)
{
        if (Session.CurrentMapInstance.MapInstanceType != MapInstanceType.BaseMapInstance)
        {
                return;
        }
       
        if (Sesssion.Character.Level != ServerManager.Instance.Configuration.MaxLevel ||
                Session.Character.JobLevel != ServerManager.Instance.Configuration.MaxJobLevel ||
                Session.Character.HeroLevel != ServerManager.Instance.Configuration.MaxHeroLevel)
        {
                Session.SendPacket(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("NOT_LEVEL_PRESTIGE"), 0));
                return;
        }
       
       
        if (Session.Character.Inventory.Any(s => s.Type == InventoryType.Wear))
        {
                Session.SendPacket(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("EQ_NOT_EMPTY"), 0));
                return;
        }
       
        Session.Character.ChangeClassPrestige(ClassType.Adventurer);
        Session.Character.Prestige += 1;
        ServerManager.Instance.ChangeMap(Session.Character.CharacterId);
        //  RewardsHelper.Instance.GetLevelUpRewards(Session);
        LogHelper.Instance.InsertCommandLog(Session.Character.Name, Session.Character.CharacterId, PrestigePacket, Session.IpAddress);
}


redbull2905 07/21/2018 18:41

[IMG=expandable: 1]https://cdn.discordapp.com/attachments/468527749510725632/470268762080280576/Screenshot_2.png[/IMG] when I make the command it makes the server crash

Voria 07/21/2018 19:19

public short RespawnMapTypeId @[Only registered and activated users can see links. Click Here To Register...]

redbull2905 07/21/2018 19:51

Quote:

Originally Posted by Zanouu (Post 37025943)
Do you Read All message in this Thread ? :notsureif:

Spoiler:
Code:

public void Prestige(Prestige PrestigePacket)
{
        if (Session.CurrentMapInstance.MapInstanceType != MapInstanceType.BaseMapInstance)
        {
                return;
        }
       
        if (Sesssion.Character.Level != ServerManager.Instance.Configuration.MaxLevel ||
                Session.Character.JobLevel != ServerManager.Instance.Configuration.MaxJobLevel ||
                Session.Character.HeroLevel != ServerManager.Instance.Configuration.MaxHeroLevel)
        {
                Session.SendPacket(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("NOT_LEVEL_PRESTIGE"), 0));
                return;
        }
       
       
        if (Session.Character.Inventory.Any(s => s.Type == InventoryType.Wear))
        {
                Session.SendPacket(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("EQ_NOT_EMPTY"), 0));
                return;
        }
       
        Session.Character.ChangeClassPrestige(ClassType.Adventurer);
        Session.Character.Prestige += 1;
        ServerManager.Instance.ChangeMap(Session.Character.CharacterId);
        //  RewardsHelper.Instance.GetLevelUpRewards(Session);
        LogHelper.Instance.InsertCommandLog(Session.Character.Name, Session.Character.CharacterId, PrestigePacket, Session.IpAddress);
}


[IMG=expandable: 1]https://cdn.discordapp.com/attachments/468527749510725632/470286475624316928/Screenshot_5.png[/IMG]

again I use different codes of your zanou your codes give me an error

Zanouu 07/21/2018 20:15

Code:

if (session.Character.Inventory.All(i => i.Value.Type == InventoryType.Wear))
                    {
                        session.SendPacket(
                            UserInterfaceHelper.Instance.GenerateMsg(
                                Language.Instance.GetMessageFromKey("EQ_NOT_EMPTY"), 0));
                        return;
                    }

For ON.NosWings Source

0Lucifer0 07/22/2018 21:54

Quote:

Originally Posted by redbull2905 (Post 37026268)
[IMG=expandable: 1]https://cdn.discordapp.com/attachments/468527749510725632/470286475624316928/Screenshot_5.png[/IMG]

again I use different codes of your zanou your codes give me an error

Come on it’s just missing a .Value at least try to understand and not only copy pasta...

redbull2905 07/23/2018 17:03

[IMG=expandable: 1]https://cdn.discordapp.com/attachments/468395839673597953/470969417346449408/Screenshot_3.png[/IMG]

your code does not work I become an adventurer even having the stuff worn

Ortator 07/23/2018 17:07

Quote:

Originally Posted by redbull2905 (Post 37030100)
[IMG=expandable: 1]https://cdn.discordapp.com/attachments/468395839673597953/470969417346449408/Screenshot_3.png[/IMG]

your code does not work I become an adventurer even having the stuff worn

Pls unistall windows at you PC, read the code

Saber none 07/23/2018 22:16

Quote:

Originally Posted by Ortator (Post 37030112)
Pls unistall windows at you PC, read the code

actually i also dont understand why he become an adventure even though he is wearing eq, to be honest i dont understand the whole second if codition, doesnt it say if your characters is wearing something then you jump out of the methode due to that return?

0Lucifer0 07/23/2018 22:22

He just don’t understand what he is doing... he put random code in a random place if this compile he just complain that it doesn’t do what he want...seriously you should better learn development it will take you less than 2 hours to understand how a if statement work...
Moreover the code will work if you fix those little mistake like All=> Any
But you don’t even understand how the sendpacket work...

Saber none 07/23/2018 23:07

Quote:

Originally Posted by 0Lucifer0 (Post 37030804)
He just don’t understand what he is doing... he put random code in a random place if this compile he just complain that it doesn’t do what he want...seriously you should better learn development it will take you less than 2 hours to understand how a if statement work...
Moreover the code will work if you fix those little mistake like All=> Any
But you don’t even understand how the sendpacket work...

would you mind explaining me what (i => i.value.type = inventoryType.Wear) is exactly doing ? i have never used that => operator so it would be nice if you could give me a quick explanation what this piece of code is doing :)

0Lucifer0 07/23/2018 23:41

Quote:

Originally Posted by mix0067@ (Post 37030877)
would you mind explaining me what (i => i.value.type = inventoryType.Wear) is exactly doing ? i have never used that => operator so it would be nice if you could give me a quick explanation what this piece of code is doing :)

It just split the variable and the statements for a linq query. i here is a variable unit of Inventory. Dont have the code right now but I guess if Inventory is a list of iteminstance, i is an iteminstance. You can call it another name. Most of linq query of opennos use s as an variable name because I was too lazy to put a better name and in most of case at the beginning it was for session.

Blowa 07/24/2018 00:22

Quote:

Originally Posted by mix0067@ (Post 37030877)
would you mind explaining me what (i => i.value.type = inventoryType.Wear) is exactly doing ? i have never used that => operator so it would be nice if you could give me a quick explanation what this piece of code is doing :)

[Only registered and activated users can see links. Click Here To Register...]
=> Operator is used in C# for lambdas.
Linq support predicates, as C# support lambdas and lambdas can be used as predicates, you can simply create a lambda within the linq query.

Within a lambda, captured parameters are given, splitted by a coma, before the => operator
After that => operator it's simply the "functional part" of a lambda
[Only registered and activated users can see links. Click Here To Register...]

You can also use => Operator for expression body members on :

C# 7 :
Constructor
Finalizer
Property Set
Indexer

C# 6 :
Method
Property Get


Btw, a little "=> operator C#" to google would have answer to your question.

Saber none 07/24/2018 08:11

Quote:

Originally Posted by val77 (Post 37031014)
[Only registered and activated users can see links. Click Here To Register...]
=> Operator is used in C# for lambdas.
Linq support predicates, as C# support lambdas and lambdas can be used as predicates, you can simply create a lambda within the linq query.

Within a lambda, captured parameters are given, splitted by a coma, before the => operator
After that => operator it's simply the "functional part" of a lambda
[Only registered and activated users can see links. Click Here To Register...]

You can also use => Operator for expression body members on :

C# 7 :
Constructor
Finalizer
Property Set
Indexer

C# 6 :
Method
Property Get


Btw, a little "=> operator C#" to google would have answer to your question.

I know that i could have googled it, but thats axactly what i wanted to avoid to do because mostly what google is telling me is just confusing me more and if that is the case i need to ask someone and thats why i asked lucifer to EXPLAIN it to me what that part of the if statement stands for and what it is doing there.

Blowa 07/24/2018 10:20

Quote:

Originally Posted by mix0067@ (Post 37031408)
I know that i could have googled it, but thats axactly what i wanted to avoid to do because mostly what google is telling me is just confusing me more and if that is the case i need to ask someone and thats why i asked lucifer to EXPLAIN it to me what that part of the if statement stands for and what it is doing there.

(i => i.value.type == inventoryType.Wear)


actual captured element for each value within the Enumerable

Lambda predicate that returns a boolean
In most case, predicates are evaluating the captured element to define if the element fits our "expectations" or not.

In this case, the captured element needs to be an item (i.Value) of type Wear (i.Value.Type == InventoryType.Wear)

Last thing, lambdas are just "functions" without an explicit symbol (oftenly called anonymous functions), it's not only in C# ;)
C++ supports lambdas, Javascript too, Java too, Rust...

PS : I don't get how google can confuse you since it's just linking you the official documentation which is DESIGNED to be READ

Saber none 07/24/2018 11:58

Quote:

Originally Posted by val77 (Post 37031530)
(i => i.value.type == inventoryType.Wear)


actual captured element for each value within the Enumerable

Lambda predicate that returns a boolean
In most case, predicates are evaluating the captured element to define if the element fits our "expectations" or not.

In this case, the captured element needs to be an item (i.Value) of type Wear (i.Value.Type == InventoryType.Wear)

Last thing, lambdas are just "functions" without an explicit symbol (oftenly called anonymous functions), it's not only in C# ;)
C++ supports lambdas, Javascript too, Java too, Rust...

PS : I don't get how google can confuse you since it's just linking you the official documentation which is DESIGNED to be READ

And now i can understand it THANKS :) Ik i am a strange guy things that should help me mostly confuse me i have no idea why. Anyway i appreciate that you and lucifer helped me out with that :)

Tbp123 08/02/2018 00:50

I've just seen it, but I would recommend to add a new row in the database and have a prestige system well implemented like each prestige you get things bonus, like hp and etc.

Anyways, good job, I don't find why people in EPvP just comes to threads that are at least a bit helpful, or theads that are just asking, this is a forum not a place to throw trash to ppl.

also here you have some of my things. feel free to ask something if you want

[IMG=expandable: 1]https://i.gyazo.com/e5ba6b3db88b8ead9ba511bdeb850bd0.png[/IMG]

0Lucifer0 08/02/2018 02:37

Quote:

Originally Posted by Tbp123 (Post 37048778)
I've just seen it, but I would recommend to add a new row in the database and have a prestige system well implemented like each prestige you get things bonus, like hp and etc.

Anyways, good job, I don't find why people in EPvP just comes to threads that are at least a bit helpful, or theads that are just asking, this is a forum not a place to throw trash to ppl.

also here you have some of my things. feel free to ask something if you want

[IMG=expandable: 1]https://i.gyazo.com/e5ba6b3db88b8ead9ba511bdeb850bd0.png[/IMG]

Yes but adding a new migrations risk to be too difficult for them.

Tbp123 08/02/2018 03:01

Well, that's a fact, but everyone can learn :D


All times are GMT +2. The time now is 17:18.

Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.