Jump to content
Important Info
  • Register now to gain full access!
  • Full Info about Phoenix: HERE
  • Full Info about Inception: HERE
  • OSGM Competition: HERE
  • Big Guide for Newbies: HERE
  • Welcome to OldSquad Community

    Looking to have fun on a Professional Environment?
    Then you are in the best place!
    Join our MU Online Servers and feel the difference.

    SEASON 6 EP 3 - HARD ECONOMY SYSTEM

    - Progressive Gameplay.
    - Dynamic Low EXP.
    - Boosted EXP for Newbies!

    OUTSTANDING QUALITY & SUPPORT

    - Highly configured details in a Smart & Professional way.
    - 15/24 Support on Forum & Facebook.
    - Satisfaction Guaranteed!

    HIGH STABILITY & LONG TERM EDITIONS

    - Dedicated Project without monthly restarts.
    - 95% UP-TIME with announced Maintenances.
    - Weekly Updates & Improvements.

    REAL PLAY2WIN!

    - No WebShop / CashShop / VipServer.
    - Credits can be farmed easily INGAME.
    - 100% Balanced Services.

    Noob-friendly invasions


    Juri
     Share

    Recommended Posts


    • Group:  Members
    • Content Count:  71
    • Reputation:   5
    • Joined:  04/05/2020
    • Status:  Offline

    To encourage new players more i suggest adding one invasion in the day(best like at evening i guess) from budgets at to k+3, excluding derkons for now(later maybe even higher, like when added GGD also derkon ans k+4 maybe), so damaging them is limited to amount of resets you have(like 5 and less).

    This could help new comers to grab also some golds etc, won't be so discouraging that high reset people come and get all the golds and the only way they can get something is by market and buying them.

    Link to comment
    Share on other sites


    • Group:  Members
    • Content Count:  13
    • Reputation:   7
    • Joined:  10/08/2020
    • Status:  Offline

    ppl will just come with alts >_>

    Link to comment
    Share on other sites


    • Group:  Members
    • Content Count:  71
    • Reputation:   5
    • Joined:  04/05/2020
    • Status:  Offline

    As i wrote - limit to per IP/HWID so they won't.

    Link to comment
    Share on other sites


    • Group:  Administrators
    • Content Count:  2,372
    • Reputation:   565
    • Joined:  03/02/2016
    • Status:  Offline
    • Device:  Android

    It is very hard to be implemented, nearly impossible. Think about the alts, like Deadcat said, and we cannot limit their characters because what will be the condition for checking if one guy has an alt? We might figure out, but not with 100% accuracy so this means risk. 

    Not even speaking about the guys with multiple devices and connections. If you think about a solution in which there is no risk please let us know, it might work 

    I wanna ask you some shit, but you might tell me a lie
    But, ayy, I barely care
    I no longer live in my feelings, shit, I'm barely there 
    I can never live in New York 'cause I can't carry there
    They say I can't live in my city 'cause it's crazy there
    I'm like "Shit, that's everywhere"

    Link to comment
    Share on other sites


    • Group:  Members
    • Content Count:  128
    • Reputation:   24
    • Joined:  04/28/2020
    • Status:  Offline

    I think is a good idea on paper but imposible to implement it.

    Link to comment
    Share on other sites


    • Group:  Members
    • Content Count:  1
    • Reputation:   0
    • Joined:  11/14/2018
    • Status:  Offline

    Why not just nerf the stats of lower goldens so they die really easily, such that low rr players can contest them?

    Link to comment
    Share on other sites


    • Group:  Members
    • Content Count:  7
    • Reputation:   2
    • Joined:  11/08/2020
    • Status:  Offline

    17 hours ago, Gion said:

    It is very hard to be implemented, nearly impossible. Think about the alts, like Deadcat said, and we cannot limit their characters because what will be the condition for checking if one guy has an alt? We might figure out, but not with 100% accuracy so this means risk. 

    Not even speaking about the guys with multiple devices and connections. If you think about a solution in which there is no risk please let us know, it might work 

    Just implement a system where the goldens do reduced dmg and take increased dmg to/from characters that are 'lower' while they do increased dmg and take reduced dmg to/from characters that are 'higher' based on the total number of points a player has (str+agi+vit+ene+lvl-up points);

    An example using lua script files and settings files from data folder or wherever you have them would be something like this:

    -- monsterDmg is the dmg the monster has assigned per file settings
    -- minPoints is a constant that you can come up with depending on what type of golden we\'re talking about (Eg: for golden + 1 the points a player would have at 1 or 2 resets)
    -- maxPercentage a safeguard to not punish your higher reseted players let\'s say 500% - you can also insert a maxPoints to check against
    -- player - the Player object stats table that contains str, agi, vit, ene, cmd and level up points
    def function getDmgDone(monsterDmg, minPoints, maxPercentage, player)
      local totalPoints = player['str'] + player['agi'] + player['vit'] + player['ene'] + player['cmd'] + player['lpoints']
      if (totalPoints < minPoints) then
        return monsterDmg 
      else
        local percentage = minPoints * totalPoints / 100
        if (percentage > maxPercentage) then
          percentage = maxPercentage
        end
      	return monsterDmg * percentage / 100
      end
    end
    
    -- The same function can be applied for defense of a monster against a player
    -- Eg function in case you want a maxPoints check also
    def function getDmgDone2(monsterDmg, minPoints, maxPoints, maxPercentage, player)
      local totalPoints = player['str'] + player['agi'] + player['vit'] + player['ene'] + player['cmd'] + player['lpoints']
      if (totalPoints < minPoints) then
        return monsterDmg 
      else
        if (totalPoints >= maxPoints)
          return monsterDmg * maxPercentage / 100
        end
        local percentage = minPoints * totalPoints / 100
        if (percentage > maxPercentage) then
          percentage = maxPercentage
        end
      	return monsterDmg * percentage / 100
      end
    end
    
    -- For the dmg taken by the golden function you just change the monsterDmg with the player['dmg'] eg:
    def function getDmgTaken(minPoints, maxPoints, maxPercentage, player)
      local totalPoints = player['str'] + player['agi'] + player['vit'] + player['ene'] + player['cmd'] + player['lpoints']
      if (totalPoints < minPoints) then
        return player['dmg']
      else
        if (totalPoints >= maxPoints)
          return player['dmg'] * maxPercentage / 100
        end
        local percentage = minPoints * totalPoints / 100
        if (percentage > maxPercentage) then
          percentage = maxPercentage
        end
      	return player['dmg'] * percentage / 100
      end
    end
    
    -- You are free to play with this code however you see fit and you could potentialy load the minPoints, maxPoints, maxPercentage variables from a settings files depending on the golden/monster in question 
    -- EG (based on whatever I think may be in the code):
    -- in a header file, or whatever kind of file is used to populate your C/C++ structures is used
    -- lobj->loadSpecialMonsterSettings('...whatever path'); // this function populates the structure/sub-structure/class/whatever with multiple instances of other sub-structures/sub-classed that hold the monsterID, the minPoints, the maxPoints and the maxPercentage [from the said settings file]
    -- .... here goes a lot of shit ton of code for whatever purposes and stuff ... and wherever/whenever it gets to the function that computes the dmg the  monster does/takes, right before they start or inside it wherever you see fit:
    -- .... code that's used before the call to the function to get monster dmg against player
    -- 
    -- /* you can insert the mentioned above functions here like:
    -- here is the block of code that you would call in a way to compute that monster dmg modification
    -- if (lobj->SpecialMonsters->isSpecialMonster(lobj->monster->getId()) {
    --		char[] luaFunction = "getDmgDone2";
    --		Array<vector> functionArgs[6];
    --		Array<vector> playerTable = ['str' -> lobj->player->getStr(), 'agi' -> lobj->player->getAgi(), 'vit' -> lobj->player->getVit(), 'ene' -> lobj->player->getEne(), 'cmd' -> lobj->player->getCmd(), 'lpoints' -> lobj->player->getLvlUpPoints()];
    -- 		functionArgs['monsterDmg'] = lobj->monster->getDmg();
    -- 		functionArgs['minPoints'] = lobj->SpecialMonsters->getMinPoints(lobj->monster->getId();
    -- 		functionArgs['maxPoints'] = lobj->SpecialMonsters->getMaxPoints(lobj->monster->getId();
    -- 		functionArgs['maxPercentage'] = lobj->SpecialMonsters->getMaxPercentage(lobj->monster->getId();
    --		functionArgs['player'] = *playerTable;
    -- 		lobj->monster->setDmg(lobj->callToLuaFunction('..path to lua file', luaFunction, *functionArgs));
    -- }
    --
    -- And that is end of the code of block
    -- you can use the block here before this return
    -- return lobj->monsterDmgDoneTopPlayer(lobj->monster->getDmg(), lobj->player, lobj);
    -- 
    -- ..... other code or whatever .....
    -- 
    -- double monsterDmgDone(monster, player, lobj) {
    -- 		or you could call that block of code here to compute the monster dmg modification
    --		... code bla bla ...
    -- 		or you could call that block of code here to compute the monster dmg modification
    --  	return whateverComputedMonsterDmg // you could use that block of code as a function and wrap the whateverComputedMonsterDmg in that function
    -- }
    -- 

     

    Link to comment
    Share on other sites


    • Group:  Administrators
    • Content Count:  3,947
    • Reputation:   2,212
    • Joined:  12/30/2015
    • Status:  Offline
    • Device:  Windows

    14 minutes ago, ICrit said:

    Just implement a system where the goldens do reduced dmg and take increased dmg to/from characters that are 'lower' while they do increased dmg and take reduced dmg to/from characters that are 'higher' based on the total number of points a player has (str+agi+vit+ene+lvl-up points);

    An example using lua script files and settings files from data folder or wherever you have them would be something like this:

    
    -- monsterDmg is the dmg the monster has assigned per file settings
    -- minPoints is a constant that you can come up with depending on what type of golden we\'re talking about (Eg: for golden + 1 the points a player would have at 1 or 2 resets)
    -- maxPercentage a safeguard to not punish your higher reseted players let\'s say 500% - you can also insert a maxPoints to check against
    -- player - the Player object stats table that contains str, agi, vit, ene, cmd and level up points
    def function getDmgDone(monsterDmg, minPoints, maxPercentage, player)
      local totalPoints = player['str'] + player['agi'] + player['vit'] + player['ene'] + player['cmd'] + player['lpoints']
      if (totalPoints < minPoints) then
        return monsterDmg 
      else
        local percentage = minPoints * totalPoints / 100
        if (percentage > maxPercentage) then
          percentage = maxPercentage
        end
      	return monsterDmg * percentage / 100
      end
    end
    
    -- The same function can be applied for defense of a monster against a player
    -- Eg function in case you want a maxPoints check also
    def function getDmgDone2(monsterDmg, minPoints, maxPoints, maxPercentage, player)
      local totalPoints = player['str'] + player['agi'] + player['vit'] + player['ene'] + player['cmd'] + player['lpoints']
      if (totalPoints < minPoints) then
        return monsterDmg 
      else
        if (totalPoints >= maxPoints)
          return monsterDmg * maxPercentage / 100
        end
        local percentage = minPoints * totalPoints / 100
        if (percentage > maxPercentage) then
          percentage = maxPercentage
        end
      	return monsterDmg * percentage / 100
      end
    end
    
    -- For the dmg taken by the golden function you just change the monsterDmg with the player['dmg'] eg:
    def function getDmgTaken(minPoints, maxPoints, maxPercentage, player)
      local totalPoints = player['str'] + player['agi'] + player['vit'] + player['ene'] + player['cmd'] + player['lpoints']
      if (totalPoints < minPoints) then
        return player['dmg']
      else
        if (totalPoints >= maxPoints)
          return player['dmg'] * maxPercentage / 100
        end
        local percentage = minPoints * totalPoints / 100
        if (percentage > maxPercentage) then
          percentage = maxPercentage
        end
      	return player['dmg'] * percentage / 100
      end
    end
    
    -- You are free to play with this code however you see fit and you could potentialy load the minPoints, maxPoints, maxPercentage variables from a settings files depending on the golden/monster in question 
    -- EG (based on whatever I think may be in the code):
    -- in a header file, or whatever kind of file is used to populate your C/C++ structures is used
    -- lobj->loadSpecialMonsterSettings('...whatever path'); // this function populates the structure/sub-structure/class/whatever with multiple instances of other sub-structures/sub-classed that hold the monsterID, the minPoints, the maxPoints and the maxPercentage [from the said settings file]
    -- .... here goes a lot of shit ton of code for whatever purposes and stuff ... and wherever/whenever it gets to the function that computes the dmg the  monster does/takes, right before they start or inside it wherever you see fit:
    -- .... code that's used before the call to the function to get monster dmg against player
    -- 
    -- /* you can insert the mentioned above functions here like:
    -- here is the block of code that you would call in a way to compute that monster dmg modification
    -- if (lobj->SpecialMonsters->isSpecialMonster(lobj->monster->getId()) {
    --		char[] luaFunction = "getDmgDone2";
    --		Array<vector> functionArgs[6];
    --		Array<vector> playerTable = ['str' -> lobj->player->getStr(), 'agi' -> lobj->player->getAgi(), 'vit' -> lobj->player->getVit(), 'ene' -> lobj->player->getEne(), 'cmd' -> lobj->player->getCmd(), 'lpoints' -> lobj->player->getLvlUpPoints()];
    -- 		functionArgs['monsterDmg'] = lobj->monster->getDmg();
    -- 		functionArgs['minPoints'] = lobj->SpecialMonsters->getMinPoints(lobj->monster->getId();
    -- 		functionArgs['maxPoints'] = lobj->SpecialMonsters->getMaxPoints(lobj->monster->getId();
    -- 		functionArgs['maxPercentage'] = lobj->SpecialMonsters->getMaxPercentage(lobj->monster->getId();
    --		functionArgs['player'] = *playerTable;
    -- 		lobj->monster->setDmg(lobj->callToLuaFunction('..path to lua file', luaFunction, *functionArgs));
    -- }
    --
    -- And that is end of the code of block
    -- you can use the block here before this return
    -- return lobj->monsterDmgDoneTopPlayer(lobj->monster->getDmg(), lobj->player, lobj);
    -- 
    -- ..... other code or whatever .....
    -- 
    -- double monsterDmgDone(monster, player, lobj) {
    -- 		or you could call that block of code here to compute the monster dmg modification
    --		... code bla bla ...
    -- 		or you could call that block of code here to compute the monster dmg modification
    --  	return whateverComputedMonsterDmg // you could use that block of code as a function and wrap the whateverComputedMonsterDmg in that function
    -- }
    -- 

     

    Weird flex, mister Fr33. We know what things to do and how to do them here, but thanks for the "lua lesson".

    ONTOPIC: This is a hard server in the end, even though newbies does receive a lot of boosts, they must still work for what they achieve in game. After few resets goldens are easy anyway except of GGD's and BoK+5 which require way more resets to compete for them.

    In the end there's wormhole for newbies that want a "fair catch-up" mechanic in terms of goldens/bosses, etc.

    "The only way to do great work is to love what you do" - Steve Jobs

    Link to comment
    Share on other sites


    • Group:  Members
    • Content Count:  7
    • Reputation:   2
    • Joined:  11/08/2020
    • Status:  Offline

    11 minutes ago, ADMIN said:

    Weird flex, mister Fr33. We know what things to do and how to do them here, but thanks for the "lua lesson".

    So when your staff asks for a "how you'd do that" and I give an answer I flex? Wtf? Weird answer since your staff asked a 'how'. Also, it's not a lua lesson, it's a multi-part integration that requires to have access to source code or that the providers of said service-files have the access, mood, time to code it in (which isn't a really hard implementation);

    Also, in my profession I actually need to 'speak in the common tongue', which translates to detail and say things so people that are less tech/code inclined understand them, that isn't flexing or giving lessons, but explaining things in a matter that a wide area of people can remotely understand. Also the lua + setting files would grant you some access to said 'black box code' from within the game-server itself (in case you don't have access to it's source code) and that code snippet is so the devs understand the big-picture while you, your staff and your players also understand how a said implementation of a system could be possible.

    But hey, if you feel offended, I'll just stop offering. As a last thing, congratz on the server config, seems decent and balanced in an overall aspect.

    Link to comment
    Share on other sites


    • Group:  Administrators
    • Content Count:  3,947
    • Reputation:   2,212
    • Joined:  12/30/2015
    • Status:  Offline
    • Device:  Windows

    This is what a flex means, trying to shine with easy piece of codes that you don't have any idea if they are compatible with our emulator or not. Why Gion said that? Simple, we don't have direct source code access (which none of the respectable emulators does offer, lul), so we're limited enough to our lua extension. And, if you would even read what Gion referred to is the possibility to "make sure" that such feature would not be abused by alts / different connections from same person, but hei, why to read when we can just throw some random code and prove what we're made of.

    Unless you want to impress some other people from here go for it & continue, you may get some fans. If you do it for "us", you can stop and better focus on your "projects", if they still exist.

    "The only way to do great work is to love what you do" - Steve Jobs

    Link to comment
    Share on other sites


    • Group:  Members
    • Content Count:  7
    • Reputation:   2
    • Joined:  11/08/2020
    • Status:  Offline

    9 minutes ago, ADMIN said:

    This is what a flex means, trying to shine with easy piece of codes that you don't have any idea if they are compatible with our emulator or not. Why Gion said that? Simple, we don't have direct source code access (which none of the respectable emulators does offer, lul), so we're limited enough to our lua extension. And, if you would even read what Gion referred to is the possibility to "make sure" that such feature would not be abused by alts / different connections from same person, but hei, why to read when we can just throw some random code and prove what we're made of.

    Unless you want to impress some other people from here go for it & continue, you may get some fans. If you do it for "us", you can stop and better focus on your "projects", if they still exist.

    You just love to hate.. Got it, lol. The balance would be kept even if alts are involved, why, cause the alts are conditioned by the same system in the same way as the newbies.

    As per the rest of the hate speach, just get over it mate, I don't care to impress unkown people over the internet and I've moved a long time ago from MU "projects', there are other projects far more complex and well paid in the IT industry without the need of a headache from 'players, hackers and other non-nice things' that MU brings with it.

    Am not here to impress or bother anyone, Odi and Neby corrupted me to play (as you may have well noticed by now) and left me alone after you know what shit server opened :) I'm just enjoying it with some other old and new people I met (by also being afk 90% of the time kekw). Offtopic: that MG is not me :)

    Again, chill, peace and gratz on the nice config. Sorry if you felt offended in any way and no worries I'll stop giving 'flexes' as you call them, lel.

     

    Link to comment
    Share on other sites


    • Group:  Administrators
    • Content Count:  3,947
    • Reputation:   2,212
    • Joined:  12/30/2015
    • Status:  Offline
    • Device:  Windows

    2 minutes ago, ICrit said:

    You just love to hate.. Got it, lol. The balance would be kept even if alts are involved, why, cause the alts are conditioned by the same system in the same way as the newbies.

    Uhm, that's a new thing to hear, putting up ALTS with w2/w3, exc sets, weapons, rings & so on versus REAL newbies with non-exc medal items means being threat in the same way, okie.

    Quote

    Offtopic: that MG is not me :)

    Nickname doesn't matter, there's only one guy from Iasi with your way of "typing", MU connection & some IT knowledge, the same old ego that people who got to see it ran away. Not even mentioning the "corruption" level.

    So yea, hate is never "for free", don't get me wrong.

    Wish you the best.

    "The only way to do great work is to love what you do" - Steve Jobs

    Link to comment
    Share on other sites


    • Group:  Members
    • Content Count:  71
    • Reputation:   5
    • Joined:  04/05/2020
    • Status:  Offline

    Sure, i understand it's hard server etc stuff. Just a suggestion, sometimes in my experience i was starting on already existing servers and i know how hard is it to play when you are beginner - like all high reset players go and take everything in a minute and no chance for anything, and rarely anyone offers any help, or sometimes they even try to get as many credits/jvl as possible from new comers.

    I guess something easier what could be done is to just increase exc drop chance from monsters for low reset characters(per HWID), so they can grab at least one option items this way.

    @Gioni know there will be alts, but at least per HWID/IP it can be done - the same as you already block for example BC/CS 1 character per IP, so there is that.

    Link to comment
    Share on other sites

    • 2 weeks later...

    • Group:  Administrators
    • Content Count:  3,947
    • Reputation:   2,212
    • Joined:  12/30/2015
    • Status:  Offline
    • Device:  Windows

    Rejected, newbies interested into *total fair* catch-up mechanic should wait & follow Wormhole.

    We already do more than we should, for newbies, from all points of views (starting from exp boosts, restrictive pvp, non-pvp events, fairness gaps and so on).

    Again, follow model next time.

     

    "The only way to do great work is to love what you do" - Steve Jobs

    Link to comment
    Share on other sites

    Guest
    This topic is now closed to further replies.
     Share

    ×
    ×
    • Create New...

    Important Information

    By using this site, you agree to our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.