Jump to content

Takuyakii

Members
  • Posts

    215
  • Joined

  • Last visited

Everything posted by Takuyakii

  1. Thank you its working now ^^,
  2. Good day rA, can someone help me to make this item showed on npc dialouge Here's my script mes "^0000FFx"+ .@amount +"^000000 "+ getitemname(.@id) +" (^CC0000"+ .@percent +"%^000000)";
  3. @Pride can u help me for this one? sorry for tagging you.
  4. hello did you already fix this? and mind to share the diff? im having this problem too. @Gidz Cross @EveeX where should i put this?
  5. Good day ~ rA casn someone help me to change this into item reward? this is black jack script from rA. Here's the script //===== rAthena Script ======================================= //= Black Jack //===== By: ================================================== //= kobra_k88 //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= Black Jack card game. Gameplay based off standard casino //= black jack rules. Dealer must have at least 17 to stay and will //= automatically stay at 17 and up. Player must have at least //= 13 to stay. Aces counted as 11 or 1. Option to "Double Down". //= Currently does not allow for "insurance", or "splitting" //= of pairs. //===== Additional Comments: ================================= //= 1.0 First version. //============================================================ cmd_in02,188,89,1 script Black Jack Dealer 57,{ mes "[Dealer]"; mes "Hello there! Would you like to play a game of Black Jack?"; M_Menu: next; menu "What are the rules?",M_0, "I want to play.",L_Play, "No thanks.",M_End; M_0: mes "[Dealer]"; mes "What would you like to know?"; sM_Menu0: next; menu "The basics.",sM_0a, "Winning and loosing.",sM_0b, "'Double Down'.",sM_0c, "Ace value.",sM_0d, "Nothing.",M_Menu; sM_0a: mes "[Dealer]"; mes "Black Jack is a card game in which the goal is to get 21, or as"; mes "close to 21 points as possible, without going over 21."; next; mes "[Dealer]"; mes "Before the game starts, the player must make a bet. Once the bet"; mes "has been made, both the dealer and the player are dealt 2 cards"; mes "each. Depending on what cards you have, you can choose to ^5533FF'stay'^000000,"; mes "or you can choose to ^5533FF'pull'^000000."; next; mes "[Dealer]"; mes "When you choose to 'stay', you are telling the dealer that you don't"; mes "need anymore cards. This allows the dealer to pull if he/she"; mes "wants to. In order to stay, you must have ^FF3355at least 13 points^000000. The"; mes "dealer can only stay when he/she has^FF3355 17 points or more^000000."; next; mes "[Dealer]"; mes "When you choose to 'pull', you are telling the dealer that you want"; mes "another card. By pulling more cards you can increase your point"; mes "total. As long has you have ^FF3355less than 21^000000 points you can pull a"; mes "card from the deck."; goto sM_Menu0; sM_0b: mes "[Dealer]"; mes "There are 3 ways to win and loose at Black Jack."; next; mes "[Dealer]"; mes "1.) At the end of a Black Jack round, if you have more points"; mes "than the dealer you will win the round. Conversely if you have"; mes "less points than the dealer you will loose."; next; mes "[Dealer]"; mes "2.) If you pull a card that makes your point total go over 21 you"; mes "will automatically loose the round. This is called a ^5533FF'bust'^000000. If"; mes "the dealer busts then you will win the round."; next; mes "[Dealer]"; mes "3.) If you have a point total of 21 with the first 2 cards, you"; mes "will automatically win the round. This is called a ^5533FF'Black Jack'^000000"; mes "and happens when you get an 'Ace' and a '10 valued' card. If the"; mes "dealer gets a Black Jack he/she will automatically win the round."; next; mes "[Dealer]"; mes "4.) Besides winning and loosing, you can tie with the dealer. If"; mes "both you and the dealer have the same point total at the end of a"; mes "round, this will result in a tie with no winner and no loss or gain"; mes "in money."; next; mes "[Dealer]"; mes "This is called a ^5533FF'push'^000000 with the dealer. This also"; mes "applies to both you and the dealer having Black Jack at the same"; mes "time."; goto sM_Menu0; sM_0c: mes "[Dealer]"; mes "The 'Double Down' option allows you to double your current bet,"; mes "but with the drawback that you will only be able to pull one"; mes "additional card. This option is only available at the beginning of"; mes "each round."; next; mes "[Dealer]"; mes "An example of when doubling down is useful, is when"; mes "your first 2 cards give you a point total of 11. You have a good"; mes "chance of getting 21 or 20 with the next card that you draw. This"; mes "would be a good hand to double down on."; goto sM_Menu0; sM_0d: mes "[Dealer]"; mes "The 'Ace' card is a unique card in the game of Black Jack because"; mes "it can have 2 values. An Ace can be counted as either 11 points,"; mes "or just 1 point. For example if you had an Ace and a 4, that would"; mes "give you either 15 or 5 points."; next; mes "[Dealer]"; mes "If you decided to stay, the Ace would automatically be counted as"; mes "11 points to give you 15 points total."; next; mes "[Dealer]"; mes "If you had decided to pull and received a 9, the ace would"; mes "automatically be counted as 1 point to give you a total of 14"; mes "points. If the Ace was counted as 11 points, you would have a"; mes "point total over 21 and would have lost."; next; mes "[Dealer]"; mes "It is because of the flexibility you have with the 'Ace' that makes"; mes "it the most powerful card in the game."; goto sM_Menu0; M_End: mes "[Dealer]"; mes "Feel free to come back anytime"; close; //================ L_Play: mes "[Dealer]"; mes "Please place your bets..."; next; menu "2z",M_1a, "10z",M_1b, "20z",M_1c, "100z",M_1d, "Too rich for my blood....",M_End; M_1a: if(Zeny < 2) goto sL_NotEnuf; set @bet, 2; goto L_Cont0; M_1b: if(Zeny < 10) goto sL_NotEnuf; set @bet, 10; goto L_Cont0; M_1c: if(Zeny < 20) goto sL_NotEnuf; set @bet, 20; goto L_Cont0; M_1d: if(Zeny < 100) goto sL_NotEnuf; set @bet, 100; goto L_Cont0; sL_NotEnuf: mes "[Dealer]"; mes "I'm sorry but you don't have enough zeny to make that bet."; close; L_Cont0: mes "(the cards are being dealt)"; next; deletearray $@card[0],13; set @dealerTurn, 0; set @numP, 0; set @numD, 0; set @pAce, 0; set @dAce, 0; callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce; callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce; callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce; callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce; //============== L_Start: callsub sF_GetTot; mes "- Here are the ^FF5533DEALER'S^000000 cards:"; if (@numD==2) callsub sF_D2cards; if (@numD==3) callsub sF_D3cards; if (@numD==4) callsub sF_D4cards; if (@numD==5) callsub sF_D5cards; mes " The DEALER has: ^FF5533"+@dealTot+"^000000"; mes " "; mes "- Here are ^5533FFYOUR^000000 cards:"; if (@numP==2) callsub sF_P2cards; if (@numP==3) callsub sF_P3cards; if (@numP==4) callsub sF_P4cards; if (@numP==5) callsub sF_P5cards; if(@pAce != 1 || @playTot == 21) mes " YOU have: ^5533FF" +@playTot+ "^000000"; if(@pAce == 1 && @playTot != 21) mes " You have: ^5533FF" +@playTot+ "^000000, or ^5533FF" +(@playTot-10)+ "^000000"; next; if(@playTot==21 && @dealTot==21) goto sL_Push; if(@numP==2 && @playTot == 21) goto sL_Win; if(@numD==2 && @dealTot == 21) goto sL_Lose; if(@playTot > 21) goto sL_Lose; if(@dealTot > 21) goto sL_Win; if(@numP==2 && @dealerTurn==0) menu "Hit me(pull)",M_Hit, "Stay",M_Stay, "Double Down",M_Double; if(@dealerTurn == 0) menu "Hit me(pull)",M_Hit, "Stay",M_Stay; M_Stay: mes "[Dealer]"; if(@playTot < 13) goto sL_PlayToLow; if(@dealTot > 16) mes "The Dealer stays."; if(@dealTot > 16 || @numD == 5) goto L_Check; mes "The Dealer is going to pull"; next; callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce; set @dealerTurn, 1; goto L_Start; sL_PlayToLow: mes "I'm sorry but you do not have a high enough total to stay. You must pull."; next; goto M_Hit; M_Hit: if(@numP == 5) goto M_Stay; callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce; goto L_Start; M_Double: mes "[Dealer]"; mes "Player has chosen to Double Down. You're current bet will be"; mes "doubled, and you will only be able to pull 1 extra card."; next; set @dealerTurn, 1; set @bet, @bet*2; callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce; goto L_Start; //============= L_Check: next; if(@playTot < @dealTot) goto sL_Lose; if(@playTot == @dealTot) goto sL_Push; sL_Win: mes "[Dealer]"; mes "Congratulations, you've won!"; next; set Zeny, Zeny + @bet; goto L_Play; sL_Lose: mes "[Dealer]"; mes "I'm sorry but you've lost."; set Zeny, Zeny - @bet; next; goto L_Play; sL_Push: mes "[Dealer]"; mes "Its a push. You tied with the Dealer."; next; goto L_Play; //================================== // Sub function for dealing/pulling the cards sF_GetCards: set @rnd, rand(1,13); if($@card[@rnd] == 4) goto sF_GetCards; set $@card[@rnd], $@card[@rnd] + 1; set getarg(1), @rnd; if(getarg(1) > 10) set getarg(1), 10; if(getarg(1) == 1 && getarg(3) < 1) set getarg(1), 11; if(getarg(1) == 11) set getarg(3), 1; set getarg(2), " " + getarg(1) + " "; if(@rnd == 10) set getarg(2), getarg(1); if(@rnd == 1) set getarg(2), " A "; if(@rnd == 11) set getarg(2), " J "; if(@rnd == 12) set getarg(2), " Q "; if(@rnd == 13) set getarg(2), " K "; set getarg(0), getarg(0) + 1; return; //================================== // Sub function for getting the total score for each hand sF_GetTot: set @i, 0; set @dealTot, 0; set @playTot, 0; GetDealTot: set @dealTot, @dealTot + @dealCard[@i]; set @i, @i + 1; if(@i < @numD) goto GetDealTot; if(@dAce == 1 && @dealTot > 21) set @dealTot, @dealTot - 10; set @i, 0; GetPlayTot: set @playTot, @playTot + @playCard[@i]; set @i, @i + 1; if(@i < @numP) goto GetPlayTot; if(@pAce == 1 && @playTot > 21) set @pAce, 2; if(@pAce > 0 && @playTot > 21) set @playTot, @playTot - 10; return; //======================================= // Sub function for displaying the Cards sF_D2cards: mes " .-----. .-----. "; mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | "; mes " '-----' '-----' "; return; sF_P2cards: mes " .-----. .-----. "; mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | "; mes " '-----' '-----' "; return; sF_D3cards: mes " .-----. .-----. .-----. "; mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | "; mes " '-----' '-----' '-----' "; return; sF_P3cards: mes " .-----. .-----. .-----. "; mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" | "; mes " '-----' '-----' '-----' "; return; sF_D4cards: mes " .-----. .-----. .-----. "; mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | "; mes " '-----' '-----' '-----' "; mes " .-----. "; mes " | "+@dealCard$[3]+" |"; mes " '-----' "; return; sF_P4cards: mes " .-----. .-----. .-----. "; mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" |"; mes " '-----' '-----' '-----' "; mes " .-----. "; mes " | "+@playCard$[3]+" |"; mes " '-----' "; return; sF_D5cards: mes " .-----. .-----. .-----. "; mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | "; mes " '-----' '-----' '-----' "; mes " .-----. .-----. "; mes " | "+@dealCard$[3]+" | | "+@dealCard$[4]+" | "; mes " '-----' '-----' "; return; sF_P5cards: mes " .-----. .-----. .-----. "; mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" | "; mes " '-----' '-----' '-----' "; mes " .-----. .-----. "; mes " | "+@playCard$[3]+" | | "+@playCard$[4]+" | "; mes " '-----' '-----' "; return; }
  6. Hello can someone help me with this? here's there script from pvp status of anni, //====== rAthena Script ====================================================== //= PVP ladder script with dota announcement //===== By: ================================================================== //= AnnieRuru //===== Current Version: ===================================================== //= 3.6 //===== Compatible With: ===================================================== //= rAthena 2020-10-20, with MySQL 8.0 //===== Description: ========================================================= //= PVP ladder store in SQL table //= plus anti-sit-killer feature //===== Topic ================================================================ //= https://herc.ws/board/topic/18871-dota-pvp-ladder/ //===== Additional Comments: ================================================= //= add PVP Ladder statue due to popular demand //============================================================================ /* CREATE TABLE `pvpladder` ( `char_id` INT PRIMARY KEY, `name` VARCHAR(24) NOT NULL DEFAULT '', `streaks` INT DEFAULT 0, `kills` INT DEFAULT 0, `deaths` INT DEFAULT 0, `streaktime` DATETIME, KEY (`kills`), KEY (`streaks`) ) ENGINE = MyISAM; CREATE TABLE `ownladder` ( `guild_id` INT PRIMARY KEY, `name` VARCHAR(24) NOT NULL DEFAULT '', `currentown` INT DEFAULT 0, `highestown` INT DEFAULT 0, `owntime` DATETIME, KEY (`highestown`) ) ENGINE = MyISAM; */ // add all the maps that you want this script to trigger ... all pvp and event maps perhaps ? // but if you already enable "all" maps, then can comment all these guild_vs1 mapflag loadevent guild_vs2 mapflag loadevent guild_vs3 mapflag loadevent guild_vs4 mapflag loadevent guild_vs5 mapflag loadevent - script DOTAPVP FAKE_NPC,{ OnInit: // Config .sound = 1; // soundeffect : 0 - disable, 1 - play soundeffect to all players on map, 2 - play soundeffect to an area around the killer, 3 - play soundeffect to killer only .dota_bc_flag = 0; // announce to : 0 - global, 1 - map .mapname_announcement = true; // announce the map name in the announcement ? : 0 - off, 1 - on .killannounce = false; // announce who pawn who's head : 0 - off, 1 - on .msg_die = false; // show message who kill you when die : 0 - off, 1 - on .msg_kill = false; // show message you kill who when killed someone : 0 - off, 1 - on .gmnokill = false; // GMs are not suppose to kill players. A GM with <this number> level or higher will do nothing. IF set to 60, GM60 and above kill any player will not get anything : 0 - off .killingspree = 3; .dominating = 4; .megakill = 5; .unstoppable = 6; .wickedsick = 7; .monsterkill = 8; .godlike = 9; .holyshit = 10; .continue = 1; // after beyond-godlike, every <this number> kills will make announcement again .owned = 5; // how many times the guild has to kill to announce ownage .owncontinue = 1; // after ownage, every <this number> guild cumulative kills will make ownage announce again // .min_gm_menu = 90; // minimum level of GM can use the GM menu on ladder npc .showtotal = 20; // show the length of ladder. .showpage = 10; // set the views per page. .loweststreak = 3; // mininum streak count allow to show in highest streak ladder. Default 3 means must at least have killing spree streak to display in ladder .lowestownage = 5; // mininum ownage count allow to show in longest ownage ladder. Default 5 means must at least have 5 ownage counts to display in ladder setarray .maptrigger$, // only these maps will trigger this script // "all", // uncomment this to allow load all maps "guild_vs1", "guild_vs2", "guild_vs3", "guild_vs4", "guild_vs5"; .showstatue = 10; // number of statues. This number must match with the number of duplicates at the end of the script .fix_custom_sprite = false; // if your server has custom animated sprite that overlaps the sprite animation repeatedly on the statues, enable this // anti-sit-killer system // a player must kill another player with this minimum <this number> base level to get the announcement and in the ladder. // Otherwise only have streak ended announcement and killed player's streak reset. // Its possible for a level 1 novice to kill a level 99 player and he/she will still get in the ladder // but a level 99 kill a level 1 player will get nothing // 0 - off this system ( default is 55, pk setting ) .lvltokill = 0; // when a player kill another same player <this number> times in a row, the player is warp back to save point. // and the player's streak, kills, and ownage count will deduct accordingly // 0 - off this system .counttopunish = 6; // minimum level range to kill another player // eg. when set to 20, player level 99 needs to kill another player with minimum level of 79 to get announcement and increase the kill rank. // but a player with base level 50 kills a level 99 will also get the announcement // higher base level cannot kill lower level, but lower level can kill higher level // 0 - off this system .minlvlrange = 0; // Config ends ------------------------------------------------------------------------------------------ // to prevent bug happen if (.dota_bc_flag < 0 || .dota_bc_flag > 1) .dota_bc_flag = 0; if (.continue < 1) .continue = 1; if (.owncontinue < 1) .owncontinue = 1; if (.gmnokill <= 0) .gmnokill = 100; if (.lvltokill <= 1) .lvltokill = 0; if (.counttopunish <= 1) .counttopunish = 0; .maptriggersize = getarraysize(.maptrigger$); sleep 1; OnTimer30000: // refresh every 30 seconds. Note the `char` table is unrealiable, player still need to perform certain task to save the character -> see 'save_settings' in conf\map-server.conf .@query$ = "SELECT `char`.`char_id`, `char`.`name`, `char`.`guild_id`, `char`.`class`, `char`.`sex`, `char`.`hair`, `char`.`hair_color`, `char`.`clothes_color`, `char`.`body`, `char`.`head_top`, `char`.`head_mid`, `char`.`head_bottom`, `char`.`robe`, " + "`pvpladder`.`kills`, `pvpladder`.`streaks`, `pvpladder`.`deaths` " + "FROM `char` RIGHT JOIN `pvpladder` ON `char`.`char_id` = `pvpladder`.`char_id` ORDER BY `kills` DESC LIMIT "+ .showstatue; .@nb = query_sql(.@query$, .@cid, .@name$, .@guild_id, .@class, .@sex$, .@hair, .@hair_color, .@clothes_color, .@body, .@head_top, .@head_mid, .@head_bottom, .@robe, .@kills, .@streaks, .@deaths); if (.fix_custom_sprite) { for (.@i = 0; .@i < .@nb; ++.@i) { setunitdata .statue[.@i +1], UNPC_HEADTOP, 0; setunitdata .statue[.@i +1], UNPC_HEADMIDDLE, 0; setunitdata .statue[.@i +1], UNPC_HEADBOTTOM, 0; setunitdata .statue[.@i +1], UNPC_ROBE, 0; } } for (.@i = 0; .@i < .@nb; ++.@i) { setunitdata .statue[.@i +1], UNPC_CLASS, .@class[.@i]; setunitdata .statue[.@i +1], UNPC_SEX, (.@sex$[.@i] == "F")? SEX_FEMALE:SEX_MALE; setunitdata .statue[.@i +1], UNPC_HAIRSTYLE, .@hair[.@i]; setunitdata .statue[.@i +1], UNPC_HAIRCOLOR, .@hair_color[.@i]; setunitdata .statue[.@i +1], UNPC_CLOTHCOLOR, .@clothes_color[.@i]; setunitdata .statue[.@i +1], UNPC_BODY2, .@body[.@i]; setunitdata .statue[.@i +1], UNPC_HEADTOP, .@head_top[.@i]; setunitdata .statue[.@i +1], UNPC_HEADMIDDLE, .@head_mid[.@i]; setunitdata .statue[.@i +1], UNPC_HEADBOTTOM, .@head_bottom[.@i]; setunitdata .statue[.@i +1], UNPC_ROBE, .@robe[.@i]; setnpcdisplay "pvp_ladder_statue#"+(.@i +1), .@name$[.@i]; .statue_name$[.@i +1] = .@name$[.@i]; .statue_guild$[.@i +1] = getguildname(.@guild_id[.@i]); .statue_kills[.@i +1] = .@kills[.@i]; .statue_streaks[.@i +1] = .@streaks[.@i]; .statue_deaths[.@i +1] = .@deaths[.@i]; } for (.@i = .@nb; .@i < .showstatue; ++.@i) setunitdata .statue[.@i +1], UNPC_CLASS, HIDDEN_WARP_NPC; initnpctimer; end; // script start. OnPCKillEvent: if (getgmlevel() >= .gmnokill) end; .@map$ = strcharinfo(3); if (.maptrigger$ != "all") { while (.@i < .maptriggersize && .@map$ != .maptrigger$[.@i]) ++.@i; if (.@i == .maptriggersize) end; } .@killername$ = strcharinfo(0); .@killeraid = getcharid(3); .@killercid = getcharid(0); .@killerguildid = getcharid(2); .@killerbaselevel = BaseLevel; attachrid killedrid; .@victimname$ = strcharinfo(0); .@victimaid = getcharid(3); .@victimcid = getcharid(0); .@victimguildid = getcharid(2); .@victimbaselevel = BaseLevel; if (.@killeraid != .@victimaid && (.msg_die || .msg_kill)) { if (.msg_die) message .@victimaid, "You have been killed by "+ .@killername$; if (.msg_kill) message .@killeraid, "You just killed "+ .@victimname$; } if (@PlayersKilledStreak >= .holyshit) .@streakname$ = "Beyond Godlike"; else if (@PlayersKilledStreak >= .godlike) .@streakname$ = "Godlike"; else if (@PlayersKilledStreak >= .monsterkill) .@streakname$ = "Monster Kill"; else if (@PlayersKilledStreak >= .wickedsick) .@streakname$ = "Wicked Sick"; else if (@PlayersKilledStreak >= .unstoppable) .@streakname$ = "Unstoppable"; else if (@PlayersKilledStreak >= .megakill) .@streakname$ = "Mega-kill"; else if (@PlayersKilledStreak >= .dominating) .@streakname$ = "Dominating"; else if (@PlayersKilledStreak >= .killingspree) .@streakname$ = "Killing Spree"; if (@PlayersKilledStreak >= .killingspree && .@killeraid == .@victimaid) announce sprintf("%s has ended %s own %s[%d] streak %s", .@killername$, (Sex)?"him":"her", .@streakname$, @PlayersKilledStreak, (.mapname_announcement)?("at "+ .@map$):""), bc_blue|.dota_bc_flag; else if (@PlayersKilledStreak >= .killingspree) announce sprintf("%s has ended %s's %s[%d] streak %s", .@killername$, .@victimname$, .@streakname$, @PlayersKilledStreak, (.mapname_announcement)?("at "+ .@map$):""), bc_blue|.dota_bc_flag; else if (.killannounce && .@killeraid != .@victimaid) announce sprintf("%s has pawned %s's head %s", .@killername$, .@victimname$, (.mapname_announcement)?("at "+ .@map$):""), bc_blue|.dota_bc_flag; @PlayersKilledStreak = 0; ++@dota_sql_deaths; @dota_multikills = 0; if (.@victimguildid) .guild_current_ownage[.@victimguildid] = 0; if (.@killeraid == .@victimaid || .@victimbaselevel < .lvltokill || (.minlvlrange && .@victimbaselevel + .minlvlrange < .@killerbaselevel)) { query_sql sprintf("replace into pvpladder values (%d, '%s', %d, %d, %d, from_unixtime(%d))", .@victimcid, escape_sql(.@victimname$), @dota_sql_streaks, @dota_sql_kills, @dota_sql_deaths, @dota_sql_streaktime); if (.@victimguildid && .guild_highest_ownage[.@victimguildid]) query_sql sprintf("replace into ownladder values (%d, '%s', %d, %d, from_unixtime(%d))", .@victimguildid, escape_sql(getguildname(.@victimguildid)), .guild_current_ownage[.@victimguildid], .guild_highest_ownage[.@victimguildid], .guild_ownage_time[.@victimguildid]); end; } .@victim_kills = @dota_sql_kills; .@victim_deaths = @dota_sql_deaths; .@victim_streaks = @dota_sql_streaks; .@victim_streaktime = @dota_sql_streaktime; attachrid killerrid; if (.counttopunish) { if (@sitkillminute != gettime(DT_MINUTE)) { deletearray @sitkill; @sitkillminute = gettime(DT_MINUTE); } ++@sitkill[.@victimaid]; if (@sitkill[.@victimaid] >= .counttopunish) { warp "SavePoint", 0,0; announce .@killername$ +" , Stop killing "+ .@victimname$ + " !!!", bc_all; debugmes .@killername$ +" is sit-killing "+ .@victimname$ +" for "+ @sitkill[.@victimaid] + " times"; logmes "is sit-killing "+ .@victimname$ +" for "+ @sitkill[.@victimaid] +" times"; if (@PlayersKilledStreak == @dota_sql_streaks) { @dota_sql_streaks = @dota_sql_streaks +1 - .counttopunish; @dota_sql_streaktime = gettimetick(2); } @PlayersKilledStreak = @PlayersKilledStreak +1 - .counttopunish; @dota_sql_kills = @dota_sql_kills +1 - .counttopunish; if (@PlayersKilledStreak < 0) @PlayersKilledStreak = 0; if (@dota_sql_kills < 0) @dota_sql_kills = 0; if (@dota_sql_streaks < 0) @dota_sql_streaks = 0; query_sql sprintf("replace into pvpladder values (%d, '%s', %d, %d, %d, from_unixtime(%d)), (%d, '%s', %d, %d, %d, from_unixtime(%d))", .@killercid, escape_sql(.@killername$), @dota_sql_streaks, @dota_sql_kills, @dota_sql_deaths, @dota_sql_streaktime, .@victimcid, escape_sql(.@victimname$), .@victim_streaks, .@victim_kills, .@victim_deaths, .@victim_streaktime); if (.@killerguildid) { if (.guild_current_ownage[.@killerguildid] == .guild_highest_ownage[.@killerguildid]) { .guild_highest_ownage[.@killerguildid] = .guild_highest_ownage[.@killerguildid] +1 - .counttopunish; .guild_ownage_time[.@killerguildid] = gettimetick(2); } .guild_current_ownage[.@killerguildid] = .guild_current_ownage[.@killerguildid] +1 - .counttopunish; if (.guild_current_ownage[.@killerguildid] < 0) .guild_current_ownage[.@killerguildid] = 0; if (.guild_highest_ownage[.@killerguildid] < 0) .guild_highest_ownage[.@killerguildid] = 0; if (.@victimguildid && .guild_highest_ownage[.@victimguildid]) query_sql sprintf("replace into ownladder values (%d, '%s', %d, %d, from_unixtime(%d)), (%d, '%s', %d, %d, from_unixtime(%d))", .@killerguildid, escape_sql(getguildname(.@killerguildid)), .guild_current_ownage[.@killerguildid], .guild_highest_ownage[.@killerguildid], .guild_ownage_time[.@killerguildid], .@victimguildid, escape_sql(getguildname(.@victimguildid)), .guild_current_ownage[.@victimguildid], .guild_highest_ownage[.@victimguildid], .guild_ownage_time[.@victimguildid]); else query_sql sprintf("replace into ownladder values (%d, '%s', %d, %d, from_unixtime(%d))", .@killerguildid, escape_sql(getguildname(.@killerguildid)), .guild_current_ownage[.@killerguildid], .guild_highest_ownage[.@killerguildid], .guild_ownage_time[.@killerguildid]); } else if (.@victimguildid && .guild_highest_ownage[.@victimguildid]) query_sql sprintf("replace into ownladder values (%d, '%s', %d, %d, from_unixtime(%d))", .@victimguildid, escape_sql(getguildname(.@victimguildid)), .guild_current_ownage[.@victimguildid], .guild_highest_ownage[.@victimguildid], .guild_ownage_time[.@victimguildid]); end; } } ++@PlayersKilledStreak; ++@dota_sql_kills; if (@PlayersKilledStreak > @dota_sql_streaks) { @dota_sql_streaks = @PlayersKilledStreak; @dota_sql_streaktime = gettimetick(2); } if (@PlayersKilledStreak == .killingspree) setarray .@streakname$, "killingspree.wav", "is on a KILLING SPREE", "!"; else if (@PlayersKilledStreak == .dominating) setarray .@streakname$, "dominating.wav", "is DOMINATING", "!"; else if (@PlayersKilledStreak == .megakill) setarray .@streakname$, "megakill.wav", "has a MEGA KILL", "!"; else if (@PlayersKilledStreak == .unstoppable) setarray .@streakname$, "unstoppable.wav", "is UNSTOPPABLE", "!!"; else if (@PlayersKilledStreak == .wickedsick) setarray .@streakname$, "wickedsick.wav", "is WICKED SICK", "!!"; else if (@PlayersKilledStreak == .monsterkill) setarray .@streakname$, "monsterkill.wav", "has a MONSTER KILL", "!!"; else if (@PlayersKilledStreak == .godlike) setarray .@streakname$, "godlike.wav", "is GODLIKE", "!!!"; else if (@PlayersKilledStreak >= .holyshit && ((@PlayersKilledStreak - .holyshit) % .continue == 0)) setarray .@streakname$,"holyshit.wav", "is BEYOND GODLIKE",". Someone KILL "+( (Sex)?"HIM":"HER" ) +"!!!!!!"; if (getstrlen(.@streakname$[1])) { announce sprintf("%s %s[%d] %s%s", .@killername$, .@streakname$[1], @PlayersKilledStreak, (.mapname_announcement)?("at "+ .@map$):"", .@streakname$[2]), bc_blue|.dota_bc_flag; if (.sound == 1) soundeffectall .@streakname$[0], 0, .@map$; else if (.sound == 2) soundeffectall .@streakname$[0], 0; else if (.sound == 3) soundeffect .@streakname$[0], 0; } ++@dota_multikills; deltimer "DOTAPVP::OnStreakReset"; addtimer 18000, "DOTAPVP::OnStreakReset"; query_sql sprintf("replace into pvpladder values (%d, '%s', %d, %d, %d, from_unixtime(%d)), (%d, '%s', %d, %d, %d, from_unixtime(%d))", .@killercid, escape_sql(.@killername$), @dota_sql_streaks, @dota_sql_kills, @dota_sql_deaths, @dota_sql_streaktime, .@victimcid, escape_sql(.@victimname$), .@victim_streaks, .@victim_kills, .@victim_deaths, .@victim_streaktime); if (.@killerguildid && .@killerguildid != .@victimguildid) { ++.guild_current_ownage[.@killerguildid]; if (.guild_current_ownage[.@killerguildid] > .guild_highest_ownage[.@killerguildid] ) { .guild_highest_ownage[.@killerguildid] = .guild_current_ownage[.@killerguildid]; .guild_ownage_time[.@killerguildid] = gettimetick(2); } if (.@victimguildid && .guild_highest_ownage[.@victimguildid]) query_sql sprintf("replace into ownladder values (%d, '%s', %d, %d, from_unixtime(%d)), (%d, '%s', %d, %d, from_unixtime(%d))", .@killerguildid, escape_sql(getguildname(.@killerguildid)), .guild_current_ownage[.@killerguildid], .guild_highest_ownage[.@killerguildid], .guild_ownage_time[.@killerguildid], .@victimguildid, escape_sql(getguildname(.@victimguildid)), .guild_current_ownage[.@victimguildid], .guild_highest_ownage[.@victimguildid], .guild_ownage_time[.@victimguildid]); else query_sql sprintf("replace into ownladder values (%d, '%s', %d, %d, from_unixtime(%d))", .@killerguildid, escape_sql(getguildname(.@killerguildid)), .guild_current_ownage[.@killerguildid], .guild_highest_ownage[.@killerguildid], .guild_ownage_time[.@killerguildid]); } else if (.@victimguildid && .guild_highest_ownage[.@victimguildid]) query_sql sprintf("replace into ownladder values (%d, '%s', %d, %d, from_unixtime(%d))", .@victimguildid, escape_sql(getguildname(.@victimguildid)), .guild_current_ownage[.@victimguildid], .guild_highest_ownage[.@victimguildid], .guild_ownage_time[.@victimguildid]); .@dota_multikills = @dota_multikills; sleep 1500; if (.@killerguildid && .@killerguildid != .@victimguildid && .guild_current_ownage[.@killerguildid] >= .owned && ((.guild_current_ownage[.@killerguildid] - .owned) % .owncontinue == 0)) { if ( .dota_bc_flag ) mapannounce .@map$, "The guild ["+ getguildname(.@killerguildid) +"] is OWNING["+ .guild_current_ownage[.@killerguildid] +"] !!!", bc_blue; else announce "The guild ["+ getguildname(.@killerguildid) +"] is OWNING["+ .guild_current_ownage[.@killerguildid] +"] !!!", bc_blue; if ( .sound == 1 ) soundeffectall "ownage.wav",0,.@map$; else if ( .sound == 2 ) soundeffectall "ownage.wav",0; else if ( .sound == 3 && attachrid(.@killeraid) ) soundeffect "ownage.wav",0; } sleep 1250; if (!attachrid(.@killeraid)) end; if (.@dota_multikills == 2) { if (.dota_bc_flag) mapannounce .@map$, .@killername$ +" just got a Double Kill !", bc_blue; else announce strcharinfo(0) +" just got a Double Kill !", bc_blue; if (.sound == 1) soundeffectall "doublekill.wav", 0, .@map$; else if (.sound == 2) soundeffectall "doublekill.wav", 0; else if (.sound == 3) soundeffect "doublekill.wav", 0; } else if (.@dota_multikills == 3) { if (.dota_bc_flag) mapannounce .@map$, .@killername$ +" just got a Triple Kill !!!", bc_blue; else announce strcharinfo(0) +" just got a Triple Kill !!!", bc_blue; if (.sound == 1) soundeffectall "triplekill.wav", 0, .@map$; else if (.sound == 2) soundeffectall "triplekill.wav", 0; else if (.sound == 3) soundeffect "triplekill.wav", 0; } else if (.@dota_multikills == 4) { if (.dota_bc_flag) mapannounce .@map$, .@killername$ +" just got a Ultra Kill !!!", bc_blue; else announce strcharinfo(0) +" just got a Ultra Kill !!!", bc_blue; if (.sound == 1) soundeffectall "ultrakill.wav", 0, .@map$; else if (.sound == 2) soundeffectall "ultrakill.wav", 0; else if (.sound == 3) soundeffect "ultrakill.wav", 0; } else if (.@dota_multikills >= 5) { if (.dota_bc_flag) mapannounce .@map$, .@killername$ +" is on a Rampage !!!", bc_blue; else announce strcharinfo(0) +" is on a Rampage !!!", bc_blue; if (.sound == 1) soundeffectall "rampage.wav", 0, .@map$; else if (.sound == 2) soundeffectall "rampage.wav", 0; else if (.sound == 3) soundeffect "rampage.wav", 0; } end; OnStreakReset: @dota_multikills = 0; end; OnPCLoginEvent: if (.maptrigger$ != "all") end; OnPCLoadMapEvent: if (!@dota_sql_kills && !@dota_sql_deaths) { if (.maptrigger$ != "all") { .@map$ = strcharinfo(3); while (.@i < .maptriggersize && .@map$ != .maptrigger$[.@i]) ++.@i; if (.@i == .maptriggersize) end; } query_sql "select kills, deaths, streaks, unix_timestamp(streaktime) from pvpladder where char_id = "+ getcharid(0), @dota_sql_kills, @dota_sql_deaths, @dota_sql_streaks, @dota_sql_streaktime; } .@guildid = getcharid(2); if (.@guildid && !.guild_highest_ownage[.@guildid]) { query_sql "select currentown, highestown, unix_timestamp(owntime) from ownladder where guild_id = "+ .@guildid, .@c, .@h, .@t; .guild_current_ownage[.@guildid] = .@c; .guild_highest_ownage[.@guildid] = .@h; .guild_ownage_time[.@guildid] = .@t; } end; } prontera,166,188,5 script PvP-StatsViewer 1_F_MARIA,{ .@npcname$ = strnpcinfo(0); while (true) { mes "["+ .@npcname$ +"]"; mes "Hello "+ strcharinfo(0) +"..."; mes "If you want to I can show you your PVP stats."; next; switch (select("Most Kills","Highest Streak","Longest Ownage","Own Information","Explanation")) { mes "["+ .@npcname$ +"]"; case 1: .@nb = query_sql("select name, kills, deaths from pvpladder order by kills desc limit "+ getvariableofnpc(.showtotal, "DOTAPVP"), .@name$, .@kills, .@deaths); if (!.@nb) { mes "The ladder currently is empty."; next; } for (.@j = 0; .@j < .@nb; .@j += getvariableofnpc(.showpage,"DOTAPVP")) { for (.@i = .@j; .@i < (getvariableofnpc(.showpage,"DOTAPVP") + .@j) && .@i < .@nb; ++.@i) mes "^996600"+ (.@i+1) +": ^006699"+ .@name$[.@i] +" ^00AA00["+ .@kills[.@i] +"] ^FF0000<"+ .@deaths[.@i] +">^000000"; next; } break; case 2: .@nb = query_sql("select name, streaks, date_format(streaktime,'%a %e/%c/%y %r') from pvpladder where streaks >= "+ getvariableofnpc(.loweststreak,"DOTAPVP") +" order by streaks desc limit "+ getvariableofnpc(.showtotal,"DOTAPVP"), .@name$, .@streak, .@time$); if (!.@nb) { mes "The ladder currently is empty."; next; } for (.@j = 0; .@j < .@nb; .@j += getvariableofnpc(.showpage,"DOTAPVP") ) { for ( .@i = .@j; .@i < (getvariableofnpc(.showpage,"DOTAPVP") + .@j) && .@i < .@nb; ++.@i) { mes "^996600"+ (.@i+1) +": ^006699"+ .@name$[.@i] +" ^70AC11{"+ .@streak[.@i] +"} ^000000on :"; mes " ^EE8800"+ .@time$[.@i] +"^000000"; } next; } break; case 3: .@nb = query_sql("select name, highestown, date_format(owntime,'%a %e/%c/%y %r') from ownladder where highestown >= "+ getvariableofnpc(.lowestownage,"DOTAPVP") +" order by highestown desc limit "+ getvariableofnpc(.showtotal,"DOTAPVP"), .@name$, .@owned, .@time$); if (!.@nb) { mes "The ladder currently is empty."; next; } for (.@j = 0; .@j < .@nb; .@j += getvariableofnpc(.showpage,"DOTAPVP")) { for (.@i = .@j; .@i < (getvariableofnpc(.showpage,"DOTAPVP") + .@j) && .@i < .@nb; ++.@i ) { mes "^996600"+ (.@i+1) +": ^006699"+ .@name$[.@i] +" ^00AAAA("+ .@owned[.@i] +") ^000000on :"; mes " ^EE8800"+ .@time$[.@i] +"^000000"; } next; } break; case 4: if (!@dota_sql_kills && !@dota_sql_deaths) query_sql "select kills, deaths, streaks, unix_timestamp(streaktime), date_format(streaktime,'%a %e/%c/%y %r') from pvpladder where char_id = "+ getcharid(0), @dota_sql_kills, @dota_sql_deaths, @dota_sql_streaks, @dota_sql_streaktime, .@time1$; else query_sql "select date_format(from_unixtime("+ @dota_sql_streaktime +"),'%a %e/%c/%y %r')", .@time1$; if (!@dota_sql_kills && !@dota_sql_deaths) mes "You not yet kill any player."; else { mes "Your Current Streak : ^70AC11{"+ @PlayersKilledStreak +"}^000000"; mes "Your Total Kills : ^00AA00["+ @dota_sql_kills +"]^000000"; mes "Your Death Counts : ^FF0000<"+ @dota_sql_deaths +">^000000"; if (@dota_sql_kills || @dota_sql_streaks) { mes "Highest Streak was ^70AC11{"+ @dota_sql_streaks +"}^000000 on :"; mes " ^EE8800"+ .@time1$ +"^000000"; } } next; .@guildid = getcharid(2); if (.@guildid) { if (!getvariableofnpc(.guild_ownage_time[.@guildid], "DOTAPVP")) { query_sql "select currentown, highestown, unix_timestamp(owntime), date_format(owntime,'%a %e/%c/%y %r') from ownladder where guild_id = "+ .@guildid, .@c, .@h, .@t, .@time2$; set getvariableofnpc(.guild_current_ownage[.@guildid], "DOTAPVP"), .@c; set getvariableofnpc(.guild_highest_ownage[.@guildid], "DOTAPVP"),.@h; set getvariableofnpc(.guild_ownage_time[.@guildid], "DOTAPVP"), .@t; } else query_sql "select date_format( from_unixtime("+ getvariableofnpc(.guild_ownage_time[.@guildid], "DOTAPVP") +"),'%a %e/%c/%y %r')", .@time2$; mes "["+ .@npcname$ +"]"; if (!getvariableofnpc(.guild_ownage_time[.@guildid], "DOTAPVP")) { mes "Your guild not yet kill any player."; } else { mes "Your guild name : ^006699"+ strcharinfo(2) +"^000000"; mes "Current Owning : ^00AAAA("+ getvariableofnpc(.guild_current_ownage[.@guildid], "DOTAPVP") +")^000000"; mes "Longest Ownage was ^00AAAA("+ getvariableofnpc(.guild_highest_ownage[.@guildid], "DOTAPVP") + ")^000000 on :"; mes " ^EE8800"+ .@time2$ +"^000000"; } next; } break; case 5: mes "Explanation for Most Kills:"; mes " "; mes "^996600Rank. ^006699NAME ^00AA00[Total Kills] ^FF0000<Deaths>^000000"; mes " "; mes "--------------------------------"; mes " "; mes "The ^00AA00Kills^000000 added when a player kills another player."; mes " "; mes "^FF0000Deaths^000000 count increase when a player killed by another player, or suicide (eg: Grand Cross)."; mes " "; mes "A player killed by monsters, homunculus or pets will not add the kills or deaths count."; next; mes "["+ .@npcname$ +"]"; mes "Explanation for Highest Streak:"; mes " "; mes "^996600Rank. ^006699NAME ^70AC11{Highest Streak} ^000000on :"; mes " ^EE8800TIME^000000"; mes " "; mes "--------------------------------"; mes " "; mes "The ^70AC11Streak^000000 are added every time a player kills another player. It will reset upon log out, killed by another player, or suicide (eg: Sacrifice)."; mes " "; mes "Then it record in the server the ^EE8800TIME^000000 when that player got that highest streak."; mes " "; mes "A player killed by monsters, homunculus or pets will not reset the streak."; mes " "; mes "--------------------------------"; mes " "; mes "The numbers of straight kills to get these announcements are :"; mes "^70AC11"+ getvariableofnpc(.killingspree,"DOTAPVP") +"^000000 : Killing Spree"; mes "^70AC11"+ getvariableofnpc(.dominating,"DOTAPVP") +"^000000 : Dominating"; mes "^70AC11"+ getvariableofnpc(.megakill,"DOTAPVP") +"^000000 : Mega Kill"; mes "^70AC11"+ getvariableofnpc(.unstoppable,"DOTAPVP") +"^000000 : Unstoppable"; mes "^70AC11"+ getvariableofnpc(.wickedsick,"DOTAPVP") +"^000000 : Wicked Sick"; mes "^70AC11"+ getvariableofnpc(.monsterkill,"DOTAPVP") +"^000000 : Monster Kill"; mes "^70AC11"+ getvariableofnpc(.godlike,"DOTAPVP") +"^000000 : Godlike"; mes "^70AC11"+ getvariableofnpc(.holyshit,"DOTAPVP") +"^000000 : Beyond Godlike"; next; mes "["+ .@npcname$ +"]"; mes "Explanation for Longest Ownage:"; mes " "; mes "^996600Rank. ^006699NAME ^00AAAA(Longest Ownage) ^000000on :"; mes " ^EE8800TIME^000000"; mes " "; mes "--------------------------------"; mes " "; mes "The ^00AAAAOwnage^000000 added every time any guild members killed another player that doesn't belong to his/her guild. It will reset when any of the guild member was killed by ANY player, including his/her guild member."; mes " "; mes "Then it record in the server the ^EE8800TIME^000000 when the guild got that longest ownage."; mes " "; mes "If the server went under maintainance, the current ownage will survive after the server restart."; mes " "; mes "Any guild member killed by monster, homunculus or pets will not reset the ownage count."; next; if (getvariableofnpc(.lvltokill,"DOTAPVP")) { mes "["+ .@npcname$ +"]"; mes "You must kill another player with minimum base level of "+ getvariableofnpc(.lvltokill,"DOTAPVP") +", in order to get an announcement or get in the ladder."; mes " "; mes "It's possible for a base level 1 novice kills a base level 99 player and still can get in the ladder."; mes "However when a player level 99 kills a level 1 novice will get nothing."; next; } if (getvariableofnpc(.counttopunish,"DOTAPVP")) { mes "["+ .@npcname$ +"]"; mes "Some noob players try to kill the same person over and over again in hope of getting his/her name appear in the ladder."; mes "However if you trying to do the same thing on this ladder, your name will announce to the public, and your action will be recorded into the server to notify the GMs."; next; } if (getvariableofnpc(.minlvlrange,"DOTAPVP")) { mes "["+ .@npcname$ +"]"; mes "When you kill another player thats lower base level than you, the base level gap between you and that player must not more than "+ getvariableofnpc(.minlvlrange,"DOTAPVP") +"."; mes " "; if (getvariableofnpc(.minlvlrange,"DOTAPVP") >= 200) mes "In other words, if your base level is 500, the player you killed must be at least level "+(500 - getvariableofnpc(.minlvlrange,"DOTAPVP"))+" then only you will get the announcement and in the ladder."; else if (getvariableofnpc(.minlvlrange,"DOTAPVP") >= 70) mes "In other words, if your base level is 255, the player you killed must be at least level "+(255 - getvariableofnpc(.minlvlrange,"DOTAPVP"))+" then only you will get the announcement and in the ladder."; else mes "In other words, if your base level is 99, the player you killed must be at least level "+(99 - getvariableofnpc(.minlvlrange,"DOTAPVP"))+" then only you will get the announcement and in the ladder."; mes "Higher base level kills lower level gets nothing, however lower level player kills higher level will get the announcement."; next; } break; } } } - script pvp_ladder_statue FAKE_NPC,{ .@id = getelementofarray(getvariableofnpc(.npcgid, "DOTAPVP"), getnpcid(0)); mes "^996600[TOP "+ .@id +"]"; mes "^006699Name : "+ getelementofarray(getvariableofnpc(.statue_name$, "DOTAPVP"), .@id); .@guildname$ = getelementofarray(getvariableofnpc(.statue_guild$, "DOTAPVP"), .@id); mes "^00AAAAGuild : "+((.@guildname$ == "null")? "^AAAAAANone": .@guildname$); mes "^00AA00Total Kills : ["+ getelementofarray(getvariableofnpc(.statue_kills, "DOTAPVP"), .@id) +"]"; mes "^70AC11Highest Streaks : ["+ getelementofarray(getvariableofnpc(.statue_streaks, "DOTAPVP"), .@id) +"]"; mes "^FF0000Deaths : <"+ getelementofarray(getvariableofnpc(.statue_deaths, "DOTAPVP"), .@id) +">"; close; OnInit: .@id = strnpcinfo(2); set getvariableofnpc(.statue[.@id], "DOTAPVP"), getnpcid(0); set getvariableofnpc(.npcgid[getnpcid(0)], "DOTAPVP"), .@id; end; } prontera,150,180,4 duplicate(pvp_ladder_statue) pvp_ladder_statue#1 1_F_MARIA prontera,152,180,4 duplicate(pvp_ladder_statue) pvp_ladder_statue#2 1_F_MARIA prontera,154,180,4 duplicate(pvp_ladder_statue) pvp_ladder_statue#3 1_F_MARIA prontera,156,180,4 duplicate(pvp_ladder_statue) pvp_ladder_statue#4 1_F_MARIA prontera,158,180,4 duplicate(pvp_ladder_statue) pvp_ladder_statue#5 1_F_MARIA prontera,160,180,4 duplicate(pvp_ladder_statue) pvp_ladder_statue#6 1_F_MARIA prontera,162,180,4 duplicate(pvp_ladder_statue) pvp_ladder_statue#7 1_F_MARIA prontera,164,180,4 duplicate(pvp_ladder_statue) pvp_ladder_statue#8 1_F_MARIA prontera,166,180,4 duplicate(pvp_ladder_statue) pvp_ladder_statue#9 1_F_MARIA prontera,168,180,4 duplicate(pvp_ladder_statue) pvp_ladder_statue#10 1_F_MARIA i'm getting error like this in picture, i think it's on line 181 im getting this error when killing,
  7. out of topic, what program is that for mob calculator? Thank you.
  8. https://github.com/rathena/rathena/blob/master/npc/re/merchants/hd_refiner.txt
  9. i tried but if i use @fakename, they can't invite him into party. or guild nor duel.
  10. Thank you sir, i tryd to searched and found out about something so i did query_sql "UPDATE `char` SET name='[Dark Army] "+ escape_sql(.@charname$) + "' WHERE `char_id`='"+getcharid(0)+"'"; and now its working, now i have a second problem, how can i maintain their original name? i would just like if they change name their original name will still exist, but in front of original name "Dark army" will show. [Dark Army] Takuyakii. Sorry for my title i just don't know what should i wrote. again sorry Sir.
  11. Hello, can someone help me make this work ? query_sql "UPDATE `char` SET name='[Dark Army] "+ escape_sql(@charname$) + "' WHERE `char_id`="+escape_sql(@charid$)+""; i have an npc that can change your name, but the sql script not working. i found that sql wayback 2013 i gueess,
  12. Good day, can someone correct this script i have npc that giving a farm title System ( Farmer 1, Farmer 2 titled) i want to make if the player logged in it needs to check if his farmer 1 or farmer 2, ) so i try to wrote this. if farmer 1, he/she will be put tittled or fakename on his name, PS: i don't know if my title is right if not please do correct ty - script testtitles -1,{ OnPCLoginEvent: if( Farm == 0) goto L_name; if (Farm == 1 ) goto L_nfarm; L_name: mes "Your not a farmer!"; end; L_farm: atcommand "@fakename" Farmer1 "+ strcharinfo(0); end; }
  13. Takuyakii

    Autopots

    https://github.com/rathena/rathena/blob/master/npc/custom/etc/autopot.txt
  14. Hello rA, can someone help me with these script? i'm trying to run my script and getting error getting confused with cases here's my script , im getting error on line 18, unexpected character. Thank you. //=======Event Changer ============ cast_town,160,180,6 script Event Handler 634,{ mes "[^880000Dungeon Assistant^000000]"; mes "Welcome, " + (Sex?"Mr.":"Mrs.") + " " + strcharinfo(0); mes "I am the Sexy Event Handler at this town~"; mes "How may i help you today?"; next; switch(Select("^000088Visit Shop^000000:Information")){ case 1: switch(Select(^000088Use Event Points^000000":Use Event Coins")){ next; case 1: close; callshop "eventpoints",1; end; } case 2: switch(Select(^000088Castle Drops^000000":Cards:Cancel")){ case 1: callshop "eventcastle",1; end; } case 2: callshop "eventcards",1; end; } } // ===== Shops ========= - pointshop eventpoints -1,#event_points,20018:10000,20193:12000,20326:12000,20351:11000 - pointshop eventcastle -1,#event_coins,20018:10000,20193:12000,20326:12000,20351:11000 - pointshop eventcard -1,#event_coins,20018:10000,20193:12000,20326:12000,20351:11000 EDIT: SOLVED BY USING MENU. THANKS!
  15. Thank you so much for giving me an idea, i will try to make this work, thank you again as always. Hi @Pride Can u help me with this one, ? instead of 1 time ticket = 3 hours and lifetime ticket = 1 day? then after that hours they or day they purchased it will be resetted and they need to pay again, prontera,171,170,4 script Monster Arena 648,{ cutin "arena_01",2; strt: mes "[^880000Arena Master^000000]"; mes "Good day ^008800"+strcharinfo(0)+"^000000 "; mes "How may i help you?"; switch(select("^000088Enter Arena^000000:Information")){ //==========================arena room======================= case 1: next; mes "[^880000Arena Master^000000]"; mes "Choose Arena Process"; next; menu "1 Time ticket",-,"Lifetime ticket",L_ticket; mes "[^880000Arena Master^000000]"; mes "Processing ticket..."; next; if(countitem(3618) < 1) goto L_Later; mes "[^880000Arena Master^000000]"; mes "1 Time ticket accepted"; mes "Lets go!.."; delitem 3618,1; announce "[Monster Arena] "+strcharinfo(0)+" Has Entered using 1 time ticket.",0,0xFF6600; warp "bat_b02" ,0,0; close; L_ticket: mes "[^880000Arena Master^000000]"; mes "Processing ticket..."; next; if(countitem(3619) < 1) goto L_Later; mes "[^880000Arena Master^000000]"; mes "Lifetime ticket accepted"; mes "Lets go!.."; announce "[Monster Arena] "+strcharinfo(0)+" Has Entered using Lifetime ticket.",0,0xFF6600; warp "bat_b02" ,0,0; next; goto strt; L_Later: mes "[^880000Arena Master^000000]"; mes "Dont waste my time!.."; next; goto strt; //==========================================information============================================== case 2: next; mes "[^880000Arena Master^000000]"; mes "Monsters Inside The Room:"; mes "^880000Arena Dark Kades^000000"; mes "^880000Arena Dark Pyuriel^000000"; next; mes "[^880000Arena Master^000000]"; mes "Mob Information"; mes "Element: ^880000Dark (lvl3)^000000"; mes "Size: ^880000Large^000000"; mes "Race: ^880000Demon^000000"; next; mes "[^880000Arena Master^000000]"; mes "MVP Inside The Room"; mes "MVP: ^880000King Poring^000000"; mes "Element: ^880000Dark (lvl3)^000000"; mes "Size: ^880000Large^000000"; mes "Race: ^880000Demon^000000"; next; goto strt; } }
  16. @Pride can u help me this one? sorry for tagging you.
  17. Takuyakii

    Rent npc

    Good day rA, can someone help me to make a script that ff: i don't know if my title is right, i just don't know what should i call it. 1. NPC that have will required you an item to enter the map Ex, Red potion. 2. it has option like 3 hours /1 day access for the map. 3. the player will automatically kick on that map. (not all player, example Player 1 just availed 3 hours, when the 3 hours come Player 1 will be kicked, and the other player 2 3 4 5 6 can stay because they need to use their availed access) i know this is to much to request because of this details. i also try to edit some script but im getting nowhere, Thank you.
  18. The best always, fixed by remove the account_id, thank you so much.
  19. Good day rA i don't know if this is the right section i been trying to fix this and already searched inside / outside on this forum. i'm still having this error, and this is my SQL query_sql("CREATE TABLE IF NOT EXISTS `woe_time_participation` (`castle_id` int(11) unsigned NOT NULL, `account_id` int(11) unsigned NOT NULL, `date` int(11) NOT NULL DEFAULT '0', `claimed` int(11) NOT NULL DEFAULT '0', PRIMARY KEY ( `castle_id`, `account_id`, `date` )) ENGINE=InnoDB"); see picture below
  20. already did, it always showing like this it supposed to be full hp then per hit should be reduce the hp. anyway i dont know if this is about script or the client, but thank you for helping me, +1
  21. Well this idea or script are from herc. https://board.herc.ws/topic/15975-custom-unit-hp-bar-system/ this is the script or the actual.
  22. Wow thank you it works, no error on map now! but can i ask question why the cutin are not properly working on this script? thanks. it supposed to when i attack the monster the cutin should move by the monster hp?
  23. New error
  24. Fixed removed . on getunitdata, now there's a new error
×
×
  • Create New...