All Activity
- Today
-
anthell02,1,1,0 script AntHellInvasion -1,{ OnInit: while(1) { initnpctimer; end; OnTimer10800000: stopnpctimer; announce "I am Gluttony, a hunger that knows no end. I descend to your realm, not as a beast of fangs and claws, but as a subtle whisper in your ear.", bc_all; monster "anthell02",0,0,"Sin of Gluttony",20581,1,"AntHellInvasion::OnAntHellDead"; monster "anthell02",0,0,"Gluttonous Valkyrie",1765,50,"AntHellInvasion::OnInvasionAntHell"; monster "prontera",98,186,"Gluttonous Plant",1750,1,"AntHellInvasion::OnInvasionAntHellPlant"; end; OnInvasionAntHell: end; OnAntHellDead: killmonster "anthell02","AntHellInvasion::OnInvasionAntHell"; killmonster "prontera","AntHellInvasion::OnInvasionAntHell"; announce "["+ strcharinfo(0) +"] has slain "+ getmonsterinfo( killedrid, MOB_NAME ), bc_all; MVPKills = MVPKills+2; dispbottom "---------------------------------------------------"; dispbottom "You killed a total of "+MVPKills+" MVP"+((MVPKills == 1)?"":"s")+"."; #mvp_points += 2; dispbottom "You've gained two points! Your total is ["+#mvp_points+"] MvP point(s)."; dispbottom "---------------------------------------------------"; } } Im having a hard time getting this script to have a selection of its spawn time. Right now, it always spawn 3hours after server start and after kill. I want it to spawn randomly between 2.5 hours to 3hours. Tried adding switch(rand(2)){ and put 2 cases but the script only summons the boss on the lowest OnTimer. Also, if it is possible, make the Plant not killable during the event was on. This plant serves as indicator that the mvp had been summoned. Some times players logged in after the announcement of the mvps arrival
-
help me to corection my script or modification for all map but every 1 hour reset npc a and b deferent item : // NPC: Abas Eden Group (NPC Penjual Item Konsumsi) morocc,172,86,5 script Abas 56,{ mes "Berikut adalah harga pembelian kami saat ini:"; mes "^0000FFFried Grasshopper Legs^000000: "+.fried_grasshopper_price+" Zeny"; mes "^0000FFSteamed Crab Nippers^000000: "+.steamed_crab_price+" Zeny"; mes "^0000FFFrog Egg Squid Ink Soup^000000: "+.frog_egg_soup_price+" Zeny"; mes "^0000FFFried Monkey Tails^000000: "+.fried_monkey_tails_price+" Zeny"; mes "^0000FFSeasoned Sticky Webfoot^000000: "+.seasoned_sticky_webfoot_price+" Zeny"; mes "^0000FFAssorted Seafood^000000: "+.assorted_seafood_price+" Zeny"; mes "^0000FFSmooth Noodle^000000: "+.smooth_noodle_price+" Zeny"; mes "^0000FFBomber Steak^000000: "+.bomber_steak_price+" Zeny"; mes "^0000FFClam Soup^000000: "+.clam_soup_price+" Zeny"; mes "^0000FFTentacle Cheese Gratin^000000: "+.tentacle_cheese_gratin_price+" Zeny"; mes "^0000FFFried Sweet Potato^000000: "+.fried_sweet_potato_price+" Zeny"; mes "^0000FFSeasoned Jellyfish^000000: "+.seasoned_jellyfish_price+" Zeny"; mes "^0000FFLutie Cold Noodle^000000: "+.lutie_cold_noodle_price+" Zeny"; mes "^0000FFSteamed Ancient Lips^000000: "+.steamed_ancient_lips_price+" Zeny"; mes "^0000FFFried Scorpion Tails^000000: "+.fried_scorpion_tails_price+" Zeny"; mes "Silakan pilih item yang ingin kamu jual."; next; mes "Apa yang ingin kamu jual?"; switch(select( "^0000FFFried Grasshopper Legs^000000", "^0000FFSteamed Crab Nippers^000000", "^0000FFFrog Egg Squid Ink Soup^000000", "^0000FFFried Monkey Tails^000000", "^0000FFSeasoned Sticky Webfoot^000000", "^0000FFAssorted Seafood^000000", "^0000FFSmooth Noodle^000000", "^0000FFBomber Steak^000000", "^0000FFClam Soup^000000", "^0000FFTentacle Cheese Gratin^000000", "^0000FFFried Sweet Potato^000000", "^0000FFSeasoned Jellyfish^000000", "^0000FFLutie Cold Noodle^000000", "^0000FFSteamed Ancient Lips^000000", "^0000FFFried Scorpion Tails^000000", "^0000FFTidak Jadi^000000" )) { case 1: callfunc "SellItem", 12041, .fried_grasshopper_price, "Fried Grasshopper Legs"; break; case 2: callfunc "SellItem", 12051, .steamed_crab_price, "Steamed Crab Nippers"; break; case 3: callfunc "SellItem", 12056, .frog_egg_soup_price, "Frog Egg Squid Ink Soup"; break; case 4: callfunc "SellItem", 12066, .fried_monkey_tails_price, "Fried Monkey Tails"; break; case 5: callfunc "SellItem", 12042, .seasoned_sticky_webfoot_price, "Seasoned Sticky Webfoot"; break; case 6: callfunc "SellItem", 12052, .assorted_seafood_price, "Assorted Seafood"; break; case 7: callfunc "SellItem", 12057, .smooth_noodle_price, "Smooth Noodle"; break; case 8: callfunc "SellItem", 12043, .bomber_steak_price, "Bomber Steak"; break; case 9: callfunc "SellItem", 12053, .clam_soup_price, "Clam Soup"; break; case 10: callfunc "SellItem", 12058, .tentacle_cheese_gratin_price, "Tentacle Cheese Gratin"; break; case 11: callfunc "SellItem", 12068, .fried_sweet_potato_price, "Fried Sweet Potato"; break; case 12: callfunc "SellItem", 12054, .seasoned_jellyfish_price, "Seasoned Jellyfish"; break; case 13: callfunc "SellItem", 12059, .lutie_cold_noodle_price, "Lutie Cold Noodle"; break; case 14: callfunc "SellItem", 12069, .steamed_ancient_lips_price, "Steamed Ancient Lips"; break; case 15: callfunc "SellItem", 12070, .fried_scorpion_tails_price, "Fried Scorpion Tails"; break; case 16: mes "Baik, mungkin lain kali."; close; } OnInit: .fried_grasshopper_price = rand(200, 2500); .steamed_crab_price = rand(150, 2550); .frog_egg_soup_price = rand(200, 2500); .fried_monkey_tails_price = rand(200, 2500); .seasoned_sticky_webfoot_price = rand(200, 2500); .assorted_seafood_price = rand(200, 2500); .smooth_noodle_price = rand(200, 2500); .bomber_steak_price = rand(200, 2500); .clam_soup_price = rand(200, 2500); .tentacle_cheese_gratin_price = rand(200, 2500); .fried_sweet_potato_price = rand(200, 2500); .seasoned_jellyfish_price = rand(200, 2500); .lutie_cold_noodle_price = rand(200, 2500); .steamed_ancient_lips_price = rand(200, 2500); .fried_scorpion_tails_price = rand(200, 2500); initnpctimer(); end; OnTimer3600000: stopnpctimer(); donpcevent strnpcinfo(0)+"::OnInit"; announce "Pedagang Grup Eden Morocc: Harga telah diperbarui! Silakan cek barang yang ingin dijual.", bc_all; end; } // Function SellItem — penanganan jual item function script SellItem { .@item_id = getarg(0); .@price = getarg(1); .@item_name$ = getarg(2); if (countitem(.@item_id) < 1) { mes "Maaf, sepertinya kamu tidak memiliki "+.@item_name$+"!"; close; } mes "Berapa banyak "+.@item_name$+" yang ingin kamu jual?"; input .@amount; if (.@amount <= 0 || .@amount > countitem(.@item_id)) { mes "Mohon masukkan jumlah yang valid!"; close; } .@total_price = .@amount * .@price; mes "Kamu akan mendapatkan "+.@total_price+" Zeny untuk "+.@amount+" "+.@item_name$+"."; if (select("Jual:Batalkan") == 1) { delitem .@item_id, .@amount; set Zeny, Zeny + .@total_price; mes "Terima kasih telah menjual "+.@amount+" "+.@item_name$+" seharga "+.@total_price+" Zeny!"; } else { mes "Baik, mungkin lain kali."; } close; }
-
how i can get these
-
https://github.com/llchrisll/ROenglishRE And read all the wiki/documentation
- Yesterday
-
https://rathena.org/board/topic/105737-just-when-you-log-in/#comment-363232 check this post
-
Any idea why this keeps popping? Please Help. Thanks!
-
Hi, I'm working on a ranking system inspired by League of Legends, and I decided to create these files to apply it to the players I'm new to editing this kind of stuff. I wish a professional could review it and give it a proper cleanup, but anyway, it doesn't seem too bad for now. How do use it: 1) Download League of Legends Rank File. 2) Put into your GRF. 3) Go to your hateffectinfo.lub (data/luafiles514/hateeffectinfo) 4) Search or something Similar. HAT_EF_NightSkyOfRutie = 225, 5) Put this: -- Ranks Lol Tag by Scanty -- HAT_IRON_RANK = 231, HAT_BRONCE_RANK = 232, HAT_PLATA_RANK = 233, HAT_ORO_RANK = 234, HAT_PLATINO_RANK = 235, HAT_ESMERALDA_RANK = 236, HAT_DIAMANTE_RANK = 237, HAT_MAESTRO_RANK = 238, HAT_GM_RANK = 239, HAT_RETADOR_RANK = 240, 6) Now, Search for [HatEFID.HAT_EF_NightSkyOfRutie] = { resourceFileName = "efst_NightSkyOfRutie\\christmasx3.str", hatEffectPos = -11, hatEffectPosX = -0.3, isRenderBeforeCharacter = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true }, 7) After that --- Inician Rangos de Lol - By Scanty --- [HatEFID.HAT_IRON_RANK] = { resourceFileName = "custom\\rangos_lol\\iron_RANK.str",hatEffectPos = 6, isIgnoreRiding = false, isRenderBeforeCharacter = false, isAttachedHead = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true}, [HatEFID.HAT_BRONCE_RANK] = { resourceFileName = "custom\\rangos_lol\\bronce_RANK.str",hatEffectPos = 6, isIgnoreRiding = false, isRenderBeforeCharacter = false, isAttachedHead = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true}, [HatEFID.HAT_PLATA_RANK] = { resourceFileName = "custom\\rangos_lol\\plata_RANK.str",hatEffectPos = 6, isIgnoreRiding = false, isRenderBeforeCharacter = false, isAttachedHead = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true}, [HatEFID.HAT_ORO_RANK] = { resourceFileName = "custom\\rangos_lol\\oro_RANK.str",hatEffectPos = 6, isIgnoreRiding = false, isRenderBeforeCharacter = false, isAttachedHead = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true}, [HatEFID.HAT_PLATINO_RANK] = { resourceFileName = "custom\\rangos_lol\\platino_RANK.str",hatEffectPos = 6, isIgnoreRiding = false, isRenderBeforeCharacter = false, isAttachedHead = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true}, [HatEFID.HAT_ESMERALDA_RANK] = { resourceFileName = "custom\\rangos_lol\\esmeralda_RANK.str",hatEffectPos = 6, isIgnoreRiding = false, isRenderBeforeCharacter = false, isAttachedHead = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true}, [HatEFID.HAT_DIAMANTE_RANK] = { resourceFileName = "custom\\rangos_lol\\diamante_RANK.str",hatEffectPos = 6, isIgnoreRiding = false, isRenderBeforeCharacter = false, isAttachedHead = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true}, [HatEFID.HAT_MAESTRO_RANK] = { resourceFileName = "custom\\rangos_lol\\maestro_RANK.str",hatEffectPos = 6, isIgnoreRiding = false, isRenderBeforeCharacter = false, isAttachedHead = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true}, [HatEFID.HAT_GM_RANK] = { resourceFileName = "custom\\rangos_lol\\GM_RANK.str",hatEffectPos = 6, isIgnoreRiding = false, isRenderBeforeCharacter = false, isAttachedHead = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true}, [HatEFID.HAT_RETADOR_RANK] = { resourceFileName = "custom\\rangos_lol\\Retador_RANK.str",hatEffectPos = 6, isIgnoreRiding = false, isRenderBeforeCharacter = false, isAttachedHead = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true} 8 ) Create a script to test. you need to use this: hateffect 240, true; *hateffect(<Hat Effect ID>,<State>); This will set a Hat Effect onto the player. The state field allows you to enable (true) or disable (false) the effect on the player. The Hat Effect constants can be found in 'src/map/script_constants.hpp' starting with HAT_EF_*. Requires client 2015-05-13aRagEXE or newer. League of Legends Rank.rar
-
For me, works like you have, but maybe your SQL have something. Try this. .@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`, " + "SUM(`mvpladder`.`kills`) AS `orderKills` " + "FROM `char` " + "RIGHT JOIN `mvpladder` ON `char`.`char_id` = `mvpladder`.`char_id` " + "GROUP BY `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` " + "ORDER BY `orderKills` DESC LIMIT " + .showstatue + ";";
-
link?
-
// LOJA DE MVP POINTS - pointshop Shop_MVPPOINTS -1,#MVPPOINTS,501:10,502:10,503:10,504:10,505:10,506:10 //---- MvP Ladder Logic Script - script mvpladder -1,{ OnInit: // Configurações .map_killannounce = 0; // anunciar quando o MVP é morto no mapa onde o MVP foi morto: 0 - desativado, 1 - ativado .killannounce = 1; // anunciar quando o MVP é morto globalmente: 0 - desativado, 1 - ativado .gmnokill = 0; // GMs não devem matar MVPs. Um GM com nível <este número> ou superior não fará nada. Se definido como 60, GMs de nível 60 ou superior não receberão nada ao matar jogadores: 0 - desativado .min_gm_menu = 90; // nível mínimo do GM que pode usar o menu do GM no NPC da escada .showtotal = 10; // mostrar o comprimento da escada. .showpage = 10; // definir as visualizações por página. .showstatue = 3; // número de estátuas. Este número deve corresponder ao número de duplicatas no final do script. .fix_custom_sprite = true; // se o seu servidor tem sprites animados personalizados que se sobrepõem à animação da estátua repetidamente, ative isso // Config ends ------------------------------------------------------------------------------------------ //// to prevent bug happen // if (.gmnokill <= 0) .gmnokill = 100; // // sleep 1; OnTimer10000: // refresh statues every 1 minute. 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`, " + "SUM(`mvpladder`.`kills`) as `orderKills` " + "FROM `char` RIGHT JOIN `mvpladder` ON `char`.`char_id` = `mvpladder`.`char_id` GROUP BY `char`.`char_id` ORDER BY `orderKills` 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); 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 "mvp_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]; } for (.@i = .@nb; .@i < .showstatue; ++.@i) setunitdata .statue[.@i +1], UNPC_CLASS, HIDDEN_WARP_NPC; initnpctimer; end; OnNPCKillEvent: // Logic to detect when a MvP is killed if(getgmlevel() < 3) { if (getmonsterinfo(killedrid, MOB_MVPEXP) > 0) { announce "[ Ranking MVP ] : O jogador ["+ strcharinfo(0) +"] do grupo ["+ strcharinfo(1) +"] acaba de matar o MVP "+ getmonsterinfo( killedrid, MOB_NAME ) +" em "+ strcharinfo(3), bc_all; .@selectIfKillExistQuery$ = "SELECT char_id, mob_id, kills FROM mvpladder WHERE char_id = '" + getcharid(0) + "' AND mob_id = '" + killedrid + "';"; if (query_sql(.@selectIfKillExistQuery$) > 0) { // Exist a kill of that MVP so +1 to kill count .@updateLadderQuery$ = "UPDATE mvpladder SET kills = kills + 1 WHERE char_id = '" + getcharid(0) + "' AND mob_id = '" + killedrid + "'"; } else { // Create a new kill of specific MVP //.@updateLadderQuery$ = "INSERT INTO mvpladder (char_id, mob_id, kills) VALUES ('" + getcharid(0) + "','" + killedrid + "','1');"; .@updateLadderQuery$ = "INSERT INTO mvpladder (`char_id` , `mob_id` , `kills`) VALUES ('" + getcharid(0) + "','" + killedrid + "','1');"; } query_sql(.@updateLadderQuery$); } } end; } //Pontos MVP - script mvppoint01 -1,{ OnNPCKillEvent: setarray .@monsterID[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,1389,1418,1492,1511,1583,1623,1630,1658,1685,1688,1719,1785,1885,2068,1957; // ID Dos Boss for(set @a,0; @a <= getarraysize(.@monsterID); set @a,@a+1) if(killedrid == .@monsterID[@a]){ set #MVPPOINTS,#MVPPOINTS+1; message strcharinfo(0),"[RagnaUp]: Você possui "+#MVPPOINTS+" ponto(s) de MvPs."; if (rand(1000) < 10){ getitem 45000,1; announce "O jogador "+strcharinfo(0)+" acaba de dropar Cash Eletrônico do MVP "+ getmonsterinfo( .@monsterID[@a], MOB_NAME ) +"!",0; } } } - script mvppoint03 -1,{ OnNPCKillEvent: setarray .@monsterID[0],1708,1734,1751,1768,1779,1832,1871,1917; // ID Dos Boss for(set @a,0; @a <= getarraysize(.@monsterID); set @a,@a+1) if(killedrid == .@monsterID[@a]){ set #MVPPOINTS,#MVPPOINTS+15; message strcharinfo(0),"[RagnaUp]: Você possui "+#MVPPOINTS+" ponto(s) de MvPs."; if (rand(1000) < 50){ getitem 45000,1; announce "O jogador "+strcharinfo(0)+" acaba de dropar Cash Eletrônico do MVP "+ getmonsterinfo( .@monsterID[@a], MOB_NAME ) +"!",0; } } } - script mvppoint05 -1,{ OnNPCKillEvent: setarray .@monsterID[0],1646,1647,1648,1649,1650,1651,1874,1929,1956,2022; // ID Dos Boss for(set @a,0; @a <= getarraysize(.@monsterID); set @a,@a+1) if(killedrid == .@monsterID[@a]){ set #MVPPOINTS,#MVPPOINTS+30; message strcharinfo(0),"[RagnaUp]: Você possui "+#MVPPOINTS+" ponto(s) de MvPs."; if (rand(1000) < 100){ getitem 45000,1; announce "O jogador "+strcharinfo(0)+" acaba de dropar Cash Eletrônico do MVP "+ getmonsterinfo( .@monsterID[@a], MOB_NAME ) +"!",0; } } } //---- Informações do NPC Lider MVP prontera,122,135,5 script Caçador de MVP 733,{ .@npcname$ = strnpcinfo(0); while (1) { mes "["+ .@npcname$ +"]"; mes "Olá ^A020F0"+ strcharinfo(0) +"^000000..."; mes "Você tem atualmente ^0000ff"+#MVPPOINTS+"^000000 Pontos MVP."; next; switch (select("^339966[»]^000000 Ranking MVP","^008aff[»]^000000 MVPs mais Caçados","^A020F0[»]^000000 Abrir a Loja")) { case 1: mes "^FF0000O ranking é resetado todo dia 01.^000000"; mes ""; .@queryKillerList$ = "SELECT t1.char_id, SUM(t1.kills) as `orderKills`, t2.name " + "FROM `mvpladder` t1 " + "INNER JOIN `char` t2 " + "ON t1.char_id = t2.char_id " + "GROUP BY t1.char_id " + "ORDER BY `orderKills` DESC " + "LIMIT " + getvariableofnpc(.showtotal, "mvpladder") + ";"; .@nb = query_sql(.@queryKillerList$, .@charid, .@kills, .@name$); if (!.@nb) { mes "O Ranking está vazio no momento."; next; } for (.@j = 0; .@j < .@nb; .@j += getvariableofnpc(.showpage,"mvpladder")) { for (.@i = .@j; .@i < (getvariableofnpc(.showpage,"mvpladder") + .@j) && .@i < .@nb; ++.@i) mes "^996600" + (.@i+1) + ": ^006699" + .@name$[.@i] + " - ^00AA00[" + .@kills[.@i] + "]^FF0000 MVPs Mortos^000000"; next; } break; case 2: .@queryKilledList$ = "SELECT char_id, mob_id, SUM(kills) as `orderKills` " + "FROM `mvpladder` " + "GROUP BY mob_id " + "ORDER BY `orderKills` DESC " + "LIMIT " + getvariableofnpc(.showtotal, "mvpladder") + ";"; .@nb = query_sql(.@queryKilledList$, .@charid, .@mobid, .@kills); if (!.@nb) { mes "O top está vazio no momento."; next; } for (.@j = 0; .@j < .@nb; .@j += getvariableofnpc(.showpage,"mvpladder")) { for (.@i = .@j; .@i < (getvariableofnpc(.showpage,"mvpladder") + .@j) && .@i < .@nb; ++.@i) { mes "^996600" + (.@i+1) + ": ^006699" + getmonsterinfo(.@mobid[.@i], 1) + " ^FF0000MVP ^00AA00[Morto ^FF0000" + .@kills[.@i] + " ^00AA00Vezes]^000000"; } next; } query_sql("SELECT SUM(kills) FROM mvpladder;", .@killCount); mes "^996600==> ^006699Total de MVPs Mortos [^00AA00" + .@killCount[0] + "^000000^006699]^FF0000"; break; case 3: dispbottom "Você tem "+#MVPPOINTS+" Pontos de MVP."; close2; callshop "Shop_MVPPOINTS"; end; } OnInit: initnpctimer; setunittitle(getnpcid(0), "[ Ranking e Loja ]"); end; OnTimer10000: showscript("Líder MVP"); setnpctimer 0; end; } close; } //---- MSG board NPCs - script mvp_ladder_statue -1,{ .@id = getelementofarray(getvariableofnpc(.npcgid, "mvpladder"), getnpcid(0)); mes "^996600[TOP MVP "+ .@id +"]"; mes "^006699Nome: "+ getelementofarray(getvariableofnpc(.statue_name$, "mvpladder"), .@id); .@guildname$ = getelementofarray(getvariableofnpc(.statue_guild$, "mvpladder"), .@id); mes "^00AAAAGuild: "+((.@guildname$ == "null")? "^AAAAAANone": .@guildname$); mes "^00AA00Matou: ["+ getelementofarray(getvariableofnpc(.statue_kills, "mvpladder"), .@id) +"]"; close; OnInit: .@id = strnpcinfo(2); set getvariableofnpc(.statue[.@id], "mvpladder"), getnpcid(0); set getvariableofnpc(.npcgid[getnpcid(0)], "mvpladder"), .@id; end; } prontera,127,138,4 duplicate(mvp_ladder_statue) mvp_ladder_statue#1 1_F_MARIA prontera,124,141,4 duplicate(mvp_ladder_statue) mvp_ladder_statue#2 1_F_MARIA prontera,130,141,4 duplicate(mvp_ladder_statue) mvp_ladder_statue#3 1_F_MARIA //== clone base prontera,127,138,2 script #2 844,{ end; OnInit: while(1) { specialeffect EF_MVP; sleep 10000; } } //prontera,172,204,2 script #npcuniquename PORTAL,{} //prontera,140,180,5 script #npcuniquename1 PORTAL,{} //prontera,138,182,2 script #npcuniquename2 PORTAL,{} //== msg top da cabeça prontera,127,138,4 script #top1 111,{ OnInit: initnpctimer; end; OnTimer1000: showscript("Top-1 MVP"); setnpctimer 0; end; } prontera,124,141,4 script #top2 111,{ OnInit: initnpctimer; end; OnTimer1000: showscript("Top-2 MVP"); setnpctimer 0; end; } prontera,130,141,4 script #top3 111,{ OnInit: initnpctimer; end; OnTimer1000: showscript("Top-3 MVP"); setnpctimer 0; end; } - script reset_ranking -1,{ OnClock0005: if(gettime(DT_DAYOFMONTH) == 1){ query_sql ("TRUNCATE `mvpladder`"); end; } OnInit: bindatcmd "resetrankingmvp", strnpcinfo(0) +"::OnReset"; end; OnReset: if (getgmlevel() > 98) { query_sql ("TRUNCATE `mvpladder`"); dispbottom "Ranking MVP resetado com sucesso!"; end; } else { dispbottom "Somente Administradores podem usar este comando"; end; } end; } I have a warning problem whenever a player defeats an MVP. Can someone help me with this problem? The error line is below: [Warning]: script:query_sql: Too many columns, discarding last 3 columns.
-
Custom item not showing when equipping it and Custom mob giving error after spawning.
Dempo replied to skitsx's question in General Support
I’m having same issue it’s something either the view id mostly accessoryid file in the client. -
Recursos do Script: ✔ Configuração personalizável (prêmios, taxas de sorteio, mensagens). ✔ Múltiplos modos de uso (roleta diária, por pontos, evento especial). ✔ Suporte a itens customizados (VIP, itens exclusivos, zeny, etc.). ✔ Sistema de logs (registro de ganhadores e premiações). ✔ Compatível com rAthena/Hercules (testado e otimizado). ✔ Painel de controle intuitivo (facilidade para editar prêmios).
-
Gabe D Stydian donated to a project: May Funding
-
Hello. I found this script: Herc - Event Wheel of Fortune So i decide to use it. All credits to him: Habilis. Here's my edited Script: And this is my Frames. Route: data\texture\À¯ÀúÀÎÅÍÆäÀ̽º\cardbmp\ruleta_suerte But you can change it via script. OnInit: set .Cutin$, "ruleta_suerte\\frame_"; <-- CHANGE this "This is my own modification. You can change everything through the script, and of course… you'll need the design. But hey, you can do it yourself! I downloaded Photoshop just an hour ago and made this, lol (no editing knowledge at all)." If you’ve got your own design and want to create frames like I did, here’s what I did Please don't ask anything about design and stuff, I'm still learning. Odin Wheel: This is just an example. If you want it to be an automated event or something like that, feel free to ask! Video: Frames.rar Ruleta+PSD+Gen_FramE.rar Odin_Wheel.rar
-
thanks alot
-
its make me interesting, i will try make it, then after last night i make 2 npc for that lol, for make milk and egg its have progses bar, with time 10 sec , and have change random failed or suces; sory my bad english This is an example of a trade map between cities, later I will make: 1, each city will have its own commodity goods 2, each item between cities will change its price like supply and demand, abundant goods will go down, few goods will go up 3. Players will escort the delivery of goods, and can be attacked by monsters, I think this script already exists but I forgot where, we add it when actively escorting goods, the teleport feature from Kafra will not work, except for storing goods and save points that are still working 4. The commodity goods are divided into those sold by NPCs, drop items, and brew items and crafting from NPCs that have been provided; 5. Most of me follow your ideas, my friend, but I make it my own way, maybe by adding or I don't know how it will turn out later. and all of that is very fun
-
Unfortunately, OnPCAttackEvent alone doesn't give you all the context you need. You might consider combining OnPCAttackEvent with a timer or periodic check to aggregate attack data. Use src mod for better tracking. If you're open to modifying the source (src), you could implement a true anti-gank system by tracking attackers on the target side, which is more reliable.
-
Custom item not showing when equipping it and Custom mob giving error after spawning.
skitsx replied to skitsx's question in General Support
im using ID 40k for custom items -
1. Unlimited Chain Quest - Monster Hunting / Item Collection in 1 NPC 2. Music Player - Just for fun 3. Race to Max Level - Perfect for single-time race events! 4. Beta Registration NPC - Easy handing out rewards NOTE: No support will be provided - unless it's a bug in the script itself Bugs? Reply to this thread and I'll fix it right up.
-
В метро на информационном стенде увидел [url=https://telegra.ph/CHto-budet-posle-smerti-03-07]философские размышления о вечности[/url]. Ритуальные услуги оказаны на высоком уровне. Сотрудники работают профессионально.
- Last week
-
Looking good so far, keep it up! Hope it can be released one way or another in the future
-
Change the skill duration 10000 to 600 in skill_db.yml - Id: 86 Name: WZ_WATERBALL Description: Water Ball MaxLevel: 5 Type: Magic TargetType: Attack Flags: IsAutoShadowSpell: true Range: 9 Hit: Multi_Hit HitCount: 1 Element: Water CopyFlags: Skill: Plagiarism: true Reproduce: true CastTime: - Level: 1 Time: 1000 - Level: 2 Time: 2000 - Level: 3 Time: 3000 - Level: 4 Time: 4000 - Level: 5 Time: 5000 - Level: 6 Time: 6000 - Level: 7 Time: 7000 - Level: 8 Time: 8000 - Level: 9 Time: 9000 - Level: 10 Time: 10000 Duration1: 10000
-
Mr.Secrets DressRoom - Custom Request
Gabe D Stydian replied to Gabe D Stydian's question in Script Requests
Thank you very much sir! I appreciate. Will try ASAP. -
Mr.Secrets DressRoom - Custom Request
Racaae replied to Gabe D Stydian's question in Script Requests
Hello //===== rAthena Script ===========================================| //= Mr.Secrets DressRoom - Custom Request //= 1.5 Added 4th job sprites and item requirements [Racaae] //= https://rathena.org/board/topic/144504-mrsecrets-dressroom-custom-request morocc,167,95,4 script Dress Room#sc 2_M_DYEINGER,{ function RestrictClass; function HasjROCostume; function ChangeAppr; function RestrictClass { .@eaj = eaclass(); if(.@eaj&EAJ_BASEMASK == EAJ_NOVICE) return 0; if(.@eaj&EAJL_2 && roclass(.@eaj|EAJL_UPPER) != -1){ return 1; } return 0; } function HasjROCostume { switch(roclass(eaclass()&EAJ_THIRDMASK|EAJL_THIRD)) { case Job_Guillotine_Cross: case Job_Genetic: case Job_Royal_Guard: case Job_Arch_Bishop: case Job_Mechanic: case Job_Ranger: case Job_Minstrel: case Job_Wanderer: case Job_Warlock: // Uncomment lines below to enable certain job when their respective jRO costume is released and you patched the sprite in your client. //case Job_Sorcerer: //case Job_Sura: //case Job_Rune_Knight: return 1; default: return 0; } } function ChangeAppr { mes .n$; if (Zeny < .cost_dressroom) { mes "You don't have enough Zeny."; .@missingzeny = true; } .@size = getarraysize(.cost_item); if (.@size > 1) { for ( .@i = 0; .@i < .@size; .@i += 2 ) { if (countitem(.cost_item[.@i]) < .cost_item[.@i+1]) { if (!.@missingitem) { mes "You didn't bring what I need. You're missing:"; .@missingitem = true; } mes .cost_item[.@i+1] + "x " + mesitemlink(.cost_item[.@i]); } } } if (.@missingzeny || .@missingitem) close; switch(getarg(1)){ case 0: // Normal Mode setlook LOOK_BODY2,0; changebase getarg(0); set baselook, getarg(0); break; case 1: // jRO Mode if(!HasjROCostume()) return; changebase roclass(eaclass()&EAJ_THIRDMASK|EAJL_THIRD); setlook LOOK_CLOTHES_COLOR,0; setlook LOOK_BODY2,!(getlook(LOOK_BODY2)); //atcommand "@bodystyle " + !(getlook(LOOK_BODY2)); baselook = 0; break; } Zeny -= .cost_dressroom; .@size = getarraysize(.cost_item); if (.@size > 1) { for ( .@i = 0; .@i < .@size; .@i += 2 ) delitem .cost_item[.@i], .cost_item[.@i+1]; } mes "Here you are!"; close; } .@TYPE_CHANGEBASE = 0; .@TYPE_SETLOOK = 1; mes .n$; if (!RestrictClass()){ mes "Your class isn't allowed to use my services."; close; } mes "I can change your appearance to another class of your classline!"; if (HasjROCostume()){ mes "I also have a brand new costume for your class!"; } next; mes .n$; if (.cost_dressroom) mes "At a cost of ^FF0000" + F_InsertComma(.cost_dressroom) + "^000000z"; //displaying needed item list .@size = getarraysize(.cost_item); if (.@size > 1) { for ( .@i = 0; .@i < .@size; .@i += 2 ) mes (.@i+3>.@size?"And ":"") + .cost_item[.@i+1] + "x " + mesitemlink(.cost_item[.@i]); } mes "Which class do you want to change your appearance to?"; next; .@option[0] = roclass(eaclass()&EAJ_UPPERMASK); .@option[1] = roclass(eaclass()&EAJ_UPPERMASK|EAJL_UPPER); .@option[2] = roclass(eaclass()&EAJ_THIRDMASK|EAJL_THIRD); if (.4th) { .@job = roclass(eaclass()&EAJ_THIRDMASK|EAJL_THIRD); .@option[4] = roclass(eaclass(.@job)|EAJL_FOURTH|EAJL_UPPER); } for(.@i = 0; .@i < (.4th?5:4); .@i++) { if (!.@option[.@i] && HasjROCostume() && !getlook(LOOK_BODY2) && .@option[.@i] != baselook) .@menu$ += "New jRO " + jobname(.@option[2]) + " costume"; else if (.@option[.@i] > 0 && .@option[.@i] != baselook) { if (roclass(eaclass()) == .@option[.@i]) .@menu$ += "Restore " + jobname(.@option[.@i]) + " costume"; else .@menu$ += jobname(.@option[.@i]); } .@menu$ += ":"; } if(select(.@menu$)-1 == 3) { //jRO costume ChangeAppr(0,.@TYPE_SETLOOK); } ChangeAppr(.@option[@menu-1],.@TYPE_CHANGEBASE); end; OnPCLoginEvent: if(baselook && .dress_perma){ changebase baselook; } end; OnInit: .n$ = "[Dress Room]"; // NPC Name .dress_perma = 1; //Changes are saved when player logout (1=Yes / 0=No) .4th = true; //Enable changing to 4th job sprite (True / False) .cost_dressroom = 10000; // Zeny Cost setarray .cost_item,6959,1,982,3,983,2; // Item cost - item ID,Amount,item ID,Amount... end; } -
Location ng Job Sprites sa 2022 kRO client
Brynner replied to Gabe D Stydian's topic in Tulong para sa Client
ah dati kasi uso pa converter ngaun kc s grf editor di mo na need ngconverter makikita mo nadin agad yung sprite dun