-
Content Count
85 -
Joined
-
Last visited
Reputation Activity
-
Begin got a reaction from ThyroDree in @pk command by Dastgir
Hello Ms. Annie,
I am using @pk commands for years since rAthena. It is being used in a High Rate server which is a PK Enabled on all maps because players want a different view of PK Place other than PvP Room. Sometimes, @pk is being used when a player wants to only farm and doesn't want to be killed. Sometimes, being used by newbies or if you have a Gold Room, they're also using it to avoid being killed.
-
Begin got a reaction from ThyroDree in Recommend a Hosting
I recommend PonyVPS Hosting as they are currently handling my 2 servers.
-
Begin got a reaction from AnnieRuru in @pk command by Dastgir
Hello Ms. Annie,
I am using @pk commands for years since rAthena. It is being used in a High Rate server which is a PK Enabled on all maps because players want a different view of PK Place other than PvP Room. Sometimes, @pk is being used when a player wants to only farm and doesn't want to be killed. Sometimes, being used by newbies or if you have a Gold Room, they're also using it to avoid being killed.
-
Begin reacted to luizragna in Custom Unit HP Bar System
Hello guys, i'm making a custom hp bar system for mob units.
The command show the HP of the mob for all players in the map.
I am using the cutin command, the problem is that I do not think so many files are necessary. In the case 1 image for each percentage of hp I would like your opnion and help to improve this system and make it lighter.
Test yourselves :).
HP Bar System:
payon,147,229,4 script Test#HPbar 1_F_MARIA,{ if (.HP_Bar == 0) { .HP_Bar = 1; .mobGID = monster ("payon",148,226,"[T] HP Test",POPORING,1,strnpcinfo(0)+"::OnDie"); setunitdata .mobGID,UDT_MAXHP,4000; setunitdata .mobGID,UDT_HP,4000; .@count = getunits(BL_PC, .@units, false, "payon"); for (.@i = 0; .@i < .@count; .@i++) addtimer(0,strnpcinfo(0)+"::OnHPBar", .@units[.@i]); } end; OnDie: .HP_Bar = 0; end; OnHPBar: .U_MAXHP = getunitdata (.mobGID,UDT_MAXHP); while (.HP_Bar != 0) { .U_HP = getunitdata (.mobGID,UDT_HP); .P_HP = (.U_HP*100)/.U_MAXHP; cutin(""+.P_HP+"", 1); sleep2 100; } cutin("0", 1); sleep2 5000; //Delay to hide HP Bar cutin("", 255); end; }
Donwload of the data folder files: HP Bar System (2018-06-26).rar
-
Begin reacted to Habilis in [AutoEvent] Trivia
Hello, as promised here is a Trivia auto event.
This script is originally way back from eA, it was adjusted on rA. (All credits in the header)
And now, I decided to Enhance it.
- An enhanced version of facts auto event. The Event is announced. The NPC asks 10 random
- questions from a question bank. Players have to write the answer to the main chat.
- Players don't need to worry about CAPITAL letters.
- 1) Question is asked by the NPC.
- 2) If there is no answer after 15 seconds NPC will give a hint.
- 3) IF there is still no answer after a hint, the question is skipped.
- 4) If the right answer is given, the player is announced and the reward is given
Side notes:
1) Control
If you have some kind of AutoEbent Controller, I've included the event control methods
OnEventStart:
OnStop:
OnEventTimeOut:
If you don't have a controller and just want to test this event, just setup the timers, when this event will run ex:
OnMinute33:
2) Rewards
I have special Event points, that I'm giving to the winners.
If you like to give Items or Zeny, I Included the examples in the code
// Winner gets reward in Zeny //Zeny += 1000000; // Alotta bax ;)
3) Questions definition
To define more questions you need to follow this pattern
DefineQuestion("<question>", "<answer>", "<hint>");
4) Cheating
I'm aware that this event can be cheated/Automated by players.
Therefore only a modest reward is given
-
Begin reacted to AnnieRuru in A battleground idea :D
https://rathena.org/board/topic/115744-a-battleground-idea-d/
since you mark it as solve, then I assume you don't want to make any changes anymore
http://upaste.me/60d349911d51d3996
and move on to other project
-
Begin reacted to Habilis in [Event] Wheel of fortune
I've recently got a brilliant idea.
Why not make my own version of a paid script, sold on rAthena
and release it to Hercules for free!?
(Not because I'm banned on rAthena )
I need a peer review before releasing the whole package.
@Myriad Did a nice Peer review of my terribel kode...
If anyone else would like to contribute, feel free.
Otherwise, it is soon to be released
UPD : I reDrew the cutins, they don't look like stolen from rAthena
1) configuration
there are 2 arrays
setarray .prize_id[1],-1,31024,31026,31008,31020,31017,31010,31016,0,31009;
setarray .prize_qty[1],2,1,1,1,3,3,1,3,0,3;
in prize_id
if id is > 0, the prize is an item
if id = 0 , the prize is NOTHING!
if id = -1, the prizer is free spin (number of free spins set in qty array)
in array .prize_qty you setup the quantity won
//===== Hercules Script ====================================== //= Wheel of Fortune //===== By =================================================== //= Habilis //= Edited by Myriad //===== Description ========================================== //= Wheel of fortune something. //============================================================ - script Wheel_of_Fortune FAKE_NPC ,{ OnInit: disablenpc("Wheel of Fortune#Main"); disablenpc("Hussein#WOF"); .EventName$ = "[Wheel Of Fortune]"; end; OnMinute39: OnStart: query_sql("DELETE FROM `acc_reg_num_db` WHERE `key`='#freewheelfortunespin';"); announce(sprintf("%s : The event will begin in 1 minute, near the center of Prontera.", .EventName$), bc_blue | bc_all); initnpctimer(); end; OnTimer60000: // 1 min enablenpc("Wheel of Fortune#Main"); enablenpc("Hussein#WOF"); announce(sprintf("%s : Come to Prontera and test your luck, everyone got some free spins!", .EventName$), bc_blue | bc_all); end; OnTimer1800000: // 30 mins announce(sprintf("%s : One more minute, do your last spin!", .EventName$), bc_blue | bc_all); end; OnTimer1860000: // 31 mins OnStop: disablenpc("Wheel of Fortune#Main"); disablenpc("Hussein#WOF"); end; } prontera,159,178,3 script Hussein#WOF 1_M_MERCHANT,{ doevent("Wheel of Fortune#Main::OnTalk"); end; } prontera,155,176,3 script Wheel of Fortune#Main 2_SLOT_MACHINE,{ OnTalk: if (#freewheelfortunespin == 0) #freewheelfortunespin = .Free_Spins; if (getd(.Event_Points_Variable$) < .Points_Cost && #freewheelfortunespin < 0) { mesf("[^0055FF ::: %s ::: ^000000]", .EventName$); mes("You are out of points"); mes("and have no more free"); mes("spins! Come back next"); mes("time for more."); close(); } .@mes$ = (#freewheelfortunespin > 0) ? sprintf(", but you, my friend, have %d free spin%s!", #freewheelfortunespin, (#freewheelfortunespin == 1) ? "" : "s") : "."; cutin("aca_salim02", 2); addtimer(1, sprintf("%s::OnEnd", strnpcinfo(NPC_NAME))); mesf("[^0055FF ::: %s ::: ^000000]", .EventName$); mes("Do you want to spin the wheel?"); mesf("It costs ^FF0000%d Event points^000000 to play%s", .Points_Cost, .@mes$); next(); callsub(S_Loop); S_Loop: .@val = getd(.Event_Points_Variable$); if (.@val < .Points_Cost && #freewheelfortunespin < 0) callsub(S_End); switch (select( (#freewheelfortunespin > 0) ? sprintf("Yes! Use free spin! (%d left)", #freewheelfortunespin) : "", (.@val > 0) ? sprintf("Yes! Use Event Points. (%d remaining)", .@val) : "", "No (Leave)" )) { case 1: callsub(S_Pay, 0); case 2: callsub(S_Pay, 1); default: callsub(S_End); } S_Pay: switch (getarg(0)) { // pay with free spin case 0: if (#freewheelfortunespin > 0) { if ((#freewheelfortunespin -= 1) < 1) #freewheelfortunespin = -1; callsub(S_Gamble); } else callsub(S_End); // Pay with points case 1: default: if ((.@val = getd(.Event_Points_Variable$)) >= .Points_Cost) { setd(.Event_Points_Variable$, (.@val -= .Points_Cost)); dispbottom(sprintf("%s : You now have %d event points.", .ServerName$, .@val)); callsub(S_Gamble); } else { cutin("aca_salim02", 2); mesf("[^0055FF ::: %s ::: ^000000]", .EventName$); mes("Awww, you don't have enough to gamble..."); mes(" "); mes("Have you ever heard?"); mes("'Money isn't all that matters' Got it?"); mes("Byeeeeeeeeeeeeee ;)"); callsub(S_End); } } S_Gamble: // Actual Gambling .@sector = rand(.Sector[0], .Sector[1]); .@displayCutin = (.@sector * 2) - 1; .@Speed = .Spin_Speed; for (.@i = 0; .@i < .nbTurns; .@i++) { .@b = .Cutin[0]; while (.@b <= .Cutin[1]) { cutin(sprintf("%s%d", .cutin$, .@b), 4); sleep2(.@Speed); .@b++; .@Speed++; } } .@b = .Cutin[0]; while (.@b < .@displayCutin) { cutin(sprintf("%s%d", .cutin$, .@b), 4); sleep2(.@Speed); .@b++; } cutin(sprintf("%s%d", .cutin$, .@b), 4); if (.prize_id[.@sector] == -1) { // Free spin if (.Sound_Effects) soundeffect("wheel_jackpot.wav", 0); announce(sprintf("[%s] : Wow, %d more Free spins!!!", .EventName$, .prize_qty[.@sector]), bc_blue | bc_self); #freewheelfortunespin = #freewheelfortunespin == -1 ? .prize_qty[.@sector] : #freewheelfortunespin + .prize_qty[.@sector]; } else if (.prize_id[.@sector] == 0) { // nothing if (.Sound_Effects) soundeffect("wheel_lost.wav", 0); announce(sprintf("[%s] : Awwww, No luck in gamble, more luck in love...", .EventName$), bc_blue | bc_self); } else { // item if (.Sound_Effects) soundeffect("wheel_won.wav", 0); announce(sprintf("[%s] : Enjoy your prize!!!", .EventName$), bc_blue | bc_self); getitem(.prize_id[.@sector], .prize_qty[.@sector]); } sleep2(1000); callsub(S_Loop); end; S_End: close2(); OnEnd: cutin("", 255); end; OnInit: .ServerName$ = "[Your boring server]"; .EventName$ = "Wheel Of Fortune"; .cutin$ = "WheelOfFortune_"; .Event_Points_Variable$ = "#LROEVENTPOINTS"; // The name of your event points variable setarray(.Sector, 1, 10); // Sector range setarray(.Cutin, 0, 19); // Cutin range .Spin_Speed = 50; // What is the base spin speed? (ms) .nbTurns = 2; .Points_Cost = 100; // How many 'points' does it cost for a spin? .Free_Spins = 1; // How many free spins does a player get? .Sound_Effects = true; // Enable sound effects? (true/false) setarray(.prize_id[1], -1, 31024, 31026, 31008, 31020, 31017, 31010, 31016, 0, 31009); setarray(.prize_qty[1], 2, 1, 1, 1, 3, 3, 1, 3, 0, 3); end; }
-
Begin reacted to AnnieRuru in Euphy's Quest Shop Bug
2 ways to fix this
1. simple, just add *disable_items script command at the beginning of the script
2. or you can also do like this, up to you
OnEnd: if (@qe[7]) { changelook LOOK_HEAD_BOTTOM, @qe[3]; changelook LOOK_HEAD_TOP, @qe[4]; changelook LOOK_HEAD_MID, @qe[5]; changelook LOOK_ROBE, @qe[6]; } deletearray @qe[0],8; end; change into
OnEnd: if (@qe[7]) { changelook LOOK_HEAD_BOTTOM, getlook(LOOK_HEAD_BOTTOM); changelook LOOK_HEAD_TOP, getlook(LOOK_HEAD_TOP); changelook LOOK_HEAD_MID, getlook(LOOK_HEAD_MID); changelook LOOK_ROBE, getlook(LOOK_ROBE); } deletearray @qe[0],8; end;
-
Begin reacted to AnnieRuru 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
-
Begin reacted to AnnieRuru in Vendor Control (rewrite)
up script to 2.1a
- add a debugging line to tell how many NPC you need
remain commented, however, should only run once to know how many NPC you need
thanks to @Begin for showing me his edited script
-
Begin reacted to vBrenth in Auto-Falcon Assault when linked
if( pc_isfalcon(sd) && sd->weapontype == W_BOW && sc && sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_HUNTER && pc->checkskill(sd,SN_FALCONASSAULT) > 0 && rand()%100 <= 15 ) skill->castend_damage_id(src,bl,SN_FALCONASSAULT,1,tick,SD_LEVEL); This will give you 15% chance.
Edit the <= 15 ) to chance you want.
-
Begin reacted to bWolfie in Exclude from dispell
i thought stalker is already immune to dispell skill when linked?
-
Begin reacted to AnnieRuru in NPC with a Promo Code
hmm .. then how do the official server actually preventing players from using the SAME promotion code for multiple accounts ?
because when I was fixing the script on rathena forum... I already noticed this
1. each account can only clam once
2. each IP can only claim once <-- not safe
3. use *getitembound ... ok I have no objection
so I can abuse the system with,
1. after I got a promotion code, that can claim 10 times,
2. login an account, claim once ....
3. logout the game, restart the modem, shuffle your IP address
4. login another account, claim again
repeat 10 times
ok, let's say generate 100 different codes for 100 different donors... so they can use each code only once (limit 100 times)
means generating 100 different codes for each player ... this only makes the GMs confused which code has been used b4 ...
instead give out some gibberish word that you have sure which code is available, why not just give the item to them by let the player click on the npc ?
unless I can clear out these doubts, I'm not going to make this scripts ... seems exploitable ...
or maybe someone who actually has used this system b4, know how this system works, release a script for it so I can take a peek ...
because all the promotion npc on the forum(hercules/rathena) can be exploit in some way
prontera,155,185,5 script Reward/Compensation 1_F_MARIA,{ if ( #Compensation_June2018 ) { mes "you have claimed compensation"; close; } mes "We apologize for blah blah blah"; mes "so I give you a candy"; if ( !checkweight(Candy,1) ) { mes "hahaha you don't even has enough space to claim a candy hahaha"; close; } getitembound Candy, 1, 1; #Compensation_June2018 = 1; close; OnInit: OnHour00: if ( gettime(GETTIME_MONTH) == JUNE && gettime(GETTIME_DAYOFMONTH) >= 9 && gettime(GETTIME_DAYOFMONTH) <= 15 ) enablenpc strnpcinfo(0); else disablenpc strnpcinfo(0); end; } for me its a simple script ...
but now you actually struct me with an idea to actually write one that can configure the time and the prize given.......
-
Begin got a reaction from AnnieRuru in NPC with a Promo Code
Thank you for this script, Ms. Annie! Your idea that the time and prize will be configurable will be a good script for us!
Attached photo is the example of the promo/item code but that is based on WebCP.
-
-
Begin got a reaction from AnnieRuru in Vendor Control (rewrite)
May I know the Discord link, Ms. Annie?
Found it.
-
Begin reacted to Mumbles in @go command
Utility: @go command
Original concept by : http://herc.ws/board/topic/14-utility-added-feature-jtynnes-go-command-alternative-txt-format/
Description:
Alternative @go command. Allows for unlimited aliasing, as well as level and group restrictions for each destination. Additional options to add a delay, prevent use when dead, and charge per use are available; default cost is defined with '.cost', but this parameter can be set manually with 'go()'. These extra features are disabled by default.
Be mindful that the delay uses a temporary player variable, '@go_delay'; if the player logs out, this variable will be cleared. If you would like for a more secure delay, replace all instances of '@go_delay' with 'go_delay'.
Download:
https://github.com/datmumbles/Scripts/raw/master/cmd/go.txt
-
Begin reacted to AnnieRuru in Vendor Control (rewrite)
you should assume all my plugins broken, just like my signature says
2.1
script & plugin
- fix the script and use constant properly
- revert back to *unitwalk
-
Begin reacted to Dastgir in Plugin Collections
Hello Community,
I am feeling like, there's many plugin on forum, but not been actively used, due to out-of-date plugin
I have updated Shikazu's Plugin first(as it was requested on the thread from 25th April), maybe Shikazu busy on his rl.
Also I have included My Plugins there.
I would like to add more plugins there(which are not updated on hercules forum <- please suggest if you find some outdated plugin and want me to update it )
List of Plugins and Owners:
https://github.com/dastgir/HPM-Plugins/blob/master/README.md
Repository: https://github.com/dastgir/HPM-Plugins
Thanks.
-
Begin reacted to AnnieRuru in Card Shredder Edit
split topic from http://herc.ws/board/topic/15934-card-shredder/
@Begin
prontera,155,185,4 script Card trader 2_VENDING_MACHINE1,{ mes "[Card trader]"; mes "Please select the card you wish to trade."; getinventorylist; for ( .@i = 0; .@i < @inventorylist_count; ++.@i ) { if ( getiteminfo( @inventorylist_id[.@i], ITEMINFO_TYPE ) == IT_CARD ) { .@menu$ += getitemname( @inventorylist_id[.@i] ) +":"; .@cardid[.@c++] = @inventorylist_id[.@i]; } } .@menu$ += "No Card - Close"; next; .@s = select( .@menu$ ) -1; if ( .@s == .@c ) close; while ( .@cardid[.@s] != .mvpcardid[.@i] && .@i < .mvpcards ) { ++.@i; } if ( .@i < .mvpcards ) .@rate = 3; else .@rate = 1; mes "[Card trader]"; dispbottom countitem( .@cardid[.@s] ) +""; if ( countitem( .@cardid[.@s] ) > 1 ) { mes "Input how many you want to trade ?"; next; input .@amount, 0, countitem( .@cardid[.@s] ); if ( !.@amount ) close; mes "[Card trader]"; mes "Are you sure you want to trade"; mes .@amount +"x "+ getitemname( .@cardid[.@s] ); mes " for "+( .@rate * .@amount )+" Poring Coins ?"; } else { .@amount = 1; mes "Are you sure you want to trade a "+ getitemname( .@cardid[.@s] ) +" for "+ .@rate +" Poring Coins ?"; } next; if ( select ( "Yes.", "No" ) == 2 ) close; delitem .@cardid[.@s], .@amount; getitem Poring_Coin, .@rate * .@amount; close; OnInit: .mvpcards = query_sql("select item_db.id from item_db right join mob_db on item_db.id = mob_db.dropcardid where mexp > 0 and type = 6 group by name_japanese;", .mvpcardid); end; } simple script
although I wanted to do page by page ... but when realize MAX_INVENTORY is just 100, while menu string limit is 2047,
means need 20 string length of each card item name to crash the client ... so don't need to do page by page
-
Begin reacted to Sashi in Card Shredder Edit
i wrote this NPC for my server Sanctuary RO, with the intention of sharing since it took a lot of work to write i wanted to let other people use the same NPC or be able to edit it or take snippets from it to use in their own creations
i'm designing the server economy to depend on cards so i wrote an NPC that will dispense coins every time a card is traded baised on how often that card is traded in by the whole server
note that item 9204 is a custom item on my server and it will probably need to be changed
there may have been easier or cleaner ways to write this NPC but it absolutely works, the only issue is if you have too many cards in your inventory the menu wont display them all but it requires a lot to hit that point
cardshredder.txt
-
Begin reacted to AnnieRuru in Card Shredder Edit
I admit its cool idea, reminds me the card trader event I made long time ago
http://herc.ws/board/topic/11367-card-collector/
the problem is your script, and you should be glad you have posted on the board
let me simplify it ...
prontera,155,185,4 script Card Shredder 2_VENDING_MACHINE1,{ mes "[ Card Shredder ]"; mes "You can shred cards to earn premium currency"; mes "would you like to shred any cards? "; next; if ( select ( "Yes.", "No" ) == 2 ) close; mes "[ Card Shredder ]"; mes "Please select the card you wish to shred."; getinventorylist; for ( .@i = 0; .@i < @inventorylist_count; ++.@i ) { if ( getiteminfo( @inventorylist_id[.@i], ITEMINFO_TYPE ) == 6 ) { .@menu$ += getitemname( @inventorylist_id[.@i] ) +" "+ callsub( L_Coins, @inventorylist_id[.@i] ) +" Coins:"; .@cardid[.@c++] = @inventorylist_id[.@i]; } } .@menu$ += "No Card - Close"; next; .@s = select( .@menu$ ) -1; if ( .@s == .@c ) close; mes "[ Card Shredder ]"; mes "are you sure you want to shred a "+ getitemname( .@cardid[.@s] ) +" for "+ callsub( L_Coins, .@cardid[.@s] ) +" coins ?"; next; if ( select ( "Yes.", "No" ) == 2 ) close; delitem .@cardid[.@s], 1; getitem Poring_Coin, callsub( L_Coins, .@cardid[.@s] ); ++$cardid_shredded[ .@cardid[.@s] ]; close; L_Coins: if ( $cardid_shredded[ getarg(0) ] < 5 ) return 5; else if ( $cardid_shredded[ getarg(0) ] < 10 ) return 4; else if ( $cardid_shredded[ getarg(0) ] < 15 ) return 3; else if ( $cardid_shredded[ getarg(0) ] < 20 ) return 2; else return 1; } I made it in a way without using 2 permanent variables
also found a bug though ... line 713
if (.@cardval < 1) set cardval,10; if (.@menu == 454) close; why do you set a permanent player variable ... there ?
and about the issue about having too many cards in the menu, can be done with page system
https://rathena.org/board/topic/74630-help-array/
-
Begin reacted to AnnieRuru in Card Shredder Edit
L_Coins: if ( $cardid_shredded[ getarg(0) ] < 5 ) return 5; else if ( $cardid_shredded[ getarg(0) ] < 10 ) return 4; else if ( $cardid_shredded[ getarg(0) ] < 15 ) return 3; else if ( $cardid_shredded[ getarg(0) ] < 20 ) return 2; else return 1; I've read the original script, and in that script .... as you can see here the value will decrease the more players shred their cards
although I also prefer to have a fix value ... though
yes its possible ... but you want a fix value or a descending value ?
you know ... if its a fix value ... then sounds like a card trader npc
-
Begin reacted to GmOcean in Slot Machine
File Name: Slot Machine
File Submitter: GmOcean
File Submitted: 14 Sep 2014
File Category: Events & Games
This script will allow users to spend zeny &/or an item for a chance to win a prize from the slot machine. Currently there are 2 versions. First is a Single Slot Machine, where only 1 slot is rolled. Second is the Triple Slot machine, where 3 slots are rolled. For either version, SUCCESS must be the only thing displayed in order to win.
To add the cutins, just place them in: data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/illust
/* =============================================================
/* NOTE - If using soundeffects you must add the ".wav" files
/* provided in the ".rar" file to your: data/wav folder located
/* in either your: ( Ragnarok folder ) OR ( .grf file )
/* =============================================================
I've included the PSD file, so you can edit it as you like.
Click here to download this file
-
Begin reacted to AnnieRuru 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