Juri Posted November 10, 2020 Group: Members Content Count: 71 Reputation: 5 Joined: 04/05/2020 Status: Offline Report Share Posted November 10, 2020 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 More sharing options...
Deadcat Posted November 11, 2020 Group: Members Content Count: 13 Reputation: 7 Joined: 10/08/2020 Status: Offline Report Share Posted November 11, 2020 ppl will just come with alts >_> Link to comment Share on other sites More sharing options...
Juri Posted November 11, 2020 Group: Members Content Count: 71 Reputation: 5 Joined: 04/05/2020 Status: Offline Author Report Share Posted November 11, 2020 As i wrote - limit to per IP/HWID so they won't. Link to comment Share on other sites More sharing options...
Gion Posted November 12, 2020 Group: Administrators Content Count: 2,346 Reputation: 563 Joined: 03/02/2016 Status: Offline Device: Windows Report Share Posted November 12, 2020 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 More sharing options...
Hvman Posted November 12, 2020 Group: Members Content Count: 128 Reputation: 24 Joined: 04/28/2020 Status: Offline Report Share Posted November 12, 2020 I think is a good idea on paper but imposible to implement it. Link to comment Share on other sites More sharing options...
alinnn Posted November 12, 2020 Group: Members Content Count: 1 Reputation: 0 Joined: 11/14/2018 Status: Offline Report Share Posted November 12, 2020 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 More sharing options...
ICrit Posted November 13, 2020 Group: Members Content Count: 7 Reputation: 2 Joined: 11/08/2020 Status: Offline Report Share Posted November 13, 2020 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 More sharing options...
ADMIN Posted November 13, 2020 Group: Administrators Content Count: 3,946 Reputation: 2,211 Joined: 12/30/2015 Status: Offline Device: Windows Report Share Posted November 13, 2020 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 More sharing options...
ICrit Posted November 13, 2020 Group: Members Content Count: 7 Reputation: 2 Joined: 11/08/2020 Status: Offline Report Share Posted November 13, 2020 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 More sharing options...
ADMIN Posted November 13, 2020 Group: Administrators Content Count: 3,946 Reputation: 2,211 Joined: 12/30/2015 Status: Offline Device: Windows Report Share Posted November 13, 2020 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 More sharing options...
ICrit Posted November 13, 2020 Group: Members Content Count: 7 Reputation: 2 Joined: 11/08/2020 Status: Offline Report Share Posted November 13, 2020 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 More sharing options...
ADMIN Posted November 13, 2020 Group: Administrators Content Count: 3,946 Reputation: 2,211 Joined: 12/30/2015 Status: Offline Device: Windows Report Share Posted November 13, 2020 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. Hvman and ICrit 1 1 "The only way to do great work is to love what you do" - Steve Jobs Link to comment Share on other sites More sharing options...
Juri Posted November 13, 2020 Group: Members Content Count: 71 Reputation: 5 Joined: 04/05/2020 Status: Offline Author Report Share Posted November 13, 2020 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 More sharing options...
ADMIN Posted November 24, 2020 Group: Administrators Content Count: 3,946 Reputation: 2,211 Joined: 12/30/2015 Status: Offline Device: Windows Report Share Posted November 24, 2020 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 More sharing options...
Recommended Posts