Jump to content

anacondaq

Members
  • Posts

    1096
  • Joined

  • Days Won

    38

Community Answers

  1. anacondaq's post in need help compile error windows was marked as the answer   
    Install Windows SDK (usually it's installed by default when you install Visual Studio Community 2019 or 2017 and select C++).
    Then, right click on the solution -> Retarget Solution -> OK -> Clean Solution -> Build Solution. If source code correct - everything will work fine. 
  2. anacondaq's post in How to check for Monk Spirit Balls? was marked as the answer   
    script_commands.txt
    --------------------------------------- *addspiritball <count>,<duration>{,<char_id>}; Adds spirit ball to player for 'duration' in milisecond. --------------------------------------- *delspiritball <count>{,<char_id>}; Deletes the spirit ball(s) from player. --------------------------------------- *countspiritball {<char_id>}; Counts the spirit ball that player has. ---------------------------------------  
  3. anacondaq's post in Multilingual was marked as the answer   
    No, you did not get me at all.
    There is impossible (almost) to make a "please select your language" without writing a lot of code and writing custom programs for this purpose some kind of patchers or like that.
    I wrote about the easy solution to your needs.
    You need to do next:
    prepare a game client for the English language prepare a game client for your native language or a language what you wish to deliver to players in the separate game folder you must have two different folders of two different game clients with two different languages Now create or SFX archive (self-extracted one with 7z SFX builders or tools like that) or much easier - google for inno setup or inno-setup like alternatives and try all of them. Almost all installer creation tools offer to you (who building the final installer) to add checkboxes where a player on the stage of installing your product can select what version of the client he wanted to pick. English or for example a French one. Because of deduplication of data, and if you will use solid archiving you can save pretty compressed archive which will be around the same as your original English one + files what translated to another language.  (this is an option inside installer setup tools) Now a player or any other guy run installer, and he sees: "To continue installation select a.) English; b.) French language" and a player will be forced to pick a version/language what he likes. Optionally you can create a bat script or PowerShell script which will do language switching by replacing or even re-downloading remotely files with correct translation per a language that you want. The main thing that you must understand - there are no simple solutions. 
  4. anacondaq's post in make: *** [Makefile:41: common] Error 2 was marked as the answer   
    Are you trying to compile rAthena source code with cygwin under windows, right? 
    You can't, there are a lot of problems. Check my work here: 
    My goal was to make a compiler to my another project posted on the forum for newbies, to have a portable compiler, but I got stuck (I did solved the problem for different emulators, but not for the rAthena).
    The problem with the emulator code itself.
    Yes, you can fix a lot of problems with cygwin, but at a final point you will be stuck with the code itself.
    I even tried to rewrite broken parts of the code, or windows / linux specific commands, dozens of warnings, etc on my own just to make it work, but even me, after around a week with tests and attempts - give up on it (again, with other emulators cygwin works fine).
    So, if you want to compile the rAthena emulator try to use MS Build Tools, or ideally visual studio. 
     
  5. anacondaq's post in Block Body Relocation while Spider Web was marked as the answer   
    open skill.cpp
    Find
    case MO_BODYRELOCATION: if (unit_movepos(src, x, y, 2, 1)) { #if PACKETVER >= 20111005 clif_snap(src, src->x, src->y); #else clif_skill_poseffect(src,skill_id,skill_lv,src->x,src->y,tick); #endif if (sd) skill_blockpc_start(sd, MO_EXTREMITYFIST, 2000); } break; Replace to:
    case MO_BODYRELOCATION: // Block skill usage while you have SC_SPIDERWEB status if(sc&& sc->data[SC_SPIDERWEB]) break; if (unit_movepos(src, x, y, 2, 1)) { #if PACKETVER >= 20111005 clif_snap(src, src->x, src->y); #else clif_skill_poseffect(src,skill_id,skill_lv,src->x,src->y,tick); #endif if (sd) skill_blockpc_start(sd, MO_EXTREMITYFIST, 2000); } break;  
  6. anacondaq's post in Black Screen in aonly one PC was marked as the answer   
    Hi, not sure if it will help you, but at least worth trying: http://forum.ratemyserver.net/guides/guide-force-to-use-nvidia-graphics-card-instead-of-intel-on-your-any-laptop/
     
  7. anacondaq's post in Signboard updating; ASCII to EUR-KR was marked as the answer   
    For avoiding problems, use always korean as main language everywhere.


  8. anacondaq's post in warper warps player to last place on list was marked as the answer   
    after each case: usage you must add "break;" command to terminate switching.
    mes "Leveling Quests"; mes "Placeholder."; next; switch(select("120-140 :141-150 :151-160 :161-175 ")) { case 1: warp ("vis_h01",114,118); break; case 2: warp ("1@md_pay",22,38); break; case 3: warp ("1@slw",114,59); break; case 4: warp ("x_prt",70,122); break; }  
  9. anacondaq's post in Credit transfert on charactere bugged. was marked as the answer   
    I have not found in current actual FluxCP and rAthena emulator this old and deprecated table: global_reg_value
    Looks like you're trying to use old FluxCP. Try new one from https://github.com/rathena/FluxCP, but you can manually replace global_reg_value  to char_reg_num for example (i don't know)
  10. anacondaq's post in Please help old trap skill hunter (Multiple Trap) was marked as the answer   
    http://herc.ws/board/topic/533-how-to-enable-multiple-hits-for-claymore-trap/
  11. anacondaq's post in Help Visual Studio 2017 was marked as the answer   
  12. anacondaq's post in @ Commands don't go through and end up as normal messages was marked as the answer   
    groups.conf
  13. anacondaq's post in Guild ID check for all party members was marked as the answer   
    prontera,156,180,5 script PartyChecker 89,{ if(getpartyleader(getcharid(1),2) == getcharid(0)) { if(select("Check party","Cancel") != 1) close; .@main_guild = getcharid(2); getpartymembers(getcharid(1),2); for(.@i = 0; .@i < $@partymembercount; .@i++) { if(getcharid(2,$@partymembercid[.@i] != .@main_guild) { mes "Not all members of the party in the same guild. Break"; dispbottom strcharinfo(0,$@partymembercid[.@i]) + " out of the guild"; break; } } } } I did not test that code, and very sleepy. 
  14. anacondaq's post in Complete Website Overhaul Help was marked as the answer   
    One of these guys can help: https://rathena.org/thirdpartyservices/
  15. anacondaq's post in Which part of the source is <NAVI> <INFO> and <URL> handled? was marked as the answer   
    This is client-side tags, which parse data inside these tags at client-side. 
  16. anacondaq's post in 3 Character BUG MAP was marked as the answer   
    https://github.com/rathena/rathena/issues/1145
  17. anacondaq's post in Equipment Bug was marked as the answer   
    everything looks like the problem related to packet obf. 
    So, turn it off, and try again if you have a problem with equip switching.
    For that you need open src/config/core.h and turn off packet obf. 
    Example: 
     
    /// Comment to disable the official packet obfuscation support. /// When enabled, make sure there is value for 'packet_keys' of used packet version or /// defined 'packet_keys_use' in db/[import/]packet_db.txt. /// This requires PACKETVER 2011-08-17 or newer. /// #define PACKET_OBFUSCATION  
  18. anacondaq's post in Miss on Emperium Attack was marked as the answer   
    Make sure that you have learned Guild Approval Skill.
     
  19. anacondaq's post in R>@cartdropall was marked as the answer   
    Note: The command works the same like @storeall one, but instead of storing item to storage, you will store items to cart (if you can cart only and have free slot and weight in cart)
     
    add to src/custom/atcommand.inc next code function:
    ACMD_FUNC(cartstoreall) { int i; nullpo_retr(-1, sd); if ( !pc_iscarton(sd) ) { clif_displaymessage(fd, "Sorry, but you don't have a cart."); return 1; } for (i = 0; i < MAX_INVENTORY; i++) { if (sd->status.inventory[i].amount) { if(sd->status.inventory[i].equip != 0) pc_unequipitem(sd, i, 3); pc_putitemtocart(sd, i, sd->status.inventory[i].amount); } } clif_displaymessage(fd, "All items from inventory stored at cart."); // All items stored. return 0; } Then, add to src/custom/atcommand_def.inc next code function:
    ACMD_DEF(cartstoreall), Recompile, and have fun. I did few tests related to cart sizes / weight / cart overflow, and everything works fine, no errors, no problems, no item drop to the ground -> just errors if something wrong with cart will be shown to the player.
     
    P.S. if you experience any issues with adding atcommand, you can try to use this diff patch.
  20. anacondaq's post in replacing map problem, need korean folder name was marked as the answer   
    I really hate people who sharing their work, and which not finishing project like it should to be done.
    They spent a lot of time for creating it, but they not spending just few seconds to create normal ARCHIVE with saving encoding!
    Here is short guide how to convert ANY such extracted files from archive with very shitty encoding (destroyed by archivator or system encoding) to native default korean.
    You should try to use GRF Editor, this tool will save million hours of your time. Look what you need to do for any problems with encoding which you have when extracting anything from such archives:
    1. You should download and install GRF Editor
    2. Download sprite / map archive which have bad encoding after extracting.
    At screenshot below i have downloaded prontera map, and extracted to my folder. I have next picture:

     
    As you see folder names and files inside folders which uses Korean default encoding after extracting files from archive - now broken.
    So, what to do? You should to do next:
     
    3. Open GRF Editor, go to settings: and select Display Encoding to Korean like on screen below, then click OK.
     

     
    4. Then click File -> New -> New GRF
    5. Go back to your folder with sprites, and Drag'n'Drop to GRF Editor window your folder, like on GIF below
     

     
     
    What happened? After Drag'N'Drop file with bad encoding (but not modified by your hands) to GRF Editor, GRF Editor automatically detect it and suggest you to fix it automatically. So, in result you will have now after that action "good encoding".
     
    6. So, now it's time to extract files with NORMAL encoding to your any other folder and have fun. For that you should right click on parent folder with files and click "Extract -> Extract Folder ..."
     

     
    7. Select path where you want to save new files, and voila -> you will get converted from "bad" to "good korean" encoding files.
     

     
    Such method will save you a lot of time to solve any issues with broken encoding after extracting sprites / actions from archive (usually zip / rar (7z uses as i remember unicode, and fix encoding problem by itself)). You can do that trick for any amount of data and convert encoding easy as 1-2-3. Have fun with it, i hope i helped you
  21. anacondaq's post in MVP announce was marked as the answer   
    This is not really script request. Because with scripts you should to do a lot of work for controlling mobs, do a lot of arrays, do a lot of checks, and you will not know exact time when MVP spawned. Why do you need to do all of this job, if you can try to use src edits?
     
    Here what you need to do:
     
    1. Open mob.c and find next function
    int mob_delayspawn(int tid, unsigned int tick, int id, intptr_t data) 2. In this function find mob_spawn(md); and above or below add next code
    // if monster boss -> do announce if( md->spawn->state.boss ) { char message[128]; sprintf(message, "[MVP Spawn]: %s has been spawned on his map.", md->name); clif_broadcast(&md->bl, message, strlen(message) + 1, BC_DEFAULT, ALL_CLIENT); } P.S. if you do not understand where need to add code above, just look function uploaded here: https://gist.github.com/anacondaqq/b0c7729aa4ed9ee73c9a45705f8daec4
    Or here is diff patch: link
     
    Here is screen when i kill Tao, (tomb system enabled, mvp re-spawn time decreased in monster.conf to avoid log waiting for mvp re-spawn (just for testing this custom source mode above).
     

     
    Then i go to another map just to confirm that mod showing announces for all connected players to the game on any map.
    As you see i sitting at prt_fild, and just waiting for announce.
     

     
    So, as you see this mod show you if some mvp spawned. It will  NOT affect @reloadscript, and reloadmobdb, it will affect only spawn data if mob killed by someone.
    Have fun
     
    P.S. if you wish to see where exactly spawned mob (like on screen below)
    replace line in modification above:
    sprintf(message, "[MVP Spawn]: %s has been spawned on his map.", md->name); to:
    sprintf(message, "[MVP Spawn]: %s has been spawned on %s map.", md->name, map_mapid2mapname(md->spawn->m));
  22. anacondaq's post in Adding killing time to Mushroom Event was marked as the answer   
    something like that
    //===== rAthena Script ======================================= //= Find the Mushroom //===== By: ================================================== //= Mysterious //===== Current Version: ===================================== //= 3.6a //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= //= Find the Mushroom - random amount of Mushrooms spawns in random maps. //= Players need to find these mushrooms and kill them to gain prizes! //===== Additional Comments: ================================= //= 3.0 Fully Functional with Rewritten script. [Mysterious] //= 3.6a Slightly edited. [Euphy] //============================================================ prontera,142,228,6 script Find the Mushroom 1014,{ mes "[ Find The Mushroom ]"; if (!.Status) mes "There is no event at the moment!"; else { mes "There are "+.Spawn+" Mushrooms left in "+.Map$+"!"; mes "Find and kill the mushrooms to gain "+getitemname(.Prize)+"!"; } if (.Status || getgmlevel() < .GM) close; mes "Start the event?"; next; if(select("- No:- Yes") == 1) close; donpcevent strnpcinfo(0)+"::OnMinute10"; mes "[ Find The Mushroom ]"; mes "Event started!"; close; OnInit: set .Prize,677; // Reward item ID set .Amount,1; // Reward item amount set .GM,60; // GM level required to access NPC setarray .Maps$[0],"izlude","geffen","morocc","prontera","payon","lighthalzen","aldebaran","hyrule"; // Possible maps end; OnMinute10: // Start time (every hour) if (.Status) end; set .Status,1; set .Spawn,rand(1,5); // How many Mushrooms should spawn? set .Map$,.Maps$[rand(getarraysize(.Maps$))]; killmonster .Map$,"All"; initnpctimer; // start timer monster .Map$,0,0,"Please don't kill me!",1084,.Spawn,strnpcinfo(0)+"::OnMobKilled"; announce "Find the Mushroom : Total of "+.Spawn+" Mushrooms have been spawned in "+.Map$+"!",0; sleep 2500; announce "Find the Mushroom : Every Mushroom you kill will give you "+getitemname(.Prize)+"!",0; end; // If nobody kill all mobs // 1800 seconds = 30 minutes OnTimer1800000: stopnpctimer; if(.Spawn || .Status) { killmonster .Map$,"All"; announce "The Find the Mushroom Event has ended. All the Mushrooms have been killed.",0; set .Status,0; } end; OnMobKilled: stopnpctimer; set .Spawn, .Spawn - 1; getitem .Prize, .Amount; if (.Spawn) announce "[ "+strcharinfo(0)+" ] has killed a Mushroom. There are now "+.Spawn+" Mushroom(s) left.",bc_map; else { announce "The Find the Mushroom Event has ended. All the Mushrooms have been killed.",0; set .Status,0; } end; }
  23. anacondaq's post in 2015-11-04aRagexe.exe font too small? was marked as the answer   
    try
    <?xml version="1.0" encoding="euc-kr" ?> <clientinfo> <desc>Ragnarok Client Information</desc> <servicetype>america</servicetype> <servertype>primary</servertype> <connection> <display>Local</display> <address>127.0.0.1</address> <port>6900</port> <version>55</version> <langtype>1</langtype> <registrationweb></registrationweb> <admin>1000000</admin> <admin>2000000</admin> <admin>2000118</admin> <admin>2000129</admin> <loading> <image>loading00.jpg</image> <image>loading01.jpg</image> <image>loading02.jpg</image> <image>loading03.jpg</image> <image>loading04.jpg</image> </loading> </connection> </clientinfo>
  24. anacondaq's post in HOURLY REWARDS was marked as the answer   
    Here is it: link
  25. anacondaq's post in Asura Damage on mobs was marked as the answer   
    in src/config/core.h
    uncomment this line
    /// Uncomment to enable skills damage adjustments /// By enabling this, db/skill_damage.txt and the skill_damage mapflag will adjust the /// damage rate of specified skills. //#define ADJUST_SKILL_DAMAGE open db\skill_damage_db.txt
     
    add to this file
    271,1,1,0,0,50,0 This means: skill ID 271, 1 = from players, 1 = on all maps, 0 % damage increased against players, 0% damage increased against mobs, 50% damage increased against on boss mobs.
     
    Summarize:
    Players on normal maps will deal 50% more damage with skill ID 271 against boss monsters.
×
×
  • Create New...