Helena
Members-
Content Count
238 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Staff Applications
Calendar
Everything posted by Helena
-
How to do this? Don't allow @load to this town for non-castle owners
Helena replied to Helena's question in Script Support
I'm not sure how to apply that to this script... I've never used instance systems before. -
How to do this? Don't allow @load to this town for non-castle owners
Helena posted a question in Script Support
Hello all. I have a request to ask. The idea is pretty simple, I am using a shared guild town for players that are victors of the war of emperium, i want to initiate a few checks, but im not sure how to merge them. 1) no one can @load if WoE is active 2) if woe is not active only guild possessors can @load. This is what I got so far, it works (1) but I dont know how to initiate (2) the castle owners only warp. I thought i figured it out, but unfortunately it isn't working. Players who are not in a guild or in a guild that doesnt own the castle, can still warp inside. What did i miss? Thanks a lot for the help! ^^ - script SiegeWarp -1,{OnInit: setmapflag "guildtown", mf_loadevent; set .map_list$, "guildtown"; end; OnPCLoadMapEvent:if ( compare( .map_list$,strcharinfo(3) ) == 0 ) end; if(agitcheck()){ dispbottom "you can not warp into the War Town map while the War of Emperium is active"; SavePoint "prontera",156,184; warp "prontera",156,184; end; if (getcharid(2) != 0 && getcharid(2) == getcastledata("prtg_cas01",1)) { warp "guildtown",91,102; end;}if (getcharid(2) != 0 && getcharid(2) == getcastledata("payg_cas01",1)) { warp "guildtown",91,102; end;}if (getcharid(2) != 0 && getcharid(2) == getcastledata("aldeg_cas04",1)) { warp "guildtown",91,102; end;}if (getcharid(2) != 0 && getcharid(2) == getcastledata("gefg_cas04",1)) { warp "guildtown",91,102; end;} dispbottom "you can only enter this map if you are in one of the Guilds that hold a castle!"; sleep2 1000; atcommand "@refresh"; end; }} -
Sorry for the double post, but I noticed some weird behavior in my @whodrops... I tried to @whodrops ice pick and lord of the death and RSX show up twice. If I increase the max_search to a higher value, all results show up several times... they're only once in my mob_db and only drop 1 ice pick. O.o This is also the case with angel wing, but it isn't with evil wing... I wonder what the problem is. Should this be in bug reports?
-
Thanks mr. JaBote !
-
in-game item_db function. Is this possible to add?
Helena replied to Helena's question in Script Support
For some reason my browser crashes when quoting, but that works nicely Garr ! The only thing that doesn't change along is the name. Example when i type in Ice Pick, the first page shows fine but after clicking 'next' it doesnt display a name (all other info is present though). What can I do to fix that? Thanks! Nevermind, solved it by changing the "Name: "+.@itemname$[.@i];" into "Name: "+.@itemname$;" Thank you so much, Garr! -
Hello, I am using an item with a callfunc attached to it, it is like a in-game database system. Its really simply but I like the way it turned out. Sadly there are 2 problems. 1) It searches for japanese name, this is how i want it but if the item does not exist the search box still appears but with all values set to zero. I know a check can be easily be done if i make it search for ID but is it also possible with name? 2) It only shows one result but in RO there are several items with the same name. Take Flapping Angel Wing for example, there are two of those but only one shows up. Is there a way to make all options show in the dialogue? Sorry if this is a impossible script but thanks so much for trying nonetheless. ^^ L_Item:next;dispbottom "Initiating Item Database...";progressbar "0xRRGGBB",2;mes "Database successfully loaded. What Item do you want to learn about?:";mes " ";mes "Please ^ff0000only input the Item's full name^000000 or there will be incorrect results!";input .@itemname$;query_sql "SELECT ID, price_buy, price_sell, weight, atk, defence, slots FROM item_db WHERE name_japanese = '"+ escape_sql(.@itemname$) +"'", @iid$, .@buy, .@sell, .@weight, .@atk, .@defence, .@slots; if(getiteminfo(.@itemnum, 0) == -1) // item does not exist next; mes "Name: "+.@itemname$; mes "Weight: "+.@weight; mes "ATK: "+.@atk; mes "DEF: "+.@defence; mes "Slots: "+.@slots; mes "Buying Price: "+.@buy; mes "Selling Price: "+.@sell; next; goto L_menu2; L_menu2:menu "Which monster drops it?",-,"Search for another item",L_Item,"Exit",L_later2; atcommand "@whodrops "+@iid$;goto L_menu2; L_later2: close; }
-
Hi community A bit of a silly question actually, yet one i couldn't find an answer to. I noticed that @whodrops is limited to 5 results. Say if you type '@whodrops gold' it will only give the 5 entries with the highest drop chance. Is there a way to make it display all monsters that drop the item? I've been browsing through the configs but I couldn't find an option for it. Maybe I'm just overlooking it... Thank you!
-
Thank you, I'll try that!
-
Hi Hercules! It's been a while. I am using this script and it's giving me headaches, I can't get this one part working. It's a Capture the Flag event, and at the end of the event (when 5 points are made by a team), it is suppose to go to an donpcevent label, but my mapserver keeps saying it cant find it ("CTF::OnEventGameOverClassic"). This is the part of the code that errors, the rest of the script works perfectly fine so I will not include it; it's a huge script. Help is greatly appreciated bat_c01,149,52,5 script Red Base::red_base 1026,{ getmapxy($@redbase$,$@redbasex,$@redbasey,1);getmapxy($@rbasetouch$,$@rbasetouchx,$@rbasetouchy,0); if (distance($@redbasex,$@redbasey,$@rbasetouchx,$@rbasetouchy) <= 2){ If (@team == 2) { if ($@flagcarrier$ == strcharinfo(0)) { movenpc "neutral_flag2",65,116; set $@nredpt, $@nredpt + 1; set #fcapt, #fcapt + 1; set fcapt, fcapt + 1; set ctfpt, ctfpt + 10; set tctfpt, tctfpt + 10; announce "The Blue Team has "+$@nbluept+" points.",bc_map; announce "The Red Team has "+$@nredpt+" points.",bc_map; set $@flaggone, 0; set $@flagcarrier$, "-"; if ($@nredpt >= 5) { mapannounce "bat_c01", "The Red Team has won the match",0; set $@nbluept, 0; set $@nredpt, 0; set $@nblueqt, 0; set $@nredqt, 0; set $@flagcarrier$, "-"; set $@nredwin, 1; donpcevent "CTF::OnEventGameOverClassic"; }} if ($@reddropped == 1) { //Return the Flag movenpc "neutral_flag",134,65; set $@redgone, 0; set $@reddropped, 0; set #freturn, #freturn + 1; set freturn, freturn + 1; announce "The Red Flag has been returned.",bc_map; }}}} bat_c01,50,131,4 script Blue Base::blue_base 1188,{ getmapxy($@bluebase$,$@bluebasex,$@bluebasey,1);getmapxy($@bbasetouch$,$@bbasetouchx,$@bbasetouchy,0); if (distance($@bluebasex,$@bluebasey,$@bbasetouchx,$@bbasetouchy) <= 2){ If (@team == 1) { if ($@flagcarrier$ == strcharinfo(0)) { movenpc "neutral_flag",134,67; set $@nbluept, $@nbluept + 1; set #fcapt, #fcapt + 1; set fcapt, fcapt + 1; set ctfpt, ctfpt + 10; set tctfpt, tctfpt + 10; announce "The Blue Team has "+$@nbluept+" points.",bc_map; announce "The Red Team has "+$@nredpt+" points.",bc_map; set $@flaggone, 0; set $@flagcarrier$, "-"; if ($@nbluept >= 5) { mapannounce "bat_c01", "The Blue Team has won the match",0; set $@nbluept, 0; set $@nredpt, 0; set $@nblueqt, 0; set $@nredqt, 0; set $@flagcarrier$, "-"; set $@nbluewin, 1; donpcevent "CTF::OnEventGameOverClassic"; } } if ($@bluedropped == 1) { //Return the Flag // movenpc "blue_flag",65,116; set $@bluegone, 0; set $@bluedropped, 0; set #freturn, #freturn + 1; set freturn, freturn + 1; announce "The Blue Flag has been returned.",bc_map; }}}} OnEventGameOverClassic:set .@classqt, getarraysize($@classic);set .@cctf, 0; over:if (.@cctf < .@classqt){ { attachrid $@classic[.@cctf]; if (@classic == 1) { if (@team == 2) { if ($@redwin == 1) { set #win, #win + 1; set win, win + 1; } if ($@bluewin == 1) { set #lose, #lose + 1; set lose, lose + 1; } } if (@team == 1) { if ($@redwin == 1) { set #lose, #lose + 1; set lose, lose + 1; } if ($@bluewin == 1) { set #win, #win + 1; set win, win + 1; } } } save originmap$, (originx), (originy); mapwarp "prt_are01","prontera",156,182; callfunc("setlook2", 6, hair); callfunc("setlook2", 7, body); set Hp, charhp; set Sp, charsp; set @playing, 0; set @classic, 0; set @heal, 0; detachrid; set .@cctf, .@cctf + 1; goto over; }}for (set .@i, 0; .@i < getarraysize($@classic); set .@i, .@i+1) { setarray $@classic[.@i], 0;}end;}
-
Help with item/suit script to change into 2nd job please?
Helena posted a question in Script Support
nvm got it! -
I happen to have a old hercules version were plugins arent supported yet. I have too many src mods to update, Is it just a matter of pasting the following in pc.h to make it work? BUILDIN(cartcountitem){ int nameid, i; int count = 0; struct item_data* id = NULL; TBL_PC* sd = script->rid2sd(st); if (!sd) { script_pushint(st,0); return false; } if( script_isstringtype(st, 2) ) //item name id = itemdb->search_name(script_getstr(st, 2)); else //item id id = itemdb->exists(script_getnum(st, 2)); if( id == NULL ) { ShowError("buildin_cartcountitem: Invalid item '%s'.n", script_getstr(st,2)); // returns string, regardless of what it was script_pushint(st,0); return false; } nameid = id->nameid; for(i = 0; i < MAX_CART; i++) if(sd->status.cart[i].nameid == nameid) count += sd->status.cart[i].amount; script_pushint(st,count); return true;} BUILDIN(cartcountitem2){ int nameid, iden, ref, attr, c0, c1, c2, c3; int count = 0; int i; struct item_data* id = NULL; TBL_PC* sd = script->rid2sd(st); if (!sd) { script_pushint(st,0); return false; } if( script_isstringtype(st, 2) ) //item name id = itemdb->search_name(script_getstr(st, 2)); else //item id id = itemdb->exists(script_getnum(st, 2)); if( id == NULL ) { ShowError("buildin_cartcountitem2: Invalid item '%s'.n", script_getstr(st,2)); // returns string, regardless of what it was script_pushint(st,0); return false; } nameid = id->nameid; iden = script_getnum(st,3); ref = script_getnum(st,4); attr = script_getnum(st,5); c0 = (short)script_getnum(st,6); c1 = (short)script_getnum(st,7); c2 = (short)script_getnum(st,8); c3 = (short)script_getnum(st,9); for(i = 0; i < MAX_CART; i++) { if(sd->status.cart[i].nameid > 0 && sd->status.cart[i].nameid == nameid && sd->status.cart[i].identify == iden && sd->status.cart[i].refine == ref && sd->status.cart[i].attribute == attr && sd->status.cart[i].card[0] == c0 && sd->status.cart[i].card[1] == c1 && sd->status.cart[i].card[2] == c2 && sd->status.cart[i].card[3] == c3 ) count += sd->status.cart[i].amount; } script_pushint(st,count); return true;}
-
- script Vanilla1 -1,{OnPCLoadMapEvent:getmapxy(.@map$,.@mapx,.@mapy,0);if(.@map$ == "prtg_cas01"){ for(set .@i,0; .@i < getarraysize(.itemcheck); set .@i, .@i + 1){ if(countitem(.itemcheck[.@i])){ dispbottom "[ Info ] : item ["+getitemname(.itemcheck[.@i])+"] found (Inventory). Kicking.."; warp "prontera",200,180; end; } if(query_sql("SELECT `nameid` FROM `cart_inventory` WHERE `char_id` = " + getcharid(0), .itemcheck[0]) { dispbottom "[ Info ] : item ["+getitemname(.itemcheck[.@i])+"] found (Cart). Kicking.."; warp "prontera",200,180; end; } }end;OnInit:setarray .itemcheck[0],2383,2204,20025,20026,20027,20028,20029,20030,20031,20032,20033;end;}prtg_cas01 mapflag loadevent Hi angelmelody. Thank you so much that works!
-
As you can see in my first post i am aware of it but i still find it worth it.
-
Hi Jabote, I tried, but alas. It still detects long deleted items from my cart, like my brynhild from 5 hours ago. This is my script, did I do it wrong somewhere? - script Vanilla1 -1,{OnPCLoadMapEvent:getmapxy(.@map$,.@mapx,.@mapy,0);if(.@map$ == "prtg_cas01"){ for(set .@i,0; .@i < getarraysize(.itemcheck); set .@i, .@i + 1){ if(countitem(.itemcheck[.@i])){ dispbottom "[ Info ] : item ["+getitemname(.itemcheck[.@i])+"] found (Inventory). Kicking.."; warp "prontera",200,180; end; } query_sql("SELECT `nameid` FROM `cart_inventory` WHERE `char_id` = " + getcharid(0), .itemcheck[0]); dispbottom "[ Info ] : item ["+getitemname(.itemcheck[.@i])+"] found (Cart). Kicking.."; warp "prontera",200,180; end; } }end;OnInit:setarray .itemcheck[0],2383,2204,20025,20026,20027,20028,20029,20030,20031,20032,20033;end;}prtg_cas01 mapflag loadevent
-
VNC is must. Thanks, is python realiable? I am currently waiting for a ping test ip from them.
-
Hm ok. So how will i do that? How can i properly inject it in this script?
-
Great it works, thanks!! Problem though that even when i empty my cart and relog, it still regocnized the item in the cart... Is there any solution for that?
-
Hello Hercules I have a question, I have this script, what it does in short: it kicks out players that have certain items in their inventory. but there is one problem with it. If I have the items in the array in my cart, I don't get kicked out. So, in this case of war of emperium, if i go to the emp-room, take my items out of my cart i can equips or use them just fine! How can i also disable cart items? - script Restrict -1,{OnPCLoadMapEvent:getmapxy(.@map$,.@mapx,.@mapy,0);if(.@map$ == "prtg_cas01"){ for(set .@i,0; .@i < getarraysize(.itemcheck); set .@i, .@i + 1){ if(countitem(.itemcheck[.@i])){ dispbottom "[ Info ] : ["+getitemname(.itemcheck[.@i])+"] found. Kicking you out!"; warp "prontera",200,180; end; } } }end;OnInit:setarray .itemcheck[0],2383,2204,30873,20009,20010,etc;end;}prtg_cas01 mapflag loadevent
-
Hello Hercules, I was wondering who can recommend me a good hosting provider. Since AsuraHosting is dead i need to move my server to somewhere else. I do not really have many requirements, just that the connection is fast, they offer server transfers and that they have VNC viewer. (Please don't tell me VNC slows down your server, it might be so (even though I never noticed a difference), but I really love being able to control my server without putty, so yes I think it is worth it). I've tried Pony VPS but their ping was really bad for me, I also tried Trinity but they had no VNC even though they told me they did. I've contacted AspireHosting a week ago but never had a reply from them, and WanHosting but they use the same main host as Pony VPS. Asura was (despite their bad support) really my #1. I'd like something similar. Please give me some good recommendations. I would be a long-term customer. Thanks!
-
Anyone? I'm still looking for help with this.
-
I am not having slowness issues with my GM accounts, maybe if you check logs, and there's many player online, it can slow down the loading. Hm there was like 45 online... is that considered many? (Cloudflare didnt make a difference btw)
-
Thanks Mumbles that works! Any way to inject a permanent option in it? I.e: @main permaon/permaoff , a function that will keep it enabled or disabled even when you re-log? Thanks
-
Hi Hercules, I was wondering if someone could help me. I'm using the following script but I would like @join #main and @channel leave #main to be added into it. It's just difficult because #main doesn't go by on and off. Thanks! Help is much appreciated! header .@npcname$ = "["+ strnpcinfo(1) +"]";// dispbottom atcommand_login +""; // debugging mes .@npcname$; mes "Hello, "+strcharinfo(0)+"!"; mes "I can permanently enable some commands you often use, this is useful so you won't need to type the commands upon each log in!"; next; mes .@npcname$; mes "The setting(s) will remain enabled or disabled until you talk to me again and want me to un-do the change."; next; for ( .@i = 0; .@i < .total; .@i++ ) .@menu$ = .@menu$ + .atname$[.@i] +" ["+( ( atcommand_login & 1 << .@i )? "^00BB22On^000000" : "^FF2200Off^000000" )+"] :"; .@s = select( .@menu$ ) -1; mes .@npcname$; mes "Status: "+( ( atcommand_login & 1 << .@s )? "^00BB22On^000000" : "^FF2200Off^000000"); next; mes .@npcname$; mes "What do you want to do?"; if ( select( "I'd like to "+( ( atcommand_login & 1 << .@s )? "^FF2200disable^000000": "^00BB22enable^000000" )+" it!", "Nothing." ) == 2 ) { mes "See ya."; close; } if ( atcommand_login & 1 << .@s ) { mes .atname$[.@s] +" is now ^FF2200disabled^000000."; atcommand "@"+ .atcommand$[.@s] +" off"; } else { mes .atname$[.@s] +" is now ^00BB22enabled^000000."; atcommand "@"+ .atcommand$[.@s] +( ( .@s == 1 )? "on": "" ); } atcommand_login = atcommand_login ^ 1 << .@s; close;OnPCLoginEvent: if ( !atcommand_login ) end; for ( .@i = 0; .@i < .total; .@i++ ) { if ( atcommand_login & 1 << .@i ) { atcommand "@"+ .atcommand$[.@i] +( ( .@i == 1 )? " on": "" ); dispbottom .atname$[.@i] +" is now enabled"; } } end;OnInit: setarray .atname$, "- @autoloot", "- @noask", "- @noks", "- @showexp"; setarray .atcommand$, "autoloot", "noask ", "noks", "showexp"; .total = 4; end;}
-
Thanks kisuka, I'll try to set up cloudflare. Okay new update, after some testing with someone of the board we noticed that it's only the GM accounts that are loading slow. Level/Group 0 and 1 are okay, but past 2, it starts to cause slow loadings. That pretty much leads me to think that the sql queries the GM needs to progress are too much...
-
I think it's the theme. Which is weird because I don't have any animations, gifs or whatsoever, and it worked fluently on my previous host other than the occassional downtimes. My offer still counts for anyone who is able to clean it up.