Jump to content

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.
Important Info
  • Register now to gain full access!
  • Full Info about Inception: HERE
  • Full Info about Phoenix: HERE
  • OSGM Competition: HERE
  • Big Guide for Newbies: HERE
Juri

Noob-friendly invasions

Recommended Posts

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.

Share this post


Link to post
Share on other sites

ppl will just come with alts >_>

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 


Mop the floor, hide the wet sign just to catch 'em slippin'

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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
-- }
-- 

 

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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.

 

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...