Beiträge von Syreldar

    This bug is not dungeon-specific: It's the same bug that led people to abuse infinite soulstones usage in the past.

    TL;DR: When you use an item, the item.* calls now reference that item. So if just before you call it, you change the item it points to, it'll remove that item instead. So people were spamming other items while using soulstones and they were getting removed instead of the soulstone itself.


    In dungeons, this often happens in places where you gotta drag items onto statues, or even when you click them, but it can also happen outside of it. It has nothing to do with dungeons.


    The fix is very simple: Don't use item.remove(), use pc.remove_item(vnum, quantity), which instead of pointing to a specific item instance, it will remove a specific quantity out of the stacks of the desired item.

    Zitat

    With the version 17.3, GameForge implemented new immunity conditions where he gains full damage immunity (MISS) as long as there's even just one of his 4 different Metinstones alive. The Stones still keep their effect, and this makes the Metin of the Mountain (8031) basically useless since it used to increment his damage resistance by 25%.

    The update 21.3 increased the number of Metinstones in the map to 8, it was 4 previously. [Respawn time: 2.5 minutes per stone] I'll include the change in the regen for that. It also changed the dungeon's entry conditions, but since everyone's got different quests for the dungeon, I don't think it's worth putting it here.

    Location: char_battle.cpp -> bool CHARACTER::Damage:


    Below the following snippet:

    C
    1. if (!GetSectree() || GetSectree()->IsAttr(GetX(), GetY(), ATTR_BANPK))
    2. return false;


    Add:


    I've also linked the code to a game eventflag, so you can freely disable it by typing the following:

    Zitat

    /e ignore_dragonlair_new_immune 1


    And this is the change that has been done to the regen in 21.3 [data/dungeon/dragon_lair.txt]:

    Code
    1. r 170 160 15 15 0 0 150s 5000 1 8001
    2. r 190 180 15 15 0 0 150s 5000 1 8001
    3. r 170 160 15 15 0 0 150s 5000 1 8001
    4. r 190 180 15 15 0 0 150s 5000 1 8001
    5. r 170 160 15 15 0 0 150s 5000 1 8001
    6. r 190 180 15 15 0 0 150s 5000 1 8001
    7. r 170 160 15 15 0 0 150s 5000 1 8001
    8. r 190 180 15 15 0 0 150s 5000 1 8001


    HF.

    Substitute this:

    with this:

    LUA
    1. elseif result == 1 or result == 8 then


    Doing so should get you your desired result.
    By the way, I advise against using this quest and instead seeking professional help: Not only the code looks like it's been written by a dog, it also uses many functions with changed structure for no reason. It won't work on normal sources.

    Mh, it depends, so for example if you need the mentioned area to have some weird shape like rectangular, sure, you gotta specify two coordinates.

    But, as long as it's something as simple as roughly defining a bigger area, I guess we could just extend the target.pos func so we can specify the area range at which we trigger it. It would be a circle, but it would very much help your cause, it's also way simpler to code and already contains all the mentioned needed checks to avoid client flooding.

    We have already got something quite similiar, which is the .arrive trigger.

    A working automatic PvP tournament quest with arenas is doable.

    However, it requires quite a bit of hardcoding (arenas management and timers).

    Overall, its foundation definitely wouldn't be solid enough to be considered a good release, it can be easily broken.


    I strongly advise against making such a thing via quest.


    A dungeon that works like Diablo's rifts (has stronger monsters the higher the level of the instance) is easily doable, but requires writing a couple of new functions via source.

    Seems accurate to me. The names on the list that I recognize all check out. So I see no reason to believe he's any different.

    Unless you can provide some sort of counterproof.

    it lists me as a scammer, when in fact i never scammed anyone, but how should i proof that im innocent?
    why can't they provide proof?


    not saying everyone is innocent on there, just saying its not accurate

    That's perfect, we can discuss the matter on discord. I'm sure the admins will be eager to listen to you and build a civil discussion made of proof and counterproof that can eventually lead to your unban. Sounds good?


    But as far as I saw, I have zero doubts about MaxChri's ban reasons.

    Hello.

    100% of the people I've seen coding dungeons or making time-based events of any sort handled `Time remaining` notices like this:


    This is not entirely their fault, sadly Webzen isn't exactly capable of setting a good example of how to do things right in Python, C++ and -of course- Lua.

    This way of doing things is very limited, initializing a new timer for every notice they wanna make is not a very efficient way of dealing with the matter.

    Naturally, you could implement the Official Zodiac's way of handling Time remaining, by overriding the Minimaps' interface with a new interface that has a built-in timer which works via python-quest communication, but shouldn't that be available for you, then you can do this:


    First things first, we'll need a single server timer, which will be of the loop type, and it will handle both the `Time remaining` notices and the actions for when the time expires.

    For simplicity purposes, I'll make an example for the dungeons.


    Now, we can either set up two full-scope variables, or defines:

    Or, we can make an array that stores the information within a function, like this:

    Note that functions initialized inside quests are not global: they are only valid within their scope - the state they get initialized in.



    For this example, I'll make use of the first of the 2 methods I just showed you.

    Now, we got 2 elements:

    1. time_out, which is our time limit.
    2. time_out_step, which will be the interval in seconds in-between triggers of our server loop timer.

    We'll use them like this:



    We have bound a timer to our dungeon instance and set it to trigger once every `time_out_step` seconds;

    This allows us to control the interval between `Time remaining` notices by changing the `time_out_step` element as we like.

    Now all that remains is to set our timer's trigger and make use of `time_out` and `time_out_step`, the full example code would look like this:



    Alternatively, instead of using the `seconds_passed` flag like I'm doing (the way I showed you is more understandable and thus more proper since this is an example), you can initialize a single flag to register the starting time and make use of get_time() in between triggers.


    And there you have it, full control in a single timer for your time remaining notices.

    Let's not say dumb things now, alright?

    no its true, there were quiet a few sqlis because he probably thought 4 chars aren't enough to do harm but you could just set everyones pin to "" by setting yours to ';-- which would change the query to UPDATE account.account SET PIN = "";-- WHERE LOGIN = "hahagobrr"; but let's not say dumb things now, alright?

    You have absolutely no idea what you're talking about lil rando: Special characters are not allowed in the mentioned query. You either got your hands into yet another random turkish system or just plain hate the guy and want to trashtalk him for no reason.

    If you bought it from him, ask him. If you didn't, well..