Jump to content

Ridley

Administrators
  • Content Count

    1157
  • Joined

  • Last visited

  • Days Won

    86

Everything posted by Ridley

  1. this just enables it after the crash, there is a file "core.xxxx" (example, core.5213) simply check with dir, then: gdb map-server core.xxxxbt full
  2. Off topic: I don't know the code of harmony. But how do they do it without the sso launcher? Let's say I use rolex. I would still be able to run the game client without it if I provide the exe with my login credentials. So I could avoid my Mac beeing logged
  3. No idea what you mean xD but i found how to do it directly on the github site.
  4. I'm a SVN Fanboy but i thought to give git a try. When creating a fork, how can i update it to the latest version? (Using TortoiseGit). Do i need to create a new remote? I would really appreciate any help with that.
  5. } else if (checkmount() == MOUNT_PECO && getskilllv(KN_RIDING)) { to } else if (!checkmount() == MOUNT_PECO && getskilllv(KN_RIDING)) {
  6. ./configure --enable-debug=gdb ulimit -c unlimited then starting the server. The next time it crashes you will find a file named core.1234 (or whatever number) gdb map-server core.xxxx bt full
  7. Ridley

    Request @sameip

    hm it works thanks, mine was a bit different and didnt work with dispbottom (i have actually no idea why) with mes it worked fine. o_o
  8. Hello, I would like to request a command that displays all the duals on the map where the command is executed example i use @sameip in prontera then display in the chat window ---------------List of Same IP in Prontera--------- User 1<ip> and User 2<ip> User 1<ip> and User 3<ip> User 4<ip> and User 18<ip> User 8<ip> and User 22<ip> (and so on) instead of "user" it shows the char name I got an old src code of this but i hoped someone got an idea about how to make it a plugin or do it via bindatcmd. Anyways, here is the src (eathena) /*========================================== * @sameip * List all players on a map currently on the same IP. *------------------------------------------*/ACMD_FUNC(sameip){ int i, j; int map_id; char map_name[MAP_NAME_LENGTH]; struct s_mapiterator* iter; struct map_session_data* ssd; struct ip_record record[100]; struct same_record same[100]; nullpo_retr(-1, sd); if (!message || !*message) { safestrncpy(map_name, map[sd->bl.m].name, MAP_NAME_LENGTH); } else { safestrncpy(map_name, message, MAP_NAME_LENGTH); } map_id = map_mapname2mapid(map_name); if (map_id == -1) { sprintf(atcmd_output, "The map name '%s' doesn't exist.", map_name); clif_displaymessage(sd->fd, atcmd_output); return -1; } sprintf(atcmd_output, "---- Listing all players on %s ----", map_name); clif_displaymessage(sd->fd, atcmd_output); memset(same, 0, sizeof same); memset(record, 0, sizeof record); i = 0; iter = mapit_getallusers(); for (ssd = (struct map_session_data*)mapit_first(iter); mapit_exists(iter); ssd = (struct map_session_data*)mapit_next(iter)) { if (ssd == NULL) continue; if (ssd->state.autotrade) continue; if (ssd->fd < 0 || session[ssd->fd] == NULL) continue; if (ssd->bl.m != map_id) continue; ARR_FIND(0, 100, j, record[j].ip == session[ssd->fd]->client_addr); if (j == 100) { ARR_FIND(0, 100, j, record[j].account_id == 0); if (j == 100) break; record[j].ip = session[ssd->fd]->client_addr; record[j].char_id = ssd->status.char_id; record[j].account_id = ssd->status.account_id; continue; } same[i].ip = session[ssd->fd]->client_addr; same[i].pl1 = map_id2sd(record[j].account_id); same[i].pl2 = ssd; i++; } if (i > 0) { for (j = 0; i > j; j++) { if (same[j].pl1 && same[j].pl2) { sprintf(atcmd_output, "- Characters '%s' and '%s' are on the same IP.", same[j].pl1->status.name, same[j].pl2->status.name); clif_displaymessage(sd->fd, atcmd_output); } } } sprintf(atcmd_output, "---- Found %d players on the same IP ----", i); clif_displaymessage(sd->fd, atcmd_output); mapit_free(iter); return 0;}
  9. omg it's annie, i'm fainting *fanboy shout i remember an issue on eathena with guild skills. prontera,164,170,4 script Guild Bug Fix 864,{ OnWhisperGlobal: if(guild_reset_progress!=0){ set @check,gettimetick(2); if(@check-guild_reset_progress < 360){ mes "Please wait 1 hour before using the NPC again"; close; } } mes "This is a npc to be used only by guild masters to rebuild their guilds in case they are bugged"; next; set @GID,getcharid(2); if(strcharinfo(0)!=getguildmaster(@GID)){ mes "You are not the guild master."; close; } mes "Let's start with counting your guild skills."; set @count,0; for(set @i,10000;@i<10015;set @i,@i+1) set @count, @count + getgdskilllv(@GID,@i); next; mes "Now let's count your remaining points and your guild level."; query_sql "Select `guild_lv`,`skill_point` from `guild` where `guild_id` = '" + @GID + "'",@guild_level,@skill_point; set @guild_level,@guild_level-1-@skill_point-@count; next; if(@guild_level){ mes "We need to remove "+@guild_level+" guild levels and give it again."; next; atcommand "@glevel -"+@guild_level; atcommand "@glevel "+@guild_level; mes "Everything should be fine now. You can use the npc again after 1 hour if necessary."; } else { mes "Everything seems fine with your guild. You can use the npc again after 1 hour if necessary."; } set guild_reset_progress,gettimetick(2); close;} But right now i have no real id how to check/read/apply for all skills in the class tree.
  10. what is "field list"? its not even in the script
  11. it's already in the script.. CREATE TABLEcustom_storage SELECT * FROM storage;ALTER TABLE `custom_storage` ADD PRIMARY KEY ( `id` );ALTER TABLE `custom_storage` CHANGE `id` `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT;TRUNCATE TABLE `custom_storage`;
  12. http://rathena.org/board/topic/64418-script-editors-notepad-rathena-custom-syntax-highlight/
  13. lol scrap it i got your point, man how can i be so blind xD i could cry xD 2nd dumb mistake this weeks
  14. i got a weird problem and can't figure the cause o__O i added a few new items (i added customs before already and never had problems with it) so, these are examples of those who work: iteminfo.lub: [29102] = { unidentifiedDisplayName = "Rogue Cape", unidentifiedResourceName = "rogue_cape", unidentifiedDescriptionName = { "Unknown Item, can be identified by [Magnifier]." }, identifiedDisplayName = "Rogue Cape", identifiedResourceName = "rogue_cape", identifiedDescriptionName = { "^ff0000This is an exlcusive Headgear for active Beta Testers!^000000", "Class: ^777777Costume^000000", "Location: ^777777Lower^000000", "Weight: ^77777710^000000", "Jobs: ^777777All^000000", "^990099[WoonRo Custom]^000000" }, slotCount = 0, ClassNum = 1250 }, [29103] = { unidentifiedDisplayName = "Siren", unidentifiedResourceName = "siren", unidentifiedDescriptionName = { "Unknown Item, can be identified by [Magnifier]." }, identifiedDisplayName = "Siren", identifiedResourceName = "siren", identifiedDescriptionName = { "^ff0000This is an exlcusive Headgear for active Beta Testers!^000000", "Class: ^777777Costume^000000", "Location: ^777777Upper^000000", "Weight: ^77777710^000000", "Jobs: ^777777All^000000", "^990099[WoonRo Custom]^000000" }, slotCount = 0, ClassNum = 1251 }, accname.lub [ACCESSORY_IDs.ACCESSORY_rogue_cape] = "_rogue_cape", [ACCESSORY_IDs.ACCESSORY_siren] = "_siren", accessoryid.lub ACCESSORY_rogue_cape = 1250, ACCESSORY_siren = 1251, And these are the ones who doesn't work: [29104] = { unidentifiedDisplayName = "Helm of Darkness", unidentifiedResourceName = "Helm of Darkness", unidentifiedDescriptionName = { "Unknown Item, can be identified by [Magnifier]." }, identifiedDisplayName = "Helm of Darkness", identifiedResourceName = "Helm of Darkness", identifiedDescriptionName = { "A forboding helmet that hides part of the face. People wearing this have the appearance of Beelzebub.", "Class: ^777777Costume^000000", "Location: ^777777Upper^000000", "Weight: ^7777770^000000", "Jobs: ^777777All^000000", "^990099[WoonRo Custom]^000000" }, slotCount = 0, ClassNum = 1252 }, [29105] = { unidentifiedDisplayName = "Helm of Darkness Amarillo", unidentifiedResourceName = "Helm of Darkness Amarillo", unidentifiedDescriptionName = { "Unknown Item, can be identified by [Magnifier]." }, identifiedDisplayName = "Helm of Darkness Amarillo", identifiedResourceName = "Helm of Darkness Amarillo", identifiedDescriptionName = { "A forboding helmet that hides part of the face. People wearing this have the appearance of Beelzebub.", "Class: ^777777Costume^000000", "Location: ^777777Upper^000000", "Weight: ^7777770^000000", "Jobs: ^777777All^000000", "^990099[WoonRo Custom]^000000" }, slotCount = 0, ClassNum = 1253 }, accname.lub [ACCESSORY_IDs.ACCESSORY_helm_of_darkness] = "_helm_of_darkness", [ACCESSORY_IDs.ACCESSORY_amarillo] = "_amarillo",, accessoryid.lub ACCESSORY_helm_of_darkness = 1252, ACCESSORY_amarillo = 1253, the sprite and file names are correct, all in the correct directiory. I tried: - switched the siren (1251) with amarillo (1253), Siren still worked, amarillo didn't - the files directories are correct - when wearing a gear (e.g. siren), then logging out, switching the clientside (make siren ID to amarillo) info files and logging back, i wear the gear, so the files took place in the grf - Only thing which doesnt work, is are the collection.bps and inventory sprites. As said the directories are correct and the files are not corrupted. - i didn't reach max. limit Anyone got an idea? - both issues seem to be in the texture path, which is datatextureÀ¯ÀúÀÎÅÍÆäÀ̽ºcollection datatextureÀ¯ÀúÀÎÅÍÆäÀ̽ºitem - doesnt neither work with read data folder first.
  15. Ridley

    [HELP]

    Mysterious has a Script doing this http://mysterious-project.googlecode.com/svn/trunk/npc/DoubleEXP.txt Edit: Didnt See your Edit gettime(4)== (0: Sunday - 6: Saturday)For The timer use OnClock:
  16. sorry forgot about this :x this should do it, the script should not allow 3rd or trans class (even if there are still settings for it). I can't remember where i got this script from, but i think it's from eA The costs you can set below at OnInit prontera,153,193,6 script Job Master 123,{function Job_Menu; function A_An; mes "[Job Master]";if (Class > Job_Thief) {mes "No more jobs are available.";close;}if (checkfalcon() || checkcart() || checkriding() || ismounting()) {mes "Please remove your "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkriding())?"Peco":"")+((ismounting())?"mount":"")+" before proceeding.";close;}if (.SkillPointCheck && SkillPoint) {mes "Please use all your skill points before proceeding.";close;} set .@eac, eaclass();set .@i, ((.ThirdClass)?roclass(.@eac&EAJ_UPPERMASK):Class);if (.@i > 6 && .@i < 22) {if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) {set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .Rebirth[1]-JobLevel;mes "You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue.";close;}if (Class > 21) {mes "Switch to third class?";next;Job_Menu(roclass(.@eac|EAJL_THIRD));close;}while(1) {mes "Select an option.";next;set .@i, select(" ~ ^0055FFRebirth^000000:"+((.ThirdClass)?" ~ ^FF0000Third Class^000000":"")+": ~ ^777777Cancel^000000");if (.@i==3) close;mes "[Job Master]";mes "Are you sure?";next;Job_Menu(((.@i==1)?4001:roclass(.@eac|EAJL_THIRD)));mes "[Job Master]";}}set .@j1, roclass(.@eac|EAJL_2_1); set .@j2,roclass(.@eac|EAJL_2_2);if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) setarray .@exp[0],roclass(.@eac|EAJL_THIRD),99;if (Class == Job_Ninja) setarray .@exp[0],.@j1,70;if (.@exp[0] && .ThirdClass) {if (BaseLevel < .Rebirth[0] || JobLevel < .@exp[1]) {set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .@exp[1]-JobLevel;mes "You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue.";close;}mes "Switch to "+jobname(.@exp[0])+"?";next;Job_Menu(.@exp[0]);close;}if (.@eac&EAJL_2)if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) {mes "No more jobs are available.";close;}if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) {if (JobLevel < .JobReq[0])mes "A job level of "+.JobReq[0]+" is required to change into the 1st Class.";else if (Class == 4001 && .LastJob && lastJob) {mes "Switch classes now?";next;Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER));} else switch(Class) {case 0: Job_Menu(1,2,3,4,5,6,23,4046,24,25,4023);case 4001: Job_Menu(4002,4003,4004,4005,4006,4007);case 4023: Job_Menu(4024,4025,4026,4027,4028,4029,4045);default: mes "An error has occurred."; break;}close;}if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1)mes "No more jobs are available.";else if (!(.@eac&EAJL_2) && JobLevel < .JobReq[1])mes "A job level of "+.JobReq[1]+" is required to change into the 2nd Class.";else if (.LastJob && lastJob && (.@eac&EAJL_UPPER)) {mes "Switch classes now?";next;Job_Menu(lastJob+4001);} elseJob_Menu(.@j1,.@j2);close; function Job_Menu {while(1) {if (getargcount() > 1) {mes "Select a job.";set .@menu$,"";for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)set .@menu$, .@menu$+" ~ "+jobname(getarg(.@i))+":";set .@menu$, .@menu$+" ~ ^777777Cancel^000000";next;set .@i, getarg(select(.@menu$)-1,0);if (!.@i) close;if ((.@i == 23 || .@i == 4045) && BaseLevel < .SNovice) {mes "[Job Master]";mes "A base level of "+.SNovice+" is required to turn into a "+jobname(.@i)+".";close;}mes "[Job Master]";mes "Are you sure?";next;} elseset .@i, getarg(0);if (select(" ~ Change into ^0055FF"+jobname(.@i)+"^000000 class: ~ ^777777"+((getargcount() > 1)?"Go back":"Cancel")+"^000000") == 1) {set .@eac, eaclass(.@i);if ( ( .@eac&EAJL_2_1 || .@eac&EAJL_2_2 ) && Zeny < .cost_2nd && !(.@eac&EAJL_UPPER) && !( .@eac&EAJL_THIRD ) ) {mes "[Job Master]";mes "You need "+ .cost_2nd +" zeny to proceed.";close;}else if( ( .@eac&EAJL_2_1 || .@eac&EAJL_2_2 ) && !(.@eac&EAJL_UPPER) && !( .@eac&EAJL_THIRD )) {mes "[Job Master]";mes "It will cost "+ .cost_2nd +" zeny to proceed.";next;if( select( " ~ Proceed", " ~ Leave" ) -1 ) close;set Zeny, Zeny - .cost_2nd;}else if ( .@eac&EAJL_UPPER && Zeny < .cost_rebirth && !( .@eac&EAJL_THIRD ) && !( .@eac&EAJL_2 ) && Class != 4001 ) {mes "[Job Master]";mes "You need "+ .cost_rebirth +" zeny to proceed.";close;}else if( .@eac&EAJL_UPPER && !( .@eac&EAJL_THIRD ) && !( .@eac&EAJL_2 ) && Class != 4001 ) {mes "[Job Master]";mes "It will cost "+ .cost_rebirth +" zeny to proceed.";next;if( select( " ~ Proceed", " ~ Leave" ) -1 ) close;set Zeny, Zeny - .cost_rebirth;}else if ( .@eac&EAJL_THIRD && Zeny < .cost_3rd ) {mes "[Job Master]";mes "You need "+ .cost_3rd +" zeny to proceed.";close;}else if( .@eac&EAJL_THIRD ) {mes "[Job Master]";mes "It will cost "+ .cost_3rd +" zeny to proceed.";next;if( select( " ~ Proceed", " ~ Leave" ) -1 ) close;set Zeny, Zeny - .cost_3rd;}mes "[Job Master]";mes "You are now "+A_An(jobname(.@i))+"!";if (.@i==4001 && .LastJob) set lastJob, Class;jobchange .@i;if (.@i==4001 || .@i==4023) resetlvl(1);specialeffect2 338; specialeffect2 432;if (.Platinum) callsub Get_Platinum;close;}if (getargcount() == 1) return;mes "[Job Master]";}end;} function A_An {setarray .@A$[0],"a","e","i","o","u";set .@B$, "_"+getarg(0);for(set .@i,0; .@i<5; set .@i,.@i+1)if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0);return "a "+getarg(0);} Get_Platinum:skill 142,1,0;switch(BaseClass) {case 0: if (Class !=23) skill 143,1,0; break;case 1: skill 144,1,0; skill 145,1,0; skill 146,1,0; break;case 2: skill 157,1,0; break;case 3: skill 147,1,0; skill 148,1,0; break;case 4: skill 156,1,0; break;case 5: skill 153,1,0; skill 154,1,0; skill 155,1,0; break;case 6: skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; break;default: break;}switch(BaseJob) {case 7: skill 1001,1,0; break;case 8: skill 1014,1,0; break;case 9: skill 1006,1,0; break;case 10: skill 1012,1,0; skill 1013,1,0; break;case 11: skill 1009,1,0; break;case 12: skill 1003,1,0; skill 1004,1,0; break;case 14: skill 1002,1,0; break;case 15: skill 1015,1,0; skill 1016,1,0; break;case 16: skill 1007,1,0; skill 1008,1,0; skill 1017,1,0; skill 1018,1,0; skill 1019,1,0; break;case 17: skill 1005,1,0; break;case 18: skill 238,1,0; break;case 19: skill 1010,1,0; break;case 20: skill 1011,1,0; break;default: break;}return; OnInit:setarray .Rebirth[0],99,50; // Minimum base level, job level to rebirth OR change to third classsetarray .JobReq[0],10,40; // Minimum job level to turn into 1st class, 2nd classset .ThirdClass,0; // Enable third classes? (1: yes / 0: no)set .SNovice,45; // Minimum base level to turn into Super Noviceset .LastJob,1; // Enforce linear class changes? (1: yes / 0: no)set .SkillPointCheck,1; // Force player to use up all skill points? (1: yes / 0: no)set .Platinum,1; // Get platinum skills automatically? (1: yes / 0: no)set .cost_2nd, 150000; // cost to pass 2nd jobset .cost_3rd, 1000000; // cost to pass 3rd jobset .cost_rebirth, 1285000; // cost to pass rebirthend;}
  17. http://herc.ws/board/topic/6784-request-crystal-ynthesis/ still no success tho and maybe, just maybe, instead of instant making a new request, take a small look whats already there, this is 3 posts below yours
  18. No sorry, we do not provide direct links anymore, maybe someone else can provide additional download links.
  19. Offering 2 versions of the grf now. Scroll down for more info. Both data.grf do NOT require rdata.grf. Option 1: (clean standard kRO GRF) Download OneDrive The grf is up-to-date 2018-12-22. Its cleaned up, and optimized. A Lot of invalid content is removed or merged. The size is 1,40gb (1.503.844.793 bytes) compared to the original 2.13gb (2.291.252.926) Works perfect with all current pre-renewal and/or renewal content (rdata.grf is not needed). You still need the content of the Translation Project in order to use this. All cutins in this grf are reduced by 35% Note: This is pure kro data.grf and does not contain any jro/iro/whatever files Option 2: GRF with the content of all official servers Download Mediafire Download OneDrive Download Mega This GRF contains all official files. Its cleaned up, and optimized. A Lot of invalid content is removed or merged. The size is 1,43gb (1.536.478.834 bytes) The grf is up-to-date 2016-08-04. Please throw a PM on me if this GRF is missing something! I want this to be the most complete one of all Small summarize more than 200 additional maps more than 700 additional items more than 60 additional NPC's more than 130 additionalmobs more than 900 additional cutins Instructions: 1. Download the data.7z 2. Extract it 3. Put both (grf + dll) into your RO folder Changelog: Fixed Rock Ridge Illustrations use wrong Magenta (200, 238, 120 instead of 200, 240, 120) Removed chunk Option 3: Episode 13.2 Pre-Renewal GRF This one is 775 MB (812.914.794 Bytes) and great for all kind of pre-re servers. Download OneDrive All rights and credits belong to Gravity Note: you can still encrypt your grf with SecureGRF or Tokei's GRF Editor - just use another name than cps.dll for it. updated thread 2019-01-13
  20. rdata isnt in use Since several years now. All you need is data.grf You can simply delete rdata.grf, i dont use it for 4 years now. To rename you need to extract the content first Using your prefered grf tool. Still its better to duplicate it instead of renaming. Maps you need to open im browedit and save with the New name (a simple rename does corrupt the rsw) For translating korean files, use unbollox
  21. isnt there something in npc/custom/quests?
  22. i'm not sure about this whole thing. isbegin_quest is not supported by herc yet. Possibly it works with isbegin_quest to checkquest (please correct me if i'm wrong) I just took a quick look on the rA commit and i think most can be used without edits (few exceptions): status.c line 917 status->ChangeFlagTable[SC_QUEST_BUFF1] |= SI_QUEST_BUFF1;status->ChangeFlagTable[SC_QUEST_BUFF2] |= SI_QUEST_BUFF2;status->ChangeFlagTable[SC_QUEST_BUFF3] |= SI_QUEST_BUFF3; line 1019 status->ChangeFlagTable[SC_QUEST_BUFF1] |= SCB_BATK|SCB_MATK;status->ChangeFlagTable[SC_QUEST_BUFF2] |= SCB_BATK|SCB_MATK;status->ChangeFlagTable[SC_QUEST_BUFF3] |= SCB_BATK|SCB_MATK; line 4531 if(sc->data[SC_QUEST_BUFF1])batk += sc->data[SC_QUEST_BUFF1]->val1;if(sc->data[SC_QUEST_BUFF2])batk += sc->data[SC_QUEST_BUFF2]->val1;if(sc->data[SC_QUEST_BUFF3])batk += sc->data[SC_QUEST_BUFF3]->val1; line 4712 if(sc->data[SC_QUEST_BUFF1])matk += sc->data[SC_QUEST_BUFF1]->val1;if(sc->data[SC_QUEST_BUFF2])matk += sc->data[SC_QUEST_BUFF2]->val1;if(sc->data[SC_QUEST_BUFF3])matk += sc->data[SC_QUEST_BUFF3]->val1; status.h line 713 SC_QUEST_BUFF1,SC_QUEST_BUFF2,SC_QUEST_BUFF3, quest_db line 726 5175,0,1106,100,0,0,0,0,"High level collection request"5176,0,1148,100,0,0,0,0,"High level collection request"5177,0,1995,100,0,0,0,0,"High level collection request"5178,0,1310,100,0,0,0,0,"High level collection request"5179,0,1163,100,0,0,0,0,"Highest level collection request"5180,0,1993,100,0,0,0,0,"Highest level collection request"5181,0,1297,100,0,0,0,0,"Highest level collection request"5182,0,1699,100,0,0,0,0,"Highest level collection request" i am not sure about the int status_change_clear and void status_change_clear_buffs part, but i think you can skip that(?). And after all, i think it requires someone of the coders here to look into this xD *le me no good with src ( Sent this stuff from my phone, i hope it has no typos And last but not least, adding the items to the item_db
  23. Just change all if (veins_stone == to if (#veins_stone == And all set veins_stone, to set #veins_stone,
  24. i think most simple is do add an local account variable (#) to the end of the quest and add the if || check to the same line as the character integer variable. (sorry for this short instruction, on my phone)
×
×
  • Create New...

Important Information

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