1. n1 is the player number of the former owner, n2 is the player number of the new owner, s1 is the name of the hero who captured the object, and s2 is the name of the object.
2. 2 is indeed the player number.
3. Attach a touch trigger to the marker, set the object's inactive state, and after the object is touched, display ShowFlyingSign, where you can configure the message's flight time.
4. It is absolutely impossible for two players to enter simultaneously, so you can add a game lock to the teleport, the teleport itself, and move the player up one cell (y+1), then unlock the game. Also, add a check to see if the coordinates of the first object that moved (we find out the name in the trigger attached to the pseudo-teleport) are equal to the coordinates of the second object, but with y being 1 less, and depending on this, either move the hero up one cell or don't move it. But this is a workaround; your solution is correct; I was just offering an alternative.
5. These undocumented functions are simply not included in the developers' manuals. There are many such functions; if needed, you can ask those who know them.
6. There is a function called SetHeroesExpCoeff...
7. Maintaining order is a good thing. I recommend simply separating the different parts of the script with a lot of hyphens and a description of what each part does.
3. Oh man... I have about 20 of these markers with messages... I don't want to configure all of them... is there a way to quickly redo everything or combine them into an array?
5. That's a shame.
6. Could you provide more details, as there seems to be no information available based on a search on Yandex on this topic. Hmm...
7. This is already done! I just wanted it to be separate.