Jump to content

AnnieRuru

Script Developers
  • Content Count

    1677
  • Joined

  • Last visited

  • Days Won

    247

Reputation Activity

  1. Upvote
    AnnieRuru got a reaction from Helena in Annieruru emp BG   
    change this line 103
    bg_get_data 'winside, 1; for ( .@i = 0; .@i < $@arenamemberscount; ++.@i ) getitem getvariableofnpc( .rewarditem[0], 'main$ ), getvariableofnpc( .rewarditem[1], 'main$ ), $@arenamembers[.@i]; into
    bg_get_data 'winside, 1; for ( .@i = 0; .@i < $@arenamemberscount; ++.@i ) getitem 501, 10, $@arenamembers[.@i]; bg_get_data ('winside == 'red)? 'blue:'red, 1; for ( .@i = 0; .@i < $@arenamemberscount; ++.@i ) getitem 501, 5, $@arenamembers[.@i];  
    btw rathena seems going to get rid of CSV format and going for YAML format
    https://github.com/rathena/rathena/pull/3163
    so just take note of this when instancing doesn't work
  2. Upvote
    AnnieRuru reacted to Habilis in LOGIN REWARD VIA LAST MAC   
    @AnnieRuru
    Thanks, Very neat advice will try that!
     
  3. Upvote
    AnnieRuru got a reaction from Habilis in LOGIN REWARD VIA LAST MAC   
    @Habilis
    ahem ... getitembound should do most of the trick
    although like what you did with Trade permission is ... yeah more painful
     
  4. Upvote
    AnnieRuru reacted to w0wZukuBg in [Showcase] Arena R4   
    Check out my first release - a map with trains for routes 
    between Einbroch and Lighthalzen here:
     
  5. Upvote
    AnnieRuru reacted to w0wZukuBg in [Showcase] Arena R4   
    Hello, I found this object at 1 @ rev when I looked through the list of
    of kRO locations. I liked it, it's more like an effect. This barrier on
    my map is marked by cells through which you can only shoot.
    And you can enter the zone only from the north side.

    Hi, I decided to support the section a little 
  6. Upvote
    AnnieRuru got a reaction from Begin in Modify reward script   
    @Begin
    the script was already done with reset at 12am every day
    however due to the information that meko said ...
    I'm going to revise this script ...
    prontera,155,180,5 script Reward NPC 4_F_FAIRYKID4,{ .@date = atoi( gettimestr("%Y%m%d", 20 ) ); mes "["+ strnpcinfo(NPC_NAME) +"]"; if ( #reward_daytime == .@date ) { mes "You have claimed the reward today."; close; } if ( @reward_timestamp && @reward_timestamp + .countdown <= gettimetick(2) ) { mes "Here is the surprise reward"; getitembound Poring_Coin, 1, 1; #reward_daytime = .@date; close; } if ( @reward_timestamp ) { mes "Countdown timer..."; .@timeleft = @reward_timestamp + .countdown - gettimetick(2); mes .@timeleft /3600 +" hour "+ .@timeleft %3600/60 +" min "+ .@timeleft %60 +" sec left"; close; } mes "Hello "+ strcharinfo(PC_NAME) +", I am here to give you a daily Surprise Reward. Do you want to have it?"; next; select "Yes, sure !!"; mes "["+ strnpcinfo(NPC_NAME) +"]"; mes "You can claim the reward in 5 hours time."; close2; addtimer .countdown *1000, strnpcinfo(NPC_NAME) +"::OnClaimReward"; @reward_timestamp = gettimetick(2); end; OnClaimReward: dispbottom "You can claim Daily Login Reward now."; end; OnInit: // .countdown = 5*60*60; // 5 hours .countdown = 5; } no longer use IP address, but use account bound items
    so that means, this script will give out the reward every day, reset on 12am, and the item give out is account bound
    .... probably the better way for not abuse the reward than the script I posted earlier
  7. Upvote
    AnnieRuru reacted to MikZ in LOGIN REWARD VIA LAST MAC   
    @AnnieRuru its okay. 
    I somehow just edit it with the common query command and change the ip to unique_id. Somehow it worked fine for daily login.
    Wonder if you have any suggestion or tips to improve this. I don't kinda understand the script cuz im noob. but that this mean every 00:00 server time you will be able to get coin or 24hr from last talked to the npc?
    prontera,164,173,5 script Daily Login 4_F_FAIRYKID4,{ // $ip_reward_daytime = 0; query_sql("SELECT `last_unique_id` from `login` WHERE `account_id` = "+getcharid(3),@lui$); mes "["+ strnpcinfo(NPC_NAME) +"]"; if ( $ip_reward_daytime != atoi( gettimestr("%Y%m%d", 20 ) ) ) { $ip_reward_daytime = atoi( gettimestr("%Y%m%d", 20 ) ); deletearray $ip_reward$; } .@size = getarraysize( $ip_reward$ ); while ( @lui$ != $ip_reward$[.@i] && .@i < .@size ) { ++.@i; } if ( .@i < .@size ) { mes "You have claimed the reward."; close; } if ( @ip_reward && @ip_reward + .countdown <= gettimetick(2) ) { mes "Here is the surprise reward"; getitem 25045, 1; $ip_reward$[ getarraysize( $ip_reward$ ) ] = @lui$; close; } if ( @ip_reward ) { mes "Countdown timer..."; .@timeleft = @ip_reward + .countdown - gettimetick(2); mes .@timeleft /3600 +" hour "+ .@timeleft %3600/60 +" min "+ .@timeleft %60 +" sec left"; close; } mes "Hello "+ strcharinfo(PC_NAME) +", I am here to give you a daily Surprise Reward. Do you want to have it?"; next; select "Yes, sure !!"; mes "["+ strnpcinfo(NPC_NAME) +"]"; mes "You can claim the reward after an hour."; close2; addtimer .countdown *1000, strnpcinfo(NPC_NAME) +"::OnClaimReward"; @ip_reward = gettimetick(2); end; OnClaimReward: dispbottom "You can claim Daily Login Reward now."; end; OnInit: .countdown = 1*60*60; // 5 hours // .countdown = 5; }  
  8. Upvote
    AnnieRuru reacted to meko in LOGIN REWARD VIA LAST MAC   
    IP addresses and mac addresses do not uniquely identify people. Most home internet users have dynamic IP addresses assigned by their ISP, so it changes over time, and some ISPs even assign a different one every single time the router is rebooted (ie: Orange). Even with a static IP, nothing prevents anyone from using a VPN, tor, or any other anonymity tool. IP addresses may also be shared: some schools, dormitories, and organizations have a single address for every single computer on its network, so you could end up mistaking hundreds of people as the same person. Some computers themselves are also shared (ie: with coworkers, family members, friends, …). As for mac addresses, they can very easily be spoofed, and one could even make a script to change their mac address every minute if they wanted to... so yeah, that's a bad idea too.
    If this still does not discourage you from using mac addresses, feel free to add this "feature" to Hercules: https://github.com/HerculesWS/Hercules/issues/1734
     
    There's really no silver bullet to really be sure of the identity of someone, but one of the approaches that kinda works is to make abuse costly on abusers, while not imposing a huge burden on non-abusers. What works best is doing a physical verification instead of a digital one when someone creates an account. For example, most social media platforms now ask you to provide and validate a phone number. This means if someone were to bypass this verification they would have to have more than one phone. Some sites, such as Paypal, go even further ask you for your credit card number (or bank account number) and then do a transaction on it (usually $1), to see if the card is valid. This means you would have to have more than one credit card if you want to bypass this verification, which implies physically going to your bank, making an appointment, and opening a new account. Some (such as Google) prefer to snail mail you an envelope containing a code, which you then have to enter on their website. To abuse this you would need more than one street address. Keep in mind that this only makes it harder on would-be abusers and that nothing can 100% fingerprint someone. Even DNA profiling isn't perfect.
  9. Upvote
    AnnieRuru got a reaction from MikZ in LOGIN REWARD VIA LAST MAC   
    the script you posted made by me ...
    sorry as I don't own Gepard, I don't know how it works so I couldn't make this system for you
    and what meko said was spot on,
    just reminded the IP address detection method on this script can just bypass by restarting the modem
    the mac address system though ...
    sry maybe I was out from RO scene too long ?
    2 years ago I heard that mac address is something that is only possible by adding a 3rd party program running in the background ...
    and this makes me assume that Gepard is also something 3rd party program ... stuffs
  10. Upvote
    AnnieRuru reacted to TheReturn in Willing to pay for this agit defender script   
    you can check it out here:
     
  11. Upvote
    AnnieRuru got a reaction from Begin in Modify reward script   
    @Begin
    prontera,155,180,5 script Reward NPC 4_F_FAIRYKID4,{ // $ip_reward_daytime = 0; mes "["+ strnpcinfo(NPC_NAME) +"]"; if ( $ip_reward_daytime != atoi( gettimestr("%Y%m%d", 20 ) ) ) { $ip_reward_daytime = atoi( gettimestr("%Y%m%d", 20 ) ); deletearray $ip_reward$; } .@size = getarraysize( $ip_reward$ ); while ( getcharip() != $ip_reward$[.@i] && .@i < .@size ) { ++.@i; } if ( .@i < .@size ) { mes "You have claimed the reward with this IP address."; close; } if ( @ip_reward && @ip_reward + .countdown <= gettimetick(2) ) { mes "Here is the surprise reward"; getitem Poring_Coin, 1; $ip_reward$[ getarraysize( $ip_reward$ ) ] = getcharip(); close; } if ( @ip_reward ) { mes "Countdown timer..."; .@timeleft = @ip_reward + .countdown - gettimetick(2); mes .@timeleft /3600 +" hour "+ .@timeleft %3600/60 +" min "+ .@timeleft %60 +" sec left"; close; } mes "Hello "+ strcharinfo(PC_NAME) +", I am here to give you a daily Surprise Reward. Do you want to have it?"; next; select "Yes, sure !!"; mes "["+ strnpcinfo(NPC_NAME) +"]"; mes "You can claim the reward in 5 hours time."; close2; addtimer .countdown *1000, strnpcinfo(NPC_NAME) +"::OnClaimReward"; @ip_reward = gettimetick(2); end; OnClaimReward: dispbottom "You can claim Daily Login Reward now."; end; OnInit: .countdown = 5*60*60; // 5 hours // .countdown = 5; }
  12. Upvote
    AnnieRuru got a reaction from xVec in Russian Roulette   
    Download: 1.1
    script
    just join the event and then AFK there and wait for the luck ...
    the last one who has enough patience ... or you are just god damn lucky ... might win this event

     
  13. Upvote
    AnnieRuru got a reaction from Legend in Russian Roulette   
    Download: 1.1
    script
    just join the event and then AFK there and wait for the luck ...
    the last one who has enough patience ... or you are just god damn lucky ... might win this event

     
  14. Upvote
    AnnieRuru got a reaction from TheReturn in Russian Roulette   
    Download: 1.1
    script
    just join the event and then AFK there and wait for the luck ...
    the last one who has enough patience ... or you are just god damn lucky ... might win this event

     
  15. Upvote
    AnnieRuru got a reaction from Rebel in Russian Roulette   
    Download: 1.1
    script
    just join the event and then AFK there and wait for the luck ...
    the last one who has enough patience ... or you are just god damn lucky ... might win this event

     
  16. Upvote
    AnnieRuru got a reaction from anacondaq in Sample Questlog & Achievement script   
    Download: 1.1
    sample quest log
    Download: 1.1
    sample daily quest
    these are 5 sample quests using quest log system
    this was actually made as a sample script inside a script support section in eathena forum
    original topic from eathena
    thanks to paradog eathena admin that makes eathena forum down, almost gonna remake everything from scratch
    luckily I got a few segment here and there in my old hard-disk so doesn't take too much time to write this sample
    Quest #1
    typical talk to npc A, then npc B ... etc
    demonstrate how to use *checkquest
    Quest #2
    collect item quest
    just checkitem with it
    I still don't know how to use the client to trace is the item collecting has completed or not
    Quest #3
    kill monster quest
    demonstrate how to use *checkquest( x, HUNTING )
    Quest #4
    typical talk to npc A, then npc B ... BUT with a time limit
    demonstrate how to use *checkquest( x, PLAYTIME )
    Quest#5
    if player having this quest, player can *getitem by killing this monster
    see https://github.com/HerculesWS/Hercules/blob/stable/db/quest_db.conf#L45-L50

     

    and I want to remind this is just a sample script
    usually make for source modification on quest log system (now is 3rd time I think ?)
     
     
     
    2 sample script for daily system
    1. Daily item giver ...
    although I think this should done with attendance system ...
    2. Daily hunting ...
    self explain ...


     
     
    [109991] = { UI_Type = 0, group = "CHATTING", major = 4, minor = 0, title = "Tavern Helper", content = { summary = "Visit the Tavern Master", details = "Visit the Tavern Master in Prontera." }, resource = { [1] = { text = "Acolyte Trouble" }, [2] = { text = "Gemstone shortage" }, [3] = { text = "Poring Problem" }, [4] = { text = "Hand over the Artifact" }, [5] = { text = "Shining Rocker" } }, reward = { title = 991 }, score = 5 }, [109992] = { UI_Type = 1, group = "GOAL_ACHIEVE", major = 6, minor = 0, title = "Complete Daily Quest for 30 times", content = { summary = "Complete Daily Quest", details = "Complete Daily Quest for 30 times and you can earn some nice rewards!" }, resource = { [1] = { text = "Collect Daily Items 30 times", count = 30 }, [2] = { text = "Complete Daily Quest 30 times", count = 30 } }, reward = { title = 992, item = 513 }, score = 30 }, UI_TYPE
    - display a bar like in the daily quest screenshot
    - 0: in the [resource], doesn't support [count]
    - 1: support [count]
    group:
    - read from data\texture\À¯ÀúÀÎÅÍÆäÀ̽º\achievement

    major
    - 1: General tab
    - 2: Adventure tab
    - 3: Battle tab
    - 4: Quest tab
    - 5: Memorial tab
    - 6: Feat tab
  17. Upvote
    AnnieRuru got a reaction from Helena in Annieruru emp BG   
    http://upaste.me/c7b7498104f6c72df
    you know ... this script do exactly the same thing as the previous one ...
    now you can see the script just look totally different
    EDIT: although I don't know you are also obsess with instanced battleground or not ... since both hercules and rathena also can do it
  18. Upvote
    AnnieRuru got a reaction from Helena in Annieruru emp BG   
    hercules<=>rathena battleground/instance/mob-controller script commands are totally different
    I also have to admit hercules one are always on the harder side
    ... this is not funny matter .... just ... well ... see how the script grow in size comparative to rathena ones,
    and you'll understand why until today I still haven't convert my arathi basin on rathena into hercules
    http://upaste.me/f08349808ea0ba1b1
  19. Upvote
    AnnieRuru got a reaction from MikZ in CUSTOM ITEM SCRIPT FOR @GO   
    assuming you have this https://github.com/HerculesWS/Hercules/blob/stable/npc/mapflag/town.txt
    prontera,150,185,5 script test 1_F_MARIA,{ input .@map$; if ( getmapusers( .@map$ ) == -1 ) dispbottom "no such map"; else if ( !getmapflag( .@map$, mf_town ) ) dispbottom "not a town"; else atcommand "@go "+ .@map$; // yeah lazy to note down the coordinate, so use atcommand end; }  
  20. Upvote
    AnnieRuru got a reaction from luizragna in Help Learning Instance and how it works. <3   
    similar topic appear in rathena forum
    prontera,155,180,0 script Test Instance 1_F_MARIA,{ if ( has_instance2("guild_vs2") >= 0 ) { // dispbottom has_instance2("guild_vs2") +" destroy"; instance_destroy has_instance2("guild_vs2"); } if ( ( .@ins = instance_create( "Test Instance", getcharid(CHAR_ID_ACCOUNT), IOT_CHAR ) ) < 0 ) { mes "error : "+ .@ins; close; } if ( !getstrlen( instance_attachmap( "guild_vs2", .@ins, true, ( getcharid(CHAR_ID_ACCOUNT) )+"INST" ) ) ) { mes "error : 5"; instance_destroy .@ins; close; } instance_set_timeout 3600, 15, .@ins; instance_init .@ins; warp has_instance("guild_vs2"), 49,49; end; } guild_vs2,49,49,5 script test dialog 1_F_MARIA,{ dispbottom strnpcinfo(NPC_MAP); mesf "%d monsters on this map", 'amount; next; select "Destroy"; instance_destroy; end; OnInstanceInit: monster has_instance("guild_vs2"), 49,49, "--ja--", PORING, 10, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnMobDead"; 'amount = 10; end; OnMobDead: --'amount; if ( !'amount ) instance_announce -1, "all monster killed", bc_map; end; } few things noted for hercules ones
    1. hercules has more instance related script commands, but also make this more flexible to write once you learn them all
    a. hercules has *instance_attach script command, make sure this script command is added before trying do anything instance related in the register npc
    b. hercules has to emulate the map name with *instance_attachmap if the map name doesn't follow the syntax <number>@<5 string limit>
    2. hercules instance ID start from 0, rathena instance ID start from 1
    a. make sure the instance_announce is set to -1
    3. hercules seems cannot *instance_destroy inside the instance map itself ... has to rely on *instance_set_timeout of the timeout value
  21. Upvote
    AnnieRuru got a reaction from MikZ in King Of Emperium Hill ROYAL Rumble   
    script -> http://upaste.me/94e94979017edd8ef
    plugin -> http://upaste.me/d74c497892f91a6d6
    @MikZ next time should ask on the forum instead of bombard my PM box
    and its your own topic too
  22. Upvote
    AnnieRuru got a reaction from TheReturn in Help Learning Instance and how it works. <3   
    similar topic appear in rathena forum
    prontera,155,180,0 script Test Instance 1_F_MARIA,{ if ( has_instance2("guild_vs2") >= 0 ) { // dispbottom has_instance2("guild_vs2") +" destroy"; instance_destroy has_instance2("guild_vs2"); } if ( ( .@ins = instance_create( "Test Instance", getcharid(CHAR_ID_ACCOUNT), IOT_CHAR ) ) < 0 ) { mes "error : "+ .@ins; close; } if ( !getstrlen( instance_attachmap( "guild_vs2", .@ins, true, ( getcharid(CHAR_ID_ACCOUNT) )+"INST" ) ) ) { mes "error : 5"; instance_destroy .@ins; close; } instance_set_timeout 3600, 15, .@ins; instance_init .@ins; warp has_instance("guild_vs2"), 49,49; end; } guild_vs2,49,49,5 script test dialog 1_F_MARIA,{ dispbottom strnpcinfo(NPC_MAP); mesf "%d monsters on this map", 'amount; next; select "Destroy"; instance_destroy; end; OnInstanceInit: monster has_instance("guild_vs2"), 49,49, "--ja--", PORING, 10, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnMobDead"; 'amount = 10; end; OnMobDead: --'amount; if ( !'amount ) instance_announce -1, "all monster killed", bc_map; end; } few things noted for hercules ones
    1. hercules has more instance related script commands, but also make this more flexible to write once you learn them all
    a. hercules has *instance_attach script command, make sure this script command is added before trying do anything instance related in the register npc
    b. hercules has to emulate the map name with *instance_attachmap if the map name doesn't follow the syntax <number>@<5 string limit>
    2. hercules instance ID start from 0, rathena instance ID start from 1
    a. make sure the instance_announce is set to -1
    3. hercules seems cannot *instance_destroy inside the instance map itself ... has to rely on *instance_set_timeout of the timeout value
  23. Upvote
    AnnieRuru got a reaction from grimmm in Help Learning Instance and how it works. <3   
    similar topic appear in rathena forum
    prontera,155,180,0 script Test Instance 1_F_MARIA,{ if ( has_instance2("guild_vs2") >= 0 ) { // dispbottom has_instance2("guild_vs2") +" destroy"; instance_destroy has_instance2("guild_vs2"); } if ( ( .@ins = instance_create( "Test Instance", getcharid(CHAR_ID_ACCOUNT), IOT_CHAR ) ) < 0 ) { mes "error : "+ .@ins; close; } if ( !getstrlen( instance_attachmap( "guild_vs2", .@ins, true, ( getcharid(CHAR_ID_ACCOUNT) )+"INST" ) ) ) { mes "error : 5"; instance_destroy .@ins; close; } instance_set_timeout 3600, 15, .@ins; instance_init .@ins; warp has_instance("guild_vs2"), 49,49; end; } guild_vs2,49,49,5 script test dialog 1_F_MARIA,{ dispbottom strnpcinfo(NPC_MAP); mesf "%d monsters on this map", 'amount; next; select "Destroy"; instance_destroy; end; OnInstanceInit: monster has_instance("guild_vs2"), 49,49, "--ja--", PORING, 10, instance_npcname( strnpcinfo(NPC_NAME) )+"::OnMobDead"; 'amount = 10; end; OnMobDead: --'amount; if ( !'amount ) instance_announce -1, "all monster killed", bc_map; end; } few things noted for hercules ones
    1. hercules has more instance related script commands, but also make this more flexible to write once you learn them all
    a. hercules has *instance_attach script command, make sure this script command is added before trying do anything instance related in the register npc
    b. hercules has to emulate the map name with *instance_attachmap if the map name doesn't follow the syntax <number>@<5 string limit>
    2. hercules instance ID start from 0, rathena instance ID start from 1
    a. make sure the instance_announce is set to -1
    3. hercules seems cannot *instance_destroy inside the instance map itself ... has to rely on *instance_set_timeout of the timeout value
  24. Upvote
    AnnieRuru got a reaction from LordJasz in Mission board 'only once' doesn't work.   
    2.4b http://upaste.me/0c8149627b3ddc0c6
    - fix a typo in mission limitation can do daily or only once, actually allows to do twice instead of once
    - fix a typo in mission time limit, if your mission no.2/3/4 has expired, the script always says slot no.1
    @Helena
    2.4c http://upaste.me/7c9c496344829d36f
    - fix this f*cking deny usage once again ...this time when submit a mission, the getarraysize calculation is made AFTER declare the datetime format
    - if the whole board is set to EVERYDAY, remove the player side deny usage variable completely on the next day
  25. Upvote
    AnnieRuru got a reaction from xVec in King of Emperium Hill   
    got a PM from rAthena member ask me to fix this
    yeah both rathena patch and hercules plugin ... all broken
    so ....
    update to 1.2
    Script
    Plugin for Hercules
    Patch for rAthena
×
×
  • Create New...

Important Information

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