-
Posts
511 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by WhatFT
-
-
-
Can anyone help me add something to this script? Sir Emistry own this script..
1. Make every player who entered have a 90 seconds delay before entering again.
2. Maximum of [10 players] only are allowed to enter.
3. Show how many players are inside, waitingroom (0/10 players)
Question : What does if( #Daily == 10 ) and set #Daily,1; mean? I wanted to remove that but I always get error.
prontera,162,185,5 script Coin Room 491,{ if( select("Enter Coin Room:Cancel") == 1 ) if( #Daily == 10 ) mes "Take a rest and come back later."; else{ set #Daily,1; addtimer 33000,strnpcinfo(0)+"::OnTimeLimit"; announce "[Coin Room]:" + strcharinfo(0) + " has entered the Coin Room.",0; warp "poring_c01",100,100; message strcharinfo(0),"You have 30 seconds to loot."; } close; OnTimeLimit: message strcharinfo(0),"Time's Up."; sleep2 4000; message strcharinfo(0),"3"; sleep2 3000; message strcharinfo(0),"2"; sleep2 2000; message strcharinfo(0),"1"; sleep2 1000; announce "[Coin Room]: " + strcharinfo(0) + "'s Time Limit is over!",0; warp "SavePoint",0,0; end; OnInit: while( 1 ){ if( getmapusers("poring_c01") ) makeitem 673,1,"poring_c01",rand(87,119),rand(86,115); sleep 300; } end; }
Problem with Disguise Event NPC, the script is not clickable/working..
//===== rAthena Script ======================================= //= Disguise Event //===== By: ================================================== //= GmOcean //===== Current Version: ===================================== //= 5.1 //===== Compatible With: ===================================== //= rAthena SVN //===== Additional Comments: ================================= //= Note: This script requires PCRE to run properly. //= 5.0 Last update by GmOcean. //= 5.1 Cleaned and standardized, mostly. [Euphy] //============================================================ prontera,130,172,5 script Disguise Event 795,{ // Currently set to run every two hours. // To change times, edit the OnClock labels below. set .@GMLevel,99; // GM level required to access NPC. set .@n$,"[^0000FFDisguise NPC^000000]"; if (getgmlevel()>=.@GMLevel) { mes .@n$; mes "Select an option."; next; switch(select("Turn ON/OFF Event:Event Settings")) { case 1: mes .@n$; if (.EventON) { mes "The Event is currently: [^0000FFON^000000]"; mes "Would you like to turn it OFF?"; } else { mes "The Event is currently: [^FF0000OFF^000000]"; mes "Would you like to turn it ON?"; } if(select("Yes:No")==2) close; if (.EventON) { set .EventON,0; set .Timer,0; setnpctimer 0; stopnpctimer; announce "A GM has decided to turn the Disguise Event off. As a result no further prizes will be given.",bc_map | bc_blue; deletepset 1; setnpcdisplay "Disguise Event",795; close; } set .EventON,1; set .Timer,1; setnpctimer 0; initnpctimer; set .ResetCounter,.ResetCounter+1; announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue; announce "The Event is being held in Prontera 189 179.",bc_all | bc_blue; close; case 2: mes .@n$; mes "Pick a setting to modify."; next; switch(select("Monster Display:Number of Rounds:Prize Settings")) { case 1: setarray .@r$[0],"Disguise as all monsters.","Disguise as MVPs only."; mes .@n$; mes "Choose a disguise rule."; next; set .Rule, select(implode(.@r$,":")); mes .@n$; mes "The Disguise Rule has been set:"; mes " > ^0055FF"+.@r$[.Rule-1]+"^000000"; close; case 2: mes .@n$; mes "Input the number of rounds you want the event to last."; mes "Current number: [^0000FF"+.Rounds+"^000000]"; next; input .@Rounds; set .Rounds,.@Rounds; mes .@n$; mes "The number of rounds has been changed to "+.Rounds+"."; close; case 3: mes .@n$; mes "Input the Item ID of the prize given each round."; mes "Current item: [^0000FF"+getitemname(.Prize)+"^000000] (ID #"+.Prize+")"; next; input .@Prize; mes .@n$; if (getitemname(.@Prize)=="" || getitemname(.@Prize)=="null") { mes "That item does not exist. Please try again."; close; } set .Prize,.@Prize; mes "Input the amount to be given."; next; input .@amount; mes .@n$; if (.@amount<=0 || .@amount>=10000) { mes "That amount is invalid. Using default ammount of 1."; set .@amount,1; next; mes .@n$; } set .PrizeAmt,.@amount; mes "The Prize has been changed successfully."; mes "Prize: "+.PrizeAmt+"x [^0000FF"+getitemname(.Prize)+"^000000]"; close; } } } if (.EventON) end; mes .@n$; mes "Welcome."; mes "How may I be of assistance?"; if(select("Information:Nothing, just passing through.")==2) close; next; mes .@n$; mes "This event is quite simple."; mes "At the start of the event, I will"; mes "disguise myself as a random"; mes "monster. You have to shout"; mes "that monter's name out loud."; next; mes "If you are correct, you will receive"; mes "a prize. If not, keep trying!"; mes "That's all that there is to this event."; close; OnInit: set .EventON,0; set .Wait,0; set .Winner,0; set .ResetCounter,0; set .Rounds,10; set .Prize,12248; set .PrizeAmt,2; set .Rule,1; setarray .MVP[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373, 1389,1399,1418,1492,1502,1511,1583,1623,1630,1646,1647,1648,1649,1650,1651,1658,1685,1688, 1708,1719,1734,1751,1768,1779,1785,1802,1832,1871,1874,1885,1917,1980,2022,2068,2087,2131, 2156,2165; set .BlackList$, "1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168," + "1171,1172,1173,1181,1187,1210,1217,1218,1222,1223,1224,1225,1226,1227,1228," + "1233,1284,1407,1411,1414,1495,1501,1900,1996,2000,2001,2002,2003,2004," + "2005,2006,2007,2011,2012,2025,2028,2029,2030,2031,2032,2033,2034,2035," + "2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049," + "2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063," + "2064,2065,2066,2067,2075,2076,2077,2078,2079,2080,2081,2083,2084,2085," + "2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099," + "2100,2101,2012,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113," + "2114,2115,2116,2117,2118,2119,2120,2121,2123,2124,2125,1496,"; end; OnClock0000: OnClock0100: OnClock0200: OnClock0300: OnClock0400: OnClock0500: OnClock0600: OnClock0700: OnClock0800: OnClock0900: OnClock1000: OnClock1100: OnClock1200: OnClock1300: OnClock1400: OnClock1500: OnClock1600: OnClock1700: OnClock1800: OnClock1900: OnClock2000: OnClock2100: OnClock2200: OnClock2300: set .ResetCounter,.ResetCounter+1; set .EventON,1; set .Timer,1; set .Wait,1; announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue; announce "The Event is being held in Prontera Prontera 189 179.",bc_all | bc_blue; setnpctimer 0; initnpctimer; end; OnTimer10000: if (.Timer || .Change) end; set .Wait,0; goto iDisguise; end; OnTimer30000: if (.Timer) end; set .Change,0; setnpcdisplay "Disguise Event",795; npctalk "You took too long to guess what I was. Please wait 10 seconds while I disguise again."; specialeffect 725; set $MonsterName$,""; deletepset 1; stopnpctimer; setnpctimer 0; initnpctimer; end; OnTimer60000: if (.Timer!=1) end; announce "The Disguise Event will begin in 2 minutes.",bc_all | bc_blue; announce "The Event is being held in Prontera 189 179.",bc_all | bc_blue; end; OnTimer120000: if (.Timer!=1) end; announce "The Disguise Event will begin 1 minute.",bc_all | bc_blue; announce "The Event is being held in Prontera 189 179.",bc_all | bc_blue; end; OnTimer180000: if (.Timer!=1) end; announce "The Disguise Event has begun!",bc_all | bc_blue; announce "The Event is being held in Prontera 189 179.",bc_all | bc_blue; set .Timer,0; stopnpctimer; setnpctimer 0; initnpctimer; iDisguise: if (.Rule==1) { set .Winner,0; set .Monster,1000+rand(1,995); if (compare(","+.BlackList$+"," , ","+.Monster+",")) goto iDisguise; if (.Monster==.LastMonster) goto iDisguise; set .LastMonster,.Monster; set $MonsterName$,getmonsterinfo(.Monster,0); } if (.Rule==2) { set .Winner,0; set .Monster,rand(49); set $MonsterName$,getmonsterinfo(.MVP[.Monster],0); } deletepset 1; defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect"; activatepset 1; if (.Rule==1) setnpcdisplay "Disguise Event",.Monster; if (.Rule==2) setnpcdisplay "Disguise Event",.MVP[.Monster]; set .Change,1; setnpctimer 0; end; iCorrect: if (.Winner) { dispbottom "Someone has already won this round."; end; } set .Winner,1; set .RoundCount,.RoundCount+1; deletepset 1; activatepset 1; getitem .Prize,.PrizeAmt; announce strcharinfo(0)+" is correct! I was disguised as: "+$MonsterName$+"",bc_map | bc_blue; if (.RoundCount>=.Rounds) { setnpcdisplay "Disguise Event",795; set .RoundCount,0; set .Change,0; set .EventON,0; setnpctimer 0; stopnpctimer; npctalk "Thank you all for playing. That was the last round of the Disguise Event. Come play again later."; end; } setnpcdisplay "Disguise Event",795; set .Change,0; setnpctimer 0; end; }
-
Can anyone got this kind of script? Or If anyone can make some script like this?
/* CREATE TABLE IF NOT EXISTS `rebirth_system` ( `account_id` int(11) unsigned NOT NULL default '0', `name` varchar(255) NOT NULL DEFAULT 'NULL', `num_rebirth` int(11) unsigned NOT NULL default '0', `last_ip` varchar(100) NOT NULL default '', PRIMARY KEY (`account_id`) ) ENGINE=MyISAM; */ prontera,150,170,5 script Spec 833,{ function checkItem; // check if player have all item required function colorItemrequired; // color the text. Red : not enough item, green otherwise function deleteItem; // delete all items required function displayItemneed; // display all items need at start function getItemReward; // give the items reward function weightreq; // check if your current weight is highter than weight high novice .@eac = eaclass(); if ( num_rebirth == .reset_max ) { mes "You can only rebirth x"+ .reset_max +"."; emotion e_gasp; close; } else if( NextJobExp || NextBaseExp || !( .@eac&EAJL_2 ) || !Upper ) { mes "You must be rebirth max level/max job level."; close; } mes "Items need :"; displayItemneed(); next; switch( select( "^777777~ Rebirth", "~ Informations", "~ Good bye^000000" ) ) { case 1: weightreq(); checkItem(); deleteItem(); break; case 2: mes "You can only rebirth ^ff0000x"+ .reset_max +"^000000. You already rebirth ^ff0000x"+ num_rebirth +"^000000."; mes "Each rebirth you get ^ff0000"+ .num_status +"^000000 status points and after ^ff0000"+ .change_reward +"^000000 rebirth, you get only some items."; close; case 3: mes "Bye."; close; } num_rebirth += 1; if ( Upper ) { // just in case the user change the setting... lastJob = roclass( .@eac&EAJ_UPPERMASK ); jobchange Job_Novice_High; } else jobchange Job_Novice; resetlvl 1; if ( num_rebirth < 30 ) StatusPoint = StatusPoint + .num_status * num_rebirth; else getItemReward(); query_sql "insert into `rebirth_system` values ( "+ getcharid(3) +", '"+ escape_sql( strcharinfo(0) ) +"', '"+ num_rebirth +"', '"+ getcharip() +"' ) on duplicate key update `num_rebirth` = `num_rebirth` +1"; announce "[ Rebirth system ] : "+ strcharinfo(0) +" rebirth for the "+ num_rebirth +" time !", 0; close; function checkItem { for ( ; .@i < .size_item; .@i += 2 ) if ( countitem( .item_req[.@i] ) < .item_req[ .@i+1 ] + num_rebirth ) { mes "You don't have enought "+ getitemname( .item_req[.@i] ) +". ^ff0000["+ countitem( .item_req[.@i] ) +"/"+ ( .item_req[ .@i+1 ] + num_rebirth ) +"]^000000"; close; } if ( num_rebirth >= .change_reward ) if ( .add_item_req[1] + num_rebirth - .change_reward > countitem( .add_item_req[0] ) ) { mes "You don't have enought "+ getitemname( .add_item_req[0] ) +". ^ff0000["+ countitem( .add_item_req[0] ) +"/"+ ( .add_item_req[1] + num_rebirth - .change_reward ) +"]^000000"; close; } return; } function colorItemrequired { if ( countitem( .item_req[ getarg(0) ] ) < .item_req[ getarg(0)+1 ] + num_rebirth ) return "^ff0000"; return "^00ff00"; } function deleteItem { for ( ; .@i < .size_item; .@i += 2 ) delitem .item_req[.@i], ( .item_req[ .@i+1 ] + num_rebirth ); if ( num_rebirth >= .change_reward ) delitem .add_item_req[0], ( .add_item_req[1] + num_rebirth - .change_reward ); return; } function displayItemneed { for ( ; .@i < .size_item; .@i += 2 ) mes colorItemrequired( .@i ) +" - x"+ ( .item_req[ .@i+1 ] + num_rebirth ) +" "+ getitemname( .item_req[.@i] ); if ( num_rebirth >= .change_reward ) { if ( .add_item_req[1] + num_rebirth - .change_reward > countitem( .add_item_req[0] ) ) .@color$ = "^ff0000"; else .@color$ = "^00ff00"; mes .@color$ +"- x"+ ( .add_item_req[1] + ( num_rebirth - .change_reward ) ) +" "+ getitemname( .add_item_req[0] ); } return; } function getItemReward { for ( ; .@i < .size_reward; .@i += 2 ) getitem .reward[.@i], .reward[ .@i+1 ]; return; } function weightreq { if ( Weight > 20000 ) { mes "You have too much items on you. Your weight will be too high after rebirth."; close; } return; } OnInit: .reset_max = 50; // how much reset max .change_reward = 30; // after 30 rebirth, change reward .num_status = 300; // + X number of status points // item required <item ID>, <number> setarray .item_req, 501, 5, 502, 2, 503, 3; .size_item = getarraysize( .item_req ); // additionnal items after rebirth >> .change_reward // <item ID>, <number> setarray .add_item_req, 601, 1; // rewards <item ID>, <number> setarray .reward, 504, 1; .size_reward = getarraysize( .reward ); end; }
Thanks Capuche ! I'll update the script if there is some errors.. THANK YOU!
- 1
-
Can anyone got this kind of script? Or If anyone can make some script like this?
What kind of Rebirth System :
- Only works in rAthena.
- Maximum Rebirth is 50.
- Each rebirth will give 300 Stat Points until they reach 30th Rebirth.
- Once they reach the 30th Rebirth, they will now receive Items instead of Stat Points until they reach the 50th Rebirth.
- The Rebirth NPC will always check their weight limit before they rebirth, If their weight is quite large then the NPC won't make them rebirth.
- Players who got to rebirth will be Broadcasted.
- Players that have finished their Rebirth Stages will reset their Levels back into 1 including their Stat Point (This does not affect the additional Stat Points per rebirth, It will still remain).
- Players can only Rebirth once they have the Single Item Requirement. (Like Rebirth Ticket)
- Optional : Saves the rebirth of each character in the logs of Account ID, Character Name, No. of Reborn and IP Address.
How the Rebirth System works :
- Each Rebirth will have atleast 5 Item Requirements like (Sample) 512, 513, 514, 515, 516...
- Each Rebirth will increase the amount of the Item Requirements by 1 until it reaches the 30th Rebirth.
- Once the player reaches 30th Rebirth, there will be an Additional Item Requirement, (Sample) Item ID 505..
Hope someone will share or make some kind of this script... THANK YOU!
-
prontera,154,150,5 script Hunter Register 87,{ function isinlist; //return the index of the player in the list ; -1 if not function newtarget; // set a new target in the online character list function initArrayNumber; // initialize an array size 128 ; each column is incremented +1 starting to 1 function initOnlineArray; // copy data of players register online in some array + warp players function PlayerGetReward; // give a reward for each player online PO ; disabled fakename function dispatchAllTarget; // give a target for each PO function sortPointArray; // sort the online array order by point function deleteAllVar; // delete all variables unused function AddPoint; // add/remove hunters points mes .npc_name$; mes "Wanna register in the hunter event ?"; next; if ( prompt( ( .start == 2 ? "^777777~ Warp on event map^000000" : "" ), ( .start == 1 ? "^777777~ Register ?^000000" : "" ), "^777777~ About the event^000000", ( getgmlevel() > 59 ? "^FF0000[GM] Start/Stop Event^000000" : "" ) ) == 3 ) { mes .npc_name$; mes "Every 4 hours.. Wait 10 mins... battle..."; close; } else if ( @menu == 4 ) { // gm menu if ( .start ) select ( "Stop the event ?" ); else select ( "Start the event ?" ); if ( .start ) awake strnpcinfo(0); else goto OnHour20; end; } else if ( .size_array_init > 127 && @menu == 2 ) { mes .npc_name$; mes "The event queue is full"; close; } else if ( isinlist( ".list_init_cid", ".size_array_init" ) != -1 ) { if ( @menu == 1 ) { warp .event_map$,0,0; end; } mes .npc_name$; mes "You're already on my list"; close; } else if ( @menu == 1 ) end; else if ( @menu == 2 ) { .list_init_cid[ .size_array_init ] = getcharid(0); .list_init_aid[ .size_array_init ] = getcharid(3); .@i = rand( .size_num ); .dispatch_num_init[ .size_array_init ] = .num[.@i]; deletearray .num[.@i], 1; .size_array_init++; .size_num--; message strcharinfo(0),"You're now on the list."; } end; OnHour00: OnHour04: OnHour08: OnHour12: OnHour16: OnHour20: initArrayNumber(); // initialize array to dispatch number to player .start = 1; initnpctimer; announce "[ Hunter Event ] : The event will start in 10 min !",0; end; OnTimer600000: // 10 mins announce "[ Hunter Event ] : Event start.",0; .start = 2; stopnpctimer; initOnlineArray(); bindatcmd "hunter",strnpcinfo(3)+"::OnAtcommand"; if ( .size_online >= .min_player ) { for ( .@i = 0; .@i < .size_mapflag; .@i++ ) setmapflag .event_map$, .mapflag[.@i]; dispatchAllTarget(); sleep 900000; // 15 mins } sortPointArray(); PlayerGetReward(); deleteAllVar(); unbindatcmd "hunter"; announce "[ Hunter Event ] : End of event.",0; mapwarp .event_map$,"prontera",150,150; for ( .@i = 0; .@i < .size_mapflag; .@i++ ) removemapflag .event_map$, .mapflag[.@i]; end; OnPCLoginEvent: if ( !.start ) end; .@index = isinlist( ".list_init_cid", ".size_array_init" ); if( .@index == -1 && strcharinfo(3) == .event_map$ ) { warp "prontera",0,0; end; } else if( .@index == -1 ) end; atcommand "@fakename [ "+ .dispatch_num_init[ .@index ] +" ] "+ strcharinfo(0) ; .list_cid_online[ .size_online ] = getcharid(0); .list_aid_online[ .size_online ] = getcharid(3); .dispatch_num_online[ .size_online ] = .dispatch_num_init[ .@index ]; .size_online++; newtarget(); end; OnPCLogoutEvent: if ( !.start ) end; .@index = isinlist( ".list_cid_online", ".size_online" ); if( .@index == -1 ) end; if ( .malus_logout ) AddPoint( getcharid(0), -1, 0, -1, .malus_logout ); // if getarg(1) == -1 or getarg(2) == -1 => add getarg(4) * getarg(3) points .@num_ = .dispatch_num_online[ .@index ]; deletearray .list_cid_online[ .@index ], 1; deletearray .list_aid_online[ .@index ], 1; deletearray .dispatch_num_online[ .@index ], 1; deletearray .target_online[ .@index ], 1; .size_online--; if( .size_online < 2 ) awake strnpcinfo(0); for ( .@i = 0; .@i < .size_online; .@i++ ) if ( .target_online[.@i] == .@num_ ) newtarget( .@i ); end; OnPCKillEvent: if ( !.start ) end; .@index = isinlist( ".list_cid_online", ".size_online" ); if( .@index == -1 ) end; .@char_id = getcharid(0); attachrid( killedrid ); .@index2 = isinlist( ".list_cid_online", ".size_online" ); if( .@index2 == -1 ) end; AddPoint( getcharid(0), .@index, .@index2, -1 ); // <target>, <index online killer IO>, <IO Killed>, <rate points> .@main = AddPoint( .@char_id, .@index, .@index2, 1 ); if ( .@main == .point_main ) newtarget( .@index ); sortPointArray(); for ( .@i = 0; .@i < .size_online; .@i++ ) if ( .count_point_online[.@i] >= 30 ) { .@num_winner++; if ( .@num_winner == 5 ) { awake strnpcinfo(0); end; } } doevent strnpcinfo(0) +"::OnRezu"; end; OnRezu: sleep2 3000; warp .event_map$,0,0; percentheal 100,100; end; function AddPoint { .@i = isinlist( ".list_init_cid", ".size_array_init", getarg(0) ); if ( getarg(1) == -1 || getarg(2) == -1 ) .@points = getarg( 4,0 ) * getarg(3); else if( .target_online[ getarg(1) ] == .dispatch_num_online[ getarg(2) ] ) .@points = .point_main * getarg(3); else .@points = .point_others * getarg(3); .count_point[.@i] = .count_point[.@i] + .@points; message rid2name( .list_init_aid[.@i] ), "You have "+ .@points +" Hunters points. Total : "+ .count_point[.@i] +" Hunters points"; return .@points; } function deleteAllVar { .size_array_init = .start = .size_num = .size_online = 0; deletearray .list_cid_online; deletearray .list_aid_online; deletearray .dispatch_num_online; deletearray .num; deletearray .list_init_cid; deletearray .dispatch_num_init; deletearray .count_point; deletearray .count_point_online; deletearray .target_online; return; } function dispatchAllTarget { for( .@i = 0; .@i < .size_online; .@i++ ) { newtarget( .@i ); charcommand "#fakename "+ rid2name( .list_aid_online[.@i] ) +" [ "+ .dispatch_num_online[.@i] +" ] "+ rid2name( .list_aid_online[.@i] ) ; } return; } function isinlist { if ( getarg( 2,0 ) ) .@char_id = getarg( 2,0 ); else .@char_id = getcharid(0); while( .@i < getd( getarg(1) ) && getd( getarg(0) +"[" + .@i + "]" ) != .@char_id ) .@i++; if( .@i == getd( getarg(1) ) ) return -1; return .@i; } function initArrayNumber { for( .@i = 0; .@i < 128; .@i++ ) .num[.@i] = .@i +1; .size_num = 128; return; } function initOnlineArray { for ( .@i = 0; .@i < .size_array_init; .@i++ ) if( isloggedin( .list_init_aid[.@i], .list_init_cid[.@i] ) ) { .list_cid_online[ .size_online ] = .list_init_cid[.@i]; .list_aid_online[ .size_online ] = .list_init_aid[.@i]; .dispatch_num_online[ .size_online ] = .dispatch_num_init[.@i]; warpchar .event_map$,0,0,.list_cid_online[ .size_online ]; .size_online++; } return; } function newtarget { if( getarg( 0,-1 ) == -1 ) .@index = isinlist( ".list_cid_online", ".size_online" ); else .@index = getarg( 0,-1 ) ; do .@r = rand( .size_online ); while( .@r == .@index ); .target_online[ .@index ] = .dispatch_num_online[.@r]; message rid2name( .list_aid_online[ .@index ] ), .list_cid_online[ .@index ] +" Your main target is now number [ "+ .target_online[ .@index ] +" ]"; return; } function PlayerGetReward { for ( .@i = 0; .@i < .size_online; .@i++ ) { charcommand "#fakename "+ rid2name( .list_aid_online[.@i] ) ; for ( .@j = 0; .@j < .size_reward; .@j += 3 ) { if( .count_point_online[.@i] >= .reward[.@j] ) { getitem .reward[.@j+1], .reward[.@j+2], .list_aid_online[.@i]; break; } } } return; } function sortPointArray { deletearray .count_point_online; for ( .@i = 0; .@i < .size_online; .@i += 1 ) { .@index = isinlist( ".list_init_cid", ".size_array_init", .list_cid_online[.@i] ); .count_point_online[.@i] = .count_point[ .@index ]; } .@k_size = .size_online; while ( .@k_size ) { .@test = .count_point_online; .@index = 0; for ( .@i = 1; .@i < .@k_size; .@i += 1 ) if ( .@test < .count_point_online[.@i] ) { .@test = .count_point_online[.@i]; .@index = .@i; } .@save_point[.@k] = .count_point_online[ .@index ]; .@save_aid[.@k] = .list_aid_online[ .@index ]; .@save_cid[.@k] = .list_cid_online[ .@index ]; .@save_dispatch_num[.@k] = .dispatch_num_online[ .@index ]; .@save_target[.@k] = .target_online[ .@index ]; deletearray .count_point_online[ .@index ], 1; deletearray .list_aid_online[ .@index ], 1; deletearray .list_cid_online[ .@index ], 1; deletearray .dispatch_num_online[ .@index ], 1; deletearray .target_online[ .@index ], 1; .@k_size = .@k_size -1; .@k += 1; } copyarray .count_point_online, .@save_point, .size_online; copyarray .list_aid_online, .@save_aid, .size_online; copyarray .list_cid_online, .@save_cid, .size_online; copyarray .dispatch_num_online, .@save_dispatch_num, .size_online; copyarray .target_online, .@save_target, .size_online; return; } OnInit: .npc_name$ = "^ff0000- [ Hunter NPC ] -^000000"; .malus_logout = 3; // num malus points if log out ? (0: disabled) .point_main = 3; // points when killing main target / - points for main killed .point_others = 1; // points when killing others targets .event_map$ = "geffen"; // event map .min_player = 10; // number min players to start setarray .reward, 30, 501, 1, // Typo : <points min>, <item ID>, <amount items> 29, 502, 1, 19, 503, 1, 9, 504, 1, 1, 505, 1; // Don't touch // ----------- .size_reward = getarraysize( .reward ); setarray .mapflag, mf_noreturn, mf_nowarp, mf_noteleport, mf_nowarpto, mf_pvp; .size_mapflag = getarraysize( .mapflag ); for( ; .@i < .size_mapflag; .@i++ ) removemapflag .event_map$, .mapflag[.@i]; end; OnAtcommand: if ( !.start ) end; .@index = isinlist( ".list_cid_online", ".size_online" ); if( .@index == -1 ) end; sortPointArray(); .@size = .size_online > 30 ? 30 : .size_online ; dispbottom "Top 30 Hunters Online - { Name : Hunters Points }"; for ( .@i = 0; .@i < .@size; .@i += 1 ) dispbottom rid2name( .list_aid_online[.@i] ) +" : "+ .count_point_online[.@i]; end; }
- GM can start/stop the event
- Start => 10 mins to register => 10 players minimum => warp on event map
- Players register have an unique number on the name. ie. [ 10 ] Capuche
- players have randomly a main target : 3 hunters points if the target is killed, 1 point if not main target killed
- players have malus points if log out/ log in
- 5 players (online or offline) with 30 points or 15 min after => end of event
- reward by range of points
- @hunter command to check the points of players online during the event (enabled just for players in event)
Put your setting at the end of the script
.npc_name$ = "^ff0000- [ Hunter NPC ] -^000000"; .malus_logout = 3; // num malus points if log out ? (0: disabled) .point_main = 3; // points when killing main target / - points for main killed .point_others = 1; // points when killing others targets .event_map$ = "geffen"; // event map .min_player = 10; // number min players to start setarray .reward, 30, 501, 1, // Typo : <points min>, <item ID>, <amount items> 29, 502, 1, 19, 503, 1, 9, 504, 1, 1, 505, 1;
This thread is quite old but you still got plenty of time to make this script. THANKS ! I'll update you soon after I test this script.. THANK YOU CAPUCHE
-
{ bonus bAtkRate,2; bonus bMatkRate,2; bonus bDex,1; },{}.{}
You can learn here : https://github.com/conan513/rAthena/blob/master/doc/item_bonus.txt
-
quiz_02,171,343,5 duplicate(Exit#1) Exit#02 451
You made a duplicate of the npc where you put
OnPCKillEvent: if( strcharinfo(3) == "cell_game" ) { #Cell_Game_Points = #Cell_Game_Points + 3; dispbottom "You get 3 points. Total: "+ #Cell_Game_Points +" points."; attachrid( killedrid ); if( #Cell_Game_Points ) #Cell_Game_Points = #Cell_Game_Points - 1; dispbottom "You lose 1 point. Total: "+ #Cell_Game_Points +" points."; warp strcharinfo(3),0,0; sleep2 10; percentheal 100,100; } end;
So the points are duplicated too
Put it in another npc
Oh ! I forgot, my bad.. thanks Capuche !
-
-
Post your current script
//PAULINDS [Xerus RO] //[Simple] SUPER PVP ROOM //NPC 1 prontera,156,169,5 script Super Deathmatch 451,{ mes "Looks like you want to participate the Rumble huh!?"; mes "Before I'll let you in, Do you want to know about information about the Rumble?"; menu "Sure !",Q_YES,"Enter the Arena",Q_YES1; Q_YES: mes "You will need the version 3.5 so you can participate well in the Arena."; next; mes "First thing you'll do is you need to ^330000Survive Long^000000 this rumble"; next; mes "You're original items will be stored instantly from your inventory"; next; mes "You can also choose your equipments once you entered the arena."; next; mes "Warping, Teleporting or any @commands are disabled inside the arena."; next; mes "The equipments available in the arena is only useful in that Rumble"; next; mes "You can't even take that equipment outside the Rumble."; next; mes "Remember that those equipments are only available inside, you cannot keep as yours forever"; next; mes "Once you die, there is a chance that those equipment will be dropped and players can gather it as they want"; next; mes "You can quit anytime you want, my partner is always inside the Arena to watch over"; next; mes "Once you left the Arena, the equipments that you choose/gathered will be dropped and items in your inventory will be reset"; next; mes "You can come anytime you want but you'll have to buy time when your choosing your equipments"; next; mes "This can be hosted by a Game Master once hosted."; next; mes "You can earn Arena Points and can be exchanged outside for Event Tickets, Zeny Coins & More"; next; mes "WARNING : If you caught farming Arena Points, you'll be muted and jailed for 12 hours :)"; next; mes "This is NOT open for 24/7, It's only available once the GM Activates it."; next; mes "Very well, goodluck on the Arena !"; close; Q_YES1: mes "Looks like your really into it !"; mes "Goodluck then."; atcommand "@storeall"; warp "quiz_02",167,347; } //NPC 2 quiz_02,169,340,5 script Arena Assistant 452,{ if(#bonus == 0){ mes "You can only choose 1 set that gives equal effects to every participants"; next; mes "This set is good for all jobs so everyone will have an equal PKs"; getitem 30114,1; getitem 20037,1; getitem 25208,1; getitem 30115,3; getitem 30116,3; getitem 30117,3; getitem 30118,2; getitem 2765,3; getitem 7829,30; set #bonus,1; next; mes "There you go.."; next; mes "You can also look for MvP Cards & Weapons over there."; mes "Goodluck !"; close; } if(#bonus == 1){ mes "Looks like you're ready to enter the Arena !"; next; mes "Are you ready?"; menu "Not yet",Q_QWE,"Warp me now",Q_QWER; Q_QWE: mes "Okay.."; close; Q_QWER: mes "Goodluck !"; atcommand "@repairall"; announce strcharinfo(0)+" entered the Arena !",0; warp "guild_vs1",0,0; close; } } //NPC 3 quiz_02,166,337,5 shop Card Seller 453,4236:90,4425:90,4372:90,4147:90,4145:90,4168:90,4386:90,4142:90,4134:90,4137:90,4123:90,4330:90,4441:90,4324:90,4408:90,4128:90,4430:90,4263:90,4403:90,4318:90,4419:90,4376:90,4276:90,4146:90,4132:90,4131:90,4143:90,4135:90,4144:90,4148:90,4121:90,4342:90,4302:90,4399:90,4305:90,4407:90,4374:90,4352:90,4169:90,4174:90,4047:90,4354:90,4271:90,4278:90,4087:90,4412:90,4311:90,4411:90,4054:90,4114:90,4119:90,4170:90,4173:90,4141:90,4005:90,4092:90,4341:90,4348:90,4349:90,4064:90,4301:90,4051:90,4022:90,4103:90,4044:90,4058:90,4133:90,4334:90,4085:90,4097:90,4160:90,4172:90,4433:90,4416:90,4318:100,4195:100 //NPC 4 quiz_02,164,337,5 shop Weapon Seller 453,13011:50000,1231:50000,1228:50000,13034:50000,1237:50000,13017:50000,13032:50000,13016:50000,13035:50000,13027:50000,1108:50000,1133:50000,1131:50000,1175:50000,1182:50000,1408:50000,1544:50000,1505:50000,16001:50000,1538:50000,1532:50000,1622:50000,1646:50000,1624:50000,1644:50000,1705:50000,1736:50000,1745:50000,1822:50000,1802:50000,1925:50000,1906:50000,1904:50000,1902:50000,1951:50000,1550:50000,1568:50000,1570:50000,1571:50000,1569:50000,1579:50000,1266:50000,1275:50000,1278:50000,1276:50000,1277:50000,1264:50000,13304:50000,13302:50000,13150:50000,13103:50000,13152:50000,13105:50000,13107:50000 //NPC 5 quiz_02,162,337,5 shop Usable & Misc Items 453,12257:5000,678:1000000,523:1000,606:5000,645:1000,656:3000,657:5000,1025:5000,12114:15000,12115:15000,12116:15000,12117:15000,7139:5000,7136:5000,7135:5000,7138:5000,7137:5000,717:5000,715:500,716:700 //NPC 6 quiz_02,168,337,5 shop Ammunitions 453,1766:50,1755:20,1750:10,1754:20,1761:20,1752:20,1760:20,1759:20,1772:100,1757:30,1770:20,1769:30,1765:40,1763:30,1762:30,1767:30,1764:30,1751:20,1768:30,1753:30,1756:30,1758:30,1771:1000,13200:50,13202:100,13201:300,13206:500,13203:500,13207:500,13204:500,13205:500,13252:50,13254:500,13251:100,13253:300,13250:50,13256:50,13259:50,13258:50,13255:50,13257:50,7522:500,7521:500,7523:500,7524:500 //NPC 7 guild_vs1,53,43,5 script Exit#1 451,{ mes "Can't handle it anymore?"; next; menu "Later",Q_YES5,"Warp me back!",Q_YES66,"Equipment Room",Q_YES77; Q_YES5: mes "Great ! Give it a shot !"; close; Q_YES66: mes "Bye !"; announce strcharinfo(0)+" left the Arena !",0; atcommand "@dropall"; atcommand "@itemreset"; atcommand "@cleanmap"; set #bonus,0; dispbottom "Total: "+ #Cell_Game_Points +" Arena Points."; warp "prontera",0,0; Q_YES77: mes "Going back to Equipment Room"; next; mes "..."; next; mes "..."; next; mes "..."; next; mes "..."; next; mes "Any minute now..."; next; mes "..."; next; mes "Warping.."; next; warp "quiz_02",167,347; close; OnPCKillEvent: if( strcharinfo(3) == "guild_vs1" ) { #Cell_Game_Points = #Cell_Game_Points + 3; dispbottom "You get 3 Arena Points. Total: "+ #Cell_Game_Points +" Arena Points."; attachrid( killedrid ); if( #Cell_Game_Points ) #Cell_Game_Points = #Cell_Game_Points - 2; dispbottom "You lose 2 Arena Points. Total: "+ #Cell_Game_Points +" Arena Points."; sleep2 2000; warp strcharinfo(3),0,0; percentheal 100,100; } } //MAPFLAG quiz_02 mapflag nocommand 99 quiz_02 mapflag noteleport quiz_02 mapflag noreturn quiz_02 mapflag nomemo quiz_02 mapflag nowarp quiz_02 mapflag nowarpto quiz_02 mapflag nobranch quiz_02 mapflag noskill guild_vs1 mapflag nocommand 99 guild_vs1 mapflag noteleport guild_vs1 mapflag noreturn guild_vs1 mapflag nomemo guild_vs1 mapflag nowarp guild_vs1 mapflag nowarpto guild_vs1 mapflag nobranch //DUPLICATE quiz_02,171,343,5 duplicate(Exit#1) Exit#02 451
-
atcommand "@dropall"; atcommand "@itemreset";
If the player drop all his equipment, @itemreset is useless
- Everytime they kill a player with 3 kills, they will get 1 point.. If they die, it will be reduced by 1.
- 3 Kills = 1 Point, 1 Death = -1 Point
OnPCKillEvent: if( strcharinfo(3) == "cell_game" ) { #Cell_Game_Points = #Cell_Game_Points + 3; dispbottom "You get 3 points. Total: "+ #Cell_Game_Points +" points."; attachrid( killedrid ); if( #Cell_Game_Points ) #Cell_Game_Points = #Cell_Game_Points - 1; dispbottom "You lose 1 point. Total: "+ #Cell_Game_Points +" points."; warp strcharinfo(3),0,0; sleep2 10; percentheal 100,100; } end;
>Once they clicked the Exit NPC, the Arena Points will show their total points.
Add a dispbottom in the exit npc
dispbottom "Total: "+ #Cell_Game_Points +" points.";
there will be a dispbottom they Arena Points
~The same as previously
Hey the script is working but everytime a player is killed or kills, the disp bottom is doubled so the points are also doubled why is that?
-
I got this weird idea and looking forward for someone to help me out..
I got the concept from Hunter X Hunter )
How this script works :
- Players will register their names and it will be saved.
- After the players registered their names, they will have a random number of them (max:128)
- The numbers will be attached to their IGNs (ex: [30]Paulinds) or can be a fakename (ex: [30])
- And if they got disconnected/reconnected, their names will not be back to normal (if it used as fakename)
- Every players that is registered will be asked once again what # will they target or can be randomized by the NPC.
- Each of the players Target will get 3 Hunting Points while the others are 1 Hunting Point. If the player dies, their Hunting Points will be minus 3. Hunting Points can reach negative Points.
- The first 5-?? players that will get 30 points or If the time limit ends, the most # of points will win ! (Time Limit : 15 minutes)
- If the target/enemy dies, it will respawn in the same map after 3 seconds.
- The mapflags are noreturn, nowarp, nosave, noteleport, nowarpto, nocommand, pvp.
- Automated event and will only be open every 4 hours. The NPC only lasts 10 minutes. If the NPC didn't reached the minimum player count to start, it will hide again and will be open after 4 hours. (Min Player : 10)
- Once the event end or if the first 5-?? players that earned 30 pts, they will receive a reward..
- All =30 Points will receive <ITEMID><Amount>, >=29 Pts will receive <ITEMID><Amount>, >=19 Pts will receive <ITEMID><Amount>, >=9 Pts will receive <ITEMID><Amount>, >=1 Pt will receive nothing.
THANK YOU
-
Not working..
-
Well, I meant you could use a cheap script like this one:
- script warpback2cellgame -1,{ OnPCLogoutEvent: getmapxy(.@map$,.@x,.@y,0) if(.@map$ == "cell_game") setarray warpback2cellgame[0],.@x,.@y; // Storing last player's position end; OnPCLoginEvent: if (warpback2cellgame[0]) {// If the player was last there this should not be 0 warp "cell_game",warpback2cellgame[0],warpback2cellgame[1]; deletearray warpback2cellgame[0],2; } end; }
Haven't tested this one and haven't scripted for some time, so there may be errors on that one. The script supposedly saves the player position on logout if he's on the cell_game map and then restores his position on login.
But it's a pretty tatty solution anyways.
Will this be good? XD I'll try this and hope it will help...
-
I don't know how to fix it, but you can always save the coordinates on disconnection in a player variable and then warping them back. You can use that as a low-end solution.
How is that solution? Will this be helpful?
did you delete your mapcache.dat?
if no
you need to delete mapcache.dat and save a new mapcache
I already did that..
-
goto your map_index then place the map cell_game on top. then recache your mapcache
I already put 'cell_game' there and even I put their map ID.. I'll try to recache.. thanks ! Does it need server restart or just @reload?
example
Celestiaj 1250 cell_game < -- add here mymap1 mymap2 mymap3 mymap4
Still doesn't save its position -.-, I did everything recache, map_index, replace the grf, maps_athena.conf and mapflags.............but still it doesn't save lol, I use rAthena don't hve any idea why this can't be fixed, I use 3ceam before and I didn't got any worries lol anymore suggestions?
-
goto your map_index then place the map cell_game on top. then recache your mapcache
I already put 'cell_game' there and even I put their map ID.. I'll try to recache.. thanks ! Does it need server restart or just @reload?
-
are you able to warp to your cell_game map? if you are, you need to set mapflags on that map. if not, you may need to re cache you map data.
I can warp there.. I already added 'cell_game' in maps_athena.conf, map_index and I already cache the map_cache.dat
I already set mapflag like noreturn, nosave savepoint, nowarp, noteleport etc.. But still that error shows in my char-server.bat
-
Got a problem with this, how to fix it? My character is always sent back to Prontera. I just wanted to make my char stay in that position in 'cell_game' map. If I DC, I was hoping to be back at same map, same position or even I log out.. Need help
Unable to find map-server for 'cell_game' Sending Major City 'Prontera".
-
atcommand "@dropall"; atcommand "@itemreset";
If the player drop all his equipment, @itemreset is useless
If incase I have forgot an Item that I listed that is not droppable, @itemreset will remove it.. XD
I'll try that script thanks Capuche !
-
OnPCKillEvent: if( strcharinfo(3) != "cell_game" ) end;
@Thanna
it's a bad habit and not suggested to use permanent global variable on this kind of settings.
the script itself doesnt need any permanent global variable to save the data....
Sorry but where will I put this Emistry?
-
- script Sample -1,{ OnInit: set .Delay,180; end; OnPCKillEvent: if( @Delay < gettimetick(2) ){ set .@Amount,rand(1,4); set #CASHPOINTS,#CASHPOINTS + .@Amount; dispbottom "Gained "+.@Amount+" Cash Point. Total = "+#CASHPOINTS+" Cash Points."; if( .Delay ) set @Delay,gettimetick(2) + .Delay; } end; }
Can anyone help me add something on this script?
- This PvP Point Script will only work @ cell_game
Thanks for Emistry for sharing this in his thread..
-
Need help on my script...
-
I don't know why the map I added in my server doesn't save the character's position.. Everytime they got error or logged out, they are warped back in prontera.. However, other PvP maps doesn't have the problem, if they got error or logged out, they still stay in that position in that map... How to fix this? I just had an idea that new maps that I added doesn't have the same setup like the old ones...
-
The script gone bad in that pastebin lol )) But thanks
HELP - Additional Script Only..
in Scripting Support
Posted
I don't know why the gettimetick is not working.. The delay is not working can you check my script?