Jump to content

Gepard

Members
  • Posts

    392
  • Joined

  • Last visited

  • Days Won

    19

Everything posted by Gepard

  1. +1 and that's why I didn't start fixing it in first place Denying minus sign is not the proper solution here.
  2. Wow, seriously? It you tried for yourself, it would take 10 minutes tops, but you still prefer to wait hours for answer here. You're taking laziness to a whole new level, sir ;P on topic: I didn't check, but it should trigger the event, otherwise it's bugged.
  3. Try replacing compare(getarg(.e+1),"Zeny") with compare(getarg(.e+1)+"", "Zeny") and do the similar with occurences of getarg(@i+1) too.
  4. Run two instances as separate users.
  5. Assuming player is already logged in <?php echo $session->account->account_id; ?> No idea. You're on your own here. But why don't you just use PayPal, which is supported out of the box in FluxCP?
  6. I don't think it's worth it. How many group will server have, on average? 5, maybe 10. A script command to get group_id would be enough. Then, if you'd like to enable some NPCs for specified groups only, you could do if( getgroupid() == X || getgroupid() == Y ) ...
  7. To provide some compatibility, each group has a level property, so if scripts requires a GM level with getgmlevel(), it will compare it agains a level of the group player belongs to. For example, "admin" group could have level=99, and "players" group level=0.
  8. I hope this does not mean IO load on each atcommand. I feel a bit sad, we can not port other confs to use libconfig =(. Allowed commands are represented internally as a node of the libconfig config_t, which is a dynamically allocated tree-like struct to hold all settings and their values. So, "looked up by name by libconfig API" means "libconfig will be responsible for finding a correct node and its value in its own struct". No file io involved. I just didn't find any reasons to move it to DBMap (string->value). Other confs could be ported, but as I said, they are not complicated enough to make it worth it.
  9. I could replace @adjgmlvl with @changegroup or smth like that. It would temporarily (until relog) move player to another group.
  10. Time for more detailed description of changes I've done so far. General description: The whole concept of GMs and non-GMs as well as GM levels has been abondoned in favor of more role- and privilege-oriented player groups. Player groups are independent of each other, so unless you decide to do so, they don't have to share any privileges like it was with top-down GM level hierarchy. There is, however, a way to say which group is higher, and which is lower: it's group level. Each group has following atributes: ID — unique number, the same that is used in `login`.`group_id` name level — it can be interpereted as (GM) level of all group members commands settings — what commands can group members use permissions settings — what other permissions group members have inherited groups — permissions and commands from which groups are inherited [*]Groups are configured in 'conf/groups.conf' file. [*]Each account belongs to exactly one group. In `login` table, `level` column has been renamed to `group_id`. [*]In login-server configuration file 'conf/login_athena.conf' "min_level_to_connect" setting has been replaced with "group_id_to_connect" setting, which allows you to define account group id that is required to connect to server. [*]In char-server configuration file 'conf/char_athena.conf' "gm_allow_level" setting has been replaced with "gm_allow_group" setting, which allows you to define group id that is allowed to bypass the server limit of online users. [*]Atcommand configuration file no longer defines GM levels required to use the command. Permissions to use commands are defined for each player group separately in group configuration file. [*]GM configuration file (conf/battle/gm.conf) no longer defines GM levels required to get some privileges (like trading or partying). See full list: These permissions are defined for each player group separately in group configuration file. [*]Player title defined by 'conf/battle/gm.conf' settings "title_lvl1" to "title_lvl8" and 'conf/msg_athena.conf' (335~342) are replaced with group names. [*]Group level is used only: when determining if player can override trade restrictions defined in 'db/item_trade.txt' when determining if player can use @command on another player (existing rule that low-level player can not use some commands, eg @kick on high-level player has been kept) or see another player with @who commands (if they have "hide_session" privilege). as a return value for getgmlevel() script command when determining if player can use commands in a map with nocommand mapflag set [*]Modified GM whisper system to deliver messages basing on permissions, not level. [*]Remote trade request is now possible only if player is allowed to use @trade command as well. [*]Added a proper permission to use /changemaptype command. [*]clif_displaymessage is now capable of displaying multiline messages [*]all ACMD_FUNCs are static now, and the only way to invoke them is with is_atcommand(); all client commands (starting with /) are now translated into corresponding atcommands (with exception of /kick used on monster, as there is no atcommand to kill single monster). List of commands: [*]Removed nonsense "bot check" triggering when player blocked (/ex) Server. [*]Merged @monster, @monsterbig and @monstersmall. [*]Removed @adjcmdlvl command. [*]Replaced @adjgmlvl command with @adjgroup, which allows to temporarily move player to another group. [*]@help command requires "commandname" param and shows more detailed info about commands. Technical details: All occurences of GM level have been replaced either with Group ID (in login and char-server) or Group Level (in map-server). Login-server and char-server are not aware of player groups, they just know the group_id of the account. In map-server group level is used only if there is a need to compare "level" of two players (to preserve the rule that low-level GM can not use commands like @kick on high-level GM), and in script command getgmlevel(). [*]Player groups implementation Player groups are implemented in separate source file and only provide functions to: check if group can use command check if group has permission to do something get group name get group level initialize groups (for server startup) finalize groups (for server shutdown) [*]Player groups use libconfig to load configuration from config file to memory. group permissions are cached and packed in one unsigned int to faster lookup group allowed commands are looked up by name by libconfig API directly from configuration struct inheritance rules are evaluated once, at config load; there is a simple check against inheritance cycles [*]Atcommand changes atcommands use libconfig to load configuration from config file to memory atcommand aliases now use a separate DBMap that points to the same AtCommandInfo structs as original commands [*]"GM" permissions ("can trade", "can party" etc) are defined as enum now. If you're interested in even more details, just ask or wait until I post a diff, which should be ready soon. I need however an opinion on libconfig. It looks like libconfig package for Debian (dunno about other distros) has not been updated in a while, so users will have to compile it from source anyway. So maybe it's better to just link it statically in both Linux and Windows? It's LGPL, so we can include its code in rAthena and change it to GPL.
  11. What Control Panel do you use? Pingback: http://bit.ly/vhJVZN
  12. It were just comments that were updated. You can have your logs wherever you want.
  13. ACMD_FUNC(doom) { struct map_session_data* pl_sd; struct s_mapiterator* iter; nullpo_retr(-1, sd); iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) ) { if (pl_sd->fd != fd /*&& pc_isGM(sd) >= pc_isGM(pl_sd)*/) { status_kill(&pl_sd->bl); clif_specialeffect(&pl_sd->bl,450,AREA); clif_displaymessage(pl_sd->fd, msg_txt(61)); // The holy messenger has given judgement. } } mapit_free(iter); clif_displaymessage(fd, msg_txt(62)); // Judgement was made. return 0; } Kenpachi was faster
  14. Of course there is, but it's not official tool, just a script I created for r15531. I'm not that crazy to edit ~1000 mobs by hand I've put it online here: http://dev.gepard.kdr.net.pl/r15531/
  15. Not using Dropbox yet? Please help me get some extra space (you'll get yours too!): http://db.tt/CrDwjjD

  16. Lol, misleading topic title. I instantly thought about game episodes. Anime title is not Ragnarok, but Ragnarok the Animation. RtA for short.
×
×
  • Create New...