-
Posts
2044 -
Joined
-
Last visited
-
Days Won
51
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Everything posted by AnnieRuru
-
opsssss ~~ bst_delay.patch
-
unfortunately ... none ... you have to get a script running then only able to log the data into a sql table
-
euphy way's of using SQL syntax is unoptimized http://rathena.org/board/topic/90971-euphys-mvp-ladder-bug-npc-hides/?p=237993 try this /* alter table `char` add `mvp_kill` int(11) unsigned not null default 0 after unban_time, add key (`mvp_kill`); */ prontera,148,170,6 script MVP Ladder 891,{ mes "[MVP Ladder]"; mes "Hello!"; mes "What are you doing here?"; next; switch(select("Check rankings.:My stats.:Nothing...")) { case 1: mes "[MVP Ladder]"; .@nb = query_sql( "select name, mvp_kill from `char` where mvp_kill > 0 order by mvp_kill desc limit 20", .@name$, .@value ); if ( !.@nb ) mes "The rankings are empty."; else for ( .@i = 0; .@i < .@nb; .@i++ ) mes "["+( .@i +1 )+"] "+ .@name$[.@i] +" ~ "+ .@value[.@i] +" kills"; close; case 2: mes "[MVP Ladder]"; query_sql "select mvp_kill from `char` where char_id = "+ getcharid(0), .@value; mes "You have killed "+( ( .@value )?"^0055FF"+ .@value :"no" )+"^000000 MVP"+( ( .@value == 1)? "." : "s." ); close; default: } close; OnNPCKillEvent: if ( getmonsterinfo( killedrid, MOB_MVPEXP ) ) { query_sql "update `char` set mvp_kill = mvp_kill + 1 where char_id = "+ getcharid(0); query_sql "select mvp_kill from `char` where char_id = "+ getcharid(0), .@value; dispbottom "~ You've killed "+ .@value +" MVP"+( ( .@value == 1 )? "" : "s" )+". ~"; specialeffect2 EF_HEAL2; } end; }EDIT :http://rathena.org/board/topic/66423-mvp-rank/?p=178037 lol ... totally forgotten I already made another one same script, same method even
-
Emistry did a script version so I do a source version ACMD_FUNC(bst) { struct map_session_data *pl_sd; struct s_mapiterator* iter; char aaa[255]; nullpo_retr(-1, sd); if ( !message || !*message ) { clif_displaymessage(fd, "Please, enter a message (usage: @bst <message>)."); return -1; } sprintf( aaa, "[Market] %s : %s", sd->status.name, message ); iter = mapit_getallusers(); for ( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) ) clif_broadcast2( &pl_sd->bl, aaa, strlen(aaa) +1 , strtol("0x9999FF", NULL, 0), 0x190, 12, 0, 0, SELF); mapit_free(iter); return 0; } ACMD_DEF(bst), if ACMD_DEF(bst), doesn't work can try { "bst", 0,0, atcommand_bst },
-
... its a script made by Euphy so I don't think its gonna bugand ... woe:se script uses template ... its kinda impossible to have only 1 single castle working and all the rest broken if you think its broken then report in bug tracker according to official infohttp://rode2.doddlercon.com/guides/ep113.php?id=9 OnGuardianStoneDied: set .@num, atoi(charat(strnpcinfo(1),2)); set .@var$,"$agit_"+substr(strnpcinfo(2),0,1)+substr(strnpcinfo(2),8,9); setd .@var$+"["+(.@num-1)+"]",1; if (getd(.@var$+"[0]") == 1 || getd(.@var$+"[0]") == 2) set .@destroyed, .@destroyed+1; if (getd(.@var$+"[1]") == 1 || getd(.@var$+"[1]") == 2) set .@destroyed, .@destroyed+1; if (.@destroyed == 2) { mapannounce strnpcinfo(2),"All of the Guardian Stones have been destroyed!",bc_map,"0x00ff00"; donpcevent "RL0#"+strnpcinfo(2)+"::OnDisable"; } else mapannounce strnpcinfo(2),"The "+((.@num == 1)?"1st":"2nd")+" Guardian Stone has been destroyed!",bc_map,"0x00ff00"; donpcevent "gard"+.@num+"#"+strnpcinfo(2)+"::OnReset"; initnpctimer; end; OnTimer300000: set .@num, atoi(charat(strnpcinfo(1),2)); set .@str$,substr(strnpcinfo(2),0,1)+substr(strnpcinfo(2),8,9); donpcevent ((.@num == 1)?"1st":"2nd")+" Guardian Stone#"+.@str$+"::OnEnable"; setd "$agit_"+.@str$+"["+(atoi(charat(strnpcinfo(1),2))-1)+"]",2; stopnpctimer; end;this part should control the 5 minutes timerchange OnTimer300000 into OnTimer1: ( cheap hack ) to disable the 5 minutes timer if (!agitcheck2()) { mes "^3355FFIt is impossible to"; mes "rebuild the Guardian"; mes "Stone because the"; mes "Emperium is not present.^000000"; close; }remove this part totally and the else bracket below... you want respawn immediately without guild master put in the ingredients ? haha ... I better off write a new gvg script ... I hate dealing with dialog ..
-
@Jonne I think its more resource wise to set a source variable in pc.h like *pcblockmove did I got lectured by brainstorm before already http://www.eathena.ws/board/index.php?s=&showtopic=270470&view=findpost&p=1487092 lol my previous post ... totally forgot about this https://github.com/rathena/rathena/tree/master/src/custom I think should move every single custom script command into this file @Hirasu return SCRIPT_CMD_SUCCESS; change into return 0;
-
what is the script for this effect help?
AnnieRuru replied to chromus28's question in Scripting Support
if ( readparam(bVit) >= 255 ) bonus bMaxHP, 102000; else bonus bMaxHP,readparam(bVit)*400; -
zephirus changed my system and make it work like queue-ing so if you are already using eamod/ramod, then you don't need my source code anymore like the post above said, the only difference between mine and him is that mine is free, his need to pay ... and mine do the queue from the script, his do the queue from the source and I prefer not to write conquest battleground ... since I can write any kind of event script from scratch just make a request like this, and I might able to write a new one http://rathena.org/board/topic/75936-fortress-battleground/?hl=battleground its already in my to-do list ... it gained 4 reps
-
yes, but with source modification you can tackle them with clif_getareachar_unit if ( pc_readreg( sd, add_str("<variable here>") ) ... I'm not very sure but by reading clif_progressbar inside clif.c it looks impossible, because the packet needs to read a player ID not sure is there any work around with it
-
- script ksdfskjfhs -1,{ OnPCLoginEvent: dispbottom "Your timer starts now. You Will receive 1 kafra points after being online for 30 minutes"; while (1) { if ( checkvending() != 2 ) { .@hourpointtick++; if ( .@hourpointtick > .tick ) { dispbottom "You have received 1 kafra point"; #KAFRAPOINTS = #KAFRAPOINTS + 1; getitem 607, 30; .@hourpointtick = 0; } } sleep2 .sleeploop; } end; // doesn't read OnInit: .sleeploop = 30000; // every 30 seconds .tick = 60; // loop 60 times of 30 seconds == 30 minutes end; }
-
update this old script with new instance system fight_your_clone_0.2.txt fight_your_clone_0.2.patch just wanna test out the new instance system 20180428 update nochangeequip_0.3r.txt nochangeequip_0.3r.diff it seems this new instance system can cause server crash when instance destroy search keyword fight your clone fight_your_clone_0.2.txt
-
I can easily replicate that <.< in fact, do you know zephirus actually copy my idea of custom battleground script command http://www.eathena.ws/board/index.php?s=&showtopic=275949&view=findpost&p=1532054
-
[Showcase] Sword Art Online - Start City
AnnieRuru replied to Olrox's topic in Maps & 3D Modeling Showcase
OMFG !!!! you make me want to start writing sword art online script now ! I'm also a big fan of accel world ! ... but is the center hall a bit too small ? according to the story, when the game is launched, all players (thousands of them, forgot how many) were warp to that place to see the GM make the hellish announcement -
http://rathena.org/board/topic/90766-gm-staff-online-status/?p=236954 weird, you both using same image ...
-
honestly ... the official battleground script is ... extremely unoptimized ... my own custom made battleground script is much much optimized than theirs ... if you ask to edit on official battleground script, nah ... lazy ... I rather only edit my own ones
-
you should know @reloadscript will clear off every timer ... don't you ? try @reloadscript, then only relog not the other way round
-
Make this query check on 1000 pet intimacy
AnnieRuru replied to Helena's question in Scripting Support
the word "impossible" doesn't exist in my dictionary however for this kind of monster vs monster fighting system, I suggest using mob controller system mob_controller_20140102.patch - script kfkjsbdf -1,{ getmobdata .ai_action[AI_ACTION_SRC], .@mob; attachrid .@mob[4]; @summon = 0; end; OnInit: bindatcmd "pokemon", strnpcinfo(0)+"::Onaaa", 99,99; end; Onaaa: if ( @summon ) { message strcharinfo(0), "You already summon a pet"; end; } if ( getpetinfo(PET_CLASS) ) { message strcharinfo(0), "please return your pet into egg state to continue"; end; } getinventorylist; for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) { if ( @inventorylist_card1[.@i] == -256 ) { query_sql "select intimate, class, level, name from pet where pet_id = "+( .@id = @inventorylist_card2[.@i] + ( ( @inventorylist_card2[.@i] >= 0 )? 0 : 1 << 16 ) + @inventorylist_card3[.@i] * ( 1 << 16 ) ), .@intimate, .@class, .@level, .@name$; if ( .@intimate > .pet_min_friendly ) { .@menu$ = .@menu$ +"^0000FF"+ .@name$ +" ^00CC00{"+ getmonsterinfo( .@class, 0 ) +"} ^000000["+ .@level +"]:"; .@pet_name$[.@c] = .@name$; .@pet_class[.@c] = .@class; .@pet_level[.@c] = .@level; .@c++; } } } if ( !.@c ) { mes "your inventory doesn't have any pet egg that intimate enough"; close; } mes "select which pet that you want it to summon"; next; .@s = select( .@menu$ ) -1; getmapxy .@map$, .@x, .@y, 0; .@id = mobspawn( .@name$[.@s], .@pet_class[.@s], .@map$, .@x, .@y ); mobattach .@id, strnpcinfo(0); mobassist .@id, getcharid(3); setmobdata .@id, 25, AI_ACTION_TYPE_DEAD; setmobdata .@id, 9, MD_CANMOVE | MD_AGGRESSIVE | MD_CANATTACK | MD_DETECTOR ; @summon = 1; end; } change to no the most basic monster that follows you around I prefer mob controller because you can adjust the stats of the monster to your liking like this one http://www.eathena.ws/board/index.php?s=&showtopic=187045&view=findpost&p=1058796 hmm ... wanna me write the 1vs1 pet fighting system ? just post a reply and it shall be done because mob controller system got a learning curve ... dunno how many times have I say this but, I think I might be only member now who knows how to write a mob controller script -
sleep2 1000 * 60; change into sleep2 1000; then you know it is checking every second
-
initnpctimer is use to run a timer on npc side if you want to run on player, you can try attachnpctimer but honestly .. for some reason I don't like using npctimer ... I prefer sleep - script kdjhfksjf -1,{ OnPCLoginEvent: while (1) { for ( .@i = 13; .@i <= 18; .@i++ ) { if ( readparam( .@i ) > 255 ) { mes "You have overstat ..."; sleep2 1000; atcommand "@block "+ strcharinfo(0); end; } } sleep2 1000 * 60; } end; // shouldn't reach }
-
http://rathena.org/board/topic/74865-guild-vs-guild-event/?p=159521 1. how does it start, how does it ends ? 2. you use which map ? 3. how is your battleground system works ? 4. what is the winning conditions ? 5. ............... its much easier to make if you posted an existing battleground script
-
<.< ... this is support section so of course I'm just posting an example ... the method that I'm talking is the part how to kick the bot, not the bot-checking algorithm if you wanted spoon feed you should've tell earlier - script AntiBot -1,{ OnPCLoginEvent: setoption 0x40, 0; // prevent abuse end; OnCheat: dispbottom "too long"; sc_end sc_berserk; percentheal 100,100; setoption 0x40, 0; end; OnNPCKillEvent: if ( rand(100) ) end; // 1% chance to triggering setoption 0x40, 1; sc_start sc_berserk, 1000000000, 1; addtimer 30000, strnpcinfo(0)+"::OnCheat"; .@respond = gettimetick(2); mes "if A = "+( .@a = rand(1,10) )+", B = "+( .@b = rand(1,10) ); setarray .@arithmetic$, "+", "-", "*", "/"; mes "How many is A "+ .@arithmetic$[ .@arithmetic = rand(4) ] +" B ?"; switch ( .@arithmetic ) { default: .@answer = .@a + .@b; break; case 1: .@answer = .@a - .@b; break; case 2: .@answer = .@a * .@b; break; case 3: .@answer = .@a / .@b; } next; input .@input, -100, 100; deltimer strnpcinfo(0)+"::OnCheat"; sc_end sc_berserk; percentheal 100,100; setoption 0x40, 0; if ( gettimetick(2) > .@respond +30 ) { mes "you taken too long to answer"; close; } else if ( .@input == .@answer ) { mes "Good Job"; close; } else { mes "Wrong"; close; } }and do you know the input only allow positive numbers ?if a = 2, b = 5, a - b = -3 players can never input -3 because it is negative a = 4, b = 0 a / b = ∞ so I put rand(1,10) for it
-
honestly ... I don't even know whats your problem is ... put in a screenshot might be better to understand your problem when in lighthalzen, the 1st option is marine city color in blue, and last option is umbala color in purple ... always work nicely, according to the script
-
hmm ... the idea of this script is nice ... especially the names of the job remove this line set BaseLevel,1; set StatusPoint,100; change into set StatusPoint, StatusPoint + 100; edit: btw you should know that you should set this to no
-
monster "gon_test", 62, 86, .@pet_name$[.@s], .@pet_class[.@s], 1,strnpcinfo(0)+"::OnDead",0,1;haha lol I gave wrong answer just now shouldn't need the getd stuffs
-
unable to reproduce your problem if you are in umbala, then of course the umbala warp isn't in the menu } else if (strnpcinfo(4) == "umbala") { setarray @wrpD$[0], "^378bfdMarine City^000000", "^c340e4Al De Baran^000000", "^c340e4Alberta^000000", "^c340e4Comodo^000000", "^c340e4Comodo Pharos Beacon^000000", "^c340e4Geffen^000000", "^c340e4Izlude^000000", "^c340e4Juno^000000", "^c340e4Mjolnir Dead Pit^000000", "^c340e4Morroc^000000", "^c340e4Orc Dungeon^000000", "^c340e4Payon^000000", "^c340e4Prontera^000000"; setarray @wrpP[0], 500, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200; like ? any screenshots ?