Jump to content


  • Content Count

  • Avg. Content Per Day

  • Joined

  • Last visited

  • Days Won


Everything posted by Jey

  1. Did you enable the devtoolset for this shell session with `scl enable devtoolset-7` before you execute the configure script? Usually this error is reported, if the g++ compiler is outdated (like nitrous already mentioned).
  2. This is an old bug tracker issue and likely has been fixed a long time ago. What do you actually want to do?
  3. Jey

    EXP Tabelle

    In der table sind die exp komma-getrennt und um in das level aufzusteigen, wird die kumulierte exp benötigt. Ergo benötigt man von 99 auf 100 100300002-99999998 also 300k exp. Allerdings muss ich sagen, dass ich die pre-re exp table auch nicht sonderlich gut fand. Ich habe damals mit Excel (oder Libreoffice Calculator) und Geogebra die pre-re exp table so angepasst, dass sich (für unsere Rates) ein angenehmes Levelgefühl eingestellt hat. Ich würde dir das selbe empfehlen. Ansonsten kannst du auch gerne unsere von damals probieren, ich hänge sie hier an. job_exp.txt
  4. mit git log oder git status. Update mal deine revision, ich habe zumindest die aktuelle Version getestet (auf Ubuntu), da gab es keine Aggro/Dropprobleme
  5. Try to use clif_displaymessage(fd, atcmd_output); after sprintf. sprintf only saves the formatted string into atcmd_output. With clif_displaymessage you send it to the client.
  6. As of https://github.com/rathena/rathena/commit/ea88ea50546fd140bda875056f83a60b6b0bef96 you're using old emotion constants. You need to convert them by hand or with our conversion script: https://github.com/rathena/rathena/blob/master/tools/convert_emotions.py
  7. Welche Monster waren nicht aggressiv? In Byalan sind es recht wenige: http://ratemyserver.net/index.php?page=areainfo&area=1006&re_mob=1 In Toy Factory auch: http://ratemyserver.net/index.php?page=areainfo&area=1027&re_mob=1 (Die rot markierten)
  8. The current job changer should ask twice to confirm the job change: First Select the class: Then confirm it: So it shouldn't happen by mistake. If you still want to disable all Non-Trans-Third-Classes you could add this to the Can_Change_Third-function in the jobmaster: if( !(eaclass()&EAJL_UPPER) ) return false; // Non trans class Keep in mind, that you also disable Baby Third classes with this addition.
  9. Jey


    Good suggestion @Santafe . I'd like to have these kind of atcommands for all status changes in future, for debugging purposes. But that'd need some code refactorizations i think :/
  10. It should be the full script, not sure if I missed anything. But it's non applicable on the current rathena version. Unfortunately I'm pretty lazy in terms of updating diffs, therefore I'd like delay that work until we got a proper plugin system. Everyone who wants to use it before that should be able to get it done with the "instructions" above.
  11. "Please check total character numbers?" Did you increase the character slots, or do you have more character db entries than character slots? I'm using the same client, and didn't run into that issue yet. Edit: But I also haven't tried to create a character using _M/_F. Try to create the account directly in the database
  12. Hey Judas, I had the same idea (for WoE statistics) some time ago. And I solved it by just incrementing character variables at the specific src positions: ➜ src git:(master) ✗ grep -nr "WoE Statistik" map/intif.c:286: if( agit_flag || agit2_flag ) pc_setglobalreg(sd,add_str("woestat_chat"), pc_readglobalreg(sd,add_str("woestat_chat"))+1);// [Jey] WoE Statistik map/unit.c:400: if( bl->type == BL_PC && (agit_flag || agit2_flag) ) pc_setglobalreg(sd,add_str("woestat_walked"), pc_readglobalreg(sd,add_str("woestat_walked"))+1);// [Jey] WoE Statistik map/unit.c:1911: if( map_flag_woe(sd->bl.m) ) pc_setglobalreg(sd,add_str("woestat_skilluse"), pc_readglobalreg(sd,add_str("woestat_skilluse"))+1);// [Jey] WoE Statistik map/clif.c:10760: if( agit_flag || agit2_flag ) pc_setglobalreg(sd,add_str("woestat_chat"), pc_readglobalreg(sd,add_str("woestat_chat"))+1); // [Jey] WoE Statistik map/clif.c:11047: if(agit_flag || agit2_flag ) pc_setglobalreg(sd,add_str("woestat_chat"), pc_readglobalreg(sd,add_str("woestat_chat"))+1); // [Jey] WoE Statistik map/pc.c:5060: if( map_flag_woe(sd->bl.m) ) pc_setglobalreg(sd,add_str("woestat_potuse"), pc_readglobalreg(sd,add_str("woestat_potuse"))+1); // [Jey] WoE Statistik map/pc.c:5449: if( sd->vars_ok && (agit_flag || agit2_flag) ) pc_setglobalreg(sd,add_str("woestat_warpcount"), pc_readglobalreg(sd,add_str("woestat_warpcount"))+1);// [Jey] WoE Statistik map/pc.c:7586: // [Jey] WoE Statistik map/pc.c:8418: if( map_flag_woe(sd->bl.m) ) pc_setglobalreg(sd,add_str("woestat_itemheal"), pc_readglobalreg(sd,add_str("woestat_itemheal"))+hp);// [Jey] WoE Statistik map/party.c:938: if(agit_flag || agit2_flag ) pc_setglobalreg(sd,add_str("woestat_chat"), pc_readglobalreg(sd,add_str("woestat_chat"))+1);// [Jey] WoE Statistik map/skill.c:564: if( sd != NULL && map_flag_woe(sd->bl.m) ) pc_setglobalreg(sd,add_str("woestat_heal"), pc_readglobalreg(sd,add_str("woestat_heal"))+heal);// [Jey] WoE Statistik map/skill.c:2584: if( map_flag_woe(sd->bl.m) ) pc_setglobalreg(sd,add_str("woestat_broken"), pc_readglobalreg(sd,add_str("woestat_broken"))+1);// [Jey] WoE Statistik map/skill.c:8564: if( sd != NULL && map_flag_woe(sd->bl.m) ) pc_setglobalreg(sd,add_str("woestat_heal"), pc_readglobalreg(sd,add_str("woestat_heal"))+hp);// [Jey] WoE Statistik map/skill.c:8754: if ((dstsd = g->member[i].sd) != NULL && sd != dstsd && !dstsd->state.autotrade && !pc_isdead(dstsd) && pc_readglobalreg(dstsd,add_str("nowoe")) == 0) {// [Jey] WoE Statistik map/guild.c:1049: if( agit_flag || agit2_flag ) pc_setglobalreg(sd,add_str("woestat_chat"), pc_readglobalreg(sd,add_str("woestat_chat"))+1);// [Jey] WoE Statistik And a NPC which showed the player stats and resets them on ever woe start: prontera,218,87,5 script WoE Statistik 833,{ OnWhisperGlobal: callfunc "CheckWoEStatReset"; mes "Deine letzte WoE Statistik:"; mes "Kills: "+woestat_kills; mes "Tode: "+woestat_deaths; if( woestat_deaths > 0 ) mes "KDA: "+callfunc("GetPercentage",(woestat_kills*100)/woestat_deaths); else mes "KDA: Perfekt"; mes "Maximale Killcombo: "+woestat_killcombo; mes "Heilung gewirkt: "+callfunc("ThousandPoints",woestat_heal); mes "Itemheilung gewirkt: "+callfunc("ThousandPoints",woestat_itemheal); mes "Schaden: "+callfunc("ThousandPoints",woestat_dmgdealt); mes "Schaden erlitten: "+callfunc("ThousandPoints",woestat_tanked); mes "Skills genutzt: "+callfunc("ThousandPoints",woestat_skilluse); mes "Potions genutzt: "+callfunc("ThousandPoints",woestat_potuse); mes "Zerbrochene Rüstung: "+woestat_broken; mes "Chat Kommunikation: "+callfunc("ThousandPoints",woestat_chat); mes "Strecke zurückgelegt: "+callfunc("ThousandPoints",woestat_walked); mes "Höchste AFK-Zeit in Sek.: "+callfunc("ThousandPoints",woestat_idle); mes "Emps gebrochen: "+woestat_empbreak; mes "Gewarpt: "+callfunc("ThousandPoints",woestat_warpcount); close; } //if( map_flag_woe(sd->bl.m) ) pc_setglobalreg(sd,"woestat_heal", pc_readglobalreg(sd,"woestat_heal")+heal); //if( map_flag_woe(sd->bl.m) ) pc_setglobalreg(sd,"woestat_chat", pc_readglobalreg(sd,"woestat_chat")+1); //if( agit_flag || agit2_flag ) pc_setglobalreg(sd,"woestat_chat", pc_readglobalreg(sd,"woestat_chat")+1); // return pc_setpos((TBL_PC*)bl, map_id2index(m), x, y, type); function script CheckWoEStatReset { if( playerattached() && woestat_id != $LastWoEID ) { set woestat_id,$LastWoEID; //Day of the Year woestat_kills = 0; woestat_deaths = 0; woestat_killcombo = 0; woestat_killcombo_tmp = 0; woestat_heal = 0; woestat_itemheal = 0; woestat_dmgdealt = 0; woestat_tanked = 0; woestat_skilluse = 0; woestat_potuse = 0; woestat_broken = 0; woestat_chat = 0; woestat_walked = 0; woestat_idle = 0; woestat_empbreak = 0; woestat_warpcount = 0; } return; } - script WoEStats -1,{ end; OnAgitStart: OnAgitStart2: OnAgitNStartBE: OnAgitNStartTE: initnpctimer; $LastWoEID++; addrid(0); OnPCLoginEvent: callfunc "CheckWoEStatReset"; end; OnPCKillEvent: if( callfunc("onActiveGuildCastle") ) { woestat_kills++; woestat_killcombo_tmp++; if( woestat_killcombo_tmp > woestat_killcombo ) set woestat_killcombo,woestat_killcombo_tmp; } end; OnPCDieEvent: if( callfunc("onActiveGuildCastle") ) { woestat_deaths++; woestat_killcombo_tmp = 0; } end; OnAgitEnd: OnAgitEnd2: OnAgitNEndBE: OnAgitNEndTE: stopnpctimer; OnTimer30000: //Alle 30 Sekunden Idletimecheck (Relativ ungenau, aber egal.) addrid(0); set [email protected],checkidle(); if( [email protected] > woestat_idle ) set woestat_idle,[email protected]; end; } It likely isn't the best approach, but at least it worked fine To answer your question properly: 1. Simple OnPCKillEvent script. 2. SRC edit by comparing the character variable 3. same as 2. 4. SRC edit incrementing the character variable
  13. Mh... I'm not really sure if this really belongs to file releases. I don't think anyone is in need of a login system without an associated web site You could post these things under script/source support. Or if you feel confident you could try to improve rathenas FluxCP on our github page by submitting pull requests. Help is highly appreciated there, but keep in mind that your code must fulfill high standards, so doing small issues/additions first will help you to get into it and help us to know you and your code style better Edit: https://github.com/rathena/FluxCP Note: Akkarin is currently more or less the only one, who is maintaining the FluxCP. Most of the rathena devs are working on the emulator itself. So it would be nice to have another active person there.
  14. https://en.wikipedia.org/wiki/Prepared_statement I'd prefer prepared statements in 95% of all cases, since they're resilient against sql injection and they're quicker if they are executed repeatedly. Keep on implementing stuff, you will get better the more code you write and read. Especially with some feedback
  15. If I may give some more feedback: if (empty($first) || empty($last) || empty($email) || empty($uid) || empty($pwd)) { header("Location: ../signup.php?signup=empty"); exit(); } else { //Check if input characters are valid if (!preg_match("/^[a-zA-Z]*$/", $first) || !preg_match("/^[a-zA-Z]*$/", $last) || !preg_match("/^[1-9][0-9]*$/", $gid)) { header("Location: ../signup.php?signup=invalid"); exit(); } else { //Check if email is valid if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { header("Location: ../signup.php?signup=email"); exit(); } else { //Check if username exists USING PREPARED STATEMENTS $sql = "SELECT * FROM login WHERE userid=?"; //Create a prepared statement $stmt = mysqli_stmt_init($conn); //Check if prepared statement fails if(!mysqli_stmt_prepare($stmt, $sql)) { header("Location: ../index.php?login=error"); exit(); } else { //Bind parameters to the placeholder This nesting makes the code look pretty bad, try to use more functions, classes and their methods to make the code more readable. For example these prepared statements could be used like objects `$stmt->bindParam(1, $name);` Rathena is currently able to hash passwords with md5. Edit: But I like the usage of regex to validate the user input.
  16. /*//De-hashing the password (use this if password is hashed) $hashedPwdCheck = password_verify($pwd, $row['user_pwd']); if ($hashedPwdCheck == false) { header("Location: ../index.php?login=error"); exit(); }*/ The password check is completely disabled, so currently you need to send a password which is >= 1 and you're able to log in with any account.
  17. Wouldn't it be easier to just remove hunger and automatically give them 100% intimacy?
  18. Jey

    Unique exchanger

    Cool script @Alayne . I just want to give one little suggestion: `@realRank` should either be a scope variable (preferably) or it should get cleared before usage.
  19. I think it took me a whole year to finally reach level 99. I thought hidden temple lv 3 is the hardest and best level dungeon ingame...
  20. Looks like your user doesn't have enough access rights to create files in your rathena folder? Try to do `touch testfile` use `ls -lA` to list the file permissions. https://wiki.archlinux.org/index.php/File_Permissions_and_Attributes
  21. Cool! Never knew it's possible to remove flags by adding a negative value! But I think it's needed to remove the // 4 - GUID Item Flag to make them stackable. So you'd need to add 16393, -4 etc.
  22. This statement and the fact that you're able to clean and recompile your project doesn't make any sense together... I assume something else is wrong here.
  23. I just tested the endless tower on the latest version. I was able to create it and do the first level without any crash. Try to do it again on a clean copy of rathena
  24. I'm really not sure about that. Are you getting any other issues besides these warnings? Maybe you downloaded wrong dependencies but also got the right ones? Hard to tell.
  25. Still not sure if you're on a 64 bit system. That looks more like 64 bit; then you should run configure without the disable-64bit flag
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.